最近工作中需要将几台服务器重装系统, 将 CentOS 6 换成最新的 CentOS 7.5. 于是研究了一下怎么从 grub lagecy 和 grub2 通过网络来升级或安装 CentOS 7.
Table of Contents
- 从 CentOS 6 安装 CentOS 7
- 从 CentOS 7 重装 CentOS 7
- Kickstart 配置文件
- 参考
从 grub 通过网络安装很容易, 还可以设置 VNC 远程安装. 从 CentOS 6 安装 CentOS 7, 和对 CentOS 7 重装比较类似.
从 CentOS 6 安装 CentOS 7
在启动之前, 我们需要下载 vmlinuz 和 initrd.img 到 /boot/netinstall
文件夹下, 如果哦已经无法进入系统, 可以放在一个可以访问的 U 盘上.
CentOS 6 的启动方式是 grub lagecy, 配置文件是 /boot/grub/grub.conf
, 我们需要在启动项开始或结束加入一个新的启动项. 如果已经无法进入系统, 在 grub 没有毁坏的情况下, 在启动选择界面 按c进入手动输入模式, 输入以下启动命令.
1 2 3 4
| title CentOS 7 Install root (hd0,2) kernel /netinstall/vmlinuz ro ip=192.168.1.10 netmask=255.255.255.254 gateway=192.168.1.1 dns=1.1.1.1 method=http://mirrors.ustc.edu.cn/centos/7/os/x86_64 lang=en_US keymap=us ksdevice=eth0 initrd /netinstall/initrd.img
|
其中, ip
, netmask
, gateway
, dns
是网络连接信息, method
是网络安装包位置. 根据需要修改网络信息和安装位置. 根据 /boot
所在位置和所下载文件位置, 修改相应路径. 如果要利用 vnc 通过远程拖动进行安装, 需要在kernel
语句后面加上 vnc vncpassword=MyPassword
就可以了. 另外, 如果默认网卡不是 eth0
, 比如eno1
的话, 需要在 kernel
命令行加上 ksdevice=eno1
如果一切没有问题, 之后便会进入图形化安装界面. 如果想自动进行安装, 你可以指定 Kickstart
安装文件. 并在 kernel
语句后面加上文件位置如 ks=http://localfile/centos7.ks
, 这样就会自动进行安装了, 当然需要实现准备好 ks
文件.
从 CentOS 7 重装 CentOS 7
重装 CentOS 7 的过程与 从 CentOS 6 安装 CentOS 7 类似. CentOS 7 使用的引导器是 grub2
, 启动项参数相应有些改变.
1 2 3 4 5
| menuentry "CentOS-7-Install"{ set root=(hd0,msdos2) linux /netinstall/vmlinuz ro ip=192.168.1.10::192.168.1.1:255.255.255.254:my_hostname:eth0:none nameserver=1.1.1.1 inst.repo=http://mirrors.ustc.edu.cn/centos/7/os/x86_64/ inst.vnc inst.vncpassword=MyPassword ksdevice=eth0 ks="http://where.my.ks.file.is" inst.lang=en_US inst.keymap=us initrd /netinstall/initrd.img }
|
其中 ip
的格式为 ip::gateway:netmask:hostname:interface:none
, 或者 ip=dhcp
.如果 硬盘是 GPT
格式的,则需要将 (hd0,msdos2)
改成 (hd0,gpt2)
, 且要加上 inst.gpt
选项. 同样的,需要注意网卡名 interface 和 ksdevice 一定要正确。 之后重启进入 CentOS 7 安装:
1
| grub2-reboot CentOS-7-Install
|
这样重启后一般就会进入自动化安装 CentOS 7
的程序啦.
Kickstart 配置文件
一般安装好 CentOS
或 Fedora
后, 会在 /root
下有一个 anaconda-ks.cfg
, 这就是一个 Kickstart
配置文件, 可以参考这个修改成适合自己的安装脚本。RHEL/CentOS 有一个图形化的配置工具 system-config-kickstart 可以简化 Kickstart 文件的生成配置。
下面是一个简单的 ks 配置文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
auth --enableshadow --passalgo=sha512
url --url="http://mirror.ihep.ac.cn/centos/7/os/x86_64"
graphical
firstboot --enable ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=static --device=eno1 --gateway=202.122.33.1 --ip=202.122.33.38 --nameserver=202.122.33.44 --netmask=255.255.255.128 --ipv6=auto --activate network --bootproto=dhcp --device=eno2 --onboot=off --ipv6=auto network --bootproto=dhcp --device=eno3 --onboot=off --ipv6=auto network --bootproto=dhcp --device=eno4 --onboot=off --ipv6=auto network --hostname=localhost.localdomain
rootpw --iscrypted $6$7Xg630Hqe96PUCMu$mUzleXYhsnNBxHl.U1AZTGGVSqJ6U/7n2.psJ8nlXg0.MMFcEjngSAytOZhD8yM52d2s3PF7vpojhiF6s0iT2/
services --enabled="chronyd"
timezone Asia/Harbin --isUtc user --groups=wheel --name=eos --password=$6$VWhRMFl9A7LKcekg$0zZOGfO2ezcfbGPRLbNVsrzylddEmlsFw5WTkZSa/0Oh5IGxVXvljRAn8O/sSFxdtHKiqioSYXXZpJ/ipqOaA/ --iscrypted --uid=1000 --gecos="eos" --gid=1000
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
clearpart --all --initlabel --drives=sda
part /data --fstype="ext4" --ondisk=sda --size=123775 --label=data part swap --fstype="swap" --ondisk=sda --size=8191 part / --fstype="ext4" --ondisk=sda --size=51200 --label=root part /var --fstype="ext4" --ondisk=sda --size=102400 --label=var part /boot --fstype="ext4" --ondisk=sda --size=500 --label=boot %packages @^developer-workstation-environment @base @core @debugging @desktop-debugging @development @dial-up @directory-client @file-server @fonts @gnome-apps @gnome-desktop @guest-desktop-agents @hardware-monitoring @input-methods @internet-applications @internet-browser @java-platform @load-balancer @mariadb @multimedia @network-file-system-client @performance @perl-runtime @print-client @python-web @ruby-runtime @system-admin-tools @virtualization-client @virtualization-hypervisor @virtualization-tools @web-server @x11 chrony kexec-tools %end %addon com_redhat_kdump --enable --reserve-mb='auto' %end %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
|
需要特别注意的是,安装位置选择硬盘一定要慎重,一定要确定好所选硬盘和分区方案后,才能进行安装,否则容易造成数据丢失。
参考
- How to install CentOS 7 remotely using VNC
- Redhat Enterprise Linux 6 - Installation Guide - BOOT OPTIONS