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同目录的文件也要替换?