首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >schroot下自动挂载/dev/sda1 1

schroot下自动挂载/dev/sda1 1
EN

Unix & Linux用户
提问于 2020-02-27 09:07:04
回答 2查看 1K关注 0票数 -1

我可以访问Ubuntu系统,如下所示:

代码语言:javascript
复制
$ 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:

代码语言:javascript
复制
$ 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时,我看到了以下内容:

代码语言:javascript
复制
$ 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

如果我手动做:

代码语言:javascript
复制
$ 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

如何在我的schroot (这是我的数据所在的主磁盘)下自动挂载/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231

到目前为止,我尝试了一个天真的:

代码语言:javascript
复制
$ 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

以及:

代码语言:javascript
复制
$ tail -1 /etc/schroot/default/fstab
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none    rw,bind 0 0

两人都不是为我工作的。

我也尝试过一种天真的方法:

代码语言:javascript
复制
$ 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 !
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-03-05 09:52:07

因此,解决方案只是正确地读取我的schroot配置文件。它指出:

代码语言:javascript
复制
$ cat /etc/schroot/chroot.d/sid64 
[...]
profile=desktop

因此,我需要编辑文件:/etc/schroot/desktop/fstab而不是/etc/schroot/default/fstab (桌面 != 默认)。

我用:

代码语言:javascript
复制
$ tail -1 /etc/schroot/desktop/fstab 
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none    rw,bind 0 0

现在我有了:

代码语言:javascript
复制
$ 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
票数 -1
EN

Unix & Linux用户

发布于 2020-03-04 19:21:18

代码语言:javascript
复制
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,而不是提供已经挂载的文件系统的挂载点:

代码语言:javascript
复制
/dev/disk/by-uuid/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0 

相反,它应该是这样的:

代码语言:javascript
复制
/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 none rw,bind 0 0

分区从来不通过绑定挂载,已经挂载的目录甚至文件也是如此。色度中的/etc/fstab的正确配置如下所示:

代码语言:javascript
复制
 /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

You不这样做-除非您在chroot之外卸载sda1!实际上,如果可能的话,您将双倍挂载sda1 并破坏fs。

你在chroot之外的第二次尝试应该奏效了:

代码语言:javascript
复制
sudo mount --rbind /mnt/dbc64c37-340a-49e5-8184-a69e01e5e231 mnt/dbc64c37-340a-49e5-8184-a69e01e5e231

但是mount的输出不适合:

代码语言:javascript
复制
/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树没有分区!那么为什么挂载声明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 on nvme0n1p2

尝试:

代码语言:javascript
复制
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的情况下在fstab中的chroot之外自动执行以下操作:

代码语言:javascript
复制
/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 <#>应该会失败。这是因为/mnt没有包含在schroot中。如果是的话,它就已经是“装订式的”了。

这个问题激怒了我,花了我两小时才回答。我希望它能成功。顺便说一句,我已经记住了施罗德的事,现在我对安装有了一个基本的了解。;)

PS,lsblk的输出在色度内是不正确的!它指出,安装在/mnt/dbc64c37-340a-49e5-8184-a69e01e5e231下的chroot外部的D26将是chroot中的根(/)。这是假的!chroot的根是分区/home/malat/debian/sid-root/上的nvme0n1p2

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/570005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档