无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011niumao
打印 上一主题 下一主题

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

    [复制链接]
271#
发表于 2016-10-28 12:24:39 | 只看该作者
本人很感谢这位大师,在他提供的附件帮助下本人于16年10月28号成功制作基于UBUNTU14.04的VHD启动本人QQ2840390592欢迎讨论
回复

使用道具 举报

272#
发表于 2016-11-14 12:24:36 | 只看该作者
2011niumao 发表于 2016-8-26 21:24
https://pan.baidu.com/s/1pLJ9W3T

失效了
回复

使用道具 举报

273#
发表于 2016-11-16 13:40:16 | 只看该作者
@2011niumao,
使用ubuntu 16.04 制作的vhd

dmesg出错很多错误:
[ 7147.802795] blk_update_request: I/O error, dev loop0, sector 32577304
[ 7153.748500] blk_update_request: I/O error, dev loop0, sector 32533824
[ 7154.788273] blk_update_request: I/O error, dev loop0, sector 32533864
[ 7161.006307] blk_update_request: I/O error, dev loop0, sector 32358800
[ 7164.173713] blk_update_request: I/O error, dev loop0, sector 32577344
[ 7169.450030] blk_update_request: I/O error, dev loop0, sector 32533904
[ 7170.855654] blk_update_request: I/O error, dev loop0, sector 32577384
[ 7177.540130] blk_update_request: I/O error, dev loop0, sector 32358840
[ 7179.834922] blk_update_request: I/O error, dev loop0, sector 32577424
[ 7187.615629] blk_update_request: I/O error, dev loop0, sector 32358880


楼主能看下,怎么解决 这种问题吗?

点评

不会。目前看不影响使用,不用管它。  详情 回复 发表于 2016-11-16 16:03
回复

使用道具 举报

274#
 楼主| 发表于 2016-11-16 16:03:59 | 只看该作者
Srainbow 发表于 2016-11-16 13:40
@2011niumao,
使用ubuntu 16.04 制作的vhd

不会。目前看不影响使用,不用管它。
回复

使用道具 举报

275#
发表于 2016-12-15 15:28:15 | 只看该作者
说的好,一定回复~












蓝品盾卫浴扶手
回复

使用道具 举报

276#
发表于 2016-12-15 17:48:37 | 只看该作者
有没有简单点的?这个引导的系统菜单我是看不懂!
回复

使用道具 举报

277#
发表于 2017-1-16 08:01:30 | 只看该作者
大神,有没有可能支持android?

点评

android与linux差别太大,应该做不到了。但是android有类似于ubuntu的live系统的做法,也不需要vhd吧。  详情 回复 发表于 2017-1-16 11:57
回复

使用道具 举报

278#
 楼主| 发表于 2017-1-16 11:57:51 | 只看该作者
aoqy 发表于 2017-1-16 08:01
大神,有没有可能支持android?

android与linux差别太大,应该做不到了。但是android有类似于ubuntu的live系统的做法,也不需要vhd吧。
回复

使用道具 举报

279#
发表于 2017-1-16 16:34:54 | 只看该作者
2011niumao 发表于 2017-1-16 11:57
android与linux差别太大,应该做不到了。但是android有类似于ubuntu的live系统的做法,也不需要vhd吧。

技术上如果能做到,倒是有LIVE系统不可比拟的一些好处,例如:重启可以保留状态,另外不同的系统可以在同一个U盘中。

点评

到这里http://www.phoenixos.com/download 下载一个凤凰系统,其实就是安卓系统,exe格式的,安装很简单,装完会自动添加启动菜单, 对PC兼容很好,驱动很全,我的联想本装完,声、显、网卡Wifi都自动驱动了  详情 回复 发表于 2017-1-17 09:34
回复

使用道具 举报

280#
 楼主| 发表于 2017-1-16 20:36:21 | 只看该作者
本帖最后由 2011niumao 于 2017-1-17 20:30 编辑

发布两个ISO,  就是把live系统制作成iso文件了。请到一楼第一个链接下载。
有基于ghostplant简化的ubuntu1604版本和完整ubuntu1604两种版本。
用户名密码,root密码都是ubuntu .
UBT-small.iso文件系统与vhd squashfs系统一致,都是ubuntu-1604,更新到最新(4.4.0-59)。
        用户名 密码 root密码都是ubuntu。        有如下用法:

1.        可以直接从VirtualBox启动,并且可以EFI启动和传统bios-mbr启动。

2.        可以和发行版live-cd一样通过grub4dos,grub2启动
        (需要把casper/initrd.img casper/vmlinuz先提取出来 )。

3.        可以把ISO文件放到/grub/IMGS目录下,利用网友制作的自动ISO菜单直接启动
        (只限于grub4dos启动)。

4.        启动后可以使用主目录的UCloner中的UCloner_CN或UCloner_EN(双击),
        依照提示操作,将/cdrom/casper/中的文件UBT-small.squashfs 恢复到硬盘分区。

5.        也可以预先在WINDOWS系统下准备好一个固定大小的vhd虚拟磁盘,
        例如名字为UBT-small.vhd,
        进行初始化和建立一个分区,格式化并将其标记为活动分区。
        (右键我的电脑--管理--创建vhd--初始化--建立简单卷--标记为活动分区)

        再启动到UBT-small的ISO系统(或live系统)中,打开一个终端,进入到vhd文件所在目录,
        运行
        sudo kpartx -av UBT-small.vhd
        记住其显示的输出,里面有类似于 /dev/mapper/loop2p1 型字段。

        图形界面打开主目录的UCloner子目录,双击UCloner_CN(UCloner_EN),
        依提示操作,将/cdrom/casper/中文件UBT-small.squashfs恢复到某个固定大小VHD硬盘的分区,
        此时弹出对话框中 / 分区手动填写,如 /dev/mapper/loop2p1(与kpartx命令的输出一致) .
        文件系统手动填写ext4 ,其他空白。然后一直下一步或输入y回车让其恢复系统。

        注意,grub2应该空白,等待系统恢复完毕以后再手动安装。
        安装grub2的参考命令:
        sudo mount /dev/mapper/loop2p1 /mnt
        sudo grub-install  --root-directory=/mnt  /dev/loop2
回复

使用道具 举报

281#
发表于 2017-1-17 09:34:57 | 只看该作者
aoqy 发表于 2017-1-16 16:34
技术上如果能做到,倒是有LIVE系统不可比拟的一些好处,例如:重启可以保留状态,另外不同的系统可以在同 ...

到这里http://www.phoenixos.com/download
下载一个凤凰系统,其实就是安卓系统,exe格式的,安装很简单,装完会自动添加启动菜单,

对PC兼容很好,驱动很全,我的联想本装完,声、显、网卡Wifi都自动驱动了
回复

使用道具 举报

282#
发表于 2017-1-17 12:48:18 | 只看该作者
试试看吧
回复

使用道具 举报

283#
 楼主| 发表于 2017-1-18 10:44:26 | 只看该作者
grub2有一个命令 loopback 可以满足只用一个VHD文件的要求。一个菜单样式
  1. menuentry " UBT-small.vhd " --class  ubuntu {
  2.         insmod gzio
  3.         insmod part_msdos
  4.         insmod part_gpt
  5.         insmod ext2
  6.         insmod ntfs
  7.         insmod probe
  8.         set vhdfile="/ubt/UBT-small.vhd"
  9.         set root=(hd0,1)
  10.         search --no-floppy -f --set=aabbcc  $vhdfile
  11.         set root=${aabbcc}
  12.         probe -u --set=ddeeff ${aabbcc}
  13.         loopback loop0 $vhdfile
  14.         linux        (loop0,1)/vmlinuz root=UUID=${ddeeff} rw  kloop=$vhdfile  kroot=/dev/mapper/loop0p1
  15.         initrd        (loop0,1)/initrd.img
  16. }  
复制代码
对于不分区的img文件,(loop0,1)应该改用(loop0)。
回复

使用道具 举报

284#
发表于 2017-1-19 12:46:17 | 只看该作者
不错的说,学习了。。。。
回复

使用道具 举报

285#
 楼主| 发表于 2017-1-22 10:51:28 | 只看该作者
alanyih 发表于 2017-1-21 17:10
This seems to work!
"reboot.pro/topic/20603-linux-from-vhd-how-to/page-3#entry201757"


the original local-file has a mistaken,  the sentence  “if [ -z "$kloop" ]; then"  is placed in the front of the function local_mount_root().  It should be  placed after the sentence "local_premount" of the function  local_mount_root(),  like such
  1. local_mount_root()
  2. {
  3.         local_top
  4.         local_device_setup "${ROOT}" root
  5.         ROOT="${DEV}"

  6.         # Get the root filesystem type if not set
  7.         if [ -z "${ROOTFSTYPE}" ]; then
  8.                 FSTYPE=$(get_fstype "${ROOT}")
  9.         else
  10.                 FSTYPE=${ROOTFSTYPE}
  11.         fi

  12.         local_premount

  13. if [ -z "$kloop" ]; then
  14. ........
复制代码
All is OK.
回复

使用道具 举报

286#
 楼主| 发表于 2017-1-22 10:55:54 | 只看该作者
本帖最后由 2011niumao 于 2017-1-22 11:00 编辑

The new local_mount_root() in the file /usr/share/initramfs-tools/scripts/local :
  1. local_mount_root()
  2. {
  3.         local_top
  4.         local_device_setup "${ROOT}" root
  5.         ROOT="${DEV}"

  6.         # Get the root filesystem type if not set
  7.         if [ -z "${ROOTFSTYPE}" ]; then
  8.                 FSTYPE=$(get_fstype "${ROOT}")
  9.         else
  10.                 FSTYPE=${ROOTFSTYPE}
  11.         fi

  12.         local_premount

  13. if [ -z "$kloop" ]; then

  14.         if [ "${readonly}" = "y" ] && \
  15.            [ -z "$LOOP" ]; then
  16.                 roflag=-r
  17.         else
  18.                 roflag=-w
  19.         fi

  20.         # FIXME This has no error checking
  21.         [ -n "${FSTYPE}" ] && modprobe ${FSTYPE}

  22.         checkfs ${ROOT} root

  23.         # FIXME This has no error checking
  24.         # Mount root
  25.         mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
  26.         mountroot_status="$?"
  27.         if [ "$LOOP" ]; then
  28.                 if [ "$mountroot_status" != 0 ]; then
  29.                         if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then
  30.                                 panic "
  31. Could not mount the partition ${ROOT}.
  32. This could also happen if the file system is not clean because of an operating
  33. system crash, an interrupted boot process, an improper shutdown, or unplugging
  34. of a removable device without first unmounting or ejecting it.  To fix this,
  35. simply reboot into Windows, let it fully start, log in, run 'chkdsk /r', then
  36. gracefully shut down and reboot back into Windows. After this you should be
  37. able to reboot again and resume the installation.
  38. (filesystem = ${FSTYPE}, error code = $mountroot_status)
  39. "
  40.                         fi
  41.                 fi
  42.        
  43.                 mkdir -p /host
  44.                 mount -o move ${rootmnt} /host

  45.                 while [ ! -e "/host/${LOOP#/}" ]; do
  46.                         panic "ALERT!  /host/${LOOP#/} does not exist.  Dropping to a shell!"
  47.                 done

  48.                 # Get the loop filesystem type if not set
  49.                 if [ -z "${LOOPFSTYPE}" ]; then
  50.                         eval $(fstype < "/host/${LOOP#/}")
  51.                 else
  52.                         FSTYPE="${LOOPFSTYPE}"
  53.                 fi
  54.                 if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then
  55.                         FSTYPE=$(/sbin/blkid -s TYPE -o value "/host/${LOOP#/}")
  56.                         [ -z "$FSTYPE" ] && FSTYPE="unknown"
  57.                 fi

  58.                 if [ ${readonly} = y ]; then
  59.                         roflag=-r
  60.                 else
  61.                         roflag=-w
  62.                 fi

  63.                 # FIXME This has no error checking
  64.                 modprobe loop
  65.                 modprobe ${FSTYPE}

  66.                 # FIXME This has no error checking
  67.                 mount ${roflag} -o loop -t ${FSTYPE} ${LOOPFLAGS} "/host/${LOOP#/}" ${rootmnt}

  68.                 if [ -d ${rootmnt}/host ]; then
  69.                         mount -o move /host ${rootmnt}/host
  70.                 fi
  71.         fi

  72. fi

  73.         ##############################################
  74.         #                  kloop by niumao            #
  75.         ##############################################

  76. if [ -n "$kloop" ]; then

  77.         ### reset the value of the root variable
  78.         HOSTDEV="${ROOT}"
  79.         NEWROOT="${rootmnt}"
  80.         [ -n "$kroot" ] && ROOT="$kroot"
  81.         [ -n "$kroot" ] || ROOT="/dev/loop0"
  82.         export ROOT
  83.         realroot="$ROOT"
  84.        
  85.         ###  auto probe the fs-type of the partition in which vhd-file live and mount it  /host
  86.         mkdir -p /host
  87.         if [ -z "$hostfstype" ]; then
  88.                 hostfstype="$(blkid -s TYPE -o value "${HOSTDEV}")"
  89.                 [ -z "$hostfstype"  -o "${hostfstype}" = "ntfs" ] && hostfstype="ntfs-3g"
  90.         fi
  91.         [ "${hostfstype}" = "ntfs-3g" ] || modprobe ${hostfstype}
  92.         mount -t ${hostfstype} -o rw  ${HOSTDEV}  /host
  93.        
  94.         ### mount the vhd-file on a loop-device
  95.         if [ "${kloop#/}" !=  "${kloop}" ]; then              
  96.                 modprobe  loop  
  97.                 kpartx -av /host$kloop
  98.                 [ -e "$realroot" ] || sleep 3
  99.         fi

  100.         ### probe lvm on vhd-file
  101.         if [ -n "$klvm" ];  then
  102.                 modprobe dm-mod
  103.                 vgscan
  104.                 vgchange  -ay  $klvm
  105.                 [ -e "$realroot" ] ||  sleep 3
  106.         fi

  107.         if [ "${readonly}" = "y" ] ; then
  108.                 roflag="-r"
  109.         else
  110.                 roflag="-w"
  111.         fi
  112.          
  113.         ### mount the realroot / in vhd-file on $NEWROOT
  114.         if [ -z "${kloopfstype}" ]; then
  115.                 kloopfstype="$(blkid -s TYPE -o value "$realroot")"
  116.                 [ -z "${kloopfstype}" ] && kloopfstype="ext4"
  117.         fi
  118.         [ -e "$realroot" ] || sleep 3
  119.         mount    ${roflag} -t "${kloopfstype}"  $realroot $NEWROOT
  120.        
  121.         ### mount /host in initrd to /host of the realrootfs
  122.         if [  "${hosthidden}" != "y" ] ; then
  123.                 [ -d "${NEWROOT}"/host ] || mkdir -p ${NEWROOT}/host
  124.                 mount --move /host   ${NEWROOT}/host
  125.         fi
  126. fi

  127.         ##############################################
  128.         #          kloop by niumao ended           #
  129.         ##############################################

  130. }
复制代码
  
回复

使用道具 举报

287#
 楼主| 发表于 2017-2-19 12:05:14 | 只看该作者

引导squashfs的Fedora ARCH Mageia opensuse

本帖最后由 2011niumao 于 2017-2-19 12:07 编辑

发布一个可以引导squashfs只读文件系统的新版kloop,下载一楼链接里面mydracut-squashfs.zip。里面有使用说明。
本版加入了一种新的引导模式,用来引导squashfs只读文件系统。(使用了overlay机制)
方法与KLOOP的方法一样,还是分为两步。
第一步,编译安装修改过的ntfs-3g。
(不修改则无法防止关机时候在卸载根设备前先卸载根设备文件所在的底层分区)。
第二步,制作内存镜像盘initrd 或initramfs。做法与KLOOP一样。
制作好后将其改名(例如initrd-fedora),与vmlinuz-XXXX(改名为vmlinuz-feodra)与squashfs文件
(例如 Fedora25.squashfs)放在同一个目录(例如casper1)下。


引导菜单,引导时候只需要root 与squashfs两个参数,root的值是squashfs文件所在分区,
squashfs的值是squashfs文件的带路径的名字。例子:

grub4dos菜单:
title 启动LIVE-Fedora
find --set-root --ignore-floppies --ignore-cd  /casper1/vmlinuz-fedora
uuid ()
kernel /casper1/vmlinuz-fedora root=UUID=%?% squashfs=/casper1/Fedora25.squashfs
initrd  /casper1/initrd-fedora

grub2菜单:
menuentry "live-Fedora "  --class fedora  {
        insmod gzio
        insmod part_msdos
        insmod part_gpt
        insmod ext2
        insmod ntfs
        insmod probe
        set sfsfile="/casper1/Fedora25.squashfs"
        set root=(hd0,1)
        search --no-floppy -f --set=aabbcc  $sfsfile
        set root=${aabbcc}
        probe -u --set=ddeeff ${aabbcc}
        linux        /casper1/vmlinuz-fedora   root=UUID=${ddeeff} squashfs=$sfsfile  rw nompath nodmraid
        initrd        /casper1/initrd-fedora

附录===备份现有linux系统为squashfs系统的命令与恢复命令
需要linux系统安装好squashfs-tool,以及rsync。以Fedora25为例子。假设根设备为/dev/sda12。备份feodra25到/dev/sda9的目录casper1下,备份名字为Fedora25.squashfs。
su
cd /tmp
mkdir mm tt
mount /dev/sda12 mm
mount /dev/sda9 tt
mksquashfs mm tt/casper1/Fedora25.squashfs -b 262144 -comp xz -e tmp/mm tmp/tt

恢复命令
假设启动到了squashfs系统中后,要把Fedora25.squashfs恢复到硬盘/dev/sda12中,可以如下操作:
su
cd /tmp
mkdir mm tt
mount /host/casper1/Fedora25.squashfs mm
mount /dev/sda12 tt
rsync -SHav  mm/*  tt/
等恢复完毕后再通过修改grub4dos的menu.lst或grub2的菜单来设置引导即可。
回复

使用道具 举报

288#
发表于 2017-2-23 11:46:56 | 只看该作者
本帖最后由 Askaa 于 2017-2-23 12:05 编辑

我按你的教程做了ARCH,可惜还是不成功
grub4DOs:

title ARCHGNU uuid-auto-probe
find --set-root --ignore-floppies --ignore-cd /VHD/VHD_Container_System_Archlinux.vhd
uuid ()
kernel  /VHD/vmlinuz-linux root=UUID=%?%  kloop=/VHD/VHD_Container_System_Archlinux.vhd kroot=/dev/loop0p1 rw
initrd  /VHD/initramfs-linux-vhd.img

我在虚拟机里做得

图1是直接用的arch.vhd中的升级成initramfs-linux-vhd.img
图2是我按你说的方法做的

刚才我发现的pacman -Q ntfs-3g是空的,表示没装上?

图片传重复了,不晓得咋删


*****
我又给虚机加了VHD的win10,mount上了可以读,表示ntfs-3g应该编译安装好了





VHD_Container_System_Archlinux-2017-02-23-11-57-03.png (26.99 KB, 下载次数: 311)

VHD_Container_System_Archlinux-2017-02-23-11-57-03.png

VHd-Container-System-2017-02-23-11-50-27.png (12.51 KB, 下载次数: 309)

VHd-Container-System-2017-02-23-11-50-27.png

VHd-Container-System-2017-02-23-11-46-35.png (8.72 KB, 下载次数: 323)

VHd-Container-System-2017-02-23-11-46-35.png

VHd-Container-System-2017-02-23-11-46-35.png (8.72 KB, 下载次数: 324)

VHd-Container-System-2017-02-23-11-46-35.png
回复

使用道具 举报

289#
 楼主| 发表于 2017-2-23 13:32:19 | 只看该作者
本帖最后由 2011niumao 于 2017-2-23 13:40 编辑
Askaa 发表于 2017-2-23 11:46
我按你的教程做了ARCH,可惜还是不成功
grub4DOs:


感觉是ntfs-3g已经安装好了。应该是init没有修改好吧,因为没有执行到kloop的代码那一段。请检查一下
init文件,重新修改一下再次制作initramfs看看。init的约第45行,应该如下
  1. rootdev=$(resolve_device "$root") && root=$rootdev
  2. unset rootdev

  3. if [ -z "$kloop" ] && [ -z "$squashfs" ]; then

  4.         fsck_root

  5.         # Mount root at /new_root
  6.         "$mount_handler" /new_root

  7. fi
复制代码
加入了一个 if fi 屏蔽掉通常情形的引导检查挂载根的代码。其下面是
  1.         ##############################################################
  2.         #                BOOT FROM VHD, KLOOP by niumao              #
  3.         ##############################################################

  4. if [ -n "$squashfs" ]; then

  5.     ### reset the value of the root variable
  6.     HOSTDEV="${root#block:}"
  7.     NEWROOT="/new_root"

  8.     ###  auto probe the fs-type of the partition in which vhd-file live and mount it  /host
  9.     mkdir -p /host
  10.     if [ -z "$hostfstype" ]; then
  11.         hostfstype="$(blkid -s TYPE -o value "${HOSTDEV}")"
  12.         [ -z "$hostfstype"  -o "${hostfstype}" = "ntfs" ] && hostfstype="ntfs-3g"
  13.     fi
  14.         [ "${hostfstype}" = "ntfs-3g" ] || modprobe ${hostfstype}
  15.     mount -t ${hostfstype} -o rw  ${HOSTDEV}  /host

  16.         ###try to boot from squashfs
  17.         mkdir /run/tmpwriteroot /run/tmpreadroot /run/tmpworkdir
  18.     mount /host$squashfs /run/tmpreadroot
  19.         mount -t overlay overlay -o lowerdir=/run/tmpreadroot,upperdir=/run/tmpwriteroot,workdir=/run/tmpworkdir $NEWROOT

  20.     ### mount /host in initrd to /host of the realrootfs
  21.     if [  "${hosthidden}" != "y" ] ; then
  22.         [ -d "${NEWROOT}"/host ] || mkdir -p ${NEWROOT}/host
  23.         mount --move /host   ${NEWROOT}/host
  24.     fi
  25. fi

  26. if [ -n "$kloop" ]; then

  27.     ### reset the value of the root variable
  28.     HOSTDEV="${root#block:}"
  29.     NEWROOT="/new_root"
  30.     [ -n "$kroot" ] && root="$kroot"
  31.     [ -n "$kroot" ] || root="/dev/loop0"
  32.     export root
  33.     realroot="$root"

  34.     ###  auto probe the fs-type of the partition in which vhd-file live and mount it  /host
  35.     mkdir -p /host
  36.     if [ -z "$hostfstype" ]; then
  37.         hostfstype="$(blkid -s TYPE -o value "${HOSTDEV}")"
  38.         [ -z "$hostfstype"  -o "${hostfstype}" = "ntfs" ] && hostfstype="ntfs-3g"
  39.     fi
  40.         [ "${hostfstype}" = "ntfs-3g" ] || modprobe ${hostfstype}
  41.     mount -t ${hostfstype} -o rw  ${HOSTDEV}  /host
  42.        
  43.     ### mount the vhd-file on a loop-device
  44.     if [ "${kloop#/}" !=  "${kloop}" ]; then              
  45.         modprobe  loop  
  46.         partx -av "/host${kloop}"
  47.         [ -e "$realroot" ] ||  sleep 3
  48.     fi

  49.     ### probe lvm on vhd-file
  50.     if [ -n "$klvm" ];  then
  51.         modprobe dm-mod
  52.         vgscan
  53.         vgchange  -ay  $klvm
  54.         [ -e "$realroot" ] ||  sleep 3
  55.     fi
  56.          
  57.     ### mount the realroot / in vhd-file on $NEWROOT
  58.     if [ -z "${kloopfstype}" ]; then
  59.         kloopfstype="$(blkid -s TYPE -o value "$realroot")"
  60.         [ -z "${kloopfstype}" ] && kloopfstype="ext4"
  61.     fi
  62.     [ -e "$realroot" ] ||  sleep 3
  63.     mount -t "${kloopfstype}" -o rw $realroot $NEWROOT
  64.        
  65.     ### mount /host in initrd to /host of the realrootfs
  66.     if [  "${hosthidden}" != "y" ] ; then
  67.         [ -d "${NEWROOT}"/host ] || mkdir -p ${NEWROOT}/host
  68.         mount --move /host   ${NEWROOT}/host
  69.     fi

  70. fi

  71.         ##############################################################
  72.         #            end, BOOT FROM VHD, KLOOP by niumao             #
  73.         ##############################################################
  74. run_hookfunctions 'run_latehook' 'late hook' $LATEHOOKS
  75. run_hookfunctions 'run_cleanuphook' 'cleanup hook' $CLEANUPHOOKS
复制代码

回复

使用道具 举报

290#
发表于 2017-2-23 17:01:41 | 只看该作者
情况依旧,我又做一遍,仔细用editplus打开init,左右窗口对比了看,都是一样的
能否拜托您做个arch.vhd,里面只有最简单的base就好,我拿来学习下
已经缠绕我一个礼拜了,不得解
回复

使用道具 举报

291#
 楼主| 发表于 2017-2-23 17:13:50 | 只看该作者
Askaa 发表于 2017-2-23 17:01
情况依旧,我又做一遍,仔细用editplus打开init,左右窗口对比了看,都是一样的
能否拜托您做个arch.vhd, ...

从头制作不必要。像这样引导固定vhd 引导只读squashfs的只依赖与initramfs一个文件。我上传一个制作好的,内核版本好象是 4.9.8-1 你可以适当改名字后使用他们引导。请到一楼第一个链接里面的archlinux子目录内下载.
回复

使用道具 举报

292#
发表于 2017-2-24 11:36:18 | 只看该作者
本帖最后由 Askaa 于 2017-2-24 11:37 编辑
2011niumao 发表于 2017-2-23 17:13
从头制作不必要。像这样引导固定vhd 引导只读squashfs的只依赖与initramfs一个文件。我上传一个制作好的 ...


现在用了你的initramfs后我的ARCH-VHD可以动了,启动正常进入console,但是在虚拟机内无网卡,ip a 只能看见lo,进入xfce4会死机,我观察了下你做的initramfs,只有22m,比我的原始initramfs(30M)小了很多,大概是你精简过内核适应于你的硬件,可以分享下你编译arch的时的系统么?
回复

使用道具 举报

293#
 楼主| 发表于 2017-2-24 15:06:59 | 只看该作者
Askaa 发表于 2017-2-24 11:36
现在用了你的initramfs后我的ARCH-VHD可以动了,启动正常进入console,但是在虚拟机内无网卡,ip a 只 ...


init.zip (1.76 KB, 下载次数: 4)

祝贺能启动了。我的系统安装了很多东西,已经24G大小了。呵呵。
进入图形界面死机可能是版本不一致的原因。建议还是自己系统上制作initramfs.
附上一个我这里的init.放在第一楼链接的archlinux目录内。建议你先把你系统的init文件备份移走,把这个init拷贝的正确位置,再制作initramfs,这样版本就一致了。
回复

使用道具 举报

294#
发表于 2017-3-6 13:00:24 | 只看该作者
本帖最后由 ge 于 2017-3-6 13:06 编辑

看不懂呀!
第一步,已经在虚拟机安装完成UBUNTU了!没有重启到桌面!
第二步,安装kpartx等软件是在虚拟机下安装吗?
其它需要什么文件?怎么修改!
回复

使用道具 举报

295#
 楼主| 发表于 2017-3-6 15:57:56 | 只看该作者
ge 发表于 2017-3-6 13:00
看不懂呀!
第一步,已经在虚拟机安装完成UBUNTU了!没有重启到桌面!
第二步,安装kpartx等软件是在虚拟 ...

第一步你需要百度看看安装方面的教程。第二步,主要是两点,其一,编译安装ntfs-3g(源文件已经有了);其二,制作可以引导固定vhd的initrd.img,需要修改文件有四个,sudo gedit /usr/share/initramfs-tools/scripts/local /usr/sbin/mkinitramfs /etc/initramfs-tools/modules /usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g 。如何修改行看说明。
回复

使用道具 举报

296#
发表于 2017-3-6 16:04:59 | 只看该作者
做一个简单点的批处理就好了!真的看不明白!
回复

使用道具 举报

297#
发表于 2017-4-14 16:18:08 | 只看该作者
本帖最后由 jxdeng2017 于 2017-4-14 16:28 编辑

LZ好,好久没有跟您学习了。最近单位在用中标麒麟的LINUX 服务器系统,我弄了一个桌面版,易用性挺好,于是想借助您的方法,做成VHD。按照Fedora  kloop 的步骤  一点也没报错, 引导菜单也没问题,启动时,在找USB 3.0 时 死循环了。无法进到系统 (命令行也不行!),不知是何原因?  用您已做好的Fedora kloop   的 vmlinuz和dracut-fedora-kloop  也不行, 直接到命令行界面, VHD 文件已mount 上了.......。看来只有大神来解决了。
中标麒麟桌面版:https://pan.baidu.com/s/1i4Xcf69
回复

使用道具 举报

298#
发表于 2017-4-14 16:18:58 | 只看该作者
本帖最后由 jxdeng2017 于 2017-4-14 16:24 编辑

LZ好,好久没有跟您学习了。最近单位在用中标麒麟的LINUX 服务器系统,我弄了一个桌面版,易用性挺好,于是想借助您的方法,做成VHD。按照Fedora  kloop 的步骤  一点也没报错, 引导菜单也没问题,启动时,在找USB 3.0 时 死循环了。无法进到系统 (命令行也不行!),不知是何原因?  看来只有大神来解决了。

Neokylin2.jpg (123.25 KB, 下载次数: 349)

Neokylin2.jpg

Neokylin1.jpg (121.46 KB, 下载次数: 310)

Neokylin1.jpg
回复

使用道具 举报

299#
 楼主| 发表于 2017-4-15 13:33:45 | 只看该作者
本帖最后由 2011niumao 于 2017-4-15 13:35 编辑
jxdeng2017 发表于 2017-4-14 16:18
LZ好,好久没有跟您学习了。最近单位在用中标麒麟的LINUX 服务器系统,我弄了一个桌面版,易用性挺好,于是 ...


看不出错误信息,不知道出错的原因。怀疑是那个 10-vhdmount-kloop.sh没有装入到内核初始盘里面。
需要再检查一下制作 dracut的过程或命令。试试以下命令
  1. sudo dracut  --include /home/niumao/mydracut/10-vhdmount-kloop.sh /lib/dracut/hooks/pre-mount/10-vhdmount-kloop.sh  --no-hostonly  --install " vi /etc/virc ps grep cat rm blkid losetup  kpartx partx mount.fuse mount.ntfs-3g ntfs-3g shutdown  lvm  vgchange  vgmknodes  vgscan  dmsetup dmeventd  "   --add-drivers  "fuse dm-mod "  -o " plymouth btrfs crypt  cifs fcoe fcoe-uefi iscsi nfs nbd"  /home/niumao/dracut-fedora-kloop
复制代码

把两个 niumao改为你的用户名,mydracut目录放在主目录里面。(主要是 -i 改用 --include  这个是新版本opensuse要求的)。
回复

使用道具 举报

300#
发表于 2017-4-17 09:16:45 | 只看该作者
谢谢LZ的指点,重新按LZ的提示做了一次,新生成的dracut-neokylin-kloop 文件略小了一点,替换后,仍然报错,卡死在同样的地方。但是有一个问题,Neokylin Linux 在 /lib/dracut/ 下 没有 hooks 目录。 不知是否要手动建 hooks/pro-mount 目录? 我把两次生成的LOG发上来,请大神指点迷津。

dracut.zip

5.52 KB, 下载次数: 1, 下载积分: 无忧币 -2

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-10-16 07:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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