无忧启动论坛

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

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

    [复制链接]
31#
 楼主| 发表于 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 。也是一种方法。
回复

使用道具 举报

32#
 楼主| 发表于 2015-1-20 22:54:37 | 显示全部楼层
jxdeng 发表于 2015-1-20 18:43
报告了坏消息,今天报告好消息,用LZ最新的内核版本dracut-fedora ,在centOS6.6 上测试,成功启动到图形界 ...

非常感谢测试与反馈. 有一点请留意一下.kpartx命令似乎只限于UBUNTU.其他LINUX  如 fedora arch opensuse 都是使用partx 命令.
很奇怪.感觉是UBUNTU比较独立,刻意与其他LINUX保持距离,

手工编译ntfs-3g目的是防止关机出现 buffer I/O 错误.
如果不做的话,引导进入系统是可以的,但是关机时候会出错.再开机要做磁盘检查.
主要是关机时候会最后卸载根目录而先卸载 /host ,但根目录在vhd上,vhd在 /host设备上.会有冲突
这是过去的经验了.现在不知会如何呢.
回复

使用道具 举报

33#
 楼主| 发表于 2015-1-22 17:11:46 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-15 11:38 编辑

重新完善了一下作为hook脚本的05-vhdmount.sh文件。
最新版05-vhdmount.sh的代码如下.这个是最终版吧.原来有很多bug,反复测试才定下来.
版权声明:本段代码为楼主原创.唯一首发在无忧启动论坛.
如果需要使用或者引用,请保留注释中 by niumao 的完整字段并应对无忧启动论坛表示以感谢.
  1.         ########################################################################
  2.         ###                 BOOT FROM VHD, VLOOP by niumao                   ###
  3.         ########################################################################

  4.         VLOOP=$(getarg vloop=)
  5.         VLOOPPART=$(getarg vlooppart=)
  6.         VLOOPFSTYPE=$(getarg vloopfstype=)
  7.         HOSTFSTYPE=$(getarg hostfstype=)

  8.         export VLOOP
  9.         export VLOOPPART
  10.         export VLOOPFSTYPE
  11.         export HOSTFSTYPE

  12.         if [ -n "$VLOOP" ]; then
  13.        
  14.                 ### reset the value of the root variable
  15.                 HOSTDEV="${root#block:}"
  16.                 [ -n "$VLOOPPART" ]  ||  root=/dev/loop0
  17.                 [ -n "$VLOOPPART" ]  &&  root=/dev/mapper/loop0$VLOOPPART
  18.                 export  root
  19.                 realroot="$root"
  20.                 if ismounted "$NEWROOT"; then
  21.                         umount    "$NEWROOT"
  22.                 fi
  23.                   
  24.                 ###  auto probe the fs-type of the partition in which vhd-file live and mount it  /host
  25.                 mkdir -p /host
  26.                 if  [  -z "${HOSTFSTYPE}"  ]; then
  27.                         HOSTFSTYPE="$(blkid -s TYPE -o value "$HOSTDEV")"
  28.                         [  -z "${HOSTFSTYPE}" -o  "${HOSTFSTYPE}" = "ntfs" ] && HOSTFSTYPE="ntfs-3g"
  29.                 fi
  30.                 mount -t "${HOSTFSTYPE}" -o rw   "${HOSTDEV}"    /host
  31.            
  32.                 ### mount the vhd-file on a loop-device
  33.                 if [ "${VLOOP#/}" != "${VLOOP}" ]; then
  34.                         modprobe loop
  35.                         kpartx -av  "/host$VLOOP"
  36.                         [ -e "$realroot" ] ||  sleep 3
  37.                 fi
  38.            
  39.                 ### mount the realroot / in vhd-file on $NEWROOT
  40.                 [ -e "$realroot" ] ||  sleep 3
  41.                 if  [  -z  "${VLOOPFSTYPE}"   ];  then
  42.                         VLOOPFSTYPE="$(blkid -s TYPE -o value "$realroot")"
  43.                         [ -z "${VLOOPFSTYPE}" ] && VLOOPFSTYPE="ext4"
  44.                 fi
  45.                 mount  -t  "${VLOOPFSTYPE}"   -o   rw   $realroot    $NEWROOT
  46.            
  47.                 ### mount /host in initrd to /host of the realrootfs
  48.                 [ -d $NEWROOT/host ] || mkdir -p $NEWROOT/host
  49.                 mount -R  /host  $NEWROOT/host
  50.                
  51.         fi

  52.         ########################################################################
  53.         ###                 End,  BOOT FROM VHD, VLOOP by niumao             ###
  54.         ########################################################################
复制代码

点评

关于其他格式虚拟硬盘的一点思考 这里提供的方法,例如 UBUNTU 改写local脚本 ,ARCH改写 init 脚本 ;而fedora opensuse mageia使用dracut的LINUX发行版则使用 插入一个hook脚本,就是 05-vhdmount.sh 到挂载真实根目  详情 回复 发表于 2015-1-24 13:28
回复

使用道具 举报

34#
 楼主| 发表于 2015-1-24 13:28:39 | 显示全部楼层

能挂载必能引导!!!

本帖最后由 2011niumao 于 2015-1-28 11:07 编辑

关于其他格式虚拟硬盘的一点思考
这里提供的方法,
例如 UBUNTU 改写local脚本 ,ARCH改写 init 脚本 ;而fedora opensuse mageia使用dracut的LINUX发行版则使用 插入一个hook脚本,就是 05-vhdmount.sh 到挂载真实根目录之前的流程中.
应该是适合于其他虚拟格式的虚拟硬盘.

例如 raw格式===可以直接使用这里的方法和制作好的initrd等引导. 因为本质上固定大小vhd就是raw格式,再在末尾附加了一个扇区而已.
例如 img格式===模拟的是一个分区,而不是一个硬盘.或者说 img文件内部不能再分区.
只需要把mount 文件 到loop设备 这个阶段中的 partx 那一句删除,   mount 真实根分区到 $NEWROOT 阶段中的 mount语句 改成
  1. mount -t $VLOOPFSTYPE -o  loop,ro   $realroot $NEWROOT
复制代码
就可以吧?当然只是猜测,逻辑上是对的.实际实现可能需要调整. 比如启动参数中vloop调整为loop , vlooppart舍弃===因为img不分区,没有分区选择了.

注释 img格式虚拟硬盘的引导问题,UBUNTU与ARCH已经解决,UBUNTU就是WUBI方式安装.其代码在local脚本中是 if [ "LOOP"] ... if 这一段.正在 if [ "VLOOP" ] ... if代码上面.实际上VLOOP这一段代码就是模仿LOOP,也就是WUBI,来实现的.所以这里引导固定大小VHD的方法实际上也就是一种新的WUBI模式而已.而ARCHLINUX的img格式引导,则有carbonjiao给出了一个解决,使用的是hook.详情可百度.这里提倡修改init的方法实现img格式的引导,也是一种简便的思路.

例如 qcow2格式===这里的挂载命令不适合.但在网络上查到了直接在LINUX内挂载qcow2虚拟硬盘的命令.应该也是可以的.
只需要把所需要的dracut模块 ,内核驱动 二进制命令文件 相应的hook脚本塞入到dracut内部就行了.
总之一句话:能在LINUX系统内部挂载的虚拟硬盘格式,一定能引导. 能挂载必能引导。
回复

使用道具 举报

35#
 楼主| 发表于 2015-2-1 17:08:15 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-2 12:11 编辑
jxdeng 发表于 2015-2-1 14:46
最近没时间测试LZ的成果,今天测了一下 1月21日的版本,用dracut-fedora 成功启动redhat ent svr 6.4 。证 ...
很好的测试消息.感谢jxdeng.真不敢想像fedora能带起来图形界面.
至于那个错误,应该不是很严重.只是缺少一个标志文件而已.
估计systemd要求linux-vhd系统在 /etc/下面有一个文件,名字为 os-release .自己可以建立一个.内容为空即可.例如
  1. sudo touch /etc/os-release
复制代码
有了这个,systemd 就知道它引导的是一个linux系统.就可以通过了.
回复

使用道具 举报

36#
 楼主| 发表于 2015-2-2 18:50:35 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-2 20:25 编辑
jxdeng 发表于 2015-2-2 13:11
恭喜LZ, 我把Fedora 21 的 os-release 文件copy 一份到redhat ent svr 6.4 的/etc 下(它本身没有该 ...


总算完美了.应该是同喜阿.呵呵.至于LV ,没有接触过.准备学学.恐怕要较长时间了.
不过方法不变,就是先在真实的 linux系统 里面挂载,能成功挂载就想办法把所需要的文件加入到initrd或者dracut里面.
另外就是注意挂载成功以后根分区的名字?或是路径?指的是在/dev/下的根分区的名字.这个有可能是 /dev/loop0px  但也有可能是其他名字.
这样可能需要再改动05-vhdmount.sh文件才行.因为那里面根分区是写死了的(硬编码),是/dev/loop0px类型.
还有:你敲入的mount命令 -t ext4 应该是 -t ext3 吧?因为后面分区信息全是 ext3,没有ext4 .根分区也是ext3.

点评

还有:你敲入的mount命令 -t ext4 应该是 -t ext3 吧?因为后面分区信息全是 ext3,没有ext4 .根分区也是ext3 ====================================================================跟上面没关系,ext3/4 都不行。 e  详情 回复 发表于 2015-2-3 16:40
回复

使用道具 举报

37#
 楼主| 发表于 2015-2-3 18:22:15 | 显示全部楼层
jxdeng 发表于 2015-2-3 16:40
还有:你敲入的mount命令 -t ext4 应该是 -t ext3 吧?因为后面分区信息全是 ext3,没有ext4 .根分区也是ext ...

道理是这样.可是一个不知道判断命令和挂载LVM的命令.是不是mount就可以呢.还有root变量的值需要更改一下.
所以还不好下手.

另外,我怀疑Fedora本身就有从LVM启动的功能的,好象从一个网友的提问看出来的,就是 Fedora默认安装是安装在LVM上的.要是这样,只要找到这个机制就可以了.正在查找中.

关于显卡,感觉与真实机器一样吧 .真实机器怎么安装,vhd就怎么安装.只是有一个问题,如果你使用其他发行版本内核,可能使用不了在vhd内部安装好的显卡驱动,版本不会一样吧.或者你用其他版本内核启动后安装显卡驱动?不太好说,总觉得很乱了.

ntfs-3g文件解压放在那里都行.我一般放在主目录以内.需要安装  gcc g++ build-essential 这几个文件.就可以了.
回复

使用道具 举报

38#
 楼主| 发表于 2015-2-3 18:30:52 | 显示全部楼层
jxdeng 发表于 2015-2-3 16:40
还有:你敲入的mount命令 -t ext4 应该是 -t ext3 吧?因为后面分区信息全是 ext3,没有ext4 .根分区也是ext ...

请教一个问题.比如,现在你在一个真实linux系统中.另一个硬盘或者分区上有一个 LVM.
怎么识别出这个LVM, 并且挂载其中某个逻辑卷到一个指定目录上呢?
能否把命令都写出来看看.我是刚刚学习,对于LVM 没有感觉.
回复

使用道具 举报

39#
 楼主| 发表于 2015-2-3 19:01:44 | 显示全部楼层
jxdeng 发表于 2015-2-3 18:58
终于把Suse Svr 11 折腾出图形界面了。原来 在VM 中安装时 系统使用了 Driver   ”vboxvideo" 虚拟显 ...

牛!!!恭喜.
LVM命令我自己百度得差不多了.可是需要一段时间才能解决.相信能成功.
回复

使用道具 举报

40#
 楼主| 发表于 2015-2-4 10:57:56 | 显示全部楼层
是适合于任何版本的.包括1504将来的版本.因为对于systemd已经作了处理.
回复

使用道具 举报

41#
 楼主| 发表于 2015-2-5 18:44:27 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-5 18:56 编辑
jxdeng 发表于 2015-2-5 16:24
LZ: 问题又来了,我想试试 Suse svr 12 。使用LZ最新的dracut-opensuse 。结果不成功。一怒之下,使用了LZ ...


1.需要手工建立/host目录.即 在dracut环境下 mkdir -p /host  再挂载才可以.
2.制作dracut必须使用root用户的. fcoe的错误没什么.我这里也报错.一些依赖没有安装.那个也不需要的.
但 ntfs-3g报错是不行的---因为必须有ntfs-3g才可以以读写方式挂载ntfs分区.这样才能启动ntfs分区
上的vhd .所以这个ntfs-3g必须加入到 dracut.
看错误信息是没有成功编译安装 ntfs-3g.需要重新编译安装ntfs-3g.
回复

使用道具 举报

42#
 楼主| 发表于 2015-2-5 18:47:53 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-5 19:00 编辑
jxdeng 发表于 2015-2-5 16:24
LZ: 问题又来了,我想试试 Suse svr 12 。使用LZ最新的dracut-opensuse 。结果不成功。一怒之下,使用了LZ ...


一个好消息是 已经解决了引导固定VHD上LVM的linux系统问题.但是框架变化大,正在整理中.
决定抛弃vloop  vlooppart.改为使用kloop kroot klvm三个参数.
新的引导方式命名为kloop方式===意思是基于kpartx + loop 的引导方式.旧的引导方式可以称为vloop引导方式.
估计等几天就可以整理好做好上传.
回复

使用道具 举报

43#
 楼主| 发表于 2015-2-8 11:40:37 | 显示全部楼层

KLOOP引导

本帖最后由 2011niumao 于 2015-2-8 14:30 编辑

发布使用KLOOP制作的两个内存初始化镜像盘.请到一楼链接的KLOOP子目录中下载详细的使用说明和引导文件.
使用说明内容摘要
   KLOOP的模式起源于无忧启动论坛网友 jxdeng 提出的一个想法: 使用vloop方式引导VHD上的LVM.这样需要对于vloop模式进行改造.
   重新整合的vloop模式改名字,命名为KLOOP.指的是基于kpartx命令和LOOP设备的引导方式.
   它可以引导无分区的img系统,固定vhd系统,固定vhd并且使用LVM系统,  以及硬盘分区上LVM系统(未测试).
   KLOOP的主要参数有四个: root kloop kroot klvm.
2. root参数还是指vhd文件所在硬盘分区.其值是 root=/dev/sdax 或者 root=UUID=XXXXXXXXXXXXX.
   kloop参数与vloop一样,只是改个名字而已. 他的值是 vhd文件带路经的名称.
   例如 kloop=/ubuntu/Fedoralvm.vhd
3. kroot的值是LINUX启动以后根分区的设备名称.
   例如 kroot=/dev/mapper/loop0p1
   与旧参数vlooppart的对应关系如下
   如果旧参数 vlooppart=p3,则 kroot=/dev/mapper/loop0p3
   如果旧参数 vlooppart=p1,则 kroot=/dev/mapper/loop0p1
   即 /dev/mapper/loop0再加上旧参数vlooppart的值,就是新参数 kroot的值.
   可以看出,使用 kroot 的好处是---根设备完全由用户指定,这样就有很大的自由来控制启动过程.
4. 如果使用了固定VHD上的LVM ,则可以设定 klvm 的值为卷组(volume group)的名称,应该是物理卷组的名称.
   例如 使用VirtualBox把Fedora21按照默认方式安装在一个固定大小的vhd中.此时
   参数 klvm=fedora   而参数 kroot=/dev/mapper/fedora-root

回复

使用道具 举报

44#
 楼主| 发表于 2015-2-8 11:44:56 | 显示全部楼层

KLOOP引导菜单例子

本帖最后由 2011niumao 于 2015-2-10 11:19 编辑

对于固定VHD上使用LVM的系统,使用KLOOP制作的内存初始化镜像盘引导时的菜单例子:  
grub2菜单.
  1. menuentry " Fedoralvm.vhd-kloop " --class  fedora {
  2.         insmod gzio
  3.         insmod part_msdos
  4.         insmod part_gpt
  5.         insmod ext2
  6.         insmod ntfs
  7.         insmod probe
  8.         set root=(hd0,1)
  9.         search --no-floppy -f --set=aabbcc  /ubuntu/Fedoralvm.vhd
  10.         set root=${aabbcc}
  11.         probe -u --set=ddeeff ${aabbcc}
  12.         linux        /ubuntu/vmlinuz-fedora root=UUID=${ddeeff} kloop=/ubuntu/Fedoralvm.vhd kroot=/dev/mapper/fedora-root klvm=fedora
  13.         initrd        /ubuntu/dracut-fedora-kloop
  14. }
复制代码
grub4dos菜单
  1. title 启动 Fedoralvm.vhd-kloop
  2. find --set-root --ignore-floppies --ignore-cd /ubuntu/Fedoralvm.vhd
  3. uuid ()
  4. kernel  /ubuntu/vmlinuz-fedora  root=UUID=%?%  kloop=/ubuntu/Fedoralvm.vhd   kroot=/dev/mapper/fedora-root   klvm=fedora
  5. initrd  /ubuntu/dracut-fedora-kloop
复制代码
回复

使用道具 举报

45#
 楼主| 发表于 2015-2-8 12:01:46 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-8 12:07 编辑

一点说明:为了维持代码的简单性,制作KLOOP的内存初始化镜像盘时候把vloop代码舍弃了.(UBUNTU中还删除了loop代码).
这样,不能使用vloop参数引导KLOOP的内存盘.也不能使用KLOOP引导菜单引导过去的vloop方式的内存盘.
就是
以KLOOP方式制作的内存初始化镜像盘只能使用 kloop kroot klvm参数引导.
过去的制作方法,统称为vloop方式,制作的内存初始化镜像盘只能使用 vloop vlooppart参数引导.


回复

使用道具 举报

46#
 楼主| 发表于 2015-2-8 18:26:10 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-8 19:02 编辑
jxdeng 发表于 2015-2-2 13:11
我的分区是:
part /boot --fstype ext3 --size=100
part pv.2 --size=0 --grow
volgroup vg_sys --pesize=32768 pv.2
logvol swap --fstype swap --name=lv_swap --vgname=vg_sys --size=1000
logvol / --fstype ext3 --name=lv_root --vgname=vg_sys --size=1000
logvol /tmp --fstype ext3 --name=lv_tmp --vgname=vg_sys --size=400
logvol /var --fstype ext3 --name=lv_var --vgname=vg_sys --size=2000
logvol /usr --fstype ext3 --name=lv_usr --vgname=vg_sys --size=800
logvol /oracle --fstype ext3 --name=lv_oracle --vgname=vg_sys --size=2400
logvol /home/appc --fstype ext3 --name=lv_topsic --vgname=vg_sys --size=2000
如果使用KLOOP测试,建议 grub2 参数如下.
但是LVM这一块不太熟悉.所用命令比较简陋,未必能应付太一般的情况.默认情况也许能行===指lv设备是/dev/mapper/vgname-lvname 这样的情况.
  1. kloop=vhd文件带路径名称  kroot=/dev/mapper/vg_sys-lv_root  klvm=vg_sys
复制代码
注释 如果是真实硬盘分区上的LVM,则设置 kloop=1 ,也可以启动到真实硬盘上LVM安装的LINUX.(在虚拟机上测试成功)
回复

使用道具 举报

47#
 楼主| 发表于 2015-2-9 16:52:06 | 显示全部楼层
jxdeng 发表于 2015-2-9 15:13
LZ乃神人也。恭喜!支持LVM的dracut就出来了。
我放下手上的事情也要试一下。我使用了LZ的dracut-fedora-k ...

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

使用道具 举报

48#
 楼主| 发表于 2015-2-9 21:37:26 | 显示全部楼层
本帖最后由 2011niumao 于 2015-2-9 21:39 编辑

dddddsssssss   
回复

使用道具 举报

49#
 楼主| 发表于 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非空以后,就执行两个命令:
  1. vgscan
  2. vgchange -ay  
复制代码
查询卷组和激活卷组的逻辑卷.接着就挂载kroot指定的逻辑分区到根分区,就进入switch-root阶段了.
有可能是这两个命令执行后逻辑卷组的名字和/etc/fstab里面的名字不一样造成的错误.
回复

使用道具 举报

50#
 楼主| 发表于 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 都可以引导成功 .也可能是 设备没有准备就绪 的原因 胡乱猜测而已..
回复

使用道具 举报

51#
 楼主| 发表于 2015-2-10 09:28:59 | 显示全部楼层
yGeo 发表于 2015-2-9 23:15
有vhd安装Debian的解决方案吗

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

使用道具 举报

52#
 楼主| 发表于 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. 可以下载测试一下.
回复

使用道具 举报

53#
 楼主| 发表于 2015-2-10 15:47:29 | 显示全部楼层
jxdeng 发表于 2015-2-10 11:34
我的/etc/fstab 的第一行为:
/dev/vg_sys/lv_root         /        ec3         defaults        1 1
===================== ...

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

使用道具 举报

54#
 楼主| 发表于 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就算是完成任务了.这样我就开始整理教程,很快就出来.
回复

使用道具 举报

55#
 楼主| 发表于 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中.
手工放入效果一样的.
回复

使用道具 举报

56#
 楼主| 发表于 2015-2-11 09:08:40 | 显示全部楼层
KLOOP教程发布
内含UBUNTU Fedora两种发布版的制作dracut-kloop教程.请到一楼链接的KLOOP子目录下载.
回复

使用道具 举报

57#
 楼主| 发表于 2015-2-12 21:55:59 | 显示全部楼层
Misty 发表于 2015-2-12 21:07
?我想知道你是怎么找到的?

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

使用道具 举报

58#
 楼主| 发表于 2015-2-14 19:42:55 | 显示全部楼层
Misty 发表于 2015-2-14 16:34
got it 回去做kali linux的vhd版

欢迎分享你的成功经验.
回复

使用道具 举报

59#
 楼主| 发表于 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.sh  10-vhdmount-kloop.sh的代码.
内含五种LINUX: UBUNTU FEDORA ARCH OPENSUSE MAGEIA 发布版的具体制作方法.

请参考新教程的代码.
回复

使用道具 举报

60#
 楼主| 发表于 2015-2-15 17:52:31 | 显示全部楼层
jxdeng 发表于 2015-2-15 17:21
恭喜LZ,在VHD封装LINUX上一统江湖,统一了FS 和LV 上的VHD linux 的引导。早期试过你的VBUNTU,定 ...

谢谢梳理.引导这一块是变化比较大的.比较容易搞乱,
整理的教程其实代码仅仅是做了一些优化,增加其通用性,但没有实质性的扩展.
不过发现一些LINUX发布版没有kpartx命令,只使用partx命令---如ARCH---竟然也可以,
算是个意外收获吧.

dracut只使用10-那一个文件就可以.同样,只使用05就得到了过去的我称为VLOOP的dracut,它不能引导lvm,但可以引导固定VHD和 不分区img(不设置 vlooppart ).

10,05是随便起的.文献说dracut是依照降序使用hook的,越大的越先执行.所以脚本一般要以两位数开始命名.
可以随便更改,如 50 80 等等.
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-19 10:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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