无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011niumao
打印 上一主题 下一主题

[教程] 从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种

    [复制链接]
421#
 楼主| 发表于 2019-5-28 12:22:10 | 只看该作者
本帖最后由 2011niumao 于 2019-5-28 12:24 编辑
763180872 发表于 2019-5-27 10:20
kpartx-boot 这个工具安装不了,没啥关系么,

3-2 . 修改mkinitramfs文件

只要有 kpartx 命令就可以了.你可以直接安装kpartx.不一定是kpartx-boot.
第二个,好像后来没有那一段了,你找一个合适的地方插入进去即可,参考一下附件.

mkinitramfs.zip

3.72 KB, 下载次数: 11, 下载积分: 无忧币 -2

点评

好的,非常感谢,晚点试试  详情 回复 发表于 2019-5-28 14:10
回复

使用道具 举报

422#
发表于 2019-5-28 14:10:40 | 只看该作者
2011niumao 发表于 2019-5-28 12:22
只要有 kpartx 命令就可以了.你可以直接安装kpartx.不一定是kpartx-boot.
第二个,好像后来没有那一段了, ...

好的,非常感谢,晚点试试
回复

使用道具 举报

423#
发表于 2019-6-5 15:24:51 | 只看该作者
楼主,为啥没有centos的修改步骤?是不支持吗

点评

支持的.只不过与其他版本差不多.就不单独列出了, 有兴趣可以模仿Fedora 做做看.都是一个命令搞定了.  详情 回复 发表于 2019-6-7 21:07
回复

使用道具 举报

424#
 楼主| 发表于 2019-6-7 21:07:53 | 只看该作者
指南针 发表于 2019-6-5 15:24
楼主,为啥没有centos的修改步骤?是不支持吗

支持的.只不过与其他版本差不多.就不单独列出了,
有兴趣可以模仿Fedora 做做看.都是一个命令搞定了.
回复

使用道具 举报

425#
发表于 2019-6-20 11:57:36 | 只看该作者
grub4引导如何在菜单上加WIN7-8-10 XP的vhd菜单?
回复

使用道具 举报

426#
发表于 2019-11-10 14:54:54 | 只看该作者
感谢大神
回复

使用道具 举报

427#
发表于 2019-12-4 16:54:15 | 只看该作者
希望大神写个制作引导文件的自动处理脚本,不然好多人不会弄,谢谢.
回复

使用道具 举报

428#
发表于 2019-12-8 18:02:50 | 只看该作者
deep上卡在mkinitramfs这一步有问题,再研究研究

点评

deepin15.5做成过,现在deepin15.11弄了好几天搞不定,那几个文件里的代码和教程里的不一样  详情 回复 发表于 2019-12-9 16:24
回复

使用道具 举报

429#
发表于 2019-12-9 16:24:42 | 只看该作者
Kernelam2 发表于 2019-12-8 18:02
deep上卡在mkinitramfs这一步有问题,再研究研究

deepin15.5做成过,现在deepin15.11弄了好几天搞不定,那几个文件里的代码和教程里的不一样
回复

使用道具 举报

430#
发表于 2020-1-18 17:58:30 | 只看该作者
从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种
回复

使用道具 举报

431#
发表于 2020-2-7 10:08:26 | 只看该作者
我就说一件事,你们自己制作好之后记得一定用真机启动进行测试
不要像某个傻X一样用虚拟机启动了100多次还没反应过来
回复

使用道具 举报

432#
发表于 2020-6-1 15:33:17 | 只看该作者
谢谢分享
回复

使用道具 举报

433#
发表于 2020-6-11 23:13:21 | 只看该作者
本帖最后由 2011hjcjie 于 2020-6-11 23:16 编辑

楼主辛苦,今看到楼主更新内容我跟进尝鲜。
现请教用只读squashfs系统制作固定vhd的可写系统时引导设置时的问题。
menuentry "UBT-small.vhd " --class ubuntu {
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod ntfs
insmod probe
set vhdfile="/ubuntu/UBT-small.vhd"
set root=(hd0,1)
search --no-floppy -f --set=aabbcc  $vhdfile
set root=${aabbcc}
probe -u --set=ddeeff ${aabbcc}
loopback lp0 $vhdfile
linux (lp0,1)/vmlinuz root=UUID=${ddeeff}  kloop=$vhdfile  kroot=/dev/mapper/loop0p1
initrd (lp0,1)/initrd.img
}

上面代码中(lp0,1)的1代表的时什么? gpt格式的话是GPT2吗?

点评

lp0来自于第一个命令loopback,你可以把lp0改为其他名字,两个一起改动就可以.  详情 回复 发表于 2020-6-12 12:25
lp0,1表示第一个loop盘的第一个分区. gpt按照实际分区顺序写为(lp0,x)应该可以 根据我的测试,现在推荐把vmlinuz initrd.img拷贝到vhd文件外面,使用其引导. 这样做,第一兼顾grub4dos; 第二,兼顾安全启动, 这时  详情 回复 发表于 2020-6-12 12:23
回复

使用道具 举报

434#
 楼主| 发表于 2020-6-12 12:23:56 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 12:45 编辑
2011hjcjie 发表于 2020-6-11 23:13
楼主辛苦,今看到楼主更新内容我跟进尝鲜。
现请教用只读squashfs系统制作固定vhd的可写系统时引导设置时 ...

lp0,1表示第一个loop盘的第一个分区. gpt按照实际分区顺序写为(lp0,x)应该可以
根据我的测试,现在推荐把vmlinuz initrd.img拷贝到vhd文件外面,使用其引导.

这样做,第一兼顾grub4dos;
第二,兼顾安全启动, 这时候把grub2-efi放在fat32优盘上,把vmlinuz initrd.img也放在优盘上,
可以安全启动.  (能安全启动的grub2可以自己从ubuntu2004发行光盘里获得)

点评

固定VHD还是没有启动成功 引导代码如下 menuentry "ubt.vhd" --class ubuntu { insmod gzio insmod part_msdos insmod part_gpt insmod ext2 insmod ntfs insmod probe set vhdfile="/ubun  详情 回复 发表于 2020-6-12 18:26
回复

使用道具 举报

435#
 楼主| 发表于 2020-6-12 12:25:46 | 只看该作者
2011hjcjie 发表于 2020-6-11 23:13
楼主辛苦,今看到楼主更新内容我跟进尝鲜。
现请教用只读squashfs系统制作固定vhd的可写系统时引导设置时 ...
  1. loopback lp0 $vhdfile
  2. linux (lp0,1)/vmlinuz
复制代码
lp0来自于第一个命令loopback,你可以把lp0改为其他名字,前后一致就可以.
回复

使用道具 举报

436#
发表于 2020-6-12 18:26:30 | 只看该作者
本帖最后由 2011hjcjie 于 2020-6-12 18:33 编辑
2011niumao 发表于 2020-6-12 12:23
lp0,1表示第一个loop盘的第一个分区. gpt按照实际分区顺序写为(lp0,x)应该可以
根据我的测试,现在推荐把 ...

固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "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=(hd1,gpt2)
search --no-floppy -f --set=aabbcc  $vhdfile
set root=${aabbcc}
probe -u --set=ddeeff ${aabbcc}
loopback lp0 $vhdfile
linux (lp0,1)/boot/vmlinuz root=UUID=${ddeeff}  kloop=$vhdfile  kroot=/dev/mapper/loop0p1
initrd (lp0,1)/boot/initrd.img
}

微信图片_20200612102259.jpg (165.62 KB, 下载次数: 199)

微信图片_20200612102259.jpg

批注 2020-06-12 103257.png (277.09 KB, 下载次数: 191)

批注 2020-06-12 103257.png

点评

还有一种情形,需要注意 就是先进入squashfs系统,在这个系统下修改vhd系统中的/etc/fstab文件,把它的根分区 / 那一行修改正确. 在制作squashfs文件系统时候,会注释掉 / 这一行,如下 这里的三个###是注释掉这一行的  详情 回复 发表于 2020-6-12 19:45
root参数也有可能不对. 有些场合下自动查询uuid,并传递给linux内核的做法会失效 (比如安全启动的场合. 查询uuid的模块不能加载) 此时只能直接给出明确的root参数值.比如好处理的,可以使用LABEL. 把那个Windows更  详情 回复 发表于 2020-6-12 19:27
kloop参数是不是应该改为 /dev/mapper/loop0p2 ? 还是 /dev/mapper/loop0p3? 可以在squashfs 文件系统里面,使用 kpartx -av VHD文件名 看出来根分区应该是第几个的. 如果windows下分区gpt磁盘可能有ms隐藏分区的  详情 回复 发表于 2020-6-12 19:18
回复

使用道具 举报

437#
 楼主| 发表于 2020-6-12 19:18:43 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 19:31 编辑
2011hjcjie 发表于 2020-6-12 18:26
固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "ubt.vhd" --class ubuntu {

首先,grub2没有问题,唯一的问题可能是linux命令中的root ,kroot, kloop参数是否正确了

kroot参数是不是应该改为 /dev/mapper/loop0p2 ? 还是 /dev/mapper/loop0p3?
可以在squashfs 文件系统里面,使用 kpartx -av VHD文件名 看出来根分区应该是第几个的.

如果windows下分区gpt磁盘可能有ms隐藏分区的,因此可能是 /dev/mapper/loop0p2 或者/dev/mapper/loop0p3

点评

kroot 参数应该每问题吧  详情 回复 发表于 2020-6-12 20:14
回复

使用道具 举报

438#
 楼主| 发表于 2020-6-12 19:27:21 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 19:36 编辑
2011hjcjie 发表于 2020-6-12 18:26
固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "ubt.vhd" --class ubuntu {

root参数也有可能不对. 有些场合下自动查询uuid,并传递给linux内核的做法会失效
(比如安全启动的场合. 查询uuid的模块不能加载)
此时只能直接给出明确的root参数值.比如好处理的,可以使用LABEL.
  1. root=LABEL=Windows
复制代码

把那个Windows更改为你的硬盘上vhd文件所在分区的标签即可.
(这里分区标签不能中文或者有空格)

如果root kloop kroot 参数正确,还有一种可能就是恢复到固定vhd时候出错
(比如没有把固定vhd中分区格式化为ext4),那就需要重新进入squashfs系统,重新格式化和运行rsync 再制作一遍了.

回复

使用道具 举报

439#
 楼主| 发表于 2020-6-12 19:45:54 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 19:58 编辑
2011hjcjie 发表于 2020-6-12 18:26
固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "ubt.vhd" --class ubuntu {
还有一种情形,需要注意
就是先进入squashfs系统,在这个系统下修改vhd系统中的/etc/fstab文件,把它的根分区 / 那一行修改正确.
在制作squashfs文件系统时候,会注释掉 / 这一行,如下
  1. # /etc/fstab: static file system information.
  2. #
  3. # Use 'blkid -o value -s UUID' to print the universally unique identifier
  4. # for a device; this may be used with UUID= as a more robust way to name
  5. # devices that works even if disks are added and removed. See fstab(5).
  6. #
  7. # <file system> <mount point>   <type>  <options>       <dump>  <pass>
  8. proc            /proc           proc    nodev,noexec,nosuid 0       0
  9. ###/dev/sda10
  10. ###UUID=29b92931-2ac3-4720-a5ed-40b9a3cc1241      /      ext4      errors=remount-ro      0      1
复制代码
这里的UUID前面的三个###是注释掉这一行的意思. 进入squashfs系统后,挂载vhd文件,将这三个###号去掉,运行blkid查询出正确的uuid,替换掉那一串字母数字组合,保存,
  1. # /etc/fstab: static file system information.
  2. #
  3. # Use 'blkid -o value -s UUID' to print the universally unique identifier
  4. # for a device; this may be used with UUID= as a more robust way to name
  5. # devices that works even if disks are added and removed. See fstab(5).
  6. #
  7. # <file system> <mount point> <type> <options> <dump> <pass>
  8. proc /proc proc nodev,noexec,nosuid 0 0
  9. ###/dev/sda10
  10. UUID=812c1d35-3253-4a11-88db-e2e0834bf717 / ext4 errors=remount-ro 0 1
复制代码
(这里UUID后面是随便写的,需要更换为vhd中linux系统的根分区的uuid).重启后就可以进入了.

在squashfs 文件系统中需执行以下命令
  1. sudo kpartx -av VHD文件名(带路径)
  2. sudo mount /dev/mapper/loop8px /mnt
  3. sudo blkid
  4. sudo gedit /mnt/etc/fstab
  5. sudo umount /mnt
  6. sudo kpartx -d /dev/loop8
  7. sudo losetup -d /dev/loop8
  8. sudo reboot
复制代码

点评

loop8px 这个参数是什么意思?  详情 回复 发表于 2020-6-12 20:39
最后这种可能性最大. 我也遇到了几次图片中显示的引导失败情形, 改了/etc/fstab 就成功引导了. 猜想其机制是: 由于/etc/fstab里的根分区挂载信息被注释掉 (不注释时候启动squashfs文件系统会出错) 所以系统检测  详情 回复 发表于 2020-6-12 19:51
回复

使用道具 举报

440#
 楼主| 发表于 2020-6-12 19:51:22 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 19:52 编辑
2011niumao 发表于 2020-6-12 19:45
还有一种情形,需要注意
就是先进入squashfs系统,在这个系统下修改vhd系统中的/etc/fstab文件,把它的根分 ...

最后这种可能性最大. 我也遇到了几次图片中显示的引导失败情形,
改了/etc/fstab 就成功引导了.
猜想其机制是:
由于/etc/fstab里的根分区挂载信息被注释掉
(不注释时候启动squashfs文件系统会出错)
所以系统检测完根分区后应该是不能重新再挂载根分区了. 所以就出错了

在/etc/fstab中最好还是使用uuid,这样可以保证根分区的正确性.这里
uuid指的是vhd硬盘里面linux系统所在分区的uuid .

回复

使用道具 举报

441#
发表于 2020-6-12 20:14:51 | 只看该作者
本帖最后由 2011hjcjie 于 2020-6-12 21:24 编辑
2011niumao 发表于 2020-6-12 19:18
首先,grub2没有问题,唯一的问题可能是linux命令中的root ,kroot, kloop参数是否正确了

kroot参数是不 ...

kroot 参数应该没问题吧,参考附图---是p1
root参数应该也没问题,同样的位置squashfs能够正常启动


2020-06-12 20-11-18屏幕截图.png (53.8 KB, 下载次数: 188)

2020-06-12 20-11-18屏幕截图.png
回复

使用道具 举报

442#
发表于 2020-6-12 20:39:56 | 只看该作者
本帖最后由 2011hjcjie 于 2020-6-12 21:03 编辑

2011niumao 发表于 2020-6-12 19:45
还有一种情形,需要注意
就是先进入squashfs系统,在这个系统下修改vhd系统中的/etc/fstab文件,把它的根分区 ...

loop8px 这个参数是什么意思?提示装入点不存在...  ###解决了,落掉了一个/



回复

使用道具 举报

443#
 楼主| 发表于 2020-6-12 20:53:09 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 20:55 编辑

那就说明 root kloop kroot 没有问题
那个 8(随便写的)---看你的kpartx -av的输出而定--你这里是 11 --- 就使用 11
  1. sudo mount /dev/mapper/loop11p1 /mnt
复制代码

mnt 更改为 /mnt

点评

uuid那一行每注释掉,不过貌似id不正确 我改改试一下...  详情 回复 发表于 2020-6-12 21:09
回复

使用道具 举报

444#
发表于 2020-6-12 21:09:22 | 只看该作者
本帖最后由 2011hjcjie 于 2020-6-13 09:21 编辑

那就说明 root kloop kroot 没有问题
那个 8(随便写的)---看你的kpartx -av的输出而定--你这里是 11 ---  ...

uuid那一行没注释掉,不过貌似id不正确
我改改试一下...



点评

哦,那肯定会影响启动. 改还好应该可以跑起来了.  详情 回复 发表于 2020-6-12 21:19
回复

使用道具 举报

445#
 楼主| 发表于 2020-6-12 21:19:20 | 只看该作者
本帖最后由 2011niumao 于 2020-6-12 21:22 编辑
2011hjcjie 发表于 2020-6-12 21:09
uuid那一行没注释掉,不过貌似id不正确
我改改试一下...

哦,那肯定会影响启动. 改好就应该可以跑起来了.应该更改为10cc----cda3那一串.
sudo losetup -d

点评

再次感谢楼主耐心解答! 已成功启动,固定vhd桌面更完美 squashfs桌面有点小问题...  详情 回复 发表于 2020-6-12 21:36
回复

使用道具 举报

446#
发表于 2020-6-12 21:36:34 | 只看该作者
2011niumao 发表于 2020-6-12 21:19
哦,那肯定会影响启动. 改好就应该可以跑起来了.应该更改为10cc----cda3那一串.
sudo losetup -d

再次感谢楼主耐心解答!
已成功启动,固定vhd桌面更完美
squashfs桌面有点小问题...
回复

使用道具 举报

447#
 楼主| 发表于 2020-6-12 21:42:25 | 只看该作者
祝贺!!!!慢慢调教吧.
回复

使用道具 举报

448#
发表于 2020-6-14 17:20:31 | 只看该作者
niumao大佬,研究了vhd的linux这么多年了,还在跟新啊,

点评

每改进改善一点儿则得意忘形奔走相告.  详情 回复 发表于 2020-6-14 19:31
回复

使用道具 举报

449#
 楼主| 发表于 2020-6-14 19:31:23 | 只看该作者
ql1307096 发表于 2020-6-14 17:20
niumao大佬,研究了vhd的linux这么多年了,还在跟新啊,

每改进改善一点儿则得意忘形奔走相告.

点评

论坛有你更精彩! 有现成的案例有兴趣更深入了解linux命令了,多谢! 如可能再发个UOS版的  详情 回复 发表于 2020-6-14 22:43
回复

使用道具 举报

450#
发表于 2020-6-14 22:43:00 | 只看该作者
本帖最后由 2011hjcjie 于 2020-6-14 22:45 编辑
2011niumao 发表于 2020-6-14 19:31
每改进改善一点儿则得意忘形奔走相告.

论坛有你更精彩!
有现成的案例有兴趣更深入了解linux命令了,多谢!
如可能再发个UOS版的

还有打印机驱动貌似无epson stylus photo r230, 有点可惜了

点评

基本上是原版的配置,没有改动。可以自己打造好自己喜欢的系统再制作成squashfs文件,随身携带了  详情 回复 发表于 2020-6-15 14:32
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-26 06:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表