![chroot에서 네트워크에 접근할 수 없습니다](https://linux55.com/image/7254/chroot%EC%97%90%EC%84%9C%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%97%90%20%EC%A0%91%EA%B7%BC%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
대부분의 복잡한 부분이 작동하는 복잡한 장면이 있습니다.
- SD 카드에는 LUKS/BTRFS 파일 시스템에 설치된 Fedora 23 Raspberry Pi가 포함되어 있습니다.
- Fedora 23 x86-64 VM은 RPi의 Fedora SD 카드 설치를 관리하는 데 사용됩니다.
- SD 카드를 VM에 마운트하고 QEMU ARM의 정적 빌드를 사용하여 chroot할 수 있지만 어떤 이유에서든 이를 얻기가 정말 어렵습니다.
그러나 내 chroot에서는 네트워크에 액세스할 수 없습니다. Ubuntu/Debian에서 비슷한 작업을 수행할 때 항상 네트워크에 액세스할 수 있었습니다. SELinux를 비활성화 :(
하고 작업을 수행하기 위해 많은 바인드 마운트를 수행했지만 네트워크에 액세스할 수 없습니다. 나는 그것을 복사 /etc/sysconfig/network-scripts/ifcfg-enp0s3
하고 내가 생각할 수 있는 다른 모든 방법을 시도했습니다.
내 chroot 설정은 다음과 같습니다.
cryptsetup luksOpen /dev/sdXN picrypt
mount -t btrfs /dev/mapper/picrypt /mnt
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /run /mnt/run
chroot /mnt/
호스트의 관점에서 볼 때 더 많은 파일 시스템이 마운트되어 있다는 것을 알았지만 자동으로 상속되어 어떤 이유로 chroot에 표시되지 않는다고 가정합니다. 내 주인님이 알고 있는 탈것은 다음과 같습니다.
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=2013260k,nr_inodes=503315,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/fedora-root on / type ext4 (rw,relatime,seclabel,data=ordered)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
tmpfs on /tmp type tmpfs (rw,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/fedora-home on /home type ext4 (rw,relatime,seclabel,data=ordered)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=404748k,mode=700,uid=42,gid=42)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=404748k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
/dev/sr0 on /run/media/naftuli/VBOXADDITIONS_5.0.20_106931 type iso9660 (ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2)
/dev/sdXN on /run/media/naftuli/PI-BOOT type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
tmpfs on /home/naftuli/tmp type tmpfs (rw,relatime,seclabel,mode=700,uid=1000,gid=1000)
내 chroot는 알고 있어요많은이보다 적음:
/dev/mapper/picrypt on / type btrfs (rw,relatime,seclabel,compress=lzo,space_cache,subvolid=5,subvol=/)
none on /proc type proc (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=2013260k,nr_inodes=503315,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
sysfs on /sys type sysfs (ro,relatime,seclabel)
네트워크 지원을 통해 작동하는 chroot를 얻으려면 실제로 설치해야 합니다.모두/sys
내 chroot에 어떤 하위 파일 시스템을 넣어야 합니까 ?
답변1
chroot 세션에 대한 네트워킹을 설정하려면 DNS 구성을 chroot 환경에 복사해야 합니다.
cp /etc/resolv.conf /mnt/etc/resolv.conf
또는
ln -s /etc/resolv.conf /mnt/etc/resolv.conf
답변2
프록시를 사용하는 경우 프록시 설정을 chroot 환경에 복사해야 합니다.
sudo cp /etc/apt/apt.conf /path/to/chroot/etc/apt/apt.conf
/etc/apt/apt.conf는 다음과 같습니다.
Acquire::http::proxy "http://192.168.120.100:80/";
Acquire::https::proxy "https://192.168.120.100:80/";
Acquire::ftp::proxy "ftp://192.168.120.100:80/";
답변3
다음은 Debian Linux의 경우입니다. chroot 세션이 없으면 다음을 수행하십시오.
- ls -lah /etc/resolv.conf 소프트 링크이므로 실제 파일은 /tmp/resolv.conf에 있습니다.
- 그런 다음 cp -rf /tmp/resolv.conf /mnt/etc/resolv.conf. (디스크 이미지를 /mnt에 마운트했다고 가정) 그러면 인터넷은 chroot 세션에서 작동합니다 :)
답변4
오늘 Ubuntu 18.04.1에서 작업하려면 다음을 사용해야 했습니다.
sudo rsync -avh --devices --specials /run/systemd/resolve /target/run/systemd
chroot에서 유효한 네트워크 연결을 갖기 위해.
업데이트 프로세스가 진행됨에 따라 구문 분석 디렉터리가 변경될 수 있으므로 구문 분석 디렉터리가 chroot 소스 및 대상에서 동일한 위치에 있는지 확인해야 합니다. 제 경우에는 몇 주간의 업데이트가 누락되었습니다.
출처: VERSION="18.04.2 LTS(바이오닉 비버)"
대상: VERSION="18.04.1 LTS(바이오닉 비버)"