引导LINUX从固定VHD与squashfs UBUNTU ARCH Fedora Opensuse Mageia五种

Windows based Ubuntu Installer 讨论
Elwayjob36
帖子: 4
注册时间: 2016-10-25 19:37
送出感谢: 0
接收感谢: 0

LINUX VHD UBUNTU ARCH Fedora Opensuse Mageia

#16

帖子 Elwayjob36 » 2016-10-26 17:59

I think, that you are mistaken. I can prove it. Write to me in PM, we will talk.
头像
niumao
帖子: 372
注册时间: 2010-10-27 20:43
送出感谢: 2 次
接收感谢: 16 次

Re: LINUX-VHD系统的制作方法 UBUNTU ARCH Fedora Opensuse Mageia五种

#17

帖子 niumao » 2016-11-15 18:34

https://pan.baidu.com/s/1c19AJQC#list/
发布一个基于ghostplant的简化的UBUNTU 1604 系统.
有vhd (8G大小) 与 live 两种版本 可供把玩.
牛是牛顿的牛 毛是朱毛的毛
头像
niumao
帖子: 372
注册时间: 2010-10-27 20:43
送出感谢: 2 次
接收感谢: 16 次

Re: LINUX-VHD系统的制作方法 UBUNTU ARCH Fedora Opensuse Mageia五种

#18

帖子 niumao » 2017-01-17 10:59

发布两个ISO, 就是把live系统制作成iso文件了。请到一楼第一个链接下载。
有基于ghostplant简化的ubuntu1604版本和完整ubuntu1604两种版本。
用户名密码,root密码都是ubuntu .
UBT-small.iso文件系统与vhd squashfs系统一致,都是ubuntu-1604,更新到最新(4.4.0-59)。
用户名 密码 root密码都是ubuntu。 有如下用法:

1. 可以直接从VirtualBox启动,并且可以EFI启动和传统bios-mbr启动。

2. 可以和发行版live-cd一样通过grub4dos,grub2启动
(需要把casper/initrd.img casper/vmlinuz先提取出来 )。

3. 可以把ISO文件放到/grub/IMGS目录下,利用网友制作的自动ISO菜单直接启动
(只限于grub4dos启动)。

4. 启动后可以使用主目录的UCloner中的UCloner_CN或UCloner_EN(双击),
依照提示操作,将/cdrom/casper/中的文件UBT-small.squashfs 恢复到硬盘分区。

5. 也可以预先在WINDOWS系统下准备好一个固定大小的vhd虚拟磁盘,
例如名字为UBT-small.vhd,
进行初始化和建立一个分区,格式化并将其标记为活动分区。
(右键我的电脑--管理--创建vhd--初始化--建立简单卷--标记为活动分区)

再启动到UBT-small的ISO系统(或live系统)中,打开一个终端,进入到vhd文件所在目录,
运行
sudo kpartx -av UBT-small.vhd
记住其显示的输出,里面有类似于 /dev/mapper/loop2p1 型字段。

图形界面打开主目录的UCloner子目录,双击UCloner_CN(UCloner_EN),
依提示操作,将/cdrom/casper/中文件UBT-small.squashfs恢复到某个固定大小VHD硬盘的分区,
此时弹出对话框中 / 分区手动填写,如 /dev/mapper/loop2p1(与kpartx命令的输出一致) .
文件系统手动填写ext4 ,其他空白。然后一直下一步或输入y回车让其恢复系统。

注意,grub2应该空白,等待系统恢复完毕以后再手动安装。
安装grub2的参考命令:
sudo mount /dev/mapper/loop2p1 /mnt
sudo grub-install --root-directory=/mnt /dev/loop2
牛是牛顿的牛 毛是朱毛的毛
头像
niumao
帖子: 372
注册时间: 2010-10-27 20:43
送出感谢: 2 次
接收感谢: 16 次

Re: LINUX-VHD系统的制作方法 UBUNTU ARCH Fedora Opensuse Mageia五种

#19

帖子 niumao » 2017-01-18 11:23

grub2有一个命令 loopback 可以满足只用一个VHD文件的要求。一个菜单样式

代码: 全选

menuentry " UBT-small.vhd " --class  ubuntu {
	insmod gzio
	insmod part_msdos
	insmod part_gpt
	insmod ext2
	insmod ntfs
	insmod probe
	set vhdfile="/ubt/UBT-small.vhd"
	set root=(hd0,1)
	search --no-floppy -f --set=aabbcc  $vhdfile
	set root=${aabbcc}
	probe -u --set=ddeeff ${aabbcc}
	loopback loop0 $vhdfile
	linux	(loop0,1)/vmlinuz root=UUID=${ddeeff} rw  kloop=$vhdfile  kroot=/dev/mapper/loop0p1
	initrd	(loop0,1)/initrd.img
}  
对于不分区的img文件,(loop0,1)应该改用(loop0)。
牛是牛顿的牛 毛是朱毛的毛
头像
niumao
帖子: 372
注册时间: 2010-10-27 20:43
送出感谢: 2 次
接收感谢: 16 次

引导squashfs只读系统的 UBUNTU ARCH Fedora Opensuse Mageia五种

#20

帖子 niumao » 2017-02-19 12:02

发布一个可以引导squashfs只读文件系统的新版kloop,下载一楼链接里面mydracut.zip。里面有使用说明。
本版加入了一种新的引导模式,用来引导squashfs只读文件系统。(使用了overlay机制)
方法与KLOOP的方法一样,还是分为两步。
第一步,编译安装修改过的ntfs-3g。
(不修改则无法防止关机时候在卸载根设备前先卸载根设备文件所在的底层分区)。
第二步,制作内存镜像盘initrd 或initramfs。做法与KLOOP一样。
制作好后将其改名(例如initrd-fedora),与vmlinuz-XXXX(改名为vmlinuz-feodra)与squashfs文件
(例如 Fedora25.squashfs)放在同一个目录(例如casper1)下。


引导菜单,引导时候只需要root 与squashfs两个参数,root的值是squashfs文件所在分区,
squashfs的值是squashfs文件的带路径的名字。例子:

grub4dos菜单:
title 启动LIVE-Fedora
find --set-root --ignore-floppies --ignore-cd /casper1/vmlinuz-fedora
uuid ()
kernel /casper1/vmlinuz-fedora root=UUID=%?% squashfs=/casper1/Fedora25.squashfs
initrd /casper1/initrd-fedora

grub2菜单:
menuentry "live-Fedora " --class fedora {
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod ntfs
insmod probe
set sfsfile="/casper1/Fedora25.squashfs"
set root=(hd0,1)
search --no-floppy -f --set=aabbcc $sfsfile
set root=${aabbcc}
probe -u --set=ddeeff ${aabbcc}
linux /casper1/vmlinuz-fedora root=UUID=${ddeeff} squashfs=$sfsfile rw nompath nodmraid
initrd /casper1/initrd-fedora

附录===备份现有linux系统为squashfs系统的命令与恢复命令
需要linux系统安装好squashfs-tool,以及rsync。以Fedora25为例子。假设根设备为/dev/sda12。备份feodra25到/dev/sda9的目录casper1下,备份名字为Fedora25.squashfs。
su
cd /tmp
mkdir mm tt
mount /dev/sda12 mm
mount /dev/sda9 tt
mksquashfs mm tt/casper1/Fedora25.squashfs -b 262144 -comp xz -e tmp/mm tmp/tt

恢复命令
假设启动到了squashfs系统中后,要把Fedora25.squashfs恢复到硬盘/dev/sda12中,可以如下操作:
su
cd /tmp
mkdir mm tt
mount /host/casper1/Fedora25.squashfs mm
mount /dev/sda12 tt
rsync -SHav mm/* tt/
等恢复完毕后再通过修改grub4dos的menu.lst或grub2的菜单来设置引导即可。
上次由 niumao 在 2017-03-05 17:10,总共编辑 1 次。
牛是牛顿的牛 毛是朱毛的毛
头像
niumao
帖子: 372
注册时间: 2010-10-27 20:43
送出感谢: 2 次
接收感谢: 16 次

Re: 引导LINUX从固定VHD与squashfs UBUNTU ARCH Fedora Opensuse Magei

#21

帖子 niumao » 2017-03-05 17:09

使用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挂载那一行。
牛是牛顿的牛 毛是朱毛的毛
回复

回到 “Wubi安装讨论”