这是我当前的分区结构:
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 127428 0 127428 0% /lib/init/rw
udev 122976 96 122880 1% /dev
tmpfs 127428 0 127428 0% /dev/shm
rootfs 127428 11008 116420 9% /
/dev/sda1 1827534 933144 800029 54% /ro
rootfs.tmpfs 127428 11008 116420 9% /rw
rootfs.aufs 127428 11008 116420 9% /
我想建立另一个完全一样的系统,或者至少是接近的系统。另一个磁盘看起来像这样,如下所示df
:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda3 678551 594050 84501 88% /
tmpfs 124004 0 124004 0% /lib/init/rw
udev 10240 520 9720 6% /dev
tmpfs 124004 4 124000 1% /dev/shm
/dev/hda1 19515 15940 3575 82% /boot
/dev/hda2 253807 7002 246805 3% /var/log_compressed
tmpfs 124004 0 124004 0% /tmp
tmpfs 124004 3552 120452 3% /var/log
tmpfs 124004 0 124004 0% /var/tmp
tmpfs 124004 20 123984 1% /var/run
tmpfs 124004 0 124004 0% /var/lock
tmpfs 124004 0 124004 0% /var/spool
我读了很多,但我不知道如何使用 unoinfs 或 initramfs 进行设置。
我将非常感谢帮助和解释我确实读了很多,但我不知道如何通过 unoinfs 或 initramfs 来做到这一点。
答案1
我不知道你使用的是哪个女巫发行版。在 gentoo 上,我习惯于编写自己的 initramfs 初始化脚本。 Initramfs 只是一个很小的根文件系统,上面只安装了必要的工具,用于将根分区和 switch_root 挂载到真正的根文件系统并执行真正的 init 来接管。
对于 ro 根基系统,我建议使用南瓜文件系统。它具有完整的主线内核支持,使您的系统速度更快。对于您的 RAM 覆盖,您可以使用临时文件系统,也受内核支持。
然后您需要将它们“统一”为一个文件系统。我用奥夫斯。主线内核不支持它,如果您的发行版的内核补丁不支持它,您需要自己打补丁。 (主线不支持单个联合FS)
你可能最好自己写一个。 (我尝试了 dracut 和 genkernel,但他们没有提供处理我的任何情况所需的模块)
- 创建目录(我使用
/usr/src/initramfs
) 下载静态忙碌盒到上面的目录。这是一个静态 shell,为您提供 fsck、挂载等所需的所有 linux_utils。
mkdir /usr/src/initramfs/{bin,dev,lib,mnt,sbin,tmp,etc,proc,sys}
对于基础结构- 创建一个脚本 /usr/src/initramfs/init 并将所有命令放入其中以挂载分区、ro 文件系统和 rw 覆盖
- 将 ro 和 rw 统一为aufs挂载语法。
- 不要忘记将
--move
挂载点转移到新创建的根目录和umount
您不再需要的东西 exec switch_root /sbin/init
清除(删除)加载的 initramfs 中的所有内容并切换 root 以继续引导。- 如果您有任何内核模块,您无法编译到内核中,但仍然需要(例如奥夫斯):将它们复制到
/usr/src/initramfs/lib
/usr/src/initramfs
使用您可以使用 gz、xz、cpio 或任何您喜欢的内容创建压缩存档- 将创建的存档放在 /boot 目录中并编辑 grub 将其加载为 initrd。
为了确保您的系统使用您的自定义映像启动,请同时编译您自己的内核。 (其实并不难): Gentoo 内核文档。当您必须安装源时,只需用包管理器替换命令即可。大多数发行版都提供内核源码包。
如果您愿意更改发行版来完成它,我建议更改为 Gentoo 或 Arch。他们比其他人更灵活地处理“手动内容”,并且都提供了优秀的文档,可以以您喜欢的任何形式破解它。
答案2
虽然它可能不是解决您的主要问题(创建只读 Linux 系统)的完美解决方案,但您可以探索使用忘川。您可以找到安装指南这里,但是自动翻译不是很好,我现在没有时间发布完整的翻译。罪恶禁运,总结一下:
1)安装必要的依赖项:
sudo aptitude install aufs-modules-`uname-r` aufs-tools
2)从安装包这里,如果您的发行版存在版本。
3) 默认情况下,Lethe 冻结所有分区,但您可以编辑配置文件来更改它(请参阅我链接到的设置指南)
4) 安装该软件包会添加aufs = tmpfs
到 GRUB 菜单中的内核行,这会将系统引导到冻结状态(重新引导时所有更改都会被丢弃)。要对系统进行更改,请e
在看到 GRUB 菜单时按 按 并删除此行,或者从系统中删除它并更新 GRUB。
答案3
这段摘录来自/etc/initramfs-tools/scripts/init-bottom/__rootaufs
:
# This is a simple overview of the steps needed to use aufs on the root file system and see the /rw and /ro branches. # initramfs init-botton script # move the root file system to aufs/unionfs readonly /ro # root is mounted on ${rootmnt} # create tmpfs on /rw # create a aufs using /ro and /rw # put some files on the tmpfs to fix mtab and fstab # move aufs to rootmnt to finish the init process. # No changes to the root file system are made by this script. # # Why! # This will allow you to use a usb flash drive and control what is written to the drive. # no need to rebuild the squashfs file just to add a program. # boot to single user mode. The system works the way you expect. boot aufs=tmpfs and no changes are written to the flash. # run ubuntu on an eeePC . # Install # Install ubuntu 8.04 Hardy. Hardy has aufs installed by default # apt-get update # apt-get dist-upgrade # apt-get install aufs-tools # echo aufs >> /etc/initramfs-tools/modules # put this file in /etc/initramfs-tools/scripts/init-bottom/rootaufs # chmod 0755 rootaufs # # clean up menu.lst # update-grub # update-initramfs -u # vi /boot/grub/menu.lst # add aufs=tmpfs to the default entry. # do not add this line to single user mode. # boot to single user mode in order to install software. # note: if your home account is on the root file system, your files are in ram and not saved. #