jxdeng 发表于 2015-2-9 15:13:40

本帖最后由 jxdeng 于 2015-2-9 15:35 编辑

LZ乃神人也。恭喜!支持LVM的dracut就出来了。
我放下手上的事情也要试一下。我使用了LZ的dracut-fedora-kloop 来启 redhat SVR 5.8 。配上
linux/redhat/vmlinuz-fedora root=UUID=${ddeeff} kloop=/redhat/redhat5.vhd kroot=/dev/mapper/vg_sys-lv_rootklvm=vg_sys 后,
启动机器。一路狂奔。可惜,还是在最后的某个位置停下来了。随后进入MAINTENANCE 状态。出错位置在:
cheching filesystems
fsck.ext3: No such file or directory while trying to open /dev/vg_sys/lv_root
/dev/vg_sys/lv_root:
The superblock could not be read or does not describe a correct ext2.

当然,前面还有重要的报错:
udevd-event: run_program: ressize 256 too short
udevd-event:wait_for_sysfs: waiting for '/sys/deices/pci0000:00/0000:00:1f.2/ata3/host2/ioerr_cnt' failed

奇怪:maintenance 状态,不能登录进去。我才有手工切换:
systemctl switch-root /sysboot /sbin/init进入maintenance 后,登录成功。再mount 发现LV只有 lv_root 和
lv_usr 挂载上了。其它的lv 一个也没挂上去。估计跟前面的出错有关。提供的测试不知是否有用?
总之,要赞一个!希望能成功。

=======================================
又:
我在虚机中启动时,看了一下 grub.conf 配置。
它是这样写的:kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vg_sys/lv_root crashkernel=128M@16M rhgb quiet
这跟kloop 的写法:/dev/mapper/vg_sys-lv_root 有些不一样。还跟前面启动的报错 也相关。

2011niumao 发表于 2015-2-9 16:52:06

jxdeng 发表于 2015-2-9 15:13
LZ乃神人也。恭喜!支持LVM的dracut就出来了。
我放下手上的事情也要试一下。我使用了LZ的dracut-fedora-k ...

谢谢测试.LVM这方面的功能只能是一种探讨测试阶段.逐步完善吧.
可以试试设置kroot=/dev/vg_sys/lv_root其他不变.
LVM启动其实需要一个配置文件,好象是 /etc/lvm.conf,但如果把这个文件放在dracut里面就只能启动这一台机器了.与希望通用性不一致.就没有理会了.

jxdeng 发表于 2015-2-9 17:36:31

指定 kroot=/dev/vg_sys/lv_root 。结果一样。

2011niumao 发表于 2015-2-9 21:37:26

本帖最后由 2011niumao 于 2015-2-9 21:39 编辑

dddddsssssss   

2011niumao 发表于 2015-2-9 21:38:55

本帖最后由 2011niumao 于 2015-2-9 21:46 编辑

jxdeng 发表于 2015-2-9 15:13
LZ乃神人也。恭喜!支持LVM的dracut就出来了。
我放下手上的事情也要试一下。我使用了LZ的dracut-fedora-k ...

你的lvm采取名字 /dev/vg-name/lv-name这种方式命名设备,这一块我还不太了解.也不知道该怎么理解这个错误.需要一个信息:
进入maintence后,请执行一下 ls /dev/mapper/看看其中有没有 vg_sys-lv_root这个设备.
此外你这里手工switch以前有没有手工执行mount命令?如果没有,说明/sysroot已经自动挂载而且是正确挂载了.也就是说 kroot参数没有错误.
看起来/dev/vg_sys/lv_root是启动后根分区的设备名称.可以检查一下虚拟机里面的 /etc/fstab 可以看到根分区的设备.请确认一下

因为在dracut检查参数klvm非空以后,就执行两个命令:vgscan
vgchange -ay查询卷组和激活卷组的逻辑卷.接着就挂载kroot指定的逻辑分区到根分区,就进入switch-root阶段了.
有可能是这两个命令执行后逻辑卷组的名字和/etc/fstab里面的名字不一样造成的错误.

2011niumao 发表于 2015-2-9 22:43:53

jxdeng 发表于 2015-2-9 15:13
LZ乃神人也。恭喜!支持LVM的dracut就出来了。
我放下手上的事情也要试一下。我使用了LZ的dracut-fedora-k ...

很奇怪的是.我使用fedora默认安装到固定vhd上.使用kroot=/dev/mapper/fedora-root 或者 kroot=/dev/fedora/root 都可以引导成功 .也可能是 设备没有准备就绪 的原因 胡乱猜测而已..

yGeo 发表于 2015-2-9 23:15:28

有vhd安装Debian的解决方案吗

2011niumao 发表于 2015-2-10 09:28:59

yGeo 发表于 2015-2-9 23:15
有vhd安装Debian的解决方案吗

应该与UBUNTU一样的.现在有两种方案了.一种是vloop方法,见一楼链接的VHDBOOTDIYv7.一种是新的KLOOP方法,还在测试阶段,教程过几天能出来.

jxdeng 发表于 2015-2-10 11:34:00

本帖最后由 jxdeng 于 2015-2-10 11:38 编辑

2011niumao 发表于 2015-2-9 21:38
你的lvm采取名字 /dev/vg-name/lv-name这种方式命名设备,这一块我还不太了解.也不知道该怎么理解这个错 ...



我的/etc/fstab 的第一行为:
/dev/vg_sys/lv_root         /        ec3         defaults        1 1
===================================================================
虚机里启动后 mount 的结果有:
/dev/mapper/vg_sys-lv_root on / type ext3 (rw)
===================================================================
在switch之前:mount 的部分结果:
/dev/sda3on/host type fuseblk(........................)
/dev/mapper/vg_sys-lv_root on /sysroot type ext3 (..........)
/dev/mapper/vg_sys-lv_usron /sysroot/usr type ext3(........)
====================================================================
在switch之后:mount 的部分结果:
/dev/mapper/sys_sys-lv_root on / type ext3 (rw)
/dev/mapper/sys_sys-lv_tmpon /tmp type ext3(rw)
/dev/mapper/sys_sys-lv_usron /usr type ext3(rw)
/dev/mapper/sys_sys-lv_topsic on /home/topsic type ext3(rw)
/dev/mapper/sys_sys-lv_oracle on /oracle type ext3(rw)
............................
=========================================================

switch之前,根设备是mount上去了,而且按你命名方式,挂载了所有的LV 。问题的关键是 vhd 启动的 LV设备命名方式 与 虚拟机启动后的LV 设备命名方式不同。我的版本
RedHat Server 5.8 。

yGeo 发表于 2015-2-10 12:41:08

2011niumao 发表于 2015-2-10 09:28
应该与UBUNTU一样的.现在有两种方案了.一种是vloop方法,见一楼链接的VHDBOOTDIYv7.一种是新的KLOOP方法, ...

好,谢谢。我先去尝试一下vloop,LZ辛苦了

2011niumao 发表于 2015-2-10 15:03:01

jxdeng 发表于 2015-2-10 11:34
我的/etc/fstab 的第一行为:
/dev/vg_sys/lv_root         /        ec3         defaults        1 1
===================== ...

谢谢.我这边也看了看/dev/fedora/root /dev/mapper/fedora-root 发现两者都存在并且后者是前者的软连接,看来问题不是在名字不一样的地方.不过我的/etc/fstab里面根对应的是 /dev/mapper/fedora-root.这点不一样.可以试一试把/etc/fstab改为/dev/mapper/vg_sys-lv_root.

另一种原因是根设备未就绪.这样需要加入一些sleep命令等待.我加了两个sleep 10命令重新制作了一个3.18.5的dracut-fedora-kloop.上传到了一楼链接 KLOOP目录 fedora-3.18.5子目录,名字为 dracut-fedora-kloop-new. 可以下载测试一下.

2011niumao 发表于 2015-2-10 15:47:29

jxdeng 发表于 2015-2-10 11:34
我的/etc/fstab 的第一行为:
/dev/vg_sys/lv_root         /        ec3         defaults        1 1
===================== ...

另外 我测试时候经常要启动两次,第一次似乎是检查错误什么的,很慢,完了以后自动重启---这个过程不能中断和强制重启---否则还需要再来一遍..第二次启动就很快进入了.估计是LVM自己的查错调整机制.

jxdeng 发表于 2015-2-10 17:15:23

本帖最后由 jxdeng 于 2015-2-10 17:16 编辑

我也改过了这里:把/etc/fstab改为/dev/mapper/vg_sys-lv_root 。
同样报错:
fsck.ext3: No such file or directory while trying to open /dev/mapper/vg_sys-lv_root
/dev/mapper/vg_sys-lv_root:
The superblock could not be read or does not describe a correct ext2.
但是进入进入maintenance 后。我看了一下,所有的LV都自动mount 了。看来有进步。于是 执行:init 3
哈,一阵报错之后,终于进入了字符界面。看来,这个版本有特殊的地方。
=====================================================================
为了验证,我又找了一个CentOS 6.6 。做好同样的lv配置。还是用LZ的dracut-fedora-kloop 来启动。结果,奇迹出现了
一路狂奔,直达图形界面。于是,验证了我上面的看法。

2011niumao 发表于 2015-2-10 17:41:36

本帖最后由 2011niumao 于 2015-2-10 17:46 编辑

jxdeng 发表于 2015-2-10 17:15
我也改过了这里:把/etc/fstab改为/dev/mapper/vg_sys-lv_root 。
同样报错:
fsck.ext3: No such file o ...

呵呵.也算是通过了.剩余问题恐怕是要修改那个系统里面的引导方面关于LVM的设置了.
其实只要是能成功switch-root,dracut就算是完成任务了.这样我就开始整理教程,很快就出来.

yGeo 发表于 2015-2-10 21:01:13

我用Debian尝试了vloop的方法,过程中感觉和Ubuntu相似度还挺高…唯有一点是Debian没有kpartx-boot这个软件包。但是启动的时候遇到了图中这个问题。

Misty 发表于 2015-2-10 22:36:35

本帖最后由 Misty 于 2015-2-10 22:37 编辑

yGeo 发表于 2015-2-10 21:01
我用Debian尝试了vloop的方法,过程中感觉和Ubuntu相似度还挺高…唯有一点是Debian没有kpartx-boot这个软件 ...

查了一下,这个错误是从/etc/inittable里面出来的。。。会不会是没有挂载上??

Misty 发表于 2015-2-10 22:40:31

yGeo 发表于 2015-2-10 21:01
我用Debian尝试了vloop的方法,过程中感觉和Ubuntu相似度还挺高…唯有一点是Debian没有kpartx-boot这个软件 ...

http://blog.sina.com.cn/s/blog_659defdb0100sq5a.html
看看这个,这个是我搜到的解决方案,不知道能不能用。最近太忙了,寒假作业一箩筐,没法测试。。。

yGeo 发表于 2015-2-10 22:49:41

亲测Debian使用vloop方法成功!刚才所出现的问题是由于Ubuntu和Debian的local文件差异导致的。
总结Debian的vloop方法注意点:
1.我没有安装kpartx-boot软件包;
2.对应Ubuntu的# util-linux,Debian在mkinitramfs文件中是
    # module-init-tools
    copy_exec /sbin/modprobe /sbin
    copy_exec /sbin/rmmod /sbin
那几条copy_exec和touch的命令应该插入这后面;
3.修改local文件时,应当在
# Mount root
        if [ "${FSTYPE}" != "unknown" ]; then
                mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
        else
                mount ${roflag} ${ROOTFLAGS} ${ROOT} ${rootmnt}
        fi
后插入一句 mountroot_status="$?" ,然后紧接着再贴上2011niumao提供的那一段Boot from vhd的代码。因为Debian的文件中原本无这个变量,在新插入的代码中调用会引起我刚刚发的那个错误;
4.其他步骤基本类似Ubuntu的方法;没有执行第四第五步,不清楚是否存在潜在影响。

真的非常感谢2011niumao,很好的教程。我作为大半个小白也是受益匪浅!

yGeo 发表于 2015-2-10 22:51:26

Misty 发表于 2015-2-10 22:40
http://blog.sina.com.cn/s/blog_659defdb0100sq5a.html
看看这个,这个是我搜到的解决方案,不知道能不 ...

已解决~谢谢你的热心帮助~

yGeo 发表于 2015-2-10 22:53:12

Misty 发表于 2015-2-10 22:40
http://blog.sina.com.cn/s/blog_659defdb0100sq5a.html
看看这个,这个是我搜到的解决方案,不知道能不 ...

看111楼.

2011niumao 发表于 2015-2-11 08:51:08

本帖最后由 2011niumao 于 2015-2-11 08:54 编辑

yGeo 发表于 2015-2-10 22:49
亲测Debian使用vloop方法成功!刚才所出现的问题是由于Ubuntu和Debian的local文件差异导致的。
总结Debian ...

谢谢反馈与分享.缺几步是因为Debian与UBUNTU的差别造成的吧,应该没有影响.
不过 关机时候会不会有什么 buffer I/O 报错呢.这个似乎不影响使用,也无所谓了.

能排查错误应该是小牛了吧.呵呵.看来kpartx-tool不是本质的,很多发行版没有这个,估计其作用是把kpartx放在了initrd中.
手工放入效果一样的.

yGeo 发表于 2015-2-11 08:54:19

2011niumao 发表于 2015-2-11 08:51
谢谢反馈与分享.缺几步是因为Debian与UBUNTU的差别造成的吧,应该没有影响.
不过 关机时候会不会有什么 b ...

暂未发现;应该没什么问题。

2011niumao 发表于 2015-2-11 09:08:40

KLOOP教程发布
内含UBUNTU Fedora两种发布版的制作dracut-kloop教程.请到一楼链接的KLOOP子目录下载.

Misty 发表于 2015-2-12 21:07:24

yGeo 发表于 2015-2-10 22:49
亲测Debian使用vloop方法成功!刚才所出现的问题是由于Ubuntu和Debian的local文件差异导致的。
总结Debian ...

?我想知道你是怎么找到的?

2011niumao 发表于 2015-2-12 21:55:59

Misty 发表于 2015-2-12 21:07
?我想知道你是怎么找到的?

阅读local文件.UBUNTU的文件.是 usr/share/initramfs-tools/scripts/local
另外出错信息也可以看出.

Misty 发表于 2015-2-14 16:34:02

2011niumao 发表于 2015-2-12 21:55
阅读local文件.UBUNTU的文件.是 usr/share/initramfs-tools/scripts/local
另外出错信息也可以看出.

got it 回去做kali linux的vhd版

2011niumao 发表于 2015-2-14 19:42:55

Misty 发表于 2015-2-14 16:34
got it 回去做kali linux的vhd版

欢迎分享你的成功经验.

2011niumao 发表于 2015-2-15 13:44:37

KLOOP教程更新版

本帖最后由 2011niumao 于 2015-2-15 13:46 编辑

Misty 发表于 2015-2-14 16:34
got it 回去做kali linux的vhd版
一楼链接中的KLOOP子目录内: mydracut-kloop教程更新版.zip
发布更新过的KLOOP教程.更新了05-vhdmount.sh10-vhdmount-kloop.sh的代码.
内含五种LINUX: UBUNTU FEDORA ARCH OPENSUSE MAGEIA 发布版的具体制作方法.

请参考新教程的代码.

jxdeng 发表于 2015-2-15 17:21:45

       恭喜LZ,在VHD封装LINUX上一统江湖,统一了FS 和LV 上的VHD linux 的引导。早期试过你的VBUNTU,定制性和通用性还有待完善。在采用了KPARTX 和dracut 等技术后,LZ的成果日趋完善。恭祝LZ新年快乐!万事如意!
      最近很忙,没有时间测试您的成果了。节后再研究。
替LZ梳理一下:
早期的vloop(支持有限的/特殊的操作系统):
linux      /vbuntufix/mlinuz-3.2.0-23-generic root=UUID=${ddeeff} vloop=/vbuntufix/vbuntufix.vhd vlooppart=p1
发展中的vloop(支持多种版本的linux,但限于安装在文件系统上的linux系统):
linux        /ubuntu/vmlinuz-3.16.0-30-generic root=UUID=${ddeeff} kloop=/ubuntu/UBUNTU-14041.vhd kroot=/dev/mapper/loop0p3
一统江湖的kloop(支持多种版本的linux,支持文件系统/LVM上的linux系统):
linux        /ubuntu/vmlinuz-3.16.0-30-generic root=UUID=${ddeeff}kloop=/ubuntu/UBUNTU-14041.vhdkroot=/dev/mapper/loop0p3klvm=vg_sys

jxdeng 发表于 2015-2-15 17:29:53

本帖最后由 jxdeng 于 2015-2-15 17:39 编辑

请问LZ,同时支持FS和LVM的内核,在dracut 定制内核时,需要把05-vhdmount.sh10-vhdmount-kloop.sh 两个脚本插进去,还是只插后面一个? 还有05 ,10的命名有说法吗?
==================
呵呵,看到了 dracut -i 的代码 ,只插了10-vhdmount-kloop.sh 。哪05的代码呢?
页: 1 2 3 [4] 5 6 7 8 9 10 11 12 13
查看完整版本: 从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种