![在schroot下自动挂载/dev/sda1](https://linux22.com/image/168288/%E5%9C%A8schroot%E4%B8%8B%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%2Fdev%2Fsda1.png)
我可以访问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