searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

服务器自动重装系统思路分享(非PXE方式)

2024-05-10 02:43:56
37
0

1、概述

1.1、背景

由于种种原因,机房服务器无法通过PXE方式自动重装,同时又不愿意手动或自动登录带外进行重装操作,可以通过以下方法进行服务器系统的自动安装。

 

1.2、前提

  • 服务器已安装系统
  • 系统除了系统盘之外,还需要有一块数据盘
  • 依赖上次安装留下的kickstart文件,如果没有也能手动输出

 

1.3、方案

服务器启动后,会通过grub引导进入系统,修改grub配置可以引导使用OS镜像文件进行启动。

一般情况下OS镜像文件通过带外的虚拟光驱挂载到/dev/cdrom,替换方法是把镜像文件的内容拷贝到一个数据盘上。

 

2、实战

以下通过示例系统进行操作演示,系统盘在/dev/sdc,数据盘使用/dev/sda。

 

2.1、清理数据盘

直接使用mkfs格式化成ext4格式后挂载。

# 格式化/dev/sda
echo y | mkfs -t ext4 /dev/sda

 

2.2、上传OS镜像文件

提前准备好需要安装的系统iso文件,并上传到服务器上。

为了方便文档的后续步骤说明,上传到镜像文件命名为target.iso。

 

2.3、挂载镜像和数据盘

# 挂载镜像文件
mkdir /root/temp
mount /root/target.iso /root/temp

# 挂载/dev/sda数据盘
mkdir /root/sda
mount /dev/sda /root/sda

# 拷贝镜像内容到数据盘
cp -r /root/temp/* /root/sda/

 

2.4、拷贝kickstart文件

一般系统安装完会有当前系统的安装信息(包括时区、系统盘划分、预装软件、账号密码),文件是/root/anaconda-ks.cfg,在这个文件的基础上可以直接修改使用。

# 拷贝kickstart文件到数据盘
cp /root/anaconda-ks.cfg /root/sda/ks.cfg

 

2.5、导出当前网络配置(可选)

把网卡的配置文件(/etc/sysconfig/network-scripts目录下的文件)导出成一个shell脚本,导出路径为/root/network-scripts.txt。

注意:Rocky Linux使用NetworkManager配置网卡,因此配置文件不再在/etc/sysconfig/network-scripts目录下,方法不适用。

prefix='/etc/sysconfig/network-scripts'
for file in $prefix/*; do
  if [[ $file == $prefix/ifcfg-bond* ]] \
    || [[ $file == $prefix/ifcfg-en* ]] \
    || [[ $file == $prefix/route* ]]; then
    echo "cat > $file << EOF
$(cat $file)
EOF
" >> /root/network-scripts.txt
  fi
done

 

2.6、修改kickstart文件

修改kickstart文件,添加自定义内容。

上图中,post追加的是我们在2.5章节导出的网卡配置脚本。

 

2.7、生成grub配置

一般grub的配置文件是/etc/grub2-efi.cfg或者/etc/grub2.cfg,修改/etc/grub.d/40_custom后重新用命令生成配置。

x86和ARM的主要区别是在grub中的命令,一个是linuxefi和initrdefi,一个是linux和initrd。

 

海光x86命令如下:

# 海光x86
cat >> /etc/grub.d/40_custom << EOF
menuentry 'Automatic Installation' --class fedora --class gnu-linux --class gnu --class os {
        search --no-floppy --fs-uuid --set=root $(ls -lh /dev/disk/by-uuid/ | grep sda | awk '{print$9}')
        linuxefi /images/pxeboot/vmlinuz inst.ks=hd:/dev/sda inst.stage2=hd:/dev/sda console=tty
        initrdefi /images/pxeboot/initrd.img
}
EOF

 

鲲鹏ARM命令如下:

# 鲲鹏ARM
cat >> /etc/grub.d/40_custom << EOF
menuentry 'Automatic Installation' --class fedora --class gnu-linux --class gnu --class os {
        search --no-floppy --fs-uuid --set=root $(ls -lh /dev/disk/by-uuid/ | grep sda | awk '{print$9}')
        linux /images/pxeboot/vmlinuz inst.ks=hd:/dev/sda inst.stage2=hd:/dev/sda console=tty
        initrd /images/pxeboot/initrd.img
}
EOF

 

2.8、生成配置

# 重新生成配置
grub2-mkconfig -o /etc/grub2-efi.cfg

# 此处指定下次重启使用第三个选项(正常默认是两个,我们新增了一个,可以参考后续的图片说明为什么是第三个)
grub2-reboot 2

 

2.9、重启服务器

服务器系统中直接执行重启命令,或者带外进行重启。

 

2.10、等待重装完成

安装过程可以通过带外进行查看。

下图可以看到我们2.7章节追加的“Automatic Installation”选项,并且可以看到为什么2.8章节说的是第三个选项。

 

自动根据KickStart文件内容填充安装过程需要配置的选项,安装完成后会自动重启。

 

如果在2.5章节配置了网络相关,安装完成后可以直接连接上去;如果没有,就需要登录带外进行网络配置。

 

3、总结

建议是在能登录带外的情况下进行使用,盲目配置很容易卡在系统启动引导的界面而无法进入系统。

如果在环境稳定且频繁需要重装的情况,该方法能在不改动环境网络的情况下,快速完成服务器系统的重装。

0条评论
0 / 1000
陈嘉杰
3文章数
1粉丝数
陈嘉杰
3 文章 | 1 粉丝
陈嘉杰
3文章数
1粉丝数
陈嘉杰
3 文章 | 1 粉丝
原创

服务器自动重装系统思路分享(非PXE方式)

2024-05-10 02:43:56
37
0

1、概述

1.1、背景

由于种种原因,机房服务器无法通过PXE方式自动重装,同时又不愿意手动或自动登录带外进行重装操作,可以通过以下方法进行服务器系统的自动安装。

 

1.2、前提

  • 服务器已安装系统
  • 系统除了系统盘之外,还需要有一块数据盘
  • 依赖上次安装留下的kickstart文件,如果没有也能手动输出

 

1.3、方案

服务器启动后,会通过grub引导进入系统,修改grub配置可以引导使用OS镜像文件进行启动。

一般情况下OS镜像文件通过带外的虚拟光驱挂载到/dev/cdrom,替换方法是把镜像文件的内容拷贝到一个数据盘上。

 

2、实战

以下通过示例系统进行操作演示,系统盘在/dev/sdc,数据盘使用/dev/sda。

 

2.1、清理数据盘

直接使用mkfs格式化成ext4格式后挂载。

# 格式化/dev/sda
echo y | mkfs -t ext4 /dev/sda

 

2.2、上传OS镜像文件

提前准备好需要安装的系统iso文件,并上传到服务器上。

为了方便文档的后续步骤说明,上传到镜像文件命名为target.iso。

 

2.3、挂载镜像和数据盘

# 挂载镜像文件
mkdir /root/temp
mount /root/target.iso /root/temp

# 挂载/dev/sda数据盘
mkdir /root/sda
mount /dev/sda /root/sda

# 拷贝镜像内容到数据盘
cp -r /root/temp/* /root/sda/

 

2.4、拷贝kickstart文件

一般系统安装完会有当前系统的安装信息(包括时区、系统盘划分、预装软件、账号密码),文件是/root/anaconda-ks.cfg,在这个文件的基础上可以直接修改使用。

# 拷贝kickstart文件到数据盘
cp /root/anaconda-ks.cfg /root/sda/ks.cfg

 

2.5、导出当前网络配置(可选)

把网卡的配置文件(/etc/sysconfig/network-scripts目录下的文件)导出成一个shell脚本,导出路径为/root/network-scripts.txt。

注意:Rocky Linux使用NetworkManager配置网卡,因此配置文件不再在/etc/sysconfig/network-scripts目录下,方法不适用。

prefix='/etc/sysconfig/network-scripts'
for file in $prefix/*; do
  if [[ $file == $prefix/ifcfg-bond* ]] \
    || [[ $file == $prefix/ifcfg-en* ]] \
    || [[ $file == $prefix/route* ]]; then
    echo "cat > $file << EOF
$(cat $file)
EOF
" >> /root/network-scripts.txt
  fi
done

 

2.6、修改kickstart文件

修改kickstart文件,添加自定义内容。

上图中,post追加的是我们在2.5章节导出的网卡配置脚本。

 

2.7、生成grub配置

一般grub的配置文件是/etc/grub2-efi.cfg或者/etc/grub2.cfg,修改/etc/grub.d/40_custom后重新用命令生成配置。

x86和ARM的主要区别是在grub中的命令,一个是linuxefi和initrdefi,一个是linux和initrd。

 

海光x86命令如下:

# 海光x86
cat >> /etc/grub.d/40_custom << EOF
menuentry 'Automatic Installation' --class fedora --class gnu-linux --class gnu --class os {
        search --no-floppy --fs-uuid --set=root $(ls -lh /dev/disk/by-uuid/ | grep sda | awk '{print$9}')
        linuxefi /images/pxeboot/vmlinuz inst.ks=hd:/dev/sda inst.stage2=hd:/dev/sda console=tty
        initrdefi /images/pxeboot/initrd.img
}
EOF

 

鲲鹏ARM命令如下:

# 鲲鹏ARM
cat >> /etc/grub.d/40_custom << EOF
menuentry 'Automatic Installation' --class fedora --class gnu-linux --class gnu --class os {
        search --no-floppy --fs-uuid --set=root $(ls -lh /dev/disk/by-uuid/ | grep sda | awk '{print$9}')
        linux /images/pxeboot/vmlinuz inst.ks=hd:/dev/sda inst.stage2=hd:/dev/sda console=tty
        initrd /images/pxeboot/initrd.img
}
EOF

 

2.8、生成配置

# 重新生成配置
grub2-mkconfig -o /etc/grub2-efi.cfg

# 此处指定下次重启使用第三个选项(正常默认是两个,我们新增了一个,可以参考后续的图片说明为什么是第三个)
grub2-reboot 2

 

2.9、重启服务器

服务器系统中直接执行重启命令,或者带外进行重启。

 

2.10、等待重装完成

安装过程可以通过带外进行查看。

下图可以看到我们2.7章节追加的“Automatic Installation”选项,并且可以看到为什么2.8章节说的是第三个选项。

 

自动根据KickStart文件内容填充安装过程需要配置的选项,安装完成后会自动重启。

 

如果在2.5章节配置了网络相关,安装完成后可以直接连接上去;如果没有,就需要登录带外进行网络配置。

 

3、总结

建议是在能登录带外的情况下进行使用,盲目配置很容易卡在系统启动引导的界面而无法进入系统。

如果在环境稳定且频繁需要重装的情况,该方法能在不改动环境网络的情况下,快速完成服务器系统的重装。

文章来自个人专栏
陈嘉杰
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
2
1