在schroot下自动挂载/dev/sda1

在schroot下自动挂载/dev/sda1

我可以访问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-a69e01e5e231nvme0n1p2

尝试:

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/fstabbind 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

相关内容