无忧启动论坛

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

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

    [复制链接]
631#
 楼主| 发表于 2015-9-11 18:17:24 | 只看该作者
本帖最后由 2011niumao 于 2015-9-11 18:24 编辑
nyhfsl 发表于 2015-9-11 16:24
老大新问题。有能引导雪豹系统(传说苹果系统Apple.Mac.OSX.v10.7.Lion-iND.iso)的,引导文件吗?用你的引 ...


到了这一步,引导已经完成了. 感觉不是引导工具的事情.应该是系统的事情吧.就是initramfs里面那个init脚本需要修改,以便挂载根分区.

当然也可能是引导参数有问题.请检查核对.
回复

使用道具 举报

632#
发表于 2015-11-17 09:16:14 | 只看该作者
本帖最后由 ee1 于 2015-11-17 09:54 编辑
2011niumao 发表于 2013-6-20 21:58
GRUB4DOS引导vbuntufix.vhd的菜单一种新法
=======不需要外部的vmlinuz initrd.img的文件,直接用vhd内部 ...


这个办法好!
原来 vhd 也能map ,呵呵,很好!

title UBUNTU MAP
find  --set-root --ignore-floppies --ignore-cd /kan/u.vhd
map  /kan/u.vhd (hd)
map  --hook

kernel (hd-1,0)/vmlinuz root=/dev/sda1 vloop=/kan/u.vhd vlooppart=p1
initrd (hd-1,0)/initrd.img


能进到initramfs ,可以看到/kan/u.vhd已经mount ,但是无法mount root,奇怪

init脚本怎样修改?  挂载根分区
或者在initramfs 手动怎样挂载 root?

点评

请到一楼的链接下载vloop教程 kloop教程,任选其一按照教程制作。  详情 回复 发表于 2015-11-17 09:58
回复

使用道具 举报

633#
 楼主| 发表于 2015-11-17 09:58:46 | 只看该作者
ee1 发表于 2015-11-17 09:16
这个办法好!
原来 vhd 也能map ,呵呵,很好!


请到 http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1 一楼的链接下载vloop教程 kloop教程,任选其一按照教程制作。

点评

ee1
在initramfs 手动怎样挂载 root? 不用改动vhd 里面的initrd.img  详情 回复 发表于 2015-11-17 10:00
回复

使用道具 举报

634#
发表于 2015-11-17 10:00:59 | 只看该作者
2011niumao 发表于 2015-11-17 09:58
请到 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=336079&extra=page%3D1 一楼的链接下载vloop ...

在initramfs 手动怎样挂载 root? 不用改动vhd 里面的initrd.img

点评

还是使用mount命令吧。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/root。 手工chroot到/root。具体命令百度看看。  详情 回复 发表于 2015-11-17 10:15
回复

使用道具 举报

635#
 楼主| 发表于 2015-11-17 10:15:17 | 只看该作者
ee1 发表于 2015-11-17 10:00
在initramfs 手动怎样挂载 root? 不用改动vhd 里面的initrd.img


还是使用mount命令挂载ntfs分区。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/root。
手工chroot到/root。具体命令百度看看。

点评

ee1
需要kpartx ,initramfs 里面没有kpartx,看来 重做initrd.img是必须的  详情 回复 发表于 2015-11-17 10:45
ee1
好的,试一下,多谢!  详情 回复 发表于 2015-11-17 10:20
回复

使用道具 举报

636#
发表于 2015-11-17 10:20:32 | 只看该作者
2011niumao 发表于 2015-11-17 10:15
还是使用mount命令挂载ntfs分区。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/ ...

好的,试一下,多谢!
回复

使用道具 举报

637#
发表于 2015-11-17 10:45:31 | 只看该作者
2011niumao 发表于 2015-11-17 10:15
还是使用mount命令挂载ntfs分区。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/ ...

需要kpartx ,initramfs 里面没有kpartx,看来 重做initrd.img是必须的

点评

嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。 以下是在initramfs环境下手工启动的几个命令。测验还是成功的。供参考。 加括号的是上一行命令的变化,似乎都可以。  详情 回复 发表于 2015-11-17 10:55
回复

使用道具 举报

638#
 楼主| 发表于 2015-11-17 10:55:21 | 只看该作者
ee1 发表于 2015-11-17 10:45
需要kpartx ,initramfs 里面没有kpartx,看来 重做initrd.img是必须的

嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。
以下是在initramfs环境下手工启动的几个命令。测验还是成功的。供参考。
加括号的是上一行命令的变化,似乎都可以。
  1. mount -t ntfs-3g -o rw /dev/sda5 /host
  2. (mount -t ntfs -o rw /dev/sda5 /host)
  3. kpartx -av /host/ubuntu/UBUNTU-1510.vhd
  4. mount -t ext4 -o rw /dev/mapper/loop0p1 /root
  5. exec switch-root /root /sbin/init
  6. (exec chroot /root /sbin/init)
复制代码

点评

ee1
呵呵,做好了 进入initramfs以后 mkdir -p /media mount -t ntfs-3g -o rw /dev/sda2 /media kpartx -av /media/kan/u.vhd mount -t ext4 -o rw /dev/mapper/loop0p1 /root exec chroot /root /sbin/init 就这  详情 回复 发表于 2015-11-17 16:31
ee1
多谢LZ! 现在把在真机里启动VHD的LINUX原理算是弄明白了,关键是挂在u.vhd 这样普适大多数LINUX发行版!  详情 回复 发表于 2015-11-17 11:06
回复

使用道具 举报

639#
发表于 2015-11-17 11:06:54 | 只看该作者
2011niumao 发表于 2015-11-17 10:55
嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。
以下是在initramfs环境下手工 ...

多谢LZ!

现在把在真机里启动VHD的LINUX原理算是弄明白了,关键是挂在u.vhd
这样普适大多数LINUX发行版!
回复

使用道具 举报

640#
发表于 2015-11-17 16:31:30 | 只看该作者
本帖最后由 ee1 于 2015-11-17 16:37 编辑
2011niumao 发表于 2015-11-17 10:55
嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。
以下是在initramfs环境下手工 ...


呵呵,做好了
进入initramfs以后
mkdir -p /media
mount -t ntfs-3g -o rw /dev/sda2 /media
kpartx -av /media/kan/u.vhd
mount -t ext4 -o rw /dev/mapper/loop0p1 /root
exec chroot /root /sbin/init
就这样能启动了

要点是在vbox 进虚拟机
sudo apt-get install kpartx
然后编辑/usr/sbin/mkinitramfs只需要在# util-linux加入下面两行
copy_exec /sbin/losetup /sbin
copy_exec /sbin/kpartx /sbin

sudo /usr/sbin/mkinitramfs -o   /initrd.img 重做initrd.img
要是想不敲那几行命令  修改下/usr/share/initramfs-tools/scripts/local 我这儿没试

我这儿没装kpartx-boot,
这俩做好vhd貌似就有了,util-linux dmsetup
fedora是有kpartx这个包,http://mirrors.aliyun.com/fedora ... -80.fc23.x86_64.rpm
centos 里面没有kpartx这个包  epel仓库也没有,安装fedora 的kpartx包可能管用。。。

点评

对很多发行版,可以使用 partx 来代替 kpartx。这样就不用特意安装kpartx了。 命令一样 但注意其输出和kpartx 不一样,VHD的各个分区挂到的LOOP设备名称是 /dev/loop0p1 /dev/loop0p3 等等, 没有kpartx命令时  详情 回复 发表于 2015-11-19 13:20
很好的简化。  发表于 2015-11-18 18:28
回复

使用道具 举报

641#
 楼主| 发表于 2015-11-19 13:20:24 | 只看该作者

partx与kpartx

本帖最后由 2011niumao 于 2015-11-19 13:31 编辑
ee1 发表于 2015-11-17 16:31
呵呵,做好了
进入initramfs以后
mkdir -p /media


对很多发行版,可以使用 partx 来代替 kpartx。这样就不用特意安装kpartx了。
命令一样
  1. partx -av VHD文件名
复制代码

但注意其输出和kpartx 不一样,VHD的各个分区挂到的LOOP设备名称是 /dev/loop0p1 /dev/loop0p3 等等,
没有kpartx命令时候的 mapper目录。

这样在启动参数中 应该使用 /dev/loop0p3 这种格式来代替 /dev/mapper/loop0p3 ,其他不用变。就可以了。
例如ARCH就是如此。可以看看 ARCH-KLOOP 教程。

点评

ee1
centos7 有kpartx, kpartx -av VHD ,之后 显示添加 loop0p1 loop0p1的位置即不在/dev/mapper/loop0p1 也不在/dev/loop0p1 奇怪了 手动 和用05-vhdmount.sh都无法启动 fedora和 centos 差别好大啊  详情 回复 发表于 2015-11-29 15:36
回复

使用道具 举报

642#
发表于 2015-11-29 15:36:56 | 只看该作者
本帖最后由 ee1 于 2015-11-29 15:39 编辑
2011niumao 发表于 2015-11-19 13:20
对很多发行版,可以使用 partx 来代替 kpartx。这样就不用特意安装kpartx了。
命令一样  
但注意其输 ...


centos7 有kpartx,

kpartx  -av VHD      ,之后 显示添加 loop0p1
loop0p1的位置即不在/dev/mapper/loop0p1 也不在/dev/loop0p1 奇怪了!用losetup也能看到loop0p1 确找不到loop0p1的位置!
手动 和用05-vhdmount.sh都无法启动
fedora和 centos 差别好大啊

点评

奇怪。记得我装的centos是在/dev/mapper/loop0p1.现在已经删除也没有办法验证。 那可以暂时性使用ubuntu的两个内核文件 或者 Fedora的两个内核 引导centos 。 我这里好像都是可以引导成功的。  详情 回复 发表于 2015-11-29 17:11
回复

使用道具 举报

643#
 楼主| 发表于 2015-11-29 17:11:44 | 只看该作者
ee1 发表于 2015-11-29 15:36
centos7 有kpartx,

kpartx  -av VHD      ,之后 显示添加 loop0p1

奇怪。记得我装的centos是在/dev/mapper/loop0p1.现在已经删除也没有办法验证。
那可以暂时性使用ubuntu的两个内核文件 或者 Fedora的两个内核 引导centos 。
我这里好像都是可以引导成功的。

点评

ee1
最小化安装了centos7, kpartx和losetup已经有了 又安装了ntfs-3g, 会不会少什么? 关键是kpartx -av VHD ,之后 显示添加 loop0p1  详情 回复 发表于 2015-11-29 17:33
回复

使用道具 举报

644#
发表于 2015-11-29 17:33:26 | 只看该作者
本帖最后由 ee1 于 2015-11-29 17:47 编辑
2011niumao 发表于 2015-11-29 17:11
奇怪。记得我装的centos是在/dev/mapper/loop0p1.现在已经删除也没有办法验证。
那可以暂时性使用ubuntu ...


最小化安装了centos7, kpartx和losetup已经有了
又安装了ntfs-3g, 会不会少什么?
关键是kpartx  -av VHD      ,之后 显示添加了 loop0p1

确找不到loop0p1,  loop0位置在/dev/loop0

ubuntu没问题。
回复

使用道具 举报

645#
 楼主| 发表于 2015-11-29 17:59:27 | 只看该作者
试试安装 dmsetup

点评

ee1
dmsetup是自带的,加入到dracut 不起作用 要用dmsetup创建 /dev/mapper/loop0p1 ?  详情 回复 发表于 2015-11-29 19:39
回复

使用道具 举报

646#
发表于 2015-11-29 19:39:25 | 只看该作者

dmsetup是自带的,加入到dracut 不起作用

要用dmsetup创建 /dev/mapper/loop0p1  ?

点评

倒不是.按理 kpartx 可以自动调用 losetup 和 dmsetup 的. 你这里的 vhd 是固定大小的吧? 如果不是,就需要把系统转移到一个固定vhd上. 如果是固定大小的,就需要深入分析 kpartx 的脚本来看原因了.  详情 回复 发表于 2015-11-29 22:06
回复

使用道具 举报

647#
 楼主| 发表于 2015-11-29 22:06:53 | 只看该作者
ee1 发表于 2015-11-29 19:39
dmsetup是自带的,加入到dracut 不起作用

要用dmsetup创建 /dev/mapper/loop0p1  ?

倒不是.按理 kpartx 可以自动调用 losetup 和 dmsetup 的.
你这里的 vhd 是固定大小的吧? 如果不是,就需要把系统转移到一个固定vhd上.
如果是固定大小的,就需要深入分析 kpartx 的脚本来看原因了.

点评

ee1
找到loop0p1的位置了, 用kpartx -av centos.vhd loop0p1的位置是/dev/dm-0, 在vbox里/dev/mapper/loop0p1是/dev/dm-0的链接 其实centos7也有partx,用partx -av centos.vhd loop0p1的位置是/dev/loop0p1  详情 回复 发表于 2015-12-1 11:19
回复

使用道具 举报

648#
发表于 2015-12-1 11:19:31 | 只看该作者
本帖最后由 ee1 于 2015-12-1 11:31 编辑
2011niumao 发表于 2015-11-29 22:06
倒不是.按理 kpartx 可以自动调用 losetup 和 dmsetup 的.
你这里的 vhd 是固定大小的吧? 如果不是,就需 ...


找到loop0p1的位置了,
用kpartx  -av centos.vhd   loop0p1的位置是/dev/dm-0,
在vbox里/dev/mapper/loop0p1是/dev/dm-0的链接, 在dracut里 的确没有/dev/mapper/loop0p1 这个奇怪!
其实centos7也有partx,用partx  -av centos.vhd    loop0p1的位置是/dev/loop0p1

但是centos.vhd放在ntfs分区无法启动,出现很多错误,
有ext4-fs error ,loop error,
buffer I/O error 也有,重新编译ntfs-3g只对buffer I/O error有用?

现在可以确定出现这些错误是systemd和ntfs有冲突造成的

把centos.vhd放在一个fat32格式的读卡器上可以正常启动了!  centos.vhd只有3G,呵呵


                if ismounted "$NEWROOT"; then
                        umount    "$NEWROOT"
                fi

mkdir -p /me
mount -t vfat -o rw /dev/sdb1 /me
partx -av centos.vhd
mount -t ext4 -o rw /dev/loop0p1 /$NEWROOT
vhdmount.sh就这样写

centos和ubuntu不同最后挂到/root就直接 system halt 必须挂到/$NEWROOT !

sudo dracut -i /home/mydracut/vhdmount.sh /lib/dracut/hooks/pre-mount/vhdmount.sh  /home/dracut

再编译个ntfs-3g看有没有用

论坛经常无法登录!究竟怎么回事?

点评

祝贺。 ntfs-3g编译后可以读写挂载ntfs分区。不编译的话,使用内核自带的ntfs驱动,只能只读挂载ntfs分区, 导致不能启动vhd。 启动时候,直接使用 kroot=/dev/dm-0也许也可以引导,只要出现/dev/dm-o。 估  详情 回复 发表于 2015-12-1 15:52
回复

使用道具 举报

649#
 楼主| 发表于 2015-12-1 15:52:39 | 只看该作者
本帖最后由 2011niumao 于 2015-12-1 15:53 编辑
ee1 发表于 2015-12-1 11:19
找到loop0p1的位置了,
用kpartx  -av centos.vhd   loop0p1的位置是/dev/dm-0,
在vbox里/dev/mapper/ ...


祝贺。

ntfs-3g编译后可以读写挂载ntfs分区。不编译的话,使用内核自带的ntfs驱动,只能只读挂载ntfs分区,
导致不能启动vhd。
启动时候,直接使用 kroot=/dev/dm-0也许也可以引导,只要出现/dev/dm-0。我倒是尝试成功过---在有/dev/mapper/loop0p1的情况下。

估计原先的不出现/dev/mapper/loop0p1 和centos的udev规则有关。需要改写一下udev规则。
这一块不熟悉,但是可以看看ubuntu,fedora那些系统的。据说udev已经被systemd吞并了,所以很多毛病和systemd有关。

点评

ee1
编译ntfs-3g可以从ntfs分区启动了, 在ntfs-3g_ntfsprogs/src/ntfs-3g.c这个文件 这个位置 #include int main(int argc, char *argv[]) { 添加 if (access("/etc/initrd-release", F_OK) >= 0)  详情 回复 发表于 2015-12-2 17:26
回复

使用道具 举报

650#
 楼主| 发表于 2015-12-1 16:11:46 | 只看该作者
  1. mkdir -p /me
  2. mount -t vfat -o rw /dev/sdb1 /me
  3. partx -av centos.vhd
  4. mount -t ext4 -o rw /dev/loop0p1 /$NEWROOT
  5. vhdmount.sh就这样写
复制代码

这样简明。
但是感觉有些写死了。万一那个分区不是 sdb1 ,或者 vhd文件想换个名字 怎么办。
还是使用变量,从引导参数把变量值传递给内核好些。
一是通用性,一是专有性,要平衡才好,
回复

使用道具 举报

651#
发表于 2015-12-2 17:26:02 | 只看该作者

RE: VHD系统 UBUNTU 14.04LTS 64位。欢迎使用。

2011niumao 发表于 2015-12-1 15:52
祝贺。

ntfs-3g编译后可以读写挂载ntfs分区。不编译的话,使用内核自带的ntfs驱动,只能只读挂载nt ...

编译ntfs-3g可以从ntfs分区启动了,
在ntfs-3g_ntfsprogs/src/ntfs-3g.c这个文件
这个位置
#include <unistd.h>

int main(int argc, char *argv[]) {
添加
        if (access("/etc/initrd-release", F_OK) >= 0)
                argv[0][0] = '@'
这两行
编译 安装就可以了
centos 没有/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g 这个文件
别的什么也不用改,所有error 都消失了!


其实我现在主要在vbox 里用linux 只有 有程序要在真机上跑 才从vhd启动
以前 在硬盘上留了两个逻辑盘 ,专门为安装 linux 和 mac os x,现在都删了,
ide硬盘一百多G 快没空间了, mac os x也不用了,留个linux 在vbox跑跑。

点评

祝贺。 但我这里有些问题。在内核4版本以上,会出现 blk_update_request 错误,不管是ubuntu fedora等等都有这个错误,不妨碍使用,就是觉得不完美。但内核版本3时候就没有。很奇怪。  详情 回复 发表于 2015-12-3 09:16
回复

使用道具 举报

652#
 楼主| 发表于 2015-12-3 09:16:21 | 只看该作者
ee1 发表于 2015-12-2 17:26
编译ntfs-3g可以从ntfs分区启动了,
在ntfs-3g_ntfsprogs/src/ntfs-3g.c这个文件
这个位置


祝贺。
但我这里有些问题。在内核4版本以上,会出现 blk_update_request 错误,不管是ubuntu fedora等等都有这个错误,不妨碍使用,就是觉得不完美。但内核版本3时候就没有。很奇怪。
可以启动后在命令行输入 dmesg 就可以看到了。
回复

使用道具 举报

653#
发表于 2016-6-15 08:02:08 | 只看该作者
楼主,能更新Ubuntu 16.04 LTS 64位VHD系统吗?
回复

使用道具 举报

654#
发表于 2016-10-16 15:27:36 | 只看该作者
楼主,能不能给个小grub通用启动器,你的链接都没用了

点评

还是那句道不尽的话,很感谢这位大师,通过学习他的资料,本人VHD UBUNTU,国产优麒麟,中标麒麟都能完美的从VHD里面启动运行本人QQ2840390592欢迎大家一起交流学习  详情 回复 发表于 2016-11-13 13:01
https://pan.baidu.com/s/1c19AJQC#list/ 同时发布一个基于ghostplant的简化的UBUNTU 1604 系统. 有vhd (8G大小) 与 live 两种版本 可供把玩.  详情 回复 发表于 2016-11-12 12:42
回复

使用道具 举报

655#
 楼主| 发表于 2016-11-12 12:42:14 | 只看该作者
36534 发表于 2016-10-16 15:27
楼主,能不能给个小grub通用启动器,你的链接都没用了

https://pan.baidu.com/s/1c19AJQC#list/
同时发布一个基于ghostplant的简化的UBUNTU 1604 系统.
有vhd  (8G大小)  与 live 两种版本 可供把玩.
回复

使用道具 举报

656#
发表于 2016-11-13 13:01:56 | 只看该作者
36534 发表于 2016-10-16 15:27
楼主,能不能给个小grub通用启动器,你的链接都没用了

还是那句道不尽的话,很感谢这位大师,通过学习他的资料,本人VHD UBUNTU,国产优麒麟,中标麒麟都能完美的从VHD里面启动运行本人QQ2840390592欢迎大家一起交流学习
回复

使用道具 举报

657#
发表于 2016-11-14 12:45:22 | 只看该作者
grub通用启动器2014-1025
在UBUNTU-1410.vhd目录中。
发几张图片看看效果:无图无真相么
http://xiangce.baidu.com/u/439719680

大神,下载地址怎么都失效了呀。。。。麻烦能重新发下不?或者QQ邮箱5590500 ,先感谢了。。。。。

点评

请看第一楼.首楼新加一个新的链接地址.  发表于 2016-11-29 12:29
回复

使用道具 举报

658#
发表于 2016-11-29 07:05:44 | 只看该作者
HAY LAM...!
回复

使用道具 举报

659#
发表于 2016-12-16 19:21:01 | 只看该作者
UEFI+GPT+GRUB2 怎么引导不起来呢,求解

点评

有没有出错信息?最好能提供一下,以便诊断.  发表于 2016-12-17 19:34
回复

使用道具 举报

660#
发表于 2016-12-25 20:17:44 | 只看该作者
好像是引导参数不正确

1.JPG (141.38 KB, 下载次数: 100)

1.JPG

点评

这个原来也出现过。不知道什么原因利用UUID做root参数有时候会失效。 此时,可以把引导菜单的 root=UUID=XXXXXXXXXXXXX手工更改为 root=/dev/sdaX 就可以了。X 是vhd文件所在分区序号。  详情 回复 发表于 2016-12-26 14:28
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 11:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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