对于给定的顶级目录,我如何发现其中安装了哪些“真实”文件系统以及来自哪些设备(可能包括 UUID 或 LABEL,但必须使用 /dev/something 用于 LVM)?
背景是从 debootstrap 之后运行的脚本自动生成 fstab(5);主机操作系统是 GNU/Linux(我认为并非我在子例程中使用的所有内容都是 GNU/kFreeBSD 或 GNU/Hurd 安全的)。
到目前为止我发现的最接近的事情是,findmnt -l --real
但这仍然显示绑定安装,这对于我的用例来说不够“真实”,我需要块设备支持的安装点。 (这可能包括环形安装座。)
答案1
从Linux内核的角度来看,绑定挂载和“常规”挂载之间没有区别。他们是在概念上比符号链接更接近硬链接。
不过你可以用例如缩小范围
findmnt -lv --real --output "FSROOT,SOURCE,TARGET,FSTYPE,OPTIONS" | grep "^/\s"
这会过滤掉所有具有FSROOT
除 之外的(已挂载文件系统中链接到挂载点的路径)的挂载/
。
绑定挂载会重新挂载整个文件系统,例如
mount /dev/sda /a
mount --bind /a /b
更难被发现。您需要通过比较SOURCE
或列来进一步过滤列表,MAJ:MIN
并以这种方式删除重复项。
仍然存在一些边缘情况(例如,正则表达式错误地接受以空格字符开头的子目录/文件的绑定安装,并且 Btrfs 子卷安装看起来像绑定安装,因此它们从列表中删除)但这应该为您提供一个起点。
答案2
这就是我要做的(如果我明白你所问的是什么)
alias lsblk2='lsblk -o size,fstype,model,name,serial,uuid'
lsblk2
- 首先观察linux看到的所有块设备,通过查看FSTYPE,您将能够判断什么在哪里以及您想要什么
- 我建议不要安装设备名称例如,
/dev/sda
因为当磁盘来来去去时,sda 可能会成为不同的磁盘,因此最好通过 uuid 挂载。 view /etc/mtab
查看当前安装的内容以及view /etc/fstab
启动后将安装的内容。- 根据显示进行相应
lsblk2
添加或调整/etc/fstab
三个样本/etc/fstab
条目:
UUID=800e924a-a869-4152-9503-9d9cfecbd16e / xfs defaults 0 0
UUID=4f3da85a-71a9-4f6e-bc5f-dfd23a880b08 /boot xfs defaults 0 0
/dev/disk/by-uuid/e0791b9e-b620-4274-9857-78389b10f5a5 /data auto nosuid,nodev,nofail,x-gvfs-show 0 0
只需键入mount
即可查看所有当前安装的文件系统
输入 just findmnt
,在 rhel 7.9 上,这就是我得到的:
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda3 xfs rw,relatime,seclabel,attr2,inode64,logbsize=64k,sunit=128,swidth=
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime,seclabel
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,seclabel,mode=755
│ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr
│ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls
│ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu
│ │ ├─/sys/fs/cgroup/freezer cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,freezer
│ │ ├─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,pids
│ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,devices
│ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,blkio
│ │ ├─/sys/fs/cgroup/perf_event cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,perf_event
│ │ ├─/sys/fs/cgroup/hugetlb cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb
│ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,memory
│ │ └─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,cpuset
│ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime
│ ├─/sys/firmware/efi/efivars efivarfs efivarfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/config configfs configfs rw,relatime
│ ├─/sys/fs/selinux selinuxfs selinuxfs rw,relatime
│ ├─/sys/kernel/debug debugfs debugfs rw,relatime
│ └─/sys/fs/fuse/connections fusectl fusectl rw,relatime
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
│ └─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,p
│ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_misc rw,relatime
├─/dev devtmpfs devtmpfs rw,nosuid,seclabel,size=395484100k,nr_inodes=98871025,mode=755
│ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,seclabel
│ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000
│ ├─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,seclabel
│ └─/dev/mqueue mqueue mqueue rw,relatime,seclabel
├─/run tmpfs tmpfs rw,nosuid,nodev,seclabel,mode=755
│ ├─/run/user/3584810 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=79100268k,mode=700,uid=358
│ │ └─/run/user/3584810/gvfs gvfsd-fuse fuse.gvfsd-f rw,nosuid,nodev,relatime,user_id=3584810,group_id=100
│ ├─/run/user/2001 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=79100268k,mode=700,uid=200
│ └─/run/user/329918 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=79100268k,mode=700,uid=329
├─/tmp tmpfs tmpfs rw,seclabel
├─/boot /dev/sda2 xfs rw,relatime,seclabel,attr2,inode64,logbsize=64k,sunit=128,swidth=
│ └─/boot/efi /dev/sda1 vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,sh
├─/data /dev/sdb1 xfs rw,nosuid,nodev,relatime,seclabel,attr2,inode64,logbsize=64k,suni
├─/var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime
├─/bkup bkup:/bkup
nfs4 rw,nosuid,noexec,relatime,vers=4.1,rsize=1048576,wsize=1048576,na
└─/ramdisk tmpfs tmpfs rw,relatime,seclabel,size=775946240k
有了这一切,不确定还需要什么来解决任何类型的安装问题。