如何使用 kickstart.cfg 虚拟安装 kvm Centos 8

Posted

技术标签:

【中文标题】如何使用 kickstart.cfg 虚拟安装 kvm Centos 8【英文标题】:How to virt-install kvm Centos 8 using kickstart.cfg 【发布时间】:2020-02-27 19:29:46 【问题描述】:

我最近设法安装 Centos7 和 kickstart.cfg 文件,在我的 Archlinux 上使用 virt-install

但是,如果我只是想对 Centos 8 使用类似的方法 - 它根本不起作用。 我怀疑这是因为 Centos8 没有任何最小版本,您需要使用图形安装程序下载 7GB iso 文件。

sudo virt-install --name k8s-1 \
    --description "this is my Centos 8 " \
    --ram 2048 \
    --vcpus 2 \
    --disk path=/vm-disks/k8s-1.qcow2,size=15 \
    --os-type linux \
    --os-variant "centos8" \
    --network bridge=virbr0 \
    --graphics vnc,listen=127.0.0.1,port=5901 \
    --location /cdimages/CentOS-8.1.1911-x86_64-dvd1.iso \
    --noautoconsole \
    --initrd-inject ks-1.cfg --extra-args="ks=file:/ks-1.cfg"
Setting input-charset to 'UTF-8' from locale.

Starting install...
Setting input-charset to 'UTF-8' from locale.
Retrieving file vmlinuz...                                                                                                                                                  | 7.7 MB  00:00:00     
Setting input-charset to 'UTF-8' from locale.
Retrieving file initrd.img...                                                                                                                                               |  59 MB  00:00:00     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

这里是 ks-1.cfg

# Install OS instead of upgrade
install
# Use network installation
cdrom
# Root password
rootpw Start123
# System authorization information
auth  --useshadow  --passalgo=sha512

# Firewall configuration
firewall --disabled
# SELinux configuration
selinux --permissive

# Installation logging level
logging --level=info
# Use text mode install
text
# Do not configure the X Window System
skipx
# System timezone, language and keyboard
timezone --utc Europe/Bratislava
lang en_US.UTF-8
# keyboard dk-latin1
# Network information
# network  --bootproto=static --ip=192.168.122.110 --device=eth0 --onboot=on
# If you want to configure a static IP:
network --device eth0 --hostname k8s-1 --bootproto=static --ip=192.168.122.111 --netmask=255.255.255.0 --gateway=192.168.122.1 --nameserver 192.168.122.1


# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=512
#part swap --fstype="swap" --recommended
part /var --fstype="ext4" --size=5120 --grow
part / --fstype="ext4" --size=1024 --grow
part /usr --fstype="ext4" --size=3072
part /home --fstype="ext4" --size=512
part /tmp --fstype="ext4" --size=1024

# Reboot after installation
reboot

%packages  --nobase
@core
# @base

%end

%post --log=/root/ks-post.log
#---- Install packages used by kubernetes
#yum install -y socat libseccomp-devel btrfs-progs-devel util-linux nfs-utils conntrack-tools.x86_64

#---- Set bridge-nf-call
echo "net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.conf

#---- Add user RKE -----
groupadd docker
adduser rke
echo "rke:praqma" | chpasswd
usermod -aG docker rke


#---- Install our SSH key ----
mkdir -m0700 /home/rke/.ssh/
cat <<EOF >/home/rke/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9F5hTts3U+E10PHRxViM3PX+DZPgBIcL7Uj/Py+udJWehhobnJmj2EoaUYbykm7VdpjImLpjas2Vhb/gNZ+wVWGho1mzWoCPl2fZ7oLXrGdDHXhlyocvfX3XPB6Y1kbFlfh7+4bUaA7w2Dg4x8LO/iXlF34z6IOa2xgx1R70Xc/97lkRMhsKszRBzwGVin6qUqdVmdXg3d0dRUnq039+q8NWUcKAz2w6F/HO7u3N7NhsSLnlpQ9+AztLvHEPeRP6UNex9a8sSHo5Jzc/mjVKGfInfWjp3nru88mwM4UQRbhhW5IeLXgALCa++H4qZw1ivZtVadXBHjK4JMKC1UWD1 rancher@k8s
EOF


### Disabling swap (now and permently)
swapoff -a
sed -i '/^\/swapfile/ d' /etc/fstab


### set permissions
chmod 0600 /home/rke/.ssh/authorized_keys
chown -R rke:rke /home/rke/.ssh

### fix up selinux context
restorecon -R /home/rke/.ssh/authorized_keys


### Install Docker
#yum install docker -y

#systemctl enable docker

%end

如果您查看虚拟管理器 GUI,您将始终看到 dracut shell 错误

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题。我的解决方案: 出于某种原因,virt-install 的参数 --initrd-inject 会中断该过程。 所以我删除了它并使用--extra-args "ks=http://192.168.xxx.xxx:8000/centos8_ks.cfg"通过网络加载了kickstart文件 提示:要为此安装运行简单的 Web 服务器,您可以在包含您的 kickstart 文件的文件夹中执行 python3 -m http.server 8000

当然,您需要根据this 为 CentOS-8 更新您的 kickstart - 很多已经改变了。

【讨论】:

【参考方案2】:

另一种选择是创建一个带有 OEMDRV 标签和文件 ks.cfg 的小型软盘映像,并将其作为 CDROM 附加:How to automate CentOS7 minimal kickstart installation using OEMDRV volume?

【讨论】:

以上是关于如何使用 kickstart.cfg 虚拟安装 kvm Centos 8的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用vmware虚拟机安装黑苹果macosx系统

虚拟机如何能够让局域网其他电脑访问

如何安装虚拟机,Vmware 10.0安装过程详解

如何在mac上安装虚拟机

如何使用Virtualbox安装虚拟机

如何使用虚拟机安装win10系统