我可以访问这样的 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 !
第一次尝试时的第一个错误:
您尝试自动挂载 partition
sda1
,而不是提供已挂载文件系统的挂载点:相反,它应该如下所示:
分区永远不会通过绑定挂载,已经挂载的目录甚至文件都是。chroot中的正确配置
/etc/fstab
如下所示:你不要那样做——除非你
sda1
在 chroot 之外卸载!因此,如果可能的话,您实际上会两次安装两次sda1
并损坏 fs。您在 chroot 之外的第二次尝试应该有效:
但输出
mount
不适合:的第一个输出告诉我们,树
lsblk
没有分区!home
那么为什么 mount 声明bind
挂载点是 on/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
!尝试:
如果成功,您可以在不使用
schroot
chroot 的情况下自动执行此操作fstab
:由于 chroot 阻止访问“主机”文件层次结构并且您提到没有更改
/etc/schroot/default/fstab
,因此 schrootbind mount
内的 应该失败。那是因为/mnt
不包含在 schroot fstab 中。如果是这样,它就已经被“绑定安装”了。这个问题激怒了我,我花了 2 小时回答。我希望它有效。顺便说一句,我已经记住了 schroot,现在让我对安装有了基本的了解。;)
PS
lsblk
chroot 内的输出不正确!它指出sda1
安装在 chroot 之外的/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231
将是 chroot 内的根 (/)。这是假的!chroot 的根/home/malat/debian/sid-root/
在分区上nvme0n1p2
!所以解决方案就是正确读取我的 schroot 配置文件。它指出:
所以我需要编辑文件:
/etc/schroot/desktop/fstab
而不是/etc/schroot/default/fstab
(桌面!=默认)。我用了 :
现在我有: