引导LINUX从固定VHD与squashfs UBUNTU ARCH Fedora Opensuse Mageia五种
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 4
- 注册时间: 2016-10-25 19:37
LINUX VHD UBUNTU ARCH Fedora Opensuse Mageia
I think, that you are mistaken. I can prove it. Write to me in PM, we will talk.
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
Re: LINUX-VHD系统的制作方法 UBUNTU ARCH Fedora Opensuse Mageia五种
https://pan.baidu.com/s/1c19AJQC#list/
发布一个基于ghostplant的简化的UBUNTU 1604 系统.
有vhd (8G大小) 与 live 两种版本 可供把玩.
发布一个基于ghostplant的简化的UBUNTU 1604 系统.
有vhd (8G大小) 与 live 两种版本 可供把玩.
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
Re: LINUX-VHD系统的制作方法 UBUNTU ARCH Fedora Opensuse Mageia五种
发布两个ISO, 就是把live系统制作成iso文件了。请到一楼第一个链接下载。
有基于ghostplant简化的ubuntu1604版本和完整ubuntu1604两种版本。
用户名密码,root密码都是ubuntu .
有基于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
- 帖子: 392
- 注册时间: 2010-10-27 20:43
Re: LINUX-VHD系统的制作方法 UBUNTU ARCH Fedora Opensuse Mageia五种
grub2有一个命令 loopback 可以满足只用一个VHD文件的要求。一个菜单样式对于不分区的img文件,(loop0,1)应该改用(loop0)。
代码: 全选
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
}
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
引导squashfs只读系统的 UBUNTU ARCH Fedora Opensuse Mageia五种
发布一个可以引导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
- 帖子: 392
- 注册时间: 2010-10-27 20:43
Re: 引导LINUX从固定VHD与squashfs UBUNTU ARCH Fedora Opensuse Magei
使用overlay机制,可以从一个目录内引导linux,这个为多系统玩家提供了方便,不需要再为每个系统单独分区了。
具体使用参看一楼的第一个链接的mydracut-new.zip文件。
主要想法是,把系统所在子目录作为upperdir,同一分区的另一个空目录作为workdir,内存一个目录作为lowerdir,就可以
叠合成为一个overlay文件系统,再把它挂载在根上就可以了。
具体使用参看一楼的第一个链接的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挂载那一行。
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
发布UBUNTU18.04与UBUNTU20.04两个SQUASHFS只读系统
在一楼百度云共享上传了两个 ubuntu18.04x64(设置好了桌面特效) 与 ubuntu 20.04x64(无桌面特效) 的2G左右的squashfs 文件系统, 用7z分割为3,4个小文件.
有兴趣的可以连带启动用的initrd.img1804 ,vmlinuz1804 一起下载下来,用7z把多个分卷解压合并为一个, 将squashfs文件与vmlinuz1804, initrd.img1804拷贝到一个硬盘分区(或优盘内)的名字为ubuntu的子目录内(如果没有就自己建立一个).如下写好grub4dos,grub2的引导菜单, 就可以直接启动到squashfs系统来体验使用了.
grub4dos菜单:
grub2菜单:
注释:对于squahsfs的ubuntu系统,需要在引导时候加入参数apparmor=0,这样网络可自动链接。
有兴趣的可以连带启动用的initrd.img1804 ,vmlinuz1804 一起下载下来,用7z把多个分卷解压合并为一个, 将squashfs文件与vmlinuz1804, initrd.img1804拷贝到一个硬盘分区(或优盘内)的名字为ubuntu的子目录内(如果没有就自己建立一个).如下写好grub4dos,grub2的引导菜单, 就可以直接启动到squashfs系统来体验使用了.
grub4dos菜单:
代码: 全选
title UBUNTU1804-squashfs
find --set-root --ignore-floppies --ignore-cd /ubuntu/UBUNTU1804.squashfs
uuid ()
kernel /ubuntu/vmlinuz1804 root=UUID=%?% squashfs=/ubuntu/UBUNTU1804.squashfs apparmor=0
initrd /ubuntu/initrd.img1804
代码: 全选
menuentry "UBUNTU1804-squashfs " --class ubuntu {
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod ntfs
insmod probe
set sfsfile="/ubuntu/UBUNTU1804.squashfs"
set root=(hd0,1)
search --no-floppy -f --set=aabbcc $sfsfile
set root=${aabbcc}
probe -u --set=ddeeff ${aabbcc}
linux /ubuntu/vmlinuz1804 root=UUID=${ddeeff} squashfs=$sfsfile rw apparmor=0
initrd /ubuntu/initrd.img1804
上次由 niumao 在 2020-04-27 9:38,总共编辑 10 次。
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
SQUASHFS只读文件系统的几种使用方法
第一,可以放在一个硬盘分区上,作好启动设置后直接启动到这个只读squashfs系统。也可仅作为备份存储。
第二,可以拷贝到优盘上,把优盘做好启动设置(启动盘),可以作为(只读)随身带系统。
第三,可以恢复到一个指定的硬盘分区(需要把该分区的所有数据备份到其他地方)。
(注意,恢复时先进入squashfs系统,然后把这个分区格式化为ext4,分区的原有的所有数据不在存在)
第四,也可以使用boot=casper启动方式,但要求必须把squashfs文件放在某个分区的一个名字为casper的目录内。
第五, 最后的也是最重要的,制作成一个可写的固定vhd系统(仅需一个优盘作启动盘,启动方式是grub4dos或grub2)
先在windows下或者winPE下制作一个固定大小的VHD(最小8G,推荐16G或24G),初始化,
作分区(格式化为fat ntfs都可以,后面还需要格式化ext4),标记为活动分区。
再启动到squashfs系统,在这个系统里面先使用kpartx识别vhd,再把vhd上分区格式化为ext4,
挂载这个vhd上的分区后用rsync把整个系统克隆到已经做好的固定VHD上。
最后编辑好(启动盘)上的grub4dos grub2的启动菜单就可以了。
注释1:不管squashfs文件在硬盘还是在优盘,都可以只把启动方式做在优盘上,即grub4dos grub2和菜单都在优盘里,
这样不涉及本地硬盘的引导问题,是一种更安全的方式。然后把引导优盘插在电脑上启动后选择从优盘引导。
注释2 : 如果想用VirtualBox启动这个vhd,再在squashfs系统里给vhd盘安装grub2,手工编辑一下grub.cfg即可。
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
在SQUASHFS只读系统中制作可写img系统.
当启动到一个只读squashfs系统后,如果想安装一些自己喜欢的软件并且保留到系统中,可以预先制作一个固定大小的vhd再把整个系统同步rsync到vhd的分区上.也可以在squashfs系统中制作一个img,把系统恢复到img上,以UBUNTU2004.squashfs为例, 在squashfs系统中依次输入命令如下.
制作完毕.这里kpartx命令可能不需要,存疑.另外输出文件在标签为UBT的硬盘分区的子目录ubuntu内,文件名字为ubt.vhd(正常的名字后缀应该为img).再设置引导即可直接启动到这个可写img系统,grub2菜单如下
GRUB4DOS需要把两个引导文件拷贝到外面,菜单例子如下.
附注1: 这个就是传统的wubi安装模式, 只是kloop引导模式包含wubi模式作为一个特例.
附注2: 最好在squashfs系统中运行"sudo blkid"查看img文件系统的uuid, 并把img文件系统中"/etc/fstab"文件修改好再重启.
代码: 全选
sudo dd if=/dev/zero of=/media/ubuntu/UBT/ubuntu/ubt.vhd bs=1G count=16
sudo kpartx -av /media/ubuntu/UBT/ubuntu/ubt.vhd
sudo mkfs.ext4 /media/ubuntu/UBT/ubuntu/ubt.vhd
sudo mkdir /tmp/mm /tmp/tt
sudo mount --bind / /tmp/mm
sudo mount /media/ubuntu/UBT/ubuntu/ubt.vhd /tmp/tt
sudo rsync -SHav /tmp/mm/* /tmp/tt/
代码: 全选
enuentry "ubt-VHD" --class ubuntu {
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod ntfs
insmod probe
set vhdfile="/ubuntu/ubt.vhd"
set root=(hd0,1)
search --no-floppy -f --set=aabbcc $vhdfile
set root=${aabbcc}
probe -u --set=ddeeff ${aabbcc}
loopback lo $vhdfile
linux (lo)/boot/vmlinuz root=UUID=${ddeeff} kloop=$vhdfile rw kroot=/dev/loop0 audit=0 apparmor=0
initrd (lo)/boot/initrd.img
}
代码: 全选
title 启动ubt.img
find --set-root --ignore-floppies --ignore-cd /ubuntu/ubt.img
uuid ()
kernel /ubuntu/vmlinuz root=UUID=%?% kloop=/ubuntu/ubt.img kroot=/dev/loop0
initrd /ubuntu/initrd.img
附注2: 最好在squashfs系统中运行"sudo blkid"查看img文件系统的uuid, 并把img文件系统中"/etc/fstab"文件修改好再重启.
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
ubuntu-kloop各个文件修改的详细注释
请看附件里的各个pdf文件.download/file.php?mode=view&id=192170
这个附件是基于UBUNTU 1804 LTS的
关于ubuntu 20.04LTS的init文件,只有那个nosuid语句在后面了.所有改动是一样的.
这个附件是基于UBUNTU 1804 LTS的
关于ubuntu 20.04LTS的init文件,只有那个nosuid语句在后面了.所有改动是一样的.
- 附件
-
- initubt2004kloop.zip
- (104.06 KiB) 已下载 135 次
-
- readme-ubuntukloop.zip
- (421.26 KiB) 已下载 239 次
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
windows 64位xournalpp中文输入的解决方法
推荐一款自由开源软件 xournalpp , 用于 批注pdf文件, Latex输入数学公式, 手写输入.
系统 win10 64位, 最好安装上texlive2020系统(可以输入latex数学公式)
https://github.com/xournalpp/xournalpp/releases
Automated nightly build
点击Assets 下载 xournalpp-1.1.0.dev-nightly.20210218-windows.zip 安装即可.
提示: 安装路径不要有汉字与空格.
如果安装后, 输入汉字无法显示, 可以下载附件, 解压到 xournal++目录里lib子目录下, 重启xournalpp即可.
苦战xournalpp一周。第一,汉字输入问题,很早以前解决(原因不详),解决是加入输入模块gtk-3.0。第二,数学公式输入不能编译显示问题,原因经过七八天反复尝试,终于发现是系统变量temp的设置值的问题,win7x64缺省设置的temp值可能过长或者有linux角度或latex角度看的非法字符,造成tex文件编译时候不能通过。只要重新设置一下temp系统变量的值就可以了。例如,修改设置temp值为c:\texlive\tmp,这个目录是自己手工建立的。重启后就可以编译通过了。
系统变量temp与path一样,我的电脑,属性,高级系统设置,环境变量,用户变量栏里设置更改。更改后重启生效。
可以在以下百度云盘下载第一楼附件,xournalpp_readme。https://pan.baidu.com/s/18NTBbzlVLdHXxUcnpXFMNw 提取码 w4af
系统 win10 64位, 最好安装上texlive2020系统(可以输入latex数学公式)
https://github.com/xournalpp/xournalpp/releases
Automated nightly build
点击Assets 下载 xournalpp-1.1.0.dev-nightly.20210218-windows.zip 安装即可.
提示: 安装路径不要有汉字与空格.
如果安装后, 输入汉字无法显示, 可以下载附件, 解压到 xournal++目录里lib子目录下, 重启xournalpp即可.
苦战xournalpp一周。第一,汉字输入问题,很早以前解决(原因不详),解决是加入输入模块gtk-3.0。第二,数学公式输入不能编译显示问题,原因经过七八天反复尝试,终于发现是系统变量temp的设置值的问题,win7x64缺省设置的temp值可能过长或者有linux角度或latex角度看的非法字符,造成tex文件编译时候不能通过。只要重新设置一下temp系统变量的值就可以了。例如,修改设置temp值为c:\texlive\tmp,这个目录是自己手工建立的。重启后就可以编译通过了。
系统变量temp与path一样,我的电脑,属性,高级系统设置,环境变量,用户变量栏里设置更改。更改后重启生效。
可以在以下百度云盘下载第一楼附件,xournalpp_readme。https://pan.baidu.com/s/18NTBbzlVLdHXxUcnpXFMNw 提取码 w4af
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
新制作vhd教程
这两天把ntfs-3g升级为2021版了,把grubsmall升级为2022版了,写了一个详细的 pdf 的新教程,
制作vhd的UBUNTU.pdf
简化了代码也简化了一些操作。
在虚拟机内可以直接复制粘贴 pdf 教程里的命令和代码,这样就对网友们友好多了。
有兴趣可以去第一楼所给百度云链接下载。
新的grubsmall2022的菜单针对的是,
vhd文件名为 ubt.vhd ,和两个引导文件 vmlinuz initrd.img 一起放在一个硬盘根分区下。
如果你的部署与此不同,根据具体情况编辑grub2菜单来调整引导参数。
制作vhd的UBUNTU.pdf
简化了代码也简化了一些操作。
在虚拟机内可以直接复制粘贴 pdf 教程里的命令和代码,这样就对网友们友好多了。
有兴趣可以去第一楼所给百度云链接下载。
新的grubsmall2022的菜单针对的是,
vhd文件名为 ubt.vhd ,和两个引导文件 vmlinuz initrd.img 一起放在一个硬盘根分区下。
如果你的部署与此不同,根据具体情况编辑grub2菜单来调整引导参数。
上次由 niumao 在 2022-08-19 13:46,总共编辑 2 次。
牛是牛顿的牛 毛是朱毛的毛
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
Fedora的vhd,squashfs不能引导的纠正方法
第一点,引导参数 root=UUID=XXXXXXXXXXXXXXX 不知什么原因导致内核不能识别。可以放弃使用自动探测UUID这一做法,编辑grub2菜单,把root参数改用vhd文件或squashfs文件所在分区的卷标(必须全英文)。
第二点,如果出现与UID 1000用户 有关的引导错误,在grub2的菜单linux语句的后面加入 selinux=0, 如下
代码: 全选
linux /vmlinuz root=LABEL=XXXX kloop=/Fedora.vhd kroot=/dev/mapper/loop0p1 selinux=0
牛是牛顿的牛 毛是朱毛的毛
-
- 帖子: 98
- 注册时间: 2013-12-13 6:57
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
Re: 引导LINUX从固定VHD与squashfs UBUNTU ARCH Fedora Opensuse Mageia五种
OKsxgpic 写了: ↑2022-08-20 5:30 以下这个项目使用并改进了你的代码(可以不依赖 ntfs-3g,可以在 exfat 分区启动),以及lub的部分代码:
https://github.com/blickers/livebackup
牛是牛顿的牛 毛是朱毛的毛