Nokvm debian镜像制作
总结
最近尝试了下nokvm 的镜像制作,现把制作过程记录一下,留作日后查阅。因为nokvm提供的镜像版本要么老旧要么不全,所以我是通过ISO全新安装制作模版镜像,过程参考自nokvm官方教程和相关资源。
(其他安装系统的方法还有dd,可以参考https://yangwenqing.com/archives/757/,dd可以不需要vnc,直接一键安装完成)
预备工作
nokvm的主控和被控节点
在被控母鸡上用之前的模板先创建个vps,后面就在这个vps安装纯净系统,并制作镜像
记录vps的网络配置信息:
- 网络接口设备名和序列号
- IP地址
- 网关
- 子网掩码
- DNS(一般8.8.8.8即可
安装纯净系统
在vps上安装所需版本的纯净系统,本次制作的是debian系统,其他系统操作流程类似。
下载系统安装文件
在 Debian 官网 Network Boot 页面 ( https://www.debian.org/distrib/netinst ) 找到最新系统引导文件地址,安装64位系统就选 AMD64 ,安装32位系统选 i386。然后在vps上执行以下命令:
1
2
3cd /
wget http://ftp.nl.debian.org/debian/dists/Debian9.12/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
wget http://ftp.nl.debian.org/debian/dists/Debian9.12/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux修改系统引导配置
centos:
修改/boot/grub/menu.lst文件
1
vi /boot/grub/menu.lst
然后把下面内容加入到末尾
1
2
3
4title Reinstall OS
root (hd0,0)
kernel /linux ro root=/dev/ram ramdisk_size=20000
initrd /initrd.gzdebian:
修改/boot/grub/grub.cfg
1
vi /boot/grub/grub.cfg
然后在末尾追加以下内容
1
2
3
4
5
6
7
8menuentry 'Reinstall OS' --class debian --class gnu-linux --class gnu --class os {
insmod gzio
insmod part_msdos
#insmod ext4
set root='(hd0,msdos1)'
linux /linux
initrd /initrd.gz
}
建议使用根目录 / 来引导,但是有时候无法通过根目录 / 来引导启动,那就需要换成 /boot,用 /boot目录的话,启动配置的路径也需要对应的修改,下面只以根目录 / 引导为例。https://www.risirirui.com/14.html
有时在文件最末尾添加可能会不生效,此时可以加入在文件中间
安装系统
用vns连接vps,执行正常的安装操作即可,同时注意以下内容:
如果需要配置网络环境,则可以使用之前记录vps的网络信息进行配置。
只需要安装ssh server和 standard system utilities。
分区设置如无特殊要求,选他推荐的即可,只划分一个
安装grub时,选择相应磁盘,不要选择第一个选项。
配置系统
刚装好系统后,可能root用户无法通过ssh方式登陆,ssh时会提示:Permission denied, please try again. 此时用VNC连接vps,然后修改ssh配置文件
1
vi /etc/ssh/sshd_config
在其中找到root的设置 PermitRootLogin,将其改为
1
PermitRootLogin yes
重启ssh服务,然后就可以ssh登陆了
1
service sshd restart
有时我们安装完后发现网卡和之前的不一样了(通过命令ip addr可以查看网络配置),比如之前是eth0和eth1,安装完系统后变成了ens33和ens34。此时需要修改网卡名称,将其改回成与先前网卡名称一致:
修改启动文件/etc/default/grub ,将GRUB_CMDLINE_LINUX修改成以下以下内容
1
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
因为我看到nokvm提供的模板中这一行的内容有些不一致,所以我决定按照nokvm模版中这部分内容进行配置(命令中其他部分是什么作用我没看,照着copy出来的)
1
2
3
4GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 systemd.show_status=true"
#在文件结尾同时加上下面内容
GRUB_DISABLE_OS_PROBER=true重新制作grub引导配置文件
1
grub-mkconfig -o /boot/grub/grub.cfg
⚠️注意同时记得修改网络配置文件,因为修改网卡名称,网络配置文件同时也需要修改下。
比如debian/ubuntu中,修改/etc/network/interface文件。其中配置按个人情况填写,切勿照抄。
1
2
3
4
5
6
7
8
9auto eth0
iface eth0 inet static
address xxx.5.23.120
netmask 255.255.255.128
gateway xxx.5.23.1
auto eth1
iface eth1 inet static
address 10.0.156.103
netmask 255.0.0.0重启
1
reboot
安装你所需要的软件,并进行相应的配置
制作镜像
参考自nokvm官方文档,依次进行以下操作:
安装在线密码修改服务
Centos6:
1
2yum install qemu-guest-agent
chkconfig --add qemu-gaCentos7:
1
2
3yum install qemu-guest-agent
systemctl start qemu-guest-agent
systemctl enable qemu-guest-agentDebian/Ubuntu:
1
apt install qemu-guest-agent
编辑/etc/rc.local 文件之前添加以下内容
Centos 6/7:
1
sh /root/change.sh && rm -rf /root/change.sh
Debian/Ubuntu (需要在exit 0之前添加):
1
2/etc/init.d/qemu-guest-agent start
sh /root/change_other.sh && rm -rf /root/change_other.sh如果没有/etc/rc.local文件,则创建文件,并写入以下内容。如果脚本报错,则将文件中的sh改成bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#!/bin/sh -e
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.
/etc/init.d/qemu-guest-agent start
sh /root/change_other.sh && rm -rf /root/change_other.sh
exit 0PS:1. 目前已知Ubuntu18及以上版本的系统,都是默认启用netplan来管理网络配置的,之前的配置/etc/network/interfaces的方法不生效,需要关闭netplan服务并启用之前的服务。
2. 另外Ubuntu18及以上版本的系统启动时,会先配置网络,再执行rc.local。如果还是按之前的配置rc.local的方法,会导致vps修改ip/重装/新装后,需要再重启一次才能正确配置网络。可以通过在rc.local中添加强制更新网络配置的命令来解决。
加上可执行权限
1
chmod +x /etc/rc.local
将vps关机
登陆母鸡,将vps的镜像copy出来当作模板使用
1
cp /home/nokvm/resource/ecs-vpsid/uuid_sys.qcow2 /home/nokvm/templates/模版名称.qcow2
记得将镜像发送给所有母鸡
参考文章:
1: https://www.risirirui.com/14.html
2: https://www.hostloc.com/thread-520732-1-1.html
3: https://www.jianshu.com/p/af2938da5c42