通过 kickstart 安装 CentOS 7 的静态 IP 地址

通过 kickstart 安装 CentOS 7 的静态 IP 地址

kickstart使用文件安装具有静态 IP 网络的 CentOS 7 来宾虚拟机 时,会引发以下错误:

[3.835698] dracut-cmdline[81]: parse-kickstart ERROR: 
    'network --bootproto=static --ip=12.34.567.8aa --netmask=255.255.255.248 --gateway=12.34.567.8bb --nameserver=xx.xx.xx.xx,xx.xx.yy.yy': 
    missing --device

我怀疑问题在于主机上尚未设置具有静态 IP 的桥接网络来替换默认的 NAT 配置。但是需要输入哪些具体命令才能解决此错误?


启动文件:

启动文件是:

#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512

# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --device=eno1 --onboot=on --activate
network  --bootproto=static --ip=12.34.567.8aa --netmask=255.255.255.248 --gateway=12.34.567.8bb --nameserver=xx.xx.xx.xx,xx.xx.yy.yy
network  --hostname=localhost.localdomain
# Root password
rootpw --iscrypted someLongHashedPassword
# System timezone
timezone someTimeZone --isUtc --nontp
user --name=someUserName --password=someLongHashedPassword --iscrypted --gecos="someUserName"
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information.  Erases all partitions from the sda drive.
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part pv.204 --fstype="lvmpv" --ondisk=sda --size=1902212
part /boot/efi --fstype="efi" --ondisk=sda --size=200 --fsoptions="umask=0077,shortname=winnt"
part /boot --fstype="xfs" --ondisk=sda --size=500
volgroup centos --pesize=4096 pv.204
logvol /  --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
logvol /home  --fstype="xfs" --size=230400 --name=home --vgname=centos
logvol swap  --fstype="swap" --size=7808 --name=swap --vgname=centos

%packages
@base
@compat-libraries
@core
@debugging
@development
@network-file-system-client
@remote-system-management
@security-tools
@smart-card
@virtualization-hypervisor
@virtualization-platform
@virtualization-tools
@virtualization-client
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end


virt-install命令:

作为参考,virt-install触发安装的命令是:

virt-install \
   --name=public-centos7 \
   --disk path=/dev/mapper/centos-fifth,size=241 \
   --graphics none --vcpus=1 --memory=2048 \
   --location /tmp/CentOS-7-x86_64-Minimal-1611.iso \
   --network bridge=virbr0 --os-type=linux --os-variant=rhel7.0 \
   --initrd-inject=/tmp/vm.ks \
   --extra-args "ks=file:/tmp/vm.ks console=ttyS0"


当前配置:
另外,brctl show在主机上给出:

[root@remote-host ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400c4a345       yes             virbr0-nic
                                                        vnet0


添加--device=eno1

根据@thrig的建议,我将kickstart文件的有问题的行更改为:

# Network information
network  --onboot=on --activate
network  --bootproto=static --ip=12.34.567.8aa --netmask=255.255.255.248 --gateway=12.34.567.8bb --nameserver=xx.xx.xx.xx,xx.xx.yy.yy --device=eno1
network  --hostname=localhost.localdomain  

这似乎已经解决了错误。但我还不确定,因为我还在解决下游问题。

答案1

错误消息指示“ missing --device”,因此最好尝试将设备与网络配置行关联:

network  --bootproto=static --ip=... --device=eno1

如果设备名称根据其 PCI 位置出现一些未知名称,这可能会出现问题,尽管还有其他选项可以控制它(例如,使用ksdevice=eth0 net.ifnames=0 biosdevname=0内核参数 PXE 引导事物)。特别是,redhat“安装指南”文档表明确实应该指定设备名称:

请注意,这被视为已弃用的行为;在大多数情况下,您应该始终--device=为每个网络命令指定一个。如果--device=缺少选项,则同一 Kickstart 文件中任何后续网络命令的行为都是未指定的。

相关内容