ubuntu20.04 安装虚拟,将一个定制化的系统移植到虚拟机
1.安装必要的软件包
apt install qemu-kvm virtinst bridge-utils uml-utilities tightvncserver libvirt-daemon-system libvirt-daemon net-tools libguestfs-tools
其它用的一些常用工具,比如ifconfig,如果需要,自行安装。
而且上面的这些包的安装或安装很多依赖包。
2. 配置桥接网络
要移植的系统不能以nat方式,要以暴露在局域网,做一个普通的终端节点。
netplan的yaml文件配置示例:
将要桥接的网卡放在bridges里。
tunctl -t tap0
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up
tunctl -t tap1
brctl addif br0 tap1
ifconfig tap1 0.0.0.0 promisc up
将两个虚拟网卡桥接到br0的相关的物理网卡上
3. 创建虚拟磁盘
qemu-img create zzos.qcow2 -f qcow2 16G
qemu-img create -f qcow2 sata1.qcow2 900G
qemu-img create -f qcow2 sata2.qcow2 900G
4. 通过iso安装系统
qemu-system-x86_64 -enable-kvm -hda zzos.qcow2 -boot cd -cdrom /zos/ubuntu-20.04.1-desktop-amd64.iso -m 8192 vnc:4
需要重时候,重写启动qemu, 去掉-cdrom选项即可
5. 启动虚拟机
三块磁盘,两块网卡,8G内存。注意网卡的写法,使用了刚建立的两个桥接网卡设备。
qemu-system-x86_64 -name z4sys -m 8192 -smp 2 -cpu host -hda /zos/z4/z4os.qcow2 -hdb /storage/sata1.qcow2 -hdc /storage/sata2.qcow2 -boot c -enable-kvm -netdev type=tap,ifname=tap0,script=no,downscript=no,id=net0 -device e1000,netdev=net0,mac=5C:85:7E:40:92:F5,bus=pci.0,addr=0x3 -netdev type=tap,ifname=tap1,script=no,downscript=no,id=net1 -device e1000,netdev=net1,mac=5C:85:7E:40:92:F6,bus=pci.0,addr=0x4 -daemonize -vnc :4
6. 编辑qcow2镜像文件
安装工具包
apt install libguestfs-tools
guestmount -a zzos.qcow2 -m /dev/sda5 qcow_mount/
这里如果不知道有哪些分区可以,直接是使用sda,出错信息里会有提示有那几个分区可用。当然guestmount可用只读挂载。
dd的img文件挂载方式:
mount -o ro,loop,offset=3001444864 ubuntu_20.04_z4_v3.4.img tmp/
这里的offset=startsector * sectorsize, 通过fdisk获得这些信息
7. 至此,能够编辑镜像,就可以定制系统,或者用已定制文件系统挺好已经安装的系统。
这样做的好处是保证grub已经正确安装,不用折腾怎么在空虚拟磁盘安装引导程序了。
替换文件系统两个要点:
a,grub引导现在大都以uuid方式进行,确保元系统的grub部分和相关内核、内核模块不要被删除
b,/etc/fstab文件要使用原理文件系统的,不要替换;或者你用设备节点名替换uuid=“xxx”