use*_*686 6 linux ramdisk multi-boot fstab ubuntu
我有一个 USB 闪存驱动器,在 Windows PE 和其他东西中,它在虚拟(基于文件的)分区上有一个 Ubuntu 11.04 系统:
<drive>/ubuntu/disks/boot.disk mount point /boot (contains GRUB)
<drive>/ubuntu/disks/root.disk mount point / (contains rest of system)
Run Code Online (Sandbox Code Playgroud)
它工作正常...
但是,所有更改在关闭后仍然存在。
我还希望GRUB2 菜单上有一个附加选项,它将引导相同的安装,但会将所有写入从根文件系统重定向到 RAM,从而丢弃对根文件系统 ( root.disk)所做的任何和所有更改。
要强调的是:有一定仍然正常启动系统的选项。
(当然,不应该重定向对其他文件系统的修改——只有根磁盘和引导磁盘应该使用此选项保持不变。)
我的 /etc/fstab 目前看起来像这样:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
/host/ubuntu/disks/root.disk / ext2 loop,errors=remount-ro 0 0
/host/ubuntu/disks/boot.disk /boot ext2 loop,errors=remount-ro 0 0
Run Code Online (Sandbox Code Playgroud)
我的 grub.cfg 看起来像这样:
menuentry "Ubuntu, Linux 2.6.38-13-generic" {
insmod part_msdos
insmod ntfs
set root='(/dev/sdb,msdos1)'
search --no-floppy --fs-uuid --set=root MY_DRIVE_UUID
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.38-13-generic root=UUID=MY_DRIVE_UUID loop=/ubuntu/disks/root.disk ro acpi_sleep=nonvs acpi_osi=Linux acpi_backlight=vendor
initrd /boot/initrd.img-2.6.38-13-generic
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将我的 fstab 更改为:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
/host/ubuntu/disks/root.disk /rootdisk ext2 loop,errors=remount-ro 0 0
tmpfs /ramdisk tmpfs defaults 0 0
none / aufs br:/rootdisk=ro:/ramdisk=rw 0 1
/host/ubuntu/disks/boot.disk /boot ext2 loop,errors=remount-ro 0 0
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它没有/正确安装(我已经尝试了none, tmpfs, aufs, ordering, flags 等我能想到的所有组合),并在启动时给我一个错误。
那么......我将如何设置它?
如果没有自定义文件系统,您所要求的可能无法完成,但是有ramfs(不是ramdisk也不是tmpfs)接近。 Ramfs有时用作(嵌入式)Linux 启动时的初始文件系统,即initramfs。由于此根文件系统在内存中,因此对其所做的任何更改都不会传播回闪存中的源,并且会在关机或下次重新启动时丢失。initramfs的内容来自附加到内核二进制文件的initramfs.cpio存档文件。
可能需要自定义文件系统来“将所有写入从根文件系统重定向到 RAM”。这种类似于我帮助开发的分层文件系统:顶层文件系统是用户可访问的,实际上由两个单独的文件系统组成。用户对文件的访问需要首先在 A 文件系统中查找该文件;如果它在 A 中不存在,那么 B 文件系统应该有该文件。(A 文件系统包含 B 文件系统的更新文件,而不必更新/替换只读媒体上的 B 文件系统。)您梦想的文件系统将是类似的:访问(即打开)一个文件需要首先检查该文件已经在ramfs 中。如果是,则使用该副本;否则将文件从磁盘根文件系统复制到ramfs然后使用ramfs副本。
也许您可以将系统配置为引导、创建和挂载ramfs,将 rootfs 复制到ramfs,然后将chroot复制到ramfs。这会将整个根文件系统放在内存中,而不仅仅是您梦想中的文件系统的修改文件。
| 归档时间: |
|
| 查看次数: |
7884 次 |
| 最近记录: |