2011niumao 发表于 2019-3-23 13:49:02

这个就不知道原因了。有可能vhd文件系统有错误,尝试在Virtualbox下做个磁盘检查,fsck
也许有效。

gland2015 发表于 2019-4-1 11:26:47

大神,mydracut-new/ubuntu-kloop/readme-ubuntu-kloop里面第五段生成initrd.img文件说四个文件

把这里生成的文件 initrd.img-3.16.0-30-generic 与 /boot/下两个文件 vmlinuz-3.16.0-30-generic
和vhd文件UBUNTU-14041.vhd一共四个文件拷贝或移动到一个NTFS分区根目录下一个名叫ubuntu子目录中。
如果没有ubuntu目录就手动建立一个。

没想出来是哪四个,我就把生成的initrd.img和boot下的vmlinuzxxxxx和vhdx文件放到移动硬盘ubuntu目录下,我的移动硬盘是gpt格式的只有efi分区和一个主分区。

引导这样子

if search --no-floppy -f/ubuntu/vubt.vhdx; then
menuentry "vubt_archbang.vhdx " --class ubuntu {
      insmod gzio
      insmod part_msdos
      insmod part_gpt
      insmod ext2
      insmod ntfs
      insmod probe
      set vhdfile="/ubuntu/vubt.vhdx"
      ##set root=(hd0,1)
      search --no-floppy -f --set=aabbcc$vhdfile
      set root=${aabbcc}
      probe -u --set=ddeeff ${aabbcc}
      loopback lp0 $vhdfile
      linux      /ubuntu/vmlinuz-4.13.0-36-generic root=UUID=${ddeeff}kloop=$vhdfilekroot=/dev/loop0p1
      initrd      /ubuntu/initrd.img-4.13.0-36-generic
}
fi

这可以成功引导论坛里一位兄弟的archLinux-vhd
最后输出一大段,有一句 no working init found

也测试了readme里面的引导,试了好几个值,都失败了。
最后把boot里的initrad.imgxxxx文件换成定制的,试这段引导
menuentry " UBUNTU-1604.vhdx 5" --classubuntu {
      insmod gzio
      insmod part_msdos
      insmod part_gpt
      insmod ext2
      insmod ntfs
      insmod probe
      set vhdfile="/ubuntu/vubt.vhdx"
      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-4.13.0-36-generic root=/dev/sda5 rwkloop=$vhdfilekroot=/dev/mapper/loop0p1
      initrd      (loop0,1)/initrd.img-4.13.0-36-generic
}

这就直接提示disk 'loop0, 1' not found
试了从0到5都不行,又改root=(hd0, 1),0试到3也不行((loop0,1)),同样提示not found

我用的ubuntu是16.04,还更换外部的initrd和vmlinuz文件,用了你的和那位兄弟的,也不行。
请大神指导一下,感谢。




gland2015 发表于 2019-4-1 11:34:39

我制作的过程就是先安装好软件,再把init,local,mkinitramfs,modules文件替换,再编译安装ntfs_3g,再替换其文件,用的是ubuntu-kloop的源文件

gland2015 发表于 2019-4-1 18:30:54

用efi装vhd也试了,我发现都提示init问题

gland2015 发表于 2019-4-1 23:32:40

终于试成功了,首先就是不要有逻辑分区,安装的时候自动分区会有逻辑分区swap,所以要手动分区,在vbox里面初始分辨率太小,导致手动分区那块被隐藏了,不得不去网上找图片,用tab键摸黑分区。
然后就是去楼主发的vhd里,启动它,找到对应的文件,因为我发现它们不一样,制作的initram.imgxxx大小差很多。这样也可以试出启动菜单出来。
最后启动成功,我发现生成的两个文件和楼主发的可以直接启动新安装的ubuntu18,太厉害了。
如果你不想编译的话,可以直接用楼主的两个启动文件。
查看分区情况可以把vhd挂载后用diskgenius工具查看,磁盘只有一个分区就对了。
vbox里也不要什么efi启动,因为会安装后启动不了,也不需要。
最后发下我的菜单:
menuentry ' ubt16-my 1'--class ubuntu{
        recordfail
        insmod gzio
        insmod part_msdos
        insmod part_gpt
        insmod ext2
        insmod ntfs
        insmod probe
        insmod search
        search --no-floppy -f --set=aabbcc /ubt/ubt16.vhd
        set root=${aabbcc}
        probe -u --set=ddeeff ${aabbcc}
        linux        /ubt/vmlinuz-4.13.0-36-generic root=UUID=${ddeeff} kloop=/ubt/ubt16.vhd kroot=/dev/mapper/loop0p1
        initrd        /ubt/initrd.img-4.13.0-36-generic
}

gland2015 发表于 2019-4-1 23:34:52

gland2015 发表于 2019-4-1 23:32
终于试成功了,首先就是不要有逻辑分区,安装的时候自动分区会有逻辑分区swap,所以要手动分区,在vbox里面 ...

ubuntu有不会的兄弟可以加我QQ:1147940842

763180872 发表于 2019-5-24 15:50:48

Hongrongqi 发表于 2019-3-21 17:37
大师现在有更新的教程或文件吗?deepin 15.9安装完没有声音,

请问能提供下deepin15.9的安装教程么,按照楼主的,有个工具安装不了

763180872 发表于 2019-5-24 16:52:40

请问大大,deepin和debain,我应该选哪个kloop呀

2011niumao 发表于 2019-5-25 22:13:36

763180872 发表于 2019-5-24 16:52
请问大大,deepin和debain,我应该选哪个kloop呀

使用ubuntu的就可以了

763180872 发表于 2019-5-27 10:20:05

2011niumao 发表于 2019-5-25 22:13
使用ubuntu的就可以了

kpartx-boot 这个工具安装不了,没啥关系么,

3-2 . 修改mkinitramfs文件
sudo cp /usr/sbin/mkinitramfs ~/mkinitramfs.backup
sudo gedit /usr/sbin/mkinitramfs

找到# util-linux,原来其下只有一行copy_exec /sbin/blkid /sbin.
依照附件中的mkinitramfs的 # util-linux 段落修改 ,在其下加入几行即可.

这一步也有点不同,没有# util-linux相关部分

763180872 发表于 2019-5-27 10:24:54

2011niumao 发表于 2019-5-25 22:13
使用ubuntu的就可以了

不好意思,刚刚都没有给大神说声谢谢,光顾着问问题了

2011niumao 发表于 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.
第二个,好像后来没有那一段了,你找一个合适的地方插入进去即可,参考一下附件.

763180872 发表于 2019-5-28 14:10:40

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

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

指南针 发表于 2019-6-5 15:24:51

楼主,为啥没有centos的修改步骤?是不支持吗

2011niumao 发表于 2019-6-7 21:07:53

指南针 发表于 2019-6-5 15:24
楼主,为啥没有centos的修改步骤?是不支持吗

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

tystzf 发表于 2019-6-20 11:57:36

grub4引导如何在菜单上加WIN7-8-10 XP的vhd菜单?

ghost003 发表于 2019-11-10 14:54:54

感谢大神

wdtx 发表于 2019-12-4 16:54:15

希望大神写个制作引导文件的自动处理脚本,不然好多人不会弄,谢谢.

Kernelam2 发表于 2019-12-8 18:02:50

deep上卡在mkinitramfs这一步有问题,再研究研究

wdtx 发表于 2019-12-9 16:24:42

Kernelam2 发表于 2019-12-8 18:02
deep上卡在mkinitramfs这一步有问题,再研究研究

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

wy2018ttt 发表于 2020-1-18 17:58:30

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

ilcpm 发表于 2020-2-7 10:08:26

我就说一件事,你们自己制作好之后记得一定用真机启动进行测试
不要像某个傻X一样用虚拟机启动了100多次还没反应过来{:1_194:}

15106680608 发表于 2020-6-1 15:33:17

谢谢分享

2011hjcjie 发表于 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=$vhdfilekroot=/dev/mapper/loop0p1
initrd (lp0,1)/initrd.img
}

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

2011niumao 发表于 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发行光盘里获得)

2011niumao 发表于 2020-6-12 12:25:46

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

2011hjcjie 发表于 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还是没有启动成功{:1_200:}
引导代码如下,请赐教!
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=$vhdfilekroot=/dev/mapper/loop0p1
initrd (lp0,1)/boot/initrd.img
}

2011niumao 发表于 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

2011niumao 发表于 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.root=LABEL=Windows
把那个Windows更改为你的硬盘上vhd文件所在分区的标签即可.
(这里分区标签不能中文或者有空格)

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

2011niumao 发表于 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文件系统时候,会注释掉 / 这一行,如下# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type><options>       <dump><pass>
proc            /proc         proc    nodev,noexec,nosuid 0       0
###/dev/sda10
###UUID=29b92931-2ac3-4720-a5ed-40b9a3cc1241      /      ext4      errors=remount-ro      0      1
这里的UUID前面的三个###是注释掉这一行的意思. 进入squashfs系统后,挂载vhd文件,将这三个###号去掉,运行blkid查询出正确的uuid,替换掉那一串字母数字组合,保存,
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
###/dev/sda10
UUID=812c1d35-3253-4a11-88db-e2e0834bf717 / ext4 errors=remount-ro 0 1(这里UUID后面是随便写的,需要更换为vhd中linux系统的根分区的uuid).重启后就可以进入了.

在squashfs 文件系统中需执行以下命令sudo kpartx -av VHD文件名(带路径)
sudo mount /dev/mapper/loop8px /mnt
sudo blkid
sudo gedit /mnt/etc/fstab
sudo umount /mnt
sudo kpartx -d /dev/loop8
sudo losetup -d /dev/loop8
sudo reboot
页: 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20
查看完整版本: 从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种