争取不掉坑 2023-03-15 12:29 采纳率: 50%
浏览 113
已结题

cobbler安装系统后网卡名称及网络配置问题

通过cobbler可以实现半自动化安装系统(因为需要手动选择菜单,安装对应的系统,默认local安装),但是安装centos7系统,有三个问题;*

1,在ks文件上设置了--bootproto=static --device=ens33 --onboot=yes --ip= --netmask --gateway= --ipv6=auto --activate,当系统安装好后查看网卡配置信息时,仍然时dhcp模式,并且IP,掩码,网关并没有配置;怎么可以通过设定的ks文件自动配置网卡信息?
2,在ks文件上配置的网卡名称--device=ens33,系统安装后,通过ifconfig看到的配置网卡名称仍然是eth0,但是网卡的配置文件名称(/etc/sysconfig/network-scripts/ifcfg-)是ens33,配置文件NAME=ens33,DEVICE=ens33(我不想用eth0作为网卡名称,我像让系统自己自动命名的网卡名称)。(ifconfig查看的网卡名称和网卡配置信息不一致!)因为ifconfig查看到的网卡是eth0和网卡配置文件名及配置文件内网卡名称ens33不同,导致配置/etc/sysconfig/network-scripts/ifcfg-ens33配置信息,重启网卡后不生效,需要将网卡配置文件名和配置文件的DEVICE、NAME,ens33改为eth0 ,并且关闭/卸载NetworkManager后,才可以通过/etc/sysconfig/network-scripts/ifcfg-eth0配置网卡,就是说比较麻烦,怎么才可以自动识别centos7的网卡名称信息,而不是手动输入指定网卡名称。cobbler默认好像就是eth0。
3,cobbler改变默认启动项(不是local)后,服务器启动后会无限的安装系统,通过什么方式可以实现,开机就从网络中安装系统,系统安装后,直接从local启动服务器,而不是在无人参与的情况下无限制的做系统?下面是ks文件信息。希望您能帮我解惑,越详细越好。
总结:目前我可以通过cobbler做系统,但是主要就是网卡(网络)部分出现问题,网卡名称我想用系统自动分配的名称,而不是、不是、不是(重要的话说三遍)类似eth0、eth1命名,我想让我所设置的,做完系统就是我想要的,就跟用系统盘做的一样,如果是多网卡怎么配置。可以把我下面的ks文件修改一下或者重新做一个也行。还有一个问题,我通过配置/var/lib/tftpboot/pxelinux.cfg/default文件可以设置默认选择的启动菜单。但是做完系统后,仍然还会选择默认菜单,出现重复做系统的情况。用什么办法可以实现,从开机自动选择系统菜单做系统,系统做完重启之后,实现本地(local)开机,而不是再次选择默认的系统菜单。



install
keyboard 'us'
#rootpw --iscrypted="$1$random-p$hWuOLQDqdHnV5/VQDgxS60" 
rootpw --plaintext zzzaaa
url --url="$tree"
lang en_US
auth  --useshadow  --passalgo=sha512
text
reboot
firstboot --disable

selinux --disabled
firewall --disabled
#network --bootproto=dhcp  --device=eth0 --onboot=yes --ipv6=auto --activate
network  --bootproto=static --device=ens33 --gateway=192.168.3.1 --ip=192.168.3.111 --nameserver=8.8.8.8 --netmask=255.255.255.0 --ipv6=auto --activate
#$SNIPPET('network_config')
network  --hostname=cobbler
timezone Asia/Shanghai

bootloader --append="net.ifnames=0" --location=mbr
zerombr
clearpart --all --initlabel

part /boot --fstype="xfs" --size=500
part / --fstype="xfs" --grow --size=1
part swap --fstype="swap" --size=4000
#part /data --fstype="xfs" --size=10000

%packages
@^minimal
autofs
vim-enhanced
yum-utils
bash-completion
net-tools
%end

%post --interpreter=/bin/bash
%end


```

  • 写回答

6条回答 默认 最新

  • 「已注销」 2023-03-15 12:35
    关注

    参考GPT和自己的思路:
    问题一
    在ks文件中设置了网络配置参数,但是在安装后并没有生效,这可能是由于Kickstart引导镜像(initrd)中缺少网络驱动程序的原因。您可以尝试将所需的驱动程序添加到initrd中,以便在安装过程中使用。

    步骤如下:

    将所需的驱动程序文件(例如驱动程序文件的.ko文件)上传到Cobbler服务器的/var/lib/cobbler/kickstarts/目录中。

    打开/var/lib/cobbler/kickstarts/centos7.ks文件。

    在文件开头添加以下内容:

    %pre
    # Load necessary network driver modules.
    # Substitute the driver module name and path according to your actual situation.
    modprobe -v e1000e
    # Check whether the module is loaded successfully
    lsmod | grep e1000e
    %end
    
    
    

    在这里,我们使用modprobe命令加载一个名为e1000e的网络驱动程序模块,并使用lsmod命令验证是否已成功加载该模块。您需要将此内容更改为与您的实际情况相匹配的内容。

    重新生成Kickstart引导镜像:

    cobbler distro edit --name=centos7 --kopts='ksdevice=bootif lang=en_US keymap=us ip=dhcp inst.ks=http://cobbler.example.com/cblr/svc/op/ks/profile/centos7' --kopts-post='net.ifnames=0 biosdevname=0' --kopts-post-uninstall='net.ifnames=0 biosdevname=0' --breed=redhat --name=centos7 --arch=x86_64
    
    
    

    在这里,我们使用cobbler distro edit命令为名为centos7的操作系统分发配置Kickstart引导选项。我们添加了--kopts-post='net.ifnames=0 biosdevname=0'参数以确保在安装后使用传统的网络接口名称(例如eth0)而不是预测性的接口名称(例如ens33)。

    然后使用以下命令重新生成initrd:

    cobbler distro edit --name=centos7 --kopts='ksdevice=bootif lang=en_US keymap=us ip=dhcp inst.ks=http://cobbler.example.com/cblr/svc/op/ks/profile/centos7' --kopts-post='net.ifnames=0 biosdevname=0' --kopts-post-uninstall='net.ifnames=0 biosdevname=0' --breed=redhat --name=centos7 --arch=x86_64 --initrd=/tmp/newinitrd.img
    
    
    

    在这里,我们使用--initrd=/tmp/newinitrd.img参数指定新的initrd位置。

    然后将生成的新initrd文件复制到TFTP根目录中:

    cp /var/www/cobbler/ks_mirror/centos7-x86_64/images/pxeboot/initrd.img /var/lib/tftpboot/images/centos7-x86_64/newinitrd.img
    
    

    然后,在Cobbler服务器上执行以下命令,重新导入CentOS 7的ISO镜像,以便Cobbler能够使用新的initrd文件:

    cobbler import --name=centos7 --arch=x86_64 --path=/mnt/centos7 --breed=redhat
    
    
    

    最后,重新启动Cobbler服务以使更改生效:

    systemctl restart cobblerd
    systemctl restart httpd
    

    问题二
    在ks文件上配置的网卡名称--device=ens33,但系统安装后,通过ifconfig看到的配置网卡名称仍然是eth0,这是因为 CentOS 7 引入了新的命名规则,使用基于持久性的网络接口命名方案 Predictable Network Interface Names。这种命名规则与旧的命名规则不同,主要是基于驱动程序和设备路径来命名网络接口,因此在 CentOS 7 中默认的网卡命名可能与 ks 文件中指定的名称不同。您可以通过在 ks 文件中设置 net.ifnames=0 选项,禁用这种命名规则,使其采用传统的网卡命名方式(例如 eth0、eth1 等)。修改 ks 文件中 network 部分的配置为:

    network --bootproto=static --device=eth0 --ip=192.168.1.10 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver=8.8.8.8 --noipv6 --hostname=test.example.com --activate --onboot=yes --netmask=255.255.255.0 --noipv6 --defroute
    
    

    问题三
    默认情况下,Cobbler 会在启动时显示一个菜单,允许用户选择从哪个镜像进行安装。如果您希望系统直接从网络安装系统并避免这个菜单,请编辑 /etc/cobbler/settings 并将 manage_dhcp 选项设置为 1,以启用 DHCP 服务。然后,在 Cobbler Web UI 中选择您要部署的系统并转到“ PXE 设置”选项卡。在“ PXE 其他设置”字段中,设置 kickstart_filename 选项为 “cobbler/systems/.ks”。在 .ks 文件中,将启动菜单隐藏并将系统默认引导到本地磁盘。例如:
    在ks文件的开头添加以下内容

    ignoredisk --only-use=sda
    bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
    

    然后添加以下内容,隐藏菜单并将系统默认引导到本地磁盘
    (以下代码应该替换为原来在ks文件中的menu命令)

    %post
    sed -i 's/^timeout 600/timeout 1/g' /boot/grub2/grub.cfg
    sed -i 's/^#?GRUB_DEFAULT=saved/GRUB_DEFAULT=0/g' /etc/default/grub
    grub2-mkconfig -o /boot/grub2/grub.cfg
    %end
    
    

    请注意,这里将隐藏启动菜单,并默认将系统引导到本地磁盘。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月17日
  • 赞助了问题酬金100元 3月16日
  • 赞助了问题酬金15元 3月16日
  • 修改了问题 3月16日
  • 展开全部