700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > vhd虚拟机安装linux 把优麒麟Ubuntu Kylin 16.04 UKUI安装进VHD虚拟磁盘

vhd虚拟机安装linux 把优麒麟Ubuntu Kylin 16.04 UKUI安装进VHD虚拟磁盘

时间:2020-09-17 19:48:18

相关推荐

vhd虚拟机安装linux 把优麒麟Ubuntu Kylin 16.04 UKUI安装进VHD虚拟磁盘

把系统装进VHD虚拟磁盘的好处是;不影响原来的磁盘分区;想装几个系统就装几个;不要了直接删除VHD文件就行。

第一步,安装VHD系统:

在windows系统下用VirtualBox下安装UBUNTU系统,建立固定大小的vhd格式虚拟磁盘文件,推荐24g大小或更大。

安装UBUNTU时候分成三个主分区如下:

第一分区 320M 卷标EFI fat32格式;

第二分区 20G ext4格式 ,挂载根分区/

第三分区 剩余给交换分区;卷标SWAP。

其后的安装过程网上教程很多,此处略去不述。

第二步,制作能够直接引导vhd内UBUNTU系统的initrd.img文件:

在VirtualBox启动装好的UBUNTU系统,并确保能联网;

1.首先安装kpartx,kpartx-boot,util-linux,dm-setup一些软件。

可以在新立得中搜索安装。也可以使用命令。

打开一个终端,输入

sudo apt-get install kpartx kpartx-boot util-linux dmsetup

2.修改两个文件:local mkinitramfs

修改前先备份两个文件:

sudo cp /usr/share/initramfs-tools/scripts/local ./local.backup

sudo cp /usr/sbin/mkinitramfs ./mkinitramfs.backup

先修改local文件

sudo gedit /usr/share/initramfs-tools/scripts/local

把如下部分:

###################################

# TO BOOT FROM VHD #

###################################

for x in $(cat /proc/cmdline); do

case $x in

vloop=*)

VLOOP="${x#vloop=}"

;;

vlooppart=*)

VLOOPPART="${x#vlooppart=}"

;;

vloopfstype=*)

VLOOPFSTYPE="${x#vloopfstype=}"

;;

vloopcheck=*)

VLOOPCHECK="${x#vloopcheck=}"

;;

esac

done

if [ "$VLOOP" ]; 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

str=${VLOOP}

disk_files="/host${str}"

# FIXME This has no error checking

modprobe loop

kpartx -av "${disk_files}"

sleep 3

# Get the vloop filesystem type if not set

if [ -z "${VLOOPFSTYPE}" ]; then

FSTYPE="unknown"

else

FSTYPE="${VLOOPFSTYPE}"

fi

if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then

FSTYPE=$(/sbin/blkid -s TYPE -o value "/dev/mapper/loop0${VLOOPPART}")

[ -z "$FSTYPE" ] && FSTYPE="ext4"

fi

if [ ${readonly} = y ]; then

roflag=-r

else

roflag=-w

fi

mount -t ${FSTYPE} "/dev/mapper/loop0${VLOOPPART}" ${rootmnt}

if [ -d ${rootmnt}/host ]; then

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

fi

fi

###################################

# end, TO BOOT FROM VHD #

###################################

拷贝到/usr/share/initramfs-tools/scripts/local 文件的相同位置处。

这个位置在文件最后几行上面,最后结果,接着上面的这段后面是以下几行。

[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom"

run_scripts /scripts/local-bottom

[ "$quiet" != "y" ] && log_end_msg

}

该文件修改结束。

保存后再执行sudo rm /usr/share/initramfs-tools/scripts/local~ 删除备份

3.修改mkinitramfs文件

sudo gedit /usr/sbin/mkinitramfs

找到# util-linux,在其下插入以下几行:

copy_exec /sbin/losetup /sbin

copy_exec /sbin/kpartx /sbin

copy_exec /sbin/shutdown /shutdown

touch ${DESTDIR}/etc/initrd-release

touch ${DESTDIR}/version

插入后该处几个语句为:(如果mkinitramfs文件中没有# util-linux这条,就直接插入下面7行)

# util-linux

copy_exec /sbin/blkid /sbin

copy_exec /sbin/losetup /sbin

copy_exec /sbin/kpartx /sbin

copy_exec /sbin/shutdown /shutdown

touch ${DESTDIR}/etc/initrd-release

touch ${DESTDIR}/version

保存一下。再执行sudo rm /usr/sbin/mkinitramfs~ 删除备份

接下来安装NTFS磁盘驱动:

(这个是重编译 ntfs-3g源码,你也可以从软件中心搜索ntfs-3g安装)

4.附件ntfs-3g_ntfsprogs-.2.15.fixed 是已经修改好的ntfs-3g源码.

对他手工编译安装.打开一个终端.进入该目录.依次执行以下命令:

./configure (如提示权限不够则用:su ./configure就可以)

make

sudo make install

5.编辑文件:/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g

先备份 sudo cp /usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g ./ntfs_3g.backup

sudo gedit /usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g

将以下拷贝覆盖原始内容即可。

#!/bin/sh

##set -e

##case "${1}" in

## prereqs)

## exit 0

## ;;

##esac

if [ "${ROOTFSTYPE}" = ntfs ] || [ "${ROOTFSTYPE}" = ntfs-3g ] || \

[ "${LOOPFSTYPE}" = ntfs ] || [ "${LOOPFSTYPE}" = ntfs-3g ]

then

mkdir -p /run/sendsigs.omit.d

pidof mount.ntfs >> /run/sendsigs.omit.d/ntfs-3g

pidof mount.ntfs-3g >> /run/sendsigs.omit.d/ntfs-3g

fi

###################################

##the following maybe help to resolve the buffer I/O error problem

##when reboot or halt.

###################################

if [ -d /run/initramfs -a -f /init ]

then

mkdir -p /run/initramfs/dev /run/initramfs/host /run/initramfs/proc /run/initramfs/root /run/initramfs/run /run/initramfs/sys /run/initramfs/tmp

rm -rf /lib/modules

for xxx in /*

do

if [ ${xxx} = "/dev" -o ${xxx} = "/host" -o ${xxx} = "/proc" -o ${xxx} = "/root" -o ${xxx} = "/run" -o ${xxx} = "/sys" -o ${xxx} = "/tmp" ];

then

:

else

cp -a ${xxx} /run/initramfs/ 1>/dev/null 2>&1;

fi

done

unset xxx

fi

###################################

exit 0

再执行删除备份 sudo rm /usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g~

接下来:

6.生成initrd.img文件

sudo /usr/sbin/mkinitramfs -o ~/initrd.img-XXXXXXXXX-generic (可以加上版本号得到其他内核版本的initrd.img)

接下来把装好的VHD盘添加到实体机的引导菜单:

先在电脑中安装GRUB2引导工具,安装过程网上教程很多,此处略去不述。

以Ubuntu Kylin为例子。假设内核版本是4.4.0-43 ;装好的VHD盘vhd文件名字为ubuntu.vhd,把这里生成的img文件(在你账户的个人目录)改名为initrd.img-4.4.0-43-generic

与 /boot/下的vmlinuz-4.4.0-43-generic文件,这两个文件从虚拟机复制到主机备用,可用U盘或传到网盘,总之要弄到主机上。

把虚拟盘文件UBUNTU.vhd和vmlinuz-4.4.0-43-generic ;initrd.img-4.4.0-43-generic

一共3个文件拷贝或移动到一个NTFS分区根目录下一个ubuntu目录中。如果没有ubuntu目录就手动建立一个。

把下面引导菜单代码添加到GRUB的菜单文件grub.cfg中

menuentry "Ubuntu Kylin系统"

insmod gzio

insmod part_msdos

insmod part_gpt

insmod ext2

insmod ntfs

insmod probe

insmod search

search --no-floppy -f --set=aabbcc /ubuntu/ubuntu.vhd

set root=${aabbcc}

probe -u --set=ddeeff ${aabbcc}

linux /ubuntu/vmlinuz-4.4.0-43-generic root=UUID=${ddeeff} vloop=/ubuntu/ubuntu.vhd vlooppart=p2

initrd /ubuntu/initrd.img-4.4.0-43-generic

}

这个菜单代码是自动搜索确定UUID并把它传给内核,不需要指定的hd0;gpt2等分区号。

以上步骤做完后,重启电脑,在GRUB菜单选择"Ubuntu Kylin系统" 就可以在主机上启动VHD中的Ubuntu Kylin了。

本人电脑是EFI+GPT;在Win10下用WinLy引导工具安装成功。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。