|
本帖最后由 2011niumao 于 2017-3-5 17:12 编辑
使用overlay机制,可以从一个目录内引导linux,这个为多系统玩家提供了方便,不需要再为每个系统单独分区了。
具体使用参看一楼的第一个链接的mydracut-new.zip文件。
主要想法是,把系统所在子目录作为upperdir,同一分区的另一个空目录作为workdir,内存一个目录作为lowerdir,就可以
叠合成为一个overlay文件系统,再把它挂载在根上就可以了。
- 本版加入了一种新的引导模式,用来引导安装在一个目录以内的文件系统。(使用了overlay机制)
- 方法只有一步,就是制作能引导目录内linux系统的内存镜像盘initrd 或initramfs。
- 具体做法看各个子目录内的详细说明(就是KLOOP方法的第二步)。
- 引导菜单,引导时候需要root 与upperdir,workdir三个个参数,root的值是目录文件系统所在分区,
- upperdir的值是文件系统所在目录的带路径的名字。workdir应该是与upperdir在同一分区,同一层次的
- 另一个子目录(新建一个空目录或者使用现成的空目录即可)。(lowerdir是内存中的一个目录,不用处理)
- 例如,我在一个ext4分区内安装了一个linux系统,又在这个分区根目录下建立了两个目录,名字为UBT-small ,host。然后把一个安装好的UBUNTU系统复制到UBT-small目录内,host目录保持为空目录。引导菜单如下:
- grub4dos菜单:
- title 启动upperdir-UBUNTU
- find --set-root --ignore-floppies --ignore-cd /UBT-small/vmlinuz
- uuid ()
- kernel /UBT-small/vmlinuz root=UUID=%?% upperdir=/UBT-small workdir=/host apparmor=0
- initrd /UBT-small/initrd.img
- grub2菜单:
- menuentry "upperdir-UBUNTU " --class ubuntu {
- insmod gzio
- insmod part_msdos
- insmod part_gpt
- insmod ext2
- insmod ntfs
- insmod probe
- set root=(hd0,1)
- search --no-floppy -f --set=aabbcc /UBT-small/vmlinuz
- set root=${aabbcc}
- probe -u --set=ddeeff ${aabbcc}
- linux /UBT-small/vmlinuz root=UUID=${ddeeff} upperdir=/UBT-small workdir=/host apparmor=0
- initrd /UBT-small/initrd.img
- }
- 注释1:对于目录内的ubuntu系统,需要注意两点,第一,引导时候加入参数apparmor=0,这样网络
- 可以自动检测好链接好。第二,在更新内核时候会遇到grub错误,解决方法是彻底卸载grub包。只使用
- 其他系统的grub2或者grub4dos引导。对于其他linux版本,应该不需要这两点。
- 注释2:可以使用rsync命令把一个安装好的ubuntu系统同步复制到子目录UBT-samll下,复制完成
- 后应该修改/etc/fstab文件,注释掉root挂载那一行。
复制代码 |
|