最近工作中需要将几台服务器重装系统, 将 CentOS 6 换成最新的 CentOS 7.5. 于是研究了一下怎么从 grub lagecy 和 grub2 通过网络来升级或安装 CentOS 7.


Table of Contents

  1. 从 CentOS 6 安装 CentOS 7
  2. 从 CentOS 7 重装 CentOS 7
  3. Kickstart 配置文件
  4. 参考

从 grub 通过网络安装很容易, 还可以设置 VNC 远程安装. 从 CentOS 6 安装 CentOS 7, 和对 CentOS 7 重装比较类似.

从 CentOS 6 安装 CentOS 7

在启动之前, 我们需要下载 vmlinuzinitrd.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 配置文件

一般安装好 CentOSFedora 后, 会在 /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
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use network installation
url --url="http://mirror.ihep.ac.cn/centos/7/os/x86_64"
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
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
# Root password
rootpw --iscrypted $6$7Xg630Hqe96PUCMu$mUzleXYhsnNBxHl.U1AZTGGVSqJ6U/7n2.psJ8nlXg0.MMFcEjngSAytOZhD8yM52d2s3PF7vpojhiF6s0iT2/
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Harbin --isUtc
user --groups=wheel --name=eos --password=$6$VWhRMFl9A7LKcekg$0zZOGfO2ezcfbGPRLbNVsrzylddEmlsFw5WTkZSa/0Oh5IGxVXvljRAn8O/sSFxdtHKiqioSYXXZpJ/ipqOaA/ --iscrypted --uid=1000 --gecos="eos" --gid=1000
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
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

需要特别注意的是,安装位置选择硬盘一定要慎重,一定要确定好所选硬盘分区方案后,才能进行安装,否则容易造成数据丢失。


参考

  1. How to install CentOS 7 remotely using VNC
  2. Redhat Enterprise Linux 6 - Installation Guide - BOOT OPTIONS