다음과 같이 Ubuntu 시스템에 액세스할 수 있습니다.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
[...]
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 650M 0 part /boot/efi
└─nvme0n1p2 259:2 0 372.5G 0 part /
나는 다음과 같이 Debian/sid schroot를 설정했습니다:
$ cat /etc/schroot/chroot.d/sid64
[sid64]
description=Contains the SPICE program
aliases=sid
type=directory
directory=/home/malat/schroots/sid-root
users=malat
root-groups=root
profile=desktop
personality=linux
preserve-environment=true
나는 어떤 변경도 하지 않았 /etc/schroot/default/fstab
으며 내 schroot에 들어갈 때 sid64
내가 보는 것은 다음과 같습니다.
$ schroot -c sid
(sid64)$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
[...]
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 650M 0 part
└─nvme0n1p2 259:2 0 372.5G 0 part /var/lib/dbus
수동으로 수행하는 경우:
$ sudo mount /dev/sda1 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part /mnt/bdc64c37-340a-49e5-8184-a69e01e5e231
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 650M 0 part
└─nvme0n1p2 259:2 0 372.5G 0 part /var/lib/dbus
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
내 schroot(내 데이터가 있는 기본 디스크) 아래에 자동으로 마운트하려면 어떻게 해야 합니까 ?
지금까지 나는 순진한 시도를 했습니다.
$ sudo mkdir /home/malat/schroots/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
$ tail -1 /etc/schroot/default/fstab
/dev/disk/by-uuid/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0 0
$ schroot -c sid
(sid64)$ ls -al /dev/disk/by-uuid/dbc64c37-340a-49e5-8184-a69e01e5e231
lrwxrwxrwx 1 root root 10 Jan 8 01:00 /dev/disk/by-uuid/dbc64c37-340a-49e5-8184-a69e01e5e231 -> ../../sda1
또한:
$ tail -1 /etc/schroot/default/fstab
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0 0
둘 다 나에게 적합하지 않습니다.
나는 또한 순진한 시도를 했습니다.
$ sudo mount --rbind /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /home/malat/schroots/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
$ mount | grep dbc64c37
/dev/sda1 on /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 type ext4 (rw,nosuid,nodev,relatime,x-gvfs-show)
/dev/sda1 on /home/malat/schroots/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 type ext4 (rw,nosuid,nodev,relatime)
$ schroot -c sid
(sid64)$ ls -al /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
-> empty !
답변1
1. Your root fs is on the pt : "nvme0n1p2"
2. The device `sda1` is mounted on: "/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231"
3. Your chroot is created under : "/home/malat/debian/sid-root/"
4. The schroot mnt-pnt shall be : "/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231" (in chroot)
첫 번째 시도에서 저지르는 첫 번째 실수:
sda1
마운트된 파일 시스템의 마운트 지점을 제공하는 대신 파티션을 자동 마운트하려고 합니다 .
/dev/disk/by-uuid/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0
대신 다음과 같아야 합니다.
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0 0
파티션은 바인드 마운트되지 않으며 이미 마운트된 디렉토리와 파일도 마찬가지입니다. chroot의 올바른 구성 /etc/fstab
은 다음과 같습니다.
/dev/disk/by-uuid/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 ext4 rw,nosuid,nodev,relatime,x-gvfs-show 0 0
넌 이러지 마- sda1
chroot 외부에서 제거하지 않는 한! 실제로는 이중 설치가 됩니다.sda1
두 배그리고 이로 인해 금융 서비스가 중단됩니다(가능한 경우).
chroot 외부에서 두 번째 시도를 하면 작동합니다.
sudo mount --rbind /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
그러나 출력이 mount
맞지 않습니다.
/dev/sda1 on /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231/malat/debian/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 type ext4 (rw,nosuid,nodev,relatime)
첫 번째 출력은 lsblk
트리에 파티션이 없음을 알려줍니다 home
! 그렇다면 mount가 bind
마운트 지점이 열려 있다고 선언하는 이유는 무엇입니까 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231/malat/debian/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
? 올바른 경로 /home/malat/debian/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
는 nvme0n1p2
!
노력하다:
Don't chroot, yet!
Try bind mounting with full paths:
sudo mount --rbind "/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231" "/home/malat/debian/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231"
성공하면 schroot
chroot를 사용하지 않고도 자동으로 이 작업을 수행 할 수 있습니다 fstab
.
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /home/malat/debian/sid-root/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none bind 0 0
chroot는 "호스트" 파일 계층에 대한 액세스를 차단하고 변경 사항이 없다고 언급했으므로 /etc/schroot/default/fstab
,bind mount
이내에schroot가 실패해야 합니다. /mnt
schroot fstab에 포함되어 있지 않기 때문입니다 . 그렇다면 "번들 마운트"된 것입니다.
이 질문은 나의 관심을 불러일으켰고 답변하는 데 2시간이 걸렸습니다. 나는 그것이 작동하기를 바랍니다. 그런데 저는 schroot를 외웠고 이제 설치에 대한 기본적인 이해를 갖게 되었습니다. ;)
PS chroot 내의 출력은 lsblk
정확할 수 없습니다! sda1
chroot 외부에 설치되는 것은 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
chroot 내부의 루트(/)가 될 것이라고 명시되어 있습니다 . 이건 가짜 야! chroot의 루트는 /home/malat/debian/sid-root/
파티션에 있습니다 nvme0n1p2
!
답변2
따라서 해결책은 내 schroot 구성 파일을 올바르게 읽는 것이었습니다. 그것은 다음과 같이 말합니다:
$ cat /etc/schroot/chroot.d/sid64
[...]
profile=desktop
그래서 파일을 편집해야 합니다: /etc/schroot/desktop/fstab
대신 /etc/schroot/default/fstab
(데스크탑!=기본).
나는 다음을 사용했다:
$ tail -1 /etc/schroot/desktop/fstab
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0 0
지금 나 한테있어:
$ schroot -c sid
(sid64)$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 650M 0 part
└─nvme0n1p2 259:2 0 372.5G 0 part /var/lib/dbus