在 2025/9/10 8:06, Dave Chinner 写道: > On Tue, Sep 09, 2025 at 07:29:02PM +0800, Wu Guanghao wrote: >> When starting a Fedora virtual machine using QEMU, if the device corresponding >> to the root directory is the entire disk or a disk partition, the device >> recorded in /proc/self/mounts will be /dev/root instead of the true device. > > How does this /dev/root situation occur? My fedora VMs > show the real root device and not /dev/root in /proc/self/mounts, > so it's not clear to me why /dev/root is being reported here? > I am using a Fedora 42 Server qcow2 image, and then I convert the image to partitions and LVM devices using qemu-nbd. Afterwards, I pass through the partition devices and LVM devices using qemu. $ lsblk ... nbd0 43:0 0 10G 0 disk ├─nbd0p1 43:1 0 500M 0 part ├─nbd0p2 43:2 0 1000M 0 part └─nbd0p3 43:3 0 8.5G 0 part └─systemVG-LVRoot 253:7 0 8.5G 0 lvm qemu start scripts: qemu-system-aarch64 \ ... \ -drive id=root,if=virtio,media=disk,format=raw,file=/dev/systemVG/LVRoot \ -drive id=boot,if=virtio,media=disk,format=raw,file=/dev/nbd0p2 \ -drive id=efi,if=virtio,media=disk,format=raw,file=/dev/nbd0p1 \ > This smells of a custom boot sequence that is mounting the root > filesystem on a temporary initramfs /dev/root node (which then gets > removed once the initramfs is done) rather than using pivot_root to > move the real root fs into place once the real device nodes have > been initialised and the root fs mounted using them... > >> This can lead to the failure of executing commands such as xfs_growfs/xfs_info. >> >> $ cat /proc/self/mounts >> /dev/root / xfs rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0 >> devtmpfs /dev devtmpfs rw,seclabel,relatime,size=4065432k,nr_inodes=1016358,mode=755 0 0 >> ... > >> >> $ mount >> /dev/sda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) >> devtmpfs on /dev type devtmpfs (rw,relatime,seclabel,size=4065432k,nr_inodes=1016358,mode=755) >> ... >> >> $ xfs_growfs / >> xfs_growfs: / is not a mounted XFS filesystem >> >> $ xfs_growfs /dev/sda3 >> xfs_growfs: /dev/sda3 is not a mounted XFS filesystem >> >> $ xfs_info / >> /: cannot find mount point.# >> >> So, if the root device is found to be /dev/root, we need to obtain the >> corresponding real device first. > > IMO, having a bogus device in /proc/self/mounts output is the > problem that needs to be fixed here. Working around a broken > /dev/root device in every userspace utility that reads > /proc/self/mounts does not feel like the right way to address this > problem. > I have reviewed the source code of the util-linux mount command and the e2fsprogs resize2fs command, and both of these have logic for checking and handling /dev/root. > -Dave.