如何在安装了 Live Ubuntu 的同一 USB 磁盘上挂载第二个分区?
我正在使用 dd 创建一个实时 USB。
我已经使用 fdisk 创建了第二个 VFAT 分区,并使用 mkfs.ext2 对其进行了格式化。
当我尝试运行“ sudo mount /dev/sda2 /mnt
”时出现错误:/dev/sda2 already mounted or /mnt is busy.
这可能是因为 /dev/sda(整个驱动器,而不是分区)已经以类型 iso9660 安装在 /cdrom 上。
我该如何克服这个问题,我需要能够永久地存储在第二个分区上一些文件。
答案1
问题是 /dev/sda 包含 /dev/sda2。如果两者都应作为读写文件系统安装,这将是一个严重的障碍。但在您的情况下,/dev/sda(也在 /dev/sda1 中)中的 ISO 9660 是只读的。因此不会发生文件系统冲突。
通常,挂载两个文件系统的正确方法是卸载 /dev/sda,然后挂载 /dev/sda1。它与 /dev/sda2 不重叠。因此 mount(8) 不会出现任何问题
但是,如果正在运行的系统依赖于 ISO 9660 文件系统中的文件,则可能无法将其卸载。在这种情况下,仍存在使用循环设备(如 /dev/loop0)的后门。此类设备基于数据文件或块设备文件。它充当块设备。有关详细信息,请参阅 man losetup(8)。
mount(8) 提供了方便的选项“loop”。因此,尽管 /dev/sda 已经挂载,但这个命令仍然有效:
mount -o loop /dev/sda2 /your/mount/directory
幸运的是,mount(8) 太笨了,无法识别重叠,尽管它将分区设备列为已安装,而不是循环设备。
/dev/sdc on /mnt/iso type iso9660 (ro,relatime)
/dev/sdc2 on /mnt/fat type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)
所以这个技巧将来可能会不再起作用... :((但也许它也足够聪明,能够认识到重叠是无害的。)
答案2
我无法成功修改使用 Startup Disk Creator 或 Rufus 创建的 ISO 9660 驱动器上的分区。
但是如果你使用韓國为了制作驱动器,您将获得一个小型的 FAT32 启动分区、一个 ISO 9660 操作系统分区、一个 ext4 casper-rw 持久分区和一个 NTFS 数据分区(如果需要)。
然后,如果您不需要持久性,则可以删除 casper-rw 分区,然后扩展或重新格式化 NTFS 分区以满足您的需要。