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