2011niumao 发表于 2020-8-22 16:12:47

kroot是虚拟硬盘里根分区在linux下名字。虚拟硬盘一个分区时候就是loop0p1。etc/fstab这个文件可以删除。或者注释掉所有内容。

songjl1995 发表于 2020-8-23 09:27:52

还有就是都要放在fat32分区吗?ntfs分区行不行

2011niumao 发表于 2020-8-23 09:37:26

ntfs分区可以。fat32分区里单一文件不能超过4g的

2011hjcjie 发表于 2020-9-1 23:18:18

原来用下面引导成功进入桌面,不知是什么原因今天不能进入桌面;
menuentry "ubt.vhd" --class ubuntu {
      insmod gzio
      insmod part_msdos
      insmod part_gpt
      insmod ext2
      insmod ntfs
      insmod probe
      set vhdfile="/ubuntu/ubt.vhd"
      set root=(hd1,gpt2)
      search --no-floppy -f --set=aabbcc$vhdfile
      set root=${aabbcc}
      probe -u --set=ddeeff ${aabbcc}
      loopback lp0 $vhdfile
      linux      (lp0,1)/boot/vmlinuz root=UUID=${ddeeff}kloop=$vhdfilekroot=/dev/mapper/loop0p1
      initrd      (lp0,1)/boot/initrd.img
}

改为如下引导,正常进入桌面
menuentry "ubt.vhd"--class ubuntu{
    recordfail
    insmod gzio
    insmod part_msdos
    insmod part_gpt
    insmod ext2
    insmod ntfs
    insmod probe
    insmod search
    search --no-floppy -f --set=aabbcc /ubuntu/ubt.vhd
    set root=${aabbcc}
    probe -u --set=ddeeff ${aabbcc}
    linux   /ubuntu/vmlinuz root=UUID=${ddeeff} kloop=/ubuntu/ubt.vhd kroot=/dev/mapper/loop0p1
    initrd/ubuntu/initrd.img
}

1. 不知是什么原因,希望得到大神指导
2. 我用的是vbt.vhd 2004,貌似没有配置无线网络。
   怎么配置,望赐教!

2011niumao 发表于 2020-9-2 19:08:10

1, 两者的区别在于,第一种使用的引导文件initrd.img在vhd文件内,第二种使用的引导文件在vhd文件外部。如果升级以后,使用了原版的init localmkinitcpio等替换了修订过得能引导vhd的版本,则出现这个毛病。只能重新把vhd内部的init local等文件再重新修改一遍,重新生成对应最新版本的initrd.img就可以
2,可能需要手动源码编译安装无线驱动,或者尝试在有线网络下在软件更新那里搜索选择安装专有驱动。

wdtx 发表于 2020-10-2 22:46:45

现在Deepin20正式版发布了,在虚拟机使用体验还不错,打算做个VHD,发现几个需要修改的文件内容与教程不太相同,希望有制作成功的介绍下经验,非常感谢!

songjl1995 发表于 2020-10-28 11:26:59

本帖最后由 songjl1995 于 2020-10-28 11:29 编辑

大神,我UBUNTU2004用您的initrd.img-5.4.0-26-generic可以启动
自己按照教程做了一个initrd.img-5.4.0-52-generic
提示ALERT! UUID=xxxxxxxxx does not exist. Dropping to a shell!

两个启动菜单是相近的,只是改了initrd.img和vmlinuz的文件名

生成的initrd.img-5.4.0-52-generic时候,ntfs_3g报了一些not found的错误,但是文件还是生成了,正常情况下不会报这个对吗?

2011niumao 发表于 2020-10-31 10:39:52

songjl1995 发表于 2020-10-28 11:26
大神,我UBUNTU2004用您的initrd.img-5.4.0-26-generic可以启动
自己按照教程做了一个initrd.img-5.4.0-52 ...

ntfs-3g的编译应该不是问题. 建议按照说明重新制作initrd.img看看.或者在grub2菜单界面按e键
来编辑启动参数.root=/dev/sdaX 或者root=LABEL=XXXXX尝试一下看能不能启动.
这里XXXXX换成硬盘分区标签, sdaX中X是分区序号.

ytqxg 发表于 2020-11-1 17:37:38

看得一头雾水,就想把统信UOS专业版装进VHDX使用,看来步履艰难呀。

job111job 发表于 2020-11-6 18:46:45

收藏记录

songjl1995 发表于 2020-11-14 11:07:03

2011niumao 发表于 2020-6-15 14:26
感觉还是参数配置不正确导致的。gpt磁盘,kroot参数有可能是/dev/mapper/loop0p2 或者 /dev/mapper/loo ...

谢谢大佬,最终发现是修改文件的时候,个别行额外换行。vi查看ntfs-3g出现了异常字符,修改后功能正常了

qins2020 发表于 2020-11-25 22:37:05

66666666666666666666666666

rdfghhh 发表于 2020-12-19 14:38:57

感谢分享

piazini 发表于 2021-2-4 21:22:15

楼主麻烦帮我,看下这个是什么问题?
https://s3.ax1x.com/2021/02/04/ylhUc8.png

2011niumao 发表于 2021-2-5 21:58:12

根系统没有挂载成功.一般是没有找到vhd文件, 或者是升级后vhd文件里面的initrd.img-XXXX 文件的相应代码被重置为原始状态了.需要按照教程重新修改对应的脚本重新制作initrd.img文件.
为保险起见.建议把引导使用的vmlinuz initrd.img拷贝到vhd文件外面.

piazini 发表于 2021-2-5 22:31:57

2011niumao 发表于 2021-2-5 21:58
根系统没有挂载成功.一般是没有找到vhd文件, 或者是升级后vhd文件里面的initrd.img-XXXX 文件的相应代码 ...

很高兴你还活跃在论坛,之前看帖子最早都14年左右发的,都怕你不在论坛了。感谢楼主,这么及时的回复,因为我还是列兵,回帖要审核,所以不能及时回复,抱歉。

环境:VM虚拟机里装好了ubuntu18.04 版本5.4.0-42
          制作initrd.img文件前用过sudo apt-get update
         按照教程,用文件直接替换ubuntu 里对应的文件,然后编译,从VM里的ubuntu拷出文件放到和ubuntu18.vhd同一个目录。改名为,vmlinuz、initrd.img

上面那个出错是这样。我用你链接里提供的grubsmall2017.zip文件里的“GRub4dos启动需要三个文件 grldr grldr.mbr menu.lst与一个目录grub” 这个几个放到物理机win7的C盘根目录,然后刚开始识别不出来VHD仔细看是iftitle那行的“]“ 和后面的文字没有空格,所以导致识别失败,改了就能引导但是到上面的界面就不动了。

我用 ls /root看到了我的D盘目录,但是我就迷茫了,这是引导initrd.img成功了识别到目录(就是LINUX识别),还是怎么回事。initrd.img是按照教程里做的。
还有一个问题,教程里修改local文件"mountroot()函数内pre_mountroot" 有这个函数但没有pre_mountroot这个。是版本的原因么?


如果重新制作,我打算把你UBT-small\ghostplant-UBT-small目录里的UBT-small.vhd用DiskGeniusLoad提取出要修改的文件直接替换试试。

2011niumao 发表于 2021-2-7 10:30:27

本帖最后由 2011niumao 于 2021-2-7 10:34 编辑

piazini 发表于 2021-2-5 22:31
很高兴你还活跃在论坛,之前看帖子最早都14年左右发的,都怕你不在论坛了。感谢楼主,这么及时的回复,因 ...
估计是local init 修改的不对。 重新修改看看。可以使用百度云共享里的initrad.img与vmlinuz引导跑起来,进入vhd后再重新制作
自己版本的initrd.img ,制作好后拷贝到外部。

第一需要自己编译ntfs-3g。
第二,修改local init
第三,修改mkinitramf/etc/initramfs-tools/modules
第四, /usr/share/initramfs-tools/scripts/.../ntfs-3g这个文件不用修改了(有时候修改反而不好)。

piazini 发表于 2021-2-7 11:53:54

感谢楼主,
问题一,教程说修改local文件"mountroot()函数内pre_mountroot" 但没有pre_mountroot这个。
问题二,我用的是VM Pro 12.5.0 build-4352439装ubuntu 18.04 (下载地址mirrors.163.com/ubuntu-releases/18.04.5/ubuntu-18.04.5-desktop-amd64.iso) 执行了sudo apt-get install kpartx kpartx-boot util-linux dmsetup lvm2 虚拟机重启就要反复重启或关闭虚拟机,才能启动到桌面,想问下你有这样的情况么?

piazini 发表于 2021-2-8 10:50:34

感谢楼主指导。
经过反复查看教程,发现原来是init文件里有多处修改。

我看的UBT-small\mydracut\ubuntu-kloop\KLOOP教程-UBUNTU篇.txt的一个教程只有一处修改。

之后又看UBT-small\readme-ubuntukloop.zip里的PDF教程修改,修改完重新编译initrd.img-5.4.0-42-generic,然后Ubuntu18.04一次性成功。

2011niumao 发表于 2021-2-8 11:21:47

问题二, 没有遇到过.没用过vm, 我用的是VirtualBox.
问题一, 应该是这个语句local_mount_root()里的语句local_premount
所有修改在其后. 用条件语句把其后所有语句括起来,在加入kloop相关语句.
local_mount_root()
{
        local_top
        local_device_setup "${ROOT}" "root file system"
        ROOT="${DEV}"

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

        local_premount

        if [ "${readonly}" = "y" ] && \
           [ -z "$LOOP" ]; then
                roflag=-r
        else
                roflag=-w
        fi

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

        checkfs ${ROOT} root "${FSTYPE}"

        # FIXME This has no error checking
        # Mount root
        mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
        mountroot_status="$?"
        if [ "$LOOP" ]; then
                if [ "$mountroot_status" != 0 ]; then
                        if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then
                                panic "
Could not mount the partition ${ROOT}.
This could also happen if the file system is not clean because of an operating
system crash, an interrupted boot process, an improper shutdown, or unplugging
of a removable device without first unmounting or ejecting it.To fix this,
simply reboot into Windows, let it fully start, log in, run 'chkdsk /r', then
gracefully shut down and reboot back into Windows. After this you should be
able to reboot again and resume the installation.
(filesystem = ${FSTYPE}, error code = $mountroot_status)
"
                        fi
                fi

                mkdir -p /host
                mount -o move ${rootmnt} /host

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

                # Get the loop filesystem type if not set
                if [ -z "${LOOPFSTYPE}" ]; then
                        eval $(fstype < "/host/${LOOP#/}")
                else
                        FSTYPE="${LOOPFSTYPE}"
                fi
                if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then
                        FSTYPE=$(/sbin/blkid -s TYPE -o value "/host/${LOOP#/}")
                        [ -z "$FSTYPE" ] && FSTYPE="unknown"
                fi

                if [ ${readonly} = y ]; then
                        roflag=-r
                else
                        roflag=-w
                fi

                # FIXME This has no error checking
                modprobe loop
                modprobe ${FSTYPE}

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

                if [ -d ${rootmnt}/host ]; then
                        mount -o move /host ${rootmnt}/host
                fi
        fi
}


piazini 发表于 2021-2-8 12:31:06

楼主,根据你的教程,我整理了个完整版本的,让新人少走弯路。
h\ttp://cnblogs.com/wutou/p/14366476.html

piazini 发表于 2021-2-8 12:35:23

感谢楼主,我已经用readme-ubuntukloop.zip包里的教程去改过好了。可能那个是旧版本的吧。

piazini 发表于 2021-2-10 22:08:45

LZ ,请教个问题。我电脑是mbr方式引导的WIN7,引导文件名ghldr.mbr。我用BOOTICEx64添加了一个grldr.mbr的GRUB4DOS,结果重启后,先看到grldr.mbr的界面,而后才看到原来WIN7的启动列表。我的理解是应该先看到WIN7列表,然后下面GRUB4DOS是grldr.mbr的列表么。这是怎么回事?

piazini 发表于 2021-2-10 22:15:07

LZ,我从http://52pojie.cn/thread-1364700-1-1.html看到这样演一个引导界面,但是是MAC的,想问下GRUB4DOS能做成这样的么?我看前面的回答有人做了一个好像是grub2的,怎么才能做GRUB4DOS的界面。

https://imgchr.com/i/y0wRhj

2011niumao 发表于 2021-2-15 23:21:33

第一个问题,用booice改动mbr后出来第一个界面自然是grldr.mbr。你可以用bootice修改mbr为nt6吧,恢复为先引导win7,再使用bootice修改bcd文件,加入引导项,引导项里选择grldr.mbr的,这个是你期望的结果。

2011niumao 发表于 2021-2-15 23:22:23

第二个问题,好像只有grub2有这样的效果。grub4dos不行。

piazini 发表于 2021-2-18 10:21:41

楼主新年快乐。我成功从VHD引导到ubuntu18.04系统里,但是扩容又遇到问题。
vhd文件从8G扩容到16G,在vhd文件里的ubuntu18.04也用fdisk重新更新了分区表,也能显示16G,但是使用df -h 时也还现实8G。正常情况使用partprobe或kpartx在不重启就能让内核刷新容量,或者直接重启可以识别,但是,两种方法都不起效。我又尝试umount后刷新也不让说正在使用,之后又想用但用户模式启动,那个选择界面也没有(重启按shift)也不出那个选择和按e的节目。现在想,难道是要重新编译内核?放到和vhd同目录才行?有没有不编译内核的方法?

2011niumao 发表于 2021-2-18 19:08:55

没有扩容过. 真需要扩容时候, 我是先制作一个大的固定vhd, 把旧的系统做成squashfs系统, 再恢复到大的新vhd上.这个过程唯一问题就是需要改写以下/etc/fstab, 把里面的旧根分区的UUID更改为新的UUID.

直接扩容我怀疑也需要同样的操作,修改UUID. 其他应该不动,应该不需要重新制作initrd.img.

piazini 发表于 2021-2-19 13:17:14

LZ,我发现loop0p1对应的/sys/devices/virtual/block/dm-0/size文件里写的数字刚好和我没扩容磁盘扇区数字相对应,但是不知道这个文件是那个程序管理的。我在翻找linux设备管理相关的doc看看有没有线索。

piazini 发表于 2021-2-19 13:29:26

我想进入单用户模式,但是怎么修改grub的相关文件就是不生效。修改完要用update-grub命令,难道和vhd同目录的文件也要替换?
页: 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20
查看完整版本: 从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种