当你面对一台没有显卡的老旧服务器,或者需要通过远程管理节点部署系统时,图形界面安装就成了不可能完成的任务。这时候RHEL 8的文本模式安装就派上了大用场。我去年就遇到过这种情况——机房里有台老掉牙的Dell PowerEdge服务器,显卡早就罢工了,但硬件性能还足够跑一些轻量级服务。
文本模式安装最大的优势就是极度轻量。相比图形安装需要加载各种图形库和桌面环境,文本模式只需要最基本的命令行界面,这对硬件配置要求极低。实测下来,在只有512MB内存的机器上都能顺利完成安装。不过要注意的是,文本模式确实会牺牲一些灵活性,比如无法自定义软件包组合,分区方案也比较固定。
另一个常见场景是远程安装。通过IPMI或者iDRAC这类远程管理接口,配合文本模式安装特别方便。我经常用这种方式给托管在IDC的机器装系统,省去了跑机房的麻烦。只需要准备好安装镜像,设置好启动参数,剩下的工作通过SSH就能搞定。
首先得准备安装介质。推荐使用Ventoy这种多启动U盘工具,一个U盘就能放下RHEL 8的ISO镜像和其他常用工具。我常用的32GB U盘里存了从RHEL 7到9的全系列镜像,特别方便。制作步骤很简单:
bash复制# 下载Ventoy
wget https://github.com/ventoy/Ventoy/releases/download/v1.0.88/ventoy-1.0.88-linux.tar.gz
tar zxvf ventoy-1.0.88-linux.tar.gz
cd ventoy-1.0.88
# 将U盘格式化为GPT分区表
sudo ./Ventoy2Disk.sh -i /dev/sdX
然后把RHEL 8的ISO镜像直接拷贝到U盘根目录就行。相比传统刻录方式,Ventoy不会修改ISO文件,还能随时更新镜像版本。
安装前最好确认下硬件兼容性。虽然RHEL 8对老硬件支持不错,但还是有些坑要注意:
建议先用Live CD启动,用lspci命令检查硬件识别情况:
bash复制lspci -nn | grep -E 'SATA|SAS|Ethernet'
插入U盘启动后,在GRUB界面需要添加启动参数。不同固件类型的操作略有区别:
在linuxefi或linux16那行末尾加上inst.text参数,这是启用文本模式的关键。我习惯再加些优化参数:
code复制inst.text nomodeset quiet ip=dhcp
nomodeset可以避免显卡模式设置问题,ip=dhcp则让安装程序自动获取网络配置。按Ctrl+X启动后,就会进入纯文本安装界面。
文本安装界面虽然简陋,但功能齐全。底部有五个tmux窗口可用快捷键切换:
我调试时经常在F1和F2之间切换,遇到问题可以随时查看日志。所有配置项都有对应的数字编号,输入数字就能进入相应设置界面。
文本模式下的分区比较自动化,但仍有几个重要选项:
对于生产服务器,我建议选第一种方案,让安装程序自动配置LVM。这样后期调整分区大小特别方便。比如要扩展/var空间:
bash复制lvextend -L +10G /dev/mapper/rhel-var
xfs_growfs /var
文本模式下软件选择比较有限,只有几个预设环境:
我一般选Minimal Install,等系统装好后再用dnf安装需要的软件。这样可以保持系统最精简,减少安全风险。比如要装Web服务:
bash复制dnf install -y httpd php-fpm mariadb-server
dnf groupinstall -y "Development Tools"
虽然安装时可以不配网络,但建议提前设置好,方便安装后直接使用。关键配置项包括:
配置示例:
code复制1) Edit IPv4 Configuration
Address: 192.168.1.100
Netmask: 255.255.255.0
Gateway: 192.168.1.1
2) Set Hostname: server01.example.com
3) Configure DNS: 8.8.8.8,8.8.4.4
安装完成后首次重启,建议立即进行这些操作:
bash复制dnf update -y
bash复制dnf install -y vim bash-completion net-tools lsof
bash复制firewall-cmd --permanent --add-service={http,https,ssh}
firewall-cmd --reload
作为服务器,基本的安全措施必不可少:
bash复制sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
bash复制dnf install -y dnf-automatic
sed -i 's/apply_updates = no/apply_updates = yes/' /etc/dnf/automatic.conf
systemctl enable --now dnf-automatic.timer
bash复制dnf install -y epel-release
dnf install -y fail2ban
systemctl enable --now fail2ban
如果安装过程卡在某个步骤,先检查tmux的日志窗口(Ctrl+Alt+F3)。常见问题包括:
inst.nodmraid参数mem=1024M参数限制内存使用如果安装后无法进入系统,可以尝试:
systemd.unit=rescue.target有时重启后网络设置会恢复默认,这时需要重新生成网络配置:
bash复制nmcli con mod "System eth0" ipv4.addresses "192.168.1.100/24"
nmcli con mod "System eth0" ipv4.gateway "192.168.1.1"
nmcli con mod "System eth0" ipv4.dns "8.8.8.8,8.8.4.4"
nmcli con up "System eth0"
如果需要批量部署,可以结合Kickstart实现无人值守安装。先在一台机器上生成配置文件:
bash复制cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
chmod 644 /var/www/html/ks.cfg
然后在启动参数中添加:
code复制inst.ks=http://your-server/ks.cfg
为了方便管理,建议安装这些工具:
bash复制dnf install -y cockpit
systemctl enable --now cockpit.socket
bash复制mkdir -p ~/.ssh
curl https://github.com/your-username.keys >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
根据服务器角色调整内核参数:
bash复制echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
sysctl -p
bash复制echo "vm.swappiness = 10" >> /etc/sysctl.conf
echo "vm.dirty_ratio = 30" >> /etc/sysctl.conf
sysctl -p
经过这些年的实战,我发现文本模式安装虽然看起来简陋,但在服务器环境里反而更可靠。特别是遇到硬件兼容性问题时,去掉图形界面这个变量后,问题往往就迎刃而解了。最近给一批老机器装RHEL 8,文本模式成功率接近100%,而图形安装有一半会卡在加载界面。