无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011niumao
打印 上一主题 下一主题

[发布] SQUASHFS系统UBUNTU20.04与18.04,VHD系统UBUNTU16.04(64位)

    [复制链接]
721#
发表于 2017-2-26 18:27:54 | 只看该作者
本帖最后由 Isler 于 2017-2-26 19:33 编辑

遇到一个错误,menu.lst:

title Ubuntu VHD
find --set-root --ignore-floppies --ignore-cd /ubuntuvhd/UBT-small.vhd
uuid ()
set UUID=%?%
kernel /ubuntuvhd/vmlinuz root=/dev/disk/by-uuid/%UUID% kloop=/ubuntuvhd/UBT-small.vhd kroot=/dev/mapper/loop0p1 vga=792
initrd /ubuntuvhd/initrd.img
boot

回复

使用道具 举报

722#
 楼主| 发表于 2017-2-26 23:03:16 | 只看该作者
Isler 发表于 2017-2-26 18:27
遇到一个错误,menu.lst:

title Ubuntu VHD

我这里也出现了同样的问题。这两天一直在解决,感觉已经解决了。原来的代码不够健壮,又改造了一番。
请到一楼链接的ubuntu-4。4。0-65-generic下载重新制作的vmlinuz initrd.img,使用它们引导。

新版mydracut也已上传。里面包含了squashfs引导方式代码。
回复

使用道具 举报

723#
 楼主| 发表于 2017-2-26 23:12:12 | 只看该作者
Isler 发表于 2017-2-26 18:27
遇到一个错误,menu.lst:

title Ubuntu VHD

另外,这里的UBT-small已经可以直接使用
  1. root=UUID=%?$
复制代码
引导系统了。不必如下复杂了。
  1. root=/dev/disk/by-uuid/%UUID%
复制代码
回复

使用道具 举报

724#
发表于 2017-2-27 16:54:16 | 只看该作者
2011niumao 发表于 2017-2-26 23:12
另外,这里的UBT-small已经可以直接使用 引导系统了。不必如下复杂了。

还是一样,没有解决问题呢,需要提供什么信息吗?
回复

使用道具 举报

725#
 楼主| 发表于 2017-2-27 20:08:14 | 只看该作者
本帖最后由 2011niumao 于 2017-2-27 20:13 编辑
Isler 发表于 2017-2-27 16:54
还是一样,没有解决问题呢,需要提供什么信息吗?


哦。看来和我预想的不一样啊。
首先你需要在windows下做个磁盘分区检查,确保vhd文件所在分区没有错误。
不然它是挂载不上的。检查好后再引导看看。
其次,怀疑还是参数设置问题,你尝试使用 root=/dev/sdaX 这种 ,或者 root=LABEL=vhd文件所在分区的卷标---当然不能有汉字。
kroot可以设置为 kroot=/dev/dm-0   引导看看。
最后可以在initramfs界面,输入 ls  看看有没有 /host目录,手动挂载含有 vhd分区的目录到/host,例如在initramfs界面输入执行以下命令
  1. mkdir /host
  2. mount -t ntfs-3g -o rw /dev/sdaX /host
  3. kpartx -av /host$kloop
  4. ls /dev/mapper
复制代码
其中sdaX是vhd文件所在分区。看看输出是什么。
回复

使用道具 举报

726#
发表于 2017-2-28 10:56:12 | 只看该作者
2011niumao 发表于 2017-2-27 20:08
哦。看来和我预想的不一样啊。
首先你需要在windows下做个磁盘分区检查,确保vhd文件所在分区没有错误 ...

都不行

回复

使用道具 举报

727#
 楼主| 发表于 2017-2-28 12:16:59 | 只看该作者
本帖最后由 2011niumao 于 2017-2-28 12:45 编辑


这个错误我遇到过。但是后来检查,发现是修改local时候有些语法错误导致的。需要重新检查一下local文件,改正语法错误后重新制作initrd。

这里的错误可能是/dev/sda2已经挂载在/root上了,但是不能挂载到/host 上面。导致kpartx命令找不到vhd文件。没有生成对应的/dev/mapper/loop0p1 或者 /dev/dm-0 。

重新上传了一个vmlinuz initrd.img 。在一楼链接ubuntu-4.4.0-65-generic子目录内,可以试试用它们引导。
回复

使用道具 举报

728#
发表于 2017-2-28 13:18:44 | 只看该作者
2011niumao 发表于 2017-2-28 12:16
这个错误我遇到过。但是后来检查,发现是修改local时候有些语法错误导致的。需要重新检查一下local文件 ...

好像错误还是一样的呢

回复

使用道具 举报

729#
 楼主| 发表于 2017-2-28 14:21:47 | 只看该作者
本帖最后由 2011niumao 于 2017-2-28 14:26 编辑
Isler 发表于 2017-2-28 13:18
好像错误还是一样的呢


这就搞不懂了。这两个文件我这里是好好的可以引导。另外感觉应该使用 root=UUID=%?%,kroot可以使用/dev/mapper/loop0p1 或 /dev/dm-0。
注意 vmlinuz initrd.img是同一个版本,不然ntfs分区会挂载失败。
回复

使用道具 举报

730#
发表于 2017-2-28 17:02:11 | 只看该作者
2011niumao 发表于 2017-2-28 14:21
这就搞不懂了。这两个文件我这里是好好的可以引导。另外感觉应该使用 root=UUID=%?%,kroot可以使用/d ...

额,楼主我对不起你,我习惯性差分了下,一直没有成功,直接启动你的VHD不差分就成功了。。

不过希望楼主能研究出来怎么差分后使用!
回复

使用道具 举报

731#
发表于 2017-3-5 09:14:49 | 只看该作者
一直关注楼主的贴,感谢楼主提供好东东。
回复

使用道具 举报

732#
 楼主| 发表于 2017-3-5 14:50:10 | 只看该作者
本帖最后由 2011niumao 于 2017-3-5 17:12 编辑

使用overlay机制,可以从一个目录内引导linux,这个为多系统玩家提供了方便,不需要再为每个系统单独分区了。
具体使用参看一楼的第一个链接的mydracut-new.zip文件。

主要想法是,把系统所在子目录作为upperdir,同一分区的另一个空目录作为workdir,内存一个目录作为lowerdir,就可以
叠合成为一个overlay文件系统,再把它挂载在根上就可以了。
  1. 本版加入了一种新的引导模式,用来引导安装在一个目录以内的文件系统。(使用了overlay机制)
  2. 方法只有一步,就是制作能引导目录内linux系统的内存镜像盘initrd 或initramfs。
  3. 具体做法看各个子目录内的详细说明(就是KLOOP方法的第二步)。

  4. 引导菜单,引导时候需要root 与upperdir,workdir三个个参数,root的值是目录文件系统所在分区,
  5. upperdir的值是文件系统所在目录的带路径的名字。workdir应该是与upperdir在同一分区,同一层次的
  6. 另一个子目录(新建一个空目录或者使用现成的空目录即可)。(lowerdir是内存中的一个目录,不用处理)

  7. 例如,我在一个ext4分区内安装了一个linux系统,又在这个分区根目录下建立了两个目录,名字为UBT-small ,host。然后把一个安装好的UBUNTU系统复制到UBT-small目录内,host目录保持为空目录。引导菜单如下:

  8. grub4dos菜单:
  9. title 启动upperdir-UBUNTU
  10. find --set-root --ignore-floppies --ignore-cd  /UBT-small/vmlinuz
  11. uuid ()
  12. kernel /UBT-small/vmlinuz  root=UUID=%?% upperdir=/UBT-small  workdir=/host apparmor=0
  13. initrd  /UBT-small/initrd.img

  14. grub2菜单:
  15. menuentry "upperdir-UBUNTU " --class ubuntu  {
  16.         insmod gzio
  17.         insmod part_msdos
  18.         insmod part_gpt
  19.         insmod ext2
  20.         insmod ntfs
  21.         insmod probe
  22.         set root=(hd0,1)
  23.         search --no-floppy -f --set=aabbcc  /UBT-small/vmlinuz
  24.         set root=${aabbcc}
  25.         probe -u --set=ddeeff ${aabbcc}
  26.         linux        /UBT-small/vmlinuz  root=UUID=${ddeeff} upperdir=/UBT-small   workdir=/host apparmor=0
  27.         initrd        /UBT-small/initrd.img
  28. }
  29. 注释1:对于目录内的ubuntu系统,需要注意两点,第一,引导时候加入参数apparmor=0,这样网络
  30. 可以自动检测好链接好。第二,在更新内核时候会遇到grub错误,解决方法是彻底卸载grub包。只使用
  31. 其他系统的grub2或者grub4dos引导。对于其他linux版本,应该不需要这两点。
  32. 注释2:可以使用rsync命令把一个安装好的ubuntu系统同步复制到子目录UBT-samll下,复制完成
  33. 后应该修改/etc/fstab文件,注释掉root挂载那一行。
复制代码
回复

使用道具 举报

733#
发表于 2017-3-5 16:32:20 | 只看该作者
谢谢分享
回复

使用道具 举报

734#
发表于 2017-3-6 14:13:44 | 只看该作者
不懂呀!弄不了呀!
回复

使用道具 举报

735#
 楼主| 发表于 2017-3-6 15:48:13 | 只看该作者
ge 发表于 2017-3-6 14:13
不懂呀!弄不了呀!

可以下载现成的vhd。或者自己用VirtualBox安装UBUNTU到固定vhd上,在第一楼连接下载现成的vmlinuuz initrd.img 使用它们引导你的vhd系统。如果你的vhd系统安装有相同版本的内核,则可以顺利使用。
回复

使用道具 举报

736#
发表于 2017-3-6 15:54:50 | 只看该作者
2011niumao 发表于 2017-3-6 15:48
可以下载现成的vhd。或者自己用VirtualBox安装UBUNTU到固定vhd上,在第一楼连接下载现成的vmlinuuz initr ...

不是将那有一个文件复制到Ubuntu文件夹下!修改启动菜单改VHD为实际路径!不带盘符!
回复

使用道具 举报

737#
发表于 2017-3-6 16:10:38 | 只看该作者
2011niumao 发表于 2017-3-6 15:48
可以下载现成的vhd。或者自己用VirtualBox安装UBUNTU到固定vhd上,在第一楼连接下载现成的vmlinuuz initr ...

我就是做完VHD!又下载的那三个文件!修改了菜单!可是没有成功!是不是还是缺少文件?
回复

使用道具 举报

738#
 楼主| 发表于 2017-3-6 16:15:44 | 只看该作者
ge 发表于 2017-3-6 16:10
我就是做完VHD!又下载的那三个文件!修改了菜单!可是没有成功!是不是还是缺少文件?

按道理应该不缺了。但如果你原来vhd不能进入桌面。那么现在也不能进入桌面,是你的系统需要调整的。
你这里的不成功,有没有具体的出错信息可以照片贴出来以便分析。
回复

使用道具 举报

739#
发表于 2017-3-6 16:43:34 | 只看该作者
2011niumao 发表于 2017-3-6 16:15
按道理应该不缺了。但如果你原来vhd不能进入桌面。那么现在也不能进入桌面,是你的系统需要调整的。
你 ...

我后来在虚拟机里已经重启到桌面了!!只是没有在实机启动呢!我再看看!
回复

使用道具 举报

740#
发表于 2017-3-6 16:48:36 | 只看该作者
2011niumao 发表于 2017-3-6 16:15
按道理应该不缺了。但如果你原来vhd不能进入桌面。那么现在也不能进入桌面,是你的系统需要调整的。
你 ...

不行!我的是G4D!按示例修改的!两个菜单都写了都不行!选择后什么反应也没有!上面有%%什么的!
回复

使用道具 举报

741#
发表于 2017-3-6 16:58:30 | 只看该作者
本帖最后由 ge 于 2017-3-6 17:00 编辑
2011niumao 发表于 2017-3-6 16:15
按道理应该不缺了。但如果你原来vhd不能进入桌面。那么现在也不能进入桌面,是你的系统需要调整的。
你 ...

始终这样!

IMG20170306165212.jpg (2.22 MB, 下载次数: 240)

IMG20170306165212.jpg

IMG20170306165212.jpg (2.22 MB, 下载次数: 260)

IMG20170306165212.jpg
回复

使用道具 举报

742#
发表于 2017-3-6 17:03:24 | 只看该作者
为毛上传两个图片用一个就出来两个!修改后都没有图片了怎么还是两个?
回复

使用道具 举报

743#
 楼主| 发表于 2017-3-6 17:56:53 | 只看该作者
ge 发表于 2017-3-6 17:03
为毛上传两个图片用一个就出来两个!修改后都没有图片了怎么还是两个?

这个照片没有出错信息。不过猜测是那个%?%不对了。可以尝试修改menu.lst文件 kernel那一行的root值为
root=LABEL=XXXXX 或者 root=/dev/sdaX
XXXXX是vhd所在分区卷标,不能有汉字。sdaX是所在分区的序号。主分区依次排序为1 2 3 4 ,逻辑分区排序为5 6 7 8 等。
回复

使用道具 举报

744#
 楼主| 发表于 2017-3-6 18:10:30 | 只看该作者
本帖最后由 2011niumao 于 2017-3-6 18:14 编辑
ge 发表于 2017-3-6 17:03
为毛上传两个图片用一个就出来两个!修改后都没有图片了怎么还是两个?

或者,改用g2ldr模式。由grub4dos菜单选择g2ldr 。并修改grubpc.cfg的菜单如下
  1. menuentry "UBT-small.vhd " --class ubuntu {
  2.         insmod gzio
  3.         insmod part_msdos
  4.         insmod part_gpt
  5.         insmod ext2
  6.         insmod ntfs
  7.         insmod probe
  8.         set vhdfile="/ubuntu/UBT-small.vhd"
  9.         set root=(hd0,1)
  10.         search --no-floppy -f --set=aabbcc  $vhdfile
  11.         set root=${aabbcc}
  12.         probe -u --set=ddeeff ${aabbcc}
  13.         loopback lp0 $vhdfile
  14.         linux    /ubuntu/vmlinuz   root=UUID=${ddeeff}  kloop=$vhdfile  kroot=/dev/mapper/loop0p1
  15.         initrd      /ubuntu/initrd.img
  16. }
复制代码
如上修改linux后面为 /ubuntu/vmlinuz ,initrd后面为 /ubuntu/initrd.img即可。
回复

使用道具 举报

745#
发表于 2017-3-6 19:09:50 | 只看该作者
2011niumao 发表于 2017-3-6 18:10
或者,改用g2ldr模式。由grub4dos菜单选择g2ldr 。并修改grubpc.cfg的菜单如下
如上修改linux后面为 /ub ...

我对G2一点都不懂!也和G4差不多吗?

点评

一样的格式。只是把grub4dos的kernel语句更改为linux语句。另外有一些细节差别。  详情 回复 发表于 2017-3-6 19:44
回复

使用道具 举报

746#
 楼主| 发表于 2017-3-6 19:44:50 | 只看该作者
ge 发表于 2017-3-6 19:09
我对G2一点都不懂!也和G4差不多吗?

一样的格式。只是把grub4dos的kernel语句更改为linux语句。另外有一些细节差别。
回复

使用道具 举报

747#
发表于 2017-3-6 20:07:04 | 只看该作者
2011niumao 发表于 2017-3-6 19:44
一样的格式。只是把grub4dos的kernel语句更改为linux语句。另外有一些细节差别。

我的意思是G2需要类似G4的GRLDR文件吗?都需要什么?正好想学习一下!

点评

百度看看。  发表于 2017-3-6 22:01
回复

使用道具 举报

748#
发表于 2017-3-7 19:44:17 | 只看该作者
2011niumao 发表于 2017-3-6 18:10
或者,改用g2ldr模式。由grub4dos菜单选择g2ldr 。并修改grubpc.cfg的菜单如下
如上修改linux后面为 /ub ...

我的是双硬盘!又重新写一个G2的菜单到第二个硬盘!VHD在第一个硬盘的第二个分区!是不是我的菜单没有写对!

点评

可能是菜单问题,也可能是其他问题。我想你可以尝试直接指定分区,不用自动寻找。如果所在的第二个硬盘的第二个分区是主分区,grub4dos菜单应该是如果所在分区是逻辑分区,应该改为 root (hd1,4) root=/dev/sdb5这个  详情 回复 发表于 2017-3-7 20:00
回复

使用道具 举报

749#
 楼主| 发表于 2017-3-7 20:00:10 | 只看该作者
本帖最后由 2011niumao 于 2017-3-7 20:04 编辑
ge 发表于 2017-3-7 19:44
我的是双硬盘!又重新写一个G2的菜单到第二个硬盘!VHD在第一个硬盘的第二个分区!是不是我的菜单没有写 ...

可能是菜单问题,也可能是其他问题。我想你可以尝试直接指定分区,不用自动寻找。如果所在的第二个硬盘的第二个分区是主分区,grub4dos菜单应该是
  1. root (hd1,2)
  2. kernel  /vmlinuz root=/dev/sdb2
  3. initrd  /initrd.img
复制代码
如果所在分区是逻辑分区,应该改为 这个样子。
  1. root (hd1,4)
  2. kernel  /vmlinuz root=/dev/sdb5
  3. initrd  /initrd.img
复制代码
或着 root (hd1,5)。可以在菜单时候按c ,进入命令行,ls看看各个硬盘分区编号,手动输入以上命令,最后输入boot回车引导。
回复

使用道具 举报

750#
发表于 2017-3-7 20:23:42 | 只看该作者
2011niumao 发表于 2017-3-7 20:00
可能是菜单问题,也可能是其他问题。我想你可以尝试直接指定分区,不用自动寻找。如果所在的第二个硬盘的 ...

好!我明天看看!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-26 07:45

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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