无忧启动论坛

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

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

    [复制链接]
发表于 2015-1-4 15:58:57 | 显示全部楼层
感谢LZ, 我做的 ubuntukylin 1404 的 VHD,启动成功。看来kpartx,kpartx-boot 是必须的。不知其它非ubuntu LIUNX 能否依此法成功? 我较急需要一个SUSE linux 9/10 Ent server 的VHD系统。

点评

发布一个制作可引导固定大小VHD的dracut制作方法.包含Fedora 与 Opensuse两种.但都是桌面版的. Fedora 21 与 OPENSUSE13.2 . 按理也可以适用于服务器版本.可以尝试一下. 以下链接中mydracut.zip文件 注意 如果  详情 回复 发表于 2015-1-9 15:00
一般LINUX原理上应该都是可以的.但是具体实现由于命令不同变化很大. 例如ARCH上是 partx 命令 而不是 kpartx .VHD 挂载在 /dev/loop0p1 而不是 /dev/mapper/loop0p1 . 至于 SUSE, 也可以先安装到固定大小VHD中.  详情 回复 发表于 2015-1-4 16:17
回复

使用道具 举报

 楼主| 发表于 2015-1-4 16:17:27 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-4 18:02 编辑
jxdeng 发表于 2015-1-4 15:58
感谢LZ, 我做的 ubuntukylin 1404 的 VHD,启动成功。看来kpartx,kpartx-boot 是必须的。不知其它非ubuntu ...


一般LINUX原理上应该都是可以的.但是具体实现由于命令不同变化很大.
例如ARCH上是 partx 命令 而不是 kpartx .VHD的根分区挂载在 /dev/loop0p1 而不是 /dev/mapper/loop0p1 .
这一点似乎ARCH与其他linux一样.UBUNTU自己特殊.

至于 SUSE, 也可以先安装到固定大小VHD中.然后使用UBUNTU定制的vmlinuz initrd.img去引导VHD的SUSE.
只要把UBUNTU系统 /lib/modules/下的同版本子目录 拷贝到VHD的/lib/modules/ 下就可以引导起来.
使用上没有大问题.

或者 使用ARCH的制作好的可以引导VHD的内核来引导SUSE.方法相同.
本帖链接有下载===制作好的可以引导VHD的UBUNTU ARCHLINUX的内核及其 内核模块目录(点zip文件)

点评

请问不支持动态扩展大小的VHD是因为kpartx/partx的限制吗?  详情 回复 发表于 2022-9-27 10:10
回复

使用道具 举报

 楼主| 发表于 2015-1-9 15:00:08 | 显示全部楼层

Fedora21与OPENSUSE13.2可VHD启动

本帖最后由 2011niumao 于 2015-1-11 10:51 编辑
jxdeng 发表于 2015-1-4 15:58
感谢LZ, 我做的 ubuntukylin 1404 的 VHD,启动成功。看来kpartx,kpartx-boot 是必须的。不知其它非ubuntu ...


发布一个制作可引导固定大小VHD的dracut制作方法.包含Fedora 与 Opensuse两种.但都是桌面版的.
Fedora 21 与 OPENSUSE13.2 .
按理也可以适用于服务器版本.可以尝试一下.
点击一楼链接,下载其中的  mydracut.zip 文件
回复

使用道具 举报

 楼主| 发表于 2015-1-9 15:50:51 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-9 15:52 编辑

上传两个制作好的可以引导固定大小的VHD系统的 dracut , 都是精简过的.我使用正常.
opensuse 13.2 64位 的两个引导文件 在 dracut-opensuse.zip 中. 版本  3.16.6-2-desktop .
fedora 21 64位 的两个引导文件 在 dracut-fedora.zip 中  版本 3.17.7-300.fc21.x86_64

请到一楼链接下载.另外从UBUNTU使用来看 64位的内核也可以引导32位系统.
所以如果是32位的固定大小VHD的LINUX系统,也可以试试使用他们引导.
回复

使用道具 举报

发表于 2015-1-10 17:40:26 | 显示全部楼层
恭喜LZ又拓宽了VHD_LINUX的应用范围。感谢LZ提供的内核。我测试了一下。全部成功。又学到了新的 dracut 。但是 我在改造 suse linux server 11 时 碰到了困难。1、kpartx kpartx-boot 不知怎么装 ? 2、它的内核为2.6.27-19-5 ,我用LZ的3.8.0-39版内核,上去后,一败涂地。 不知有何方法。请教 LZ  .

点评

多谢反馈.对于suse linux server 11不了解. 第一点 一个好的方面是 应该不需要要安装kpartx kpartx-boot.似乎只有UBUNTU使用kpartx-tool. 其他linux都是使用 partx 一般都是已经预装好的. 可以在终端敲入 partx  详情 回复 发表于 2015-1-10 22:58
回复

使用道具 举报

 楼主| 发表于 2015-1-10 22:58:31 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-10 23:12 编辑
jxdeng 发表于 2015-1-10 17:40
恭喜LZ又拓宽了VHD_LINUX的应用范围。感谢LZ提供的内核。我测试了一下。全部成功。又学到了新的 dracut 。 ...


多谢反馈.对于suse linux server 11不了解.
第一点 一个好的方面是 应该不需要要安装kpartx kpartx-boot.似乎只有UBUNTU使用kpartx-tool.
其他linux都是使用 partx  一般都是已经预装好的.
可以在终端敲入 partx 看看是什么反应.
或者 先制作一个固定大小VHD ,起名字比如说 ubuntu.vhd .在suse系统里面,在终端 输入
  1. partx -av ubuntu.vhd
复制代码
如果有 add loop0p1 什么的就说明可识别挂载vhd,从而也可引导.
第二点 是否需要suse系统能读写ntfs分区===如果你想把suse 制作成固定大小vhd 放在ntfs分区上===就需要安装ntfs-3g 不过这个手工编译修改过的ntfs-3g 就可以.应该不成问题.
第三点 就是制作initrd了.这里有两种模式,
一种是使用dracut---这意味着系统和initrd都使用systemd,这时候可以使用mydracut里面介绍的操作.  
一种是initrd还是传统的,没有使用systemd的initramfs ,可以像ARCH那样直接修改 init文件.

不管是哪一种,有一个相同的思路是:  根据引导参数,设置变量  vloop vlooppart .
在系统挂载根目录以前,判断vloop是不是非空.如果非空,则 把vhd所在分区(一般ntfs)挂载在 /host 上,
把vhd文件利用partx命令挂在 loop设备上,再把root变量的内容 修改为 /dev/loop0$VLOOPPART ,就行了.

以下就交给原始代码继续引导即可,   
回复

使用道具 举报

 楼主| 发表于 2015-1-11 10:47:57 | 显示全部楼层

Mageia4可以VHD启动

本帖最后由 2011niumao 于 2015-1-11 10:54 编辑

更新了mydracut.zip  加入了对于Mageia4的制作dracut教程.
上传了Mageia4 64位的可以引导固定VHD的dracut 版本 3.14.27-desktop-1.mga4
文件名 dracut-mageia.zip ==================请在1楼链接查找下载.

发现一个关键点 应该修改的配置文件是 /etc/dracut.conf
把其中两行修改为
  1. # dracut modules to add to the default
  2. add_dracutmodules+=" systemd "

  3. # additional kernel modules to the default
  4. add_drivers+=" fuse loop "
复制代码

就是说 内核模块 fuse  loop 必须加入到 dracut中.
至于fedora21 opensuse13.2 它是默认加入所有内核模块到dracut中.
Mageia4不是默认.那就必须明确声明了.
回复

使用道具 举报

发表于 2015-1-11 16:48:48 | 显示全部楼层
本帖最后由 jxdeng 于 2015-1-11 16:58 编辑

LZ威武。又攻下一城。 有时间的话能否攻攻centOS / SUSE SERVER 。对suse server 11 我再次探索:1、用LZ现成的openSUSE132的内核,能走一段,到“starting show plymouth boot screen....”死机。停在“vgaarb: device changed decodes: PCI:0000:0:02.0, OLDDECODEW=IO+MEM,DECODES=IO+MEN:OWNS=io+mem " 。

2、用LZ的ARCH 内核 3.14.6.1-ARCH,lib/modules 目录替换。已验证 partx 正常。启动时,报 找不到 “vmlinuz-linux-3.14.6-1-ARCH”文件的错误。引导串没有问题。奇怪。
3、它的 initramfs/local 好像没有?

点评

呵呵 多谢助威.主要是对server没有需求,不会花太多时间装配它. 1 这个估计是已经挂载上vhd了.但转换到vhd内系统以后有一个版本不一致的问题.vmlinuz是新版本,系统未必能配合的上---毕竟系统是配合2.7 的---差别太  详情 回复 发表于 2015-1-11 17:05
回复

使用道具 举报

 楼主| 发表于 2015-1-11 17:05:28 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-11 17:24 编辑
jxdeng 发表于 2015-1-11 16:48
LZ威武。又攻下一城。 有时间的话能否攻攻centOS / SUSE SERVER 。对suse server 11 我再次探索:1、用LZ现 ...


呵呵 多谢助威.主要是对server没有需求,不会花太多时间装配它.  
1 这个估计是已经挂载上vhd了.但转换到vhd内系统以后有一个版本不一致的问题.vmlinuz是新版本,系统未必能配合的上---毕竟系统是配合2.7 的---差别太大.
2 估计是vmlinuz-linux-3.14.6-1-ARCH的路径没有写对.
3 请判断一下你的suse 是否是dracut?还是 initramfs 方法是在终端执行
sudo dracut -o ~/dracut-test
看看输出是什么 就可以判断出来的,
如果是 dracut 那么按照mydracut.zip文件中mageia子目录提供的正确方法操作,应该可以.
4 没有local目录也正常的.如果方便,并且判断系统使用的是传统的initramfs,请你发一份 init 文件上来.大概是 /usr/share/initramfs-tools/init 这个文件.
感觉还是直接制作一个当前版本的initramfs比较好====使用 ARCH那种模式(因为UBUNTU的方式往往与其他linux不同).
回复

使用道具 举报

发表于 2015-1-15 18:19:51 | 显示全部楼层
本帖最后由 jxdeng 于 2015-1-15 18:52 编辑

今天有时间,拿LZ的dracut-mageia 试了一下 Suse svr 11 , 发现比dracut-opensese 走的更远。几乎成了。但存在不少问题。
1、第一个错在 Mounting /sysroot..... 报 EXT4-fs (loop0p1):VFS:can't find ext4 filesystem
2、第二个错在 Failed to mount /sysroot ,以后就是stop 所有启动起来的服务,进到了 Emergence shell.
另:Suse svr 11 无 dracut 。所以可以肯定 是initramfs 。但是又没有/usr/share/initramfs-tools/init 文件。
整个系统下搜索遍了,无init 文件。奇怪。
3、vmlinuz-linux-3.14.6-1-ARCH的路径没有错,我换3.17.6-1-ARCH版就可以走一段。一样 走到mount: unknown filesystem type "swap". 就进入Emergence shell。
我估计:我的系统的分区跟LZ 的不一样。有时间再试试。

点评

1,2是一个错.因为不能正确挂载根文件系统.看来毛病是我写代码时候把vhd上的根文件系统限制为ext4了.以下是那个 05-vhdmount的全部内容  详情 回复 发表于 2015-1-15 22:39
回复

使用道具 举报

 楼主| 发表于 2015-1-15 22:39:58 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-23 17:05 编辑
jxdeng 发表于 2015-1-15 18:19
今天有时间,拿LZ的dracut-mageia 试了一下 Suse svr 11 , 发现比dracut-opensese 走的更远。几乎成了。但 ...


1,2是一个错.因为不能正确挂载根文件系统.看来毛病是我写代码时候把vhd上的根文件系统限制为ext4了.检查了05-vhdmount.sh的全部内容
  1.         mount -t ext4 -o rw /dev/loop0$VLOOPPART  $NEWROOT
  2.         if [ -n "$VLOOP" -a -d $NEWROOT/host ]; then
  3.         mount -R /host $NEWROOT/host
  4.         fi
  5. fi
  6. exit 0
复制代码

倒数第六行这一句
  1. mount -t ext4 -o rw /dev/loop0$VLOOPPART  $NEWROOT
复制代码

中的 ext4 应该更改为你实际的VHD上根分区的文件系统类型. 然后再重新制作dracut.
用新的dracut引导看看.
3 的错误奇怪.可以试试把 /etc/fstab 的swap先注释掉试试.
回复

使用道具 举报

发表于 2015-1-16 04:04:23 | 显示全部楼层
如果能学会这个就好了,多谢楼主的劳动,谢谢

点评

谢谢支持  发表于 2015-1-16 23:13
回复

使用道具 举报

发表于 2015-1-16 13:18:55 | 显示全部楼层
建议在  
                mount -t ${FSTYPE} "/dev/mapper/loop0${VLOOPPART}" ${rootmnt}       

                if [ -d ${rootmnt}/host ]; then
                        mount -o move /host ${rootmnt}/host
                fi
改成
                mount -t ${FSTYPE} "/dev/mapper/loop0${VLOOPPART}" ${rootmnt}       
                [ -d ${rootmnt}/host ] || mkdir -p ${rootmnt}/host
                if [ -d ${rootmnt}/host ]; then
                        mount -o move /host ${rootmnt}/host
                fi

点评

已经采用.谢谢了.学习过你的关于ARCH LOOP的帖子.很受启发的.  详情 回复 发表于 2015-1-16 23:14
回复

使用道具 举报

发表于 2015-1-16 16:07:04 | 显示全部楼层
今天做了一个mageia4 利用LZ的vmlinuz-mageia/dracut-mageia 内核 能启动到图形桌面。但 键盘鼠标无反应。自己按LZ提供的方法生成内核时,发现
执行dracut -i /home/niumao/mydracut/05-vhdmount.sh /lib/dracut/hooks/pre-mount/05-vhdmount.sh --install  " blkid  partx ntfs-3g fusermount  mount.fuse mount.ntfs-3g"     /home/niumao/dracut-mageia  3.14.27-desktop-1.mga4
时,出现报错。而且 该/lib/dracut/hooks/pre-mount/05-vhdmount.sh 在mageia4 中不存在,我省掉了。还加上了--force 参数。不知是否有问题。
我在分析 suse svr11 时发现 该系统要编译内核后才支持Ext4 。所以 我把 LZ 提示的 “mount -t ext4 -o rw /dev/loop0$VLOOPPART  $NEWROOT” 更改为ext3 后重新生成dracut-mageia 。结果还不如LZ的内核。LZ能否提供一个支持ext3的dracut-mageia。我可以试试
是否支持suse svr 11 。



点评

这个mageia4的系统能启动到桌面就说明成功了. 没有鼠标和键盘是一个老毛病--我也老遇到---一般是因为版本不一致引起的. 或者在/lib/modules/下没有当前内核的对应子目录. 可以自己安装最新的内核 或者到一楼链  详情 回复 发表于 2015-1-17 15:08
这个dracut 命令需要把 niumao 更改为你的用户名.另外 mydracut目录应该放在 /home/用户名 这个家目录下. 这个错误是在制作时候没有找到 05-vhdmount.sh 这个文件,从而没有放到dracut里面去.引导时也就找不到了.  详情 回复 发表于 2015-1-16 23:27
修改了一下05-vhdmount.sh文件.使得可以自动探测vhd上根分区.--见一楼链接的mydracut-new.zip文件. 用新的05-vhdmount.sh制作了dracut-mageia ,使用lsinitrd看了看,有ext3的驱动的. 可以试试看,也许可以成功.  详情 回复 发表于 2015-1-16 23:18
回复

使用道具 举报

 楼主| 发表于 2015-1-16 23:14:41 | 显示全部楼层
carbonjiao 发表于 2015-1-16 13:18
建议在  
                mount -t ${FSTYPE} "/dev/mapper/loop0${VLOOPPART}" ${rootmnt}       

已经采用.谢谢了.学习过你的关于ARCH LOOP的帖子.很受启发的.
回复

使用道具 举报

 楼主| 发表于 2015-1-16 23:18:59 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-16 23:30 编辑
jxdeng 发表于 2015-1-16 16:07
今天做了一个mageia4 利用LZ的vmlinuz-mageia/dracut-mageia 内核 能启动到图形桌面。但 键盘鼠标无反应。 ...


修改了一下05-vhdmount.sh文件.使得可以自动探测vhd上根分区的文件系统类型.--见一楼链接的mydracut-new.zip文件.
用新的05-vhdmount.sh制作了dracut-mageia ,使用lsinitrd看了看,有ext3的驱动的.
一楼链接的 dracut-mageia-new.zip
我这里测试感觉很成功,比旧版本好.请你也试试看,也许可以成功.如果失败最好能给出错误提示,
回复

使用道具 举报

 楼主| 发表于 2015-1-16 23:27:30 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-16 23:28 编辑
jxdeng 发表于 2015-1-16 16:07
今天做了一个mageia4 利用LZ的vmlinuz-mageia/dracut-mageia 内核 能启动到图形桌面。但 键盘鼠标无反应。 ...


这个dracut 命令需要把 niumao 更改为你的用户名.另外 mydracut目录应该放在 /home/用户名 这个家目录下.  
这个错误是在制作时候没有找到 05-vhdmount.sh 这个文件,从而没有放到dracut里面去.引导时也就找不到了.

执行完 dracut命令后 ,可以执行
  1. lsinitrd /home/用户名/dracut-mageia
复制代码
看看其中内容.
回复

使用道具 举报

 楼主| 发表于 2015-1-17 15:08:29 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-17 15:14 编辑
jxdeng 发表于 2015-1-16 16:07
今天做了一个mageia4 利用LZ的vmlinuz-mageia/dracut-mageia 内核 能启动到图形桌面。但 键盘鼠标无反应。 ...


这个mageia4的系统能启动到桌面就说明成功了.
没有鼠标和键盘是一个老毛病--我也老遇到---一般是因为版本不一致引起的.
或者在/lib/modules/下没有当前内核的对应子目录.

可以自己安装最新的内核 版本是 3.14.7-desktop-1.mga4
或者到一楼链接下载 文件是 3.14.7-desktop-1.mga4.zip
解压 复制到 /lib/modules/下 .修改权限
  1. sudo chmod 755 -R /lib/modules/3.14.7-desktop-1.mga4
复制代码


此外如果使用这个dracut-mageia引导 suse ser 系统,也需要对 suse ser 如上操作,
把3.14.7-desktop-1.mga4 放在 /lib/modules/ 下并修改权限为755.

点评

原来的3.12.21-desktop-2.mga4 目录要删除吗?  详情 回复 发表于 2015-1-18 12:29
回复

使用道具 举报

发表于 2015-1-18 12:26:47 | 显示全部楼层
用新版本 dracut-mageia-new 来引导suse svr 11 仍不能启动到图形桌面。但是,Ext3 文件系统能mount上了。 看了一下日志:
Ntfs-3g[334]处报:Mounted /dev/sda3(Read-Write,label “VHD”,NTFS 3.1)。应该 /dev/sda3已被占用。接下来,报 Mounting /sysroot…..  警告。
====================================================
Sysroot.mount: Directory /sysroot to mount over is not empty, mounting anyway.  
Mount: /dev/sda3 is already mounted or /sysroot busy
/dev/sda3 is already mount on /host
/dev/sda3 is already mount on /sysroot/host
Sysroot.mount mount process exited.   
Failed to mount /sysroot.
接下来就stop 所有服务。进入emergency mode , 进命令行。
我感觉,好像是 /dev/sda3 设备被 占用了,或者 Server 系统的不同,sysroot 不能被正确挂载。应该是最后一公里的问题了。
另:我再使用 Dracut-opensuse-new 测试了一把,基本上也是上述原因。

点评

修订了一下05-vhdmount.sh.在挂载/host以前,判断/sysroot是否已挂载, 如果是则先卸载/sysroot. 按理可以处理这里的出错信息了. 制作了两个dracut-mageia-ro dracut-mageia-rw .一样的,只是挂载vhd根目录时候一个是  详情 回复 发表于 2015-1-18 16:24
感觉是最后一个问题了.可惜不太清楚如何修改. 这个问题的原因是 由于某种原因,内存系统dracut没有接受 修改root后的值/dev/loop0p1 ,而是使用原来引导参数的值 /dev/sda3 .这样挂载根目录失败.只能进入emergency s  详情 回复 发表于 2015-1-18 14:20
回复

使用道具 举报

发表于 2015-1-18 12:29:40 | 显示全部楼层
本帖最后由 jxdeng 于 2015-1-18 13:22 编辑
2011niumao 发表于 2015-1-17 15:08
这个mageia4的系统能启动到桌面就说明成功了.
没有鼠标和键盘是一个老毛病--我也老遇到---一般是因为 ...


原来的3.12.21-desktop-2.mga4 目录要删除吗?
呵。测试了。不用管原来的。cp 进来新的就行了。mouse/keyb 都可以了。请问LZ ,怎么通过升级的方式更改?

点评

其实就是把 init 的后续命令手工敲入一遍. 好处是可以通过它直接看到能不能引导到vhd,引导进入vhd以后会不会有其他毛病,例如会不会不认识键盘鼠标.  详情 回复 发表于 2015-1-18 14:23
是不用管原来的东西.相当于同时安装了两个版本的内核驱动模块而已. 升级方式就是在Mageia系统中更新到最新就可以.  详情 回复 发表于 2015-1-18 14:10
回复

使用道具 举报

 楼主| 发表于 2015-1-18 14:10:06 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-18 16:04 编辑
jxdeng 发表于 2015-1-18 12:29
原来的3.12.21-desktop-2.mga4 目录要删除吗?
呵。测试了。不用管原来的。cp 进来新的就行了。mouse ...


是不用管原来的东西.相当于同时安装了两个版本的内核驱动模块而已.
升级方式就是在Mageia系统中更新到最新就可以.一般会安装最新内核.
  1. sudo urpmi --auto-update
复制代码

回复

使用道具 举报

 楼主| 发表于 2015-1-18 14:20:33 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-18 14:39 编辑
jxdeng 发表于 2015-1-18 12:26
用新版本 dracut-mageia-new 来引导suse svr 11 仍不能启动到图形桌面。但是,Ext3 文件系统能mount上了。  ...


感觉是最后一个问题了.如何修改还需要琢磨琢磨.
进入emergency shell原因一般是  
由于某种原因,内存系统dracut没有接受 修改root后的值/dev/loop0p1 ,而是使用原来引导参数的值 /dev/sda3 .这样挂载根目录失败.进入emergency shell.
按照这里的错误提示
现在是 ===内存系统已经把/dev/sda3挂载到/sysroot上了,再挂载到/host就会出错.进入emergency shell 感觉只要加入一个卸载命令就好.
整个过程没有转换到VDH上的系统.所以与suse ser 无关.

目前有一个手工挂载的解决方法.在emergency shell 内,手工敲入命令
  1. umount /sysroot
  2. mount -t ntfs-3g -o rw /dev/sda3 /host
  3. partx -av /host/VHD文件名字,就是vloop的值
  4. mount -t ext3 -o rw /dev/loop0p1 /sysroot
  5. systemctl switch-root /sysroot /sbin/init
复制代码

这时候应该进入VHD系统继续引导了.
如果/host不存在.可以先建立一个. /dev/loop0p1 里面的p1要更改为 vlooppart的值.
回复

使用道具 举报

 楼主| 发表于 2015-1-18 14:23:22 | 显示全部楼层
其实就是把 init 的后续命令手工敲入一遍.
好处是可以通过它直接看到能不能引导到vhd,引导进入vhd以后会不会有其他毛病,例如会不会不认识键盘鼠标.
回复

使用道具 举报

 楼主| 发表于 2015-1-18 16:24:01 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-18 16:30 编辑
jxdeng 发表于 2015-1-18 12:26
用新版本 dracut-mageia-new 来引导suse svr 11 仍不能启动到图形桌面。但是,Ext3 文件系统能mount上了。  ...


修订了一下05-vhdmount.sh.在挂载/host以前,判断/sysroot是否已挂载, 如果是则先卸载/sysroot.
按理可以处理这里的出错信息了.
制作了两个dracut-mageia-ro dracut-mageia-rw .一样的,只是挂载vhd根目录时候一个是只读挂载(在后续引导时候会检查根分区错误并重新以可写方式挂载根分区),一个是直接可写挂载.在我这儿测试都通过没有问题.
文件是 newdracut-mageia.zip..  一楼链接下载.请测试看看是否可用.

点评

修改以后的05-vhdmount.sh内容  详情 回复 发表于 2015-1-18 16:28
回复

使用道具 举报

 楼主| 发表于 2015-1-18 16:28:29 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-22 17:06 编辑

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

发表于 2015-1-18 16:53:51 | 显示全部楼层
本帖最后由 jxdeng 于 2015-1-18 17:00 编辑

      利用LZ提供的手动命令,查到了问题,mount /dev/loop0p1 时 老是mount不上, 改一下p2,结果成了(/dev/loop0p2 on /hostroot type ext3 (ro,relatime,data=ordered)) 。原来是建分区时,sda1 给了swap ,sda2 给 / 。更改vlooppart=p1为更改vlooppart=p2后。重启系统,还是只能到emergency shell。 但是,远远不是原来的问题了。
然后执行systemctl switch-root /sysroot /sbin/init ,奇迹出现了。VHD 上根上的root  /sbin/init带起来的东西都起来了。不过 中间有不少错误,走到gdm Xserver 时 停下了。字符界面可以登录了。好啊!成功了90%。感谢LZ的指导。看来SERVER 系统还是不一样。剩下的问题,怎样进入XWINDOW。
     忘了,上面只是用了dracut-opensuse 内核。

点评

新制作dracut-opensuse上传.放在了一楼链接子目录 dracut-opensuse下面. 还有对应的 内核驱动模块子目录 ,即复制到 /lib/modules/ 下的目录. 请下载测试. (fedora mageia等也上传了.和内核驱动目录一起 放在对应  详情 回复 发表于 2015-1-18 20:47
回复

使用道具 举报

 楼主| 发表于 2015-1-18 18:27:56 | 显示全部楼层
hehe 恭喜.基本上成功了.
回复

使用道具 举报

 楼主| 发表于 2015-1-18 20:47:32 | 显示全部楼层
jxdeng 发表于 2015-1-18 16:53
利用LZ提供的手动命令,查到了问题,mount /dev/loop0p1 时 老是mount不上, 改一下p2,结果成了(/d ...

新制作dracut-opensuse上传.放在了一楼链接子目录 dracut-opensuse下面.
还有对应的 内核驱动模块子目录 ,即复制到 /lib/modules/ 下的目录.
请下载测试.
(fedora mageia等也上传了.和内核驱动目录一起  放在对应名字子目录下.)
回复

使用道具 举报

发表于 2015-1-19 19:05:04 | 显示全部楼层
今天测试了LZ最新的内核版本,dracut-opensuse 与前面的版本一样。只能进到emergency1 shell。手动 systemctl switch-root /sysroot /sbin/init ,可启动系统。图形界面仍起不来。可手动登陆进入命令行 shell。
使用新版 dracut-mageia ,有一点与上不同,可一路启动到命令行 shell 。图形界面仍出不来。提供此点测试供LZ参考。
我感觉,svr 版的Linux 经过内核的狂改,不知道还要修改哪些地方,才能顺利启动?或许用LZ的方法在该系统上修改可以一试,但是我发现dracut 等配置都不一样,难下手。

点评

感谢测试与反馈。看来还是原配好,捆绑不成夫妻。 能启动到命令行界面 ,按理就是成功了。 不能进入图形界面,应该是因为内核vmlinuz与vhd内系统软件版本差别较大引起的。 一般把/lib/modules/以内核版本号为名字  详情 回复 发表于 2015-1-19 20:18
回复

使用道具 举报

 楼主| 发表于 2015-1-19 20:18:34 | 显示全部楼层
本帖最后由 2011niumao 于 2015-1-19 20:21 编辑
jxdeng 发表于 2015-1-19 19:05
今天测试了LZ最新的内核版本,dracut-opensuse 与前面的版本一样。只能进到emergency1 shell。手动 systemc ...


感谢测试与反馈。看来还是原配好,捆绑不成夫妻。
能启动到命令行界面 ,按理就是成功了。
不能进入图形界面,应该是因为内核vmlinuz与vhd内系统软件版本差别较大引起的。
一般把  /lib/modules/以内核版本号为名字的子目录  拷贝到vhd里面的  /lib/modules/  下可以解决驱动版本匹配的问题。
但现在版本号差别太大,就驱动不起来了。

应该是做一个原生的initrd才能解决图形界面问题。一般步骤是
1,  编译ntfs-3g。
2,  改写init文件,加入引导vhd的代码。
3, 修改 制作init文件的配置,使得所需要的模块,内核驱动模块(loop fuse ),二进制命令文件(blkid partx losetup等)都给塞进到initrd.
4 , 制作initrd  一般是命令 mkinitramfs 或者 命令 dracut 两种。
也可以尝试  先执行 1,3,4,  得到一个initrd。然后打开 initrd ,对其中的init进行编辑---即执行第二步。最后cpio命令再打包制作成 initrd 。也是一种方法。

点评

是不是一定  详情 回复 发表于 2015-1-20 18:46
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 17:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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