无忧启动论坛

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

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

    [复制链接]
691#
 楼主| 发表于 2017-1-22 10:42:51 | 只看该作者
本帖最后由 2011niumao 于 2017-1-22 10:44 编辑
alanyih 发表于 2017-1-21 17:10
This seems to work!
"reboot.pro/topic/20603-linux-from-vhd-how-to/page-3#entry201757"


the original local-file has a mistaken,  the sentence  “if [ -z "$kloop" ]; then"  is placed in the front of the function local_mount_root().  It should be  placed after the sentence "local_premount" of the function  local_mount_root(),  like such
  1. local_mount_root()
  2. {
  3.         local_top
  4.         local_device_setup "${ROOT}" root
  5.         ROOT="${DEV}"

  6.         # Get the root filesystem type if not set
  7.         if [ -z "${ROOTFSTYPE}" ]; then
  8.                 FSTYPE=$(get_fstype "${ROOT}")
  9.         else
  10.                 FSTYPE=${ROOTFSTYPE}
  11.         fi

  12.         local_premount

  13. if [ -z "$kloop" ]; then
  14. ........
复制代码
All is OK.
回复

使用道具 举报

692#
发表于 2017-1-23 10:28:20 | 只看该作者
2011niumao 发表于 2017-1-22 10:19

原来local文件跳过了参数解析,直接把root参数被依照字面传递给了ntfs- …

或者使用grub2


這是以您的 grub2,稍作修改,也OK。
"reboot.pro/topic/20603-linux-from-vhd-how-to/page-3#entry201775 "

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"
search -f --no-floppy --set $vhdfile
probe -u --set=uuid ${root}
loopback loop0 $vhdfile
linux (loop0,1)/vmlinuz root=/dev/disk/by-uuid/${uuid} rw kloop=$vhdfile kroot=/dev/mapper/loop0p1 vga=792
initrd (loop0,1)/initrd.img
}

点评

是的。不过新上传的 vmlinuz initrd.img (4.4.0-62)已经修正了以往UUID失效的毛病。 所以root=UUID=XXXXXXXXXXXXXXXXXXXXx 又可以直接使用了。 可以到一楼第一个链接下载试用看看。  详情 回复 发表于 2017-1-23 12:08
回复

使用道具 举报

693#
 楼主| 发表于 2017-1-23 12:08:24 | 只看该作者
alanyih 发表于 2017-1-23 10:28
這是以您的 grub2,稍作修改,也OK。
"reboot.pro/topic/20603-linux-from-vhd-how-to/page-3#entry2 ...

是的。不过新上传的 vmlinuz initrd.img (4.4.0-62)已经修正了以往UUID失效的毛病。
所以root=UUID=XXXXXXXXXXXXXXXXXXXXx 又可以直接使用了。
可以到一楼第一个链接下载试用看看。
回复

使用道具 举报

694#
发表于 2017-2-24 12:19:45 | 只看该作者
2011niumao 发表于 2014-5-7 13:00
http://pan.baidu.com/s/1qWLgOtI
发布grub通用启动器-20140507版本.菜单已经写好.设置引导即可.
grub通 ...

grub通用启动器-20140507,下载链接失效了

点评

是。都统一放在一楼第一个链接里了。叫grubsmall2017。  详情 回复 发表于 2017-2-24 13:44
回复

使用道具 举报

695#
发表于 2017-2-24 12:25:54 | 只看该作者
下载研究一下,辛苦了,谢谢!
回复

使用道具 举报

696#
 楼主| 发表于 2017-2-24 13:44:50 | 只看该作者
wdtx 发表于 2017-2-24 12:19
grub通用启动器-20140507,下载链接失效了

是。都统一放在一楼第一个链接里了。叫grubsmall2017。
回复

使用道具 举报

697#
发表于 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

点评

另外,这里的UBT-small已经可以直接使用 引导系统了。不必如下复杂了。  详情 回复 发表于 2017-2-26 23:12
我这里也出现了同样的问题。这两天一直在解决,感觉已经解决了。原来的代码不够健壮,又改造了一番。 请到一楼链接的ubuntu-4。4。0-65-generic下载重新制作的vmlinuz initrd.img,使用它们引导。 新版mydracut  详情 回复 发表于 2017-2-26 23:03
回复

使用道具 举报

698#
 楼主| 发表于 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引导方式代码。
回复

使用道具 举报

699#
 楼主| 发表于 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%
复制代码

点评

还是一样,没有解决问题呢,需要提供什么信息吗?  详情 回复 发表于 2017-2-27 16:54
回复

使用道具 举报

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

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

点评

哦。看来和我预想的不一样啊。可以在initramfs界面,输入 ls 看看有没有 /host目录,手动挂载含有 vhd分区的目录到/host,例如 看看输出是什么。我怀疑还是参数设置问题,你尝试使用 root=/dev/sdaX 这种 ,或者 r  详情 回复 发表于 2017-2-27 20:08
回复

使用道具 举报

701#
 楼主| 发表于 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文件所在分区。看看输出是什么。

点评

都不行 [attachimg]341875[/attachimg]  详情 回复 发表于 2017-2-28 10:56
回复

使用道具 举报

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

都不行

点评

这个错误我遇到过。但是后来检查,发现是修改local时候有些语法错误导致的。需要重新检查一下local文件,改正语法错误后重新制作initrd。 这里的错误可能是/dev/sda2已经挂载在/root上了,但是不能挂载到/host 上  详情 回复 发表于 2017-2-28 12:16
回复

使用道具 举报

703#
 楼主| 发表于 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子目录内,可以试试用它们引导。

点评

好像错误还是一样的呢 [attachimg]341884[/attachimg]  详情 回复 发表于 2017-2-28 13:18
回复

使用道具 举报

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

好像错误还是一样的呢

点评

这就搞不懂了。这两个文件我这里是好好的可以引导。另外感觉应该使用 root=UUID=%?%,kroot可以使用/dev/mapper/loop0p1 或 /dev/dm-0。  详情 回复 发表于 2017-2-28 14:21
回复

使用道具 举报

705#
 楼主| 发表于 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分区会挂载失败。

点评

额,楼主我对不起你,我习惯性差分了下,一直没有成功,直接启动你的VHD不差分就成功了。。 不过希望楼主能研究出来怎么差分后使用!  详情 回复 发表于 2017-2-28 17:02
回复

使用道具 举报

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

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

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

点评

哦。呵呵呵  发表于 2017-2-28 17:41
回复

使用道具 举报

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

使用道具 举报

708#
 楼主| 发表于 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挂载那一行。
复制代码
回复

使用道具 举报

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

使用道具 举报

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

点评

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

使用道具 举报

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

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

使用道具 举报

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

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

点评

是的。使用grub4dos菜单好。grub2菜单记得是针对单独一个vhd文件写的,需要按照实际情形修改。  发表于 2017-3-6 16:02
回复

使用道具 举报

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

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

点评

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

始终这样!

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

IMG20170306165212.jpg

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

IMG20170306165212.jpg
回复

使用道具 举报

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

点评

或者,改用g2ldr模式。由grub4dos菜单选择g2ldr 。并修改grubpc.cfg的菜单如下 修改红色部分如上就可以了。  详情 回复 发表于 2017-3-6 18:10
这个照片没有出错信息。不过猜测是那个%?%不对了。可以尝试修改menu.lst文件 kernel那一行的root值为 root=LABEL=XXXXX 或者 root=/dev/sdaX XXXXX是vhd所在分区卷标,不能有汉字。sdaX是所在分区的序号。主分区  详情 回复 发表于 2017-3-6 17:56
回复

使用道具 举报

719#
 楼主| 发表于 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 等。
回复

使用道具 举报

720#
 楼主| 发表于 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即可。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-28 11:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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