centos8没有了,虽然Red Hat推出了开发者计划,允许用户使用免费的rhel8,但是云服务厂商普遍没有提供rhel8的镜像,一般的用户还是没有办法在vps上用上rhel8,就连centos8的替代品rocky linux、almalinux大部分云服务厂商也没有提供。
这个博客就是介绍下,如何在公有云vps上通过dd写盘安装rhel8系统。
dd安装脚本
## 如果是国内vps会遇到连接deb.debian.org失败的问题,需要自己设置http代理
## 镜像的root密码是arloor.com
wget http://cdn.arloor.com/rhel/Core_Install_v3.1.sh -O install.sh&&bash install.sh -dd "http://cdn.arloor.com/rhel/rhel8.img.gz"
dd安装使用了www.cxthhhhh.com的脚本,详见一键网络重装系统 - 魔改版
centos8因blscfg模块导致的dd安装失败问题
如果原linux发行版是centos8、rocky linux8等,会因为grub2的blscfg模块导致报错。
blscfg模块不在使用menuentry在grub.cfg中保存启动项,而是在/boot/loader
中保存启动项。现在的网络安装脚本都不支持blscfg,所以需要禁用该模块
sed -i "s/^GRUB_ENABLE_BLSCFG=.*/GRUB_ENABLE_BLSCFG=false/g" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
rm -rf /boot/grub2/grub.cfg.bak
rm -rf /boot/grub2/grub.cfg.old
安装后的操作
磁盘扩容
镜像本身只使用了3.2G空间,需要扩容以使用全部磁盘空间
fdisk -l #查看磁盘
#对新添加的磁盘进行分区,此处使用整块盘
#并将格式化好的盘改成lvm(8e)格式
fdisk /dev/vda
vgdisplay #查看系统中的逻辑组
pvdisplay #查看系统中的物理卷
pvcreate /dev/vda3 #将新分好区的磁盘做成逻辑卷
pvdisplay #查看系统中的物理卷
lvdisplay #查看系统中的逻辑卷
vgextend rhel /dev/vda3 #扩展已有逻辑组
vgdisplay #查看扩展后的逻辑组
lvextend -L 45G /dev/rhel/root #将之前的逻辑卷扩展到45G。根据你的实际情况设置调整后的大小
lvdisplay #查看扩展后的逻辑卷
df -Th #查看系统磁盘使用情况,发现还是原来大小
resize2fs /dev/rhel/root #需要重设一下扩展后的逻辑卷
df -Th #这次再看的话,已经改过来了
注册vps到redhat以获取更新
未注册的vps是无法yum update的,这里需要先行注册红帽开发者计划
sudo subscription-manager remove --all
sudo subscription-manager unregister
sudo subscription-manager clean
sudo subscription-manager register
sudo subscription-manager refresh
sudo subscription-manager attach --auto
红帽开发者计划续约: 红帽开发者计划有效期只有一年,一年后就需要重新注册,流程也比较简单,详见红帽
简单总结:需要你再次注册一年期的开发者订阅,而不提供“续约”,因为续约这种服务是需要付费的(资本主义操了
再次注册也很简单,用浏览器无痕模式打开developers.redhat.com,然后登陆,然后登出,最后关闭所有浏览器。过一会到红帽订阅管理网站就能看到新的开发者订阅。
之前的红帽服务器需要重新注册:
sudo subscription-manager remove --all
sudo subscription-manager unregister
sudo subscription-manager clean
sudo subscription-manager register
sudo subscription-manager refresh
sudo subscription-manager attach --auto
删除旧内核
因为该镜像只给boot分区留了200M,升级几次内核后,boot分区就不够用了。这里提供下删除旧内核的两种方式
方式1:直接删除内核和启动镜像(推荐)
ls /boot/vmlinuz-*|grep -v "rescue"|sort -r|tail -n +2|xargs -I {} rm -rf {}
ls /boot/initramfs-*|grep -v "rescue"|sort -r|tail -n +2|xargs -I {} rm -rf {}
sed -i "s/^GRUB_ENABLE_BLSCFG=.*/GRUB_ENABLE_BLSCFG=false/g" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
rm -rf /boot/grub2/grub.cfg.bak
rm -rf /boot/grub2/grub.cfg.old
这种方式没有更新yum的已安装软件缓存
方式2:通过dnf删除老内核
dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
执行该脚本要求系统运行在已安装的最新内核上。如果不是,请重启并选择第一个启动项启动系统,然后再执行该命令。
方式3:直接不更新内核
上面两种方式是删除老内核给新内核腾空间,也可以选择更新时直接忽略kernel的更新。
vim /etc/yum.conf
## 在[main]最后增加
exclude=kernel*
设置dnf代理
国内vps访问redhat的官方源比较慢,需要设置dnf的代理
vim /etc/dnf/dnf.conf
在[main]的最后面加上
proxy=<scheme>://<ip-or-hostname>[:port]
proxy_username=
proxy_password=
上述镜像是如何创建的
这部分是写给想自己创建rhel8镜像的同学看的。
参考文档
创建镜像
安装系统
wget http://blog.arloor.com/install-rhel8-form-centos7.sh -O a.sh&& bash a.sh
核心注意点:/boot单独分区为简单分区200M,根分区(/)使用lvm分区3.2G,格式ext4,软件选择最小安装
网卡配置选择为dhcp,dd到vps上之后可能需要改为静态ip
修改网卡
查看当前网卡
dmesg | grep eth
[ 4.829146] vmxnet3 0000:03:00.0 eth0: NIC Link is Up 10000 Mbps
[ 5.671853] vmxnet3 0000:03:00.0 ens3: renamed from eth0
我们需要将ens3变更为eth0
查看当前连接信息
# nmcli connection show
NAME UUID TYPE DEVICE
ens3 46f3176f-23ac-4af8-b9fe-08d3c668ba81 ethernet ens3
新增eth0连接
# nmcli connection add type ethernet con-name eth0 ifname ens3
# nmcli connection show
NAME UUID TYPE DEVICE
ens3 46f3176f-23ac-4af8-b9fe-08d3c668ba81 ethernet ens3
eth0 55e201dc-0f9e-44c7-b6ae-da09370e3718 ethernet --
删除ens3连接
# nmcli connection delete ens3
# nmcli connection show
NAME UUID TYPE DEVICE
eth0 55e201dc-0f9e-44c7-b6ae-da09370e3718 ethernet ens3
修改物理网卡名称
# 查看配置文件
# ls /etc/sysconfig/network-scripts/
ifcfg-eth0
# 修改物理网卡名称
# sed -i 's/ens3/eth0/' /etc/sysconfig/network-scripts/ifcfg-eth0
修改grub启动配置
vim /etc/default/grub
#在GRUB_CMDLINE_LINUX_DEFAULT行后边添加
net.ifnames=0 biosdevname=0
grub2-mkconfig -o /boot/grub2/grub.cfg
检查/etc/udev/rules.d/70-persistent-net.rules是否存在,如果存在则删除
关闭防火墙和selinux
## 禁用firewalld
service firewalld stop
systemctl disable firewalld
## 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sestatus
修复启动
打开系统的引导文件
比如/boot/grub2/grub.cfg
确保set root行值不为UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX
如果是的话请修改成hd0,1
最后修改/etc/fstab
将/boot使用的分区删掉
然后在rc.local或者其他能自启动的地方加上
mount /dev/vda1 /boot
chmod +x /etc/rc.d/rc.local
添加虚拟化所需的一些磁盘驱动
在/etc/dracut.conf里添加
add_drivers+="virtio_console virtio_net virtio_scsi virtio_blk"
然后
dracut -f
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
可以看到已经有kvm所需的virtio驱动
-rw-r--r-- 1 root root 8992 Aug 4 2020 usr/lib/modules/4.18.0-240.10.1.el8_3.x86_64/kernel/drivers/block/virtio_blk.ko.xz
-rw-r--r-- 1 root root 15156 Aug 4 2020 usr/lib/modules/4.18.0-240.10.1.el8_3.x86_64/kernel/drivers/char/virtio_console.ko.xz
-rw-r--r-- 1 root root 24804 Aug 4 2020 usr/lib/modules/4.18.0-240.10.1.el8_3.x86_64/kernel/drivers/net/virtio_net.ko.xz
-rw-r--r-- 1 root root 8536 Aug 4 2020 usr/lib/modules/4.18.0-240.10.1.el8_3.x86_64/kernel/drivers/scsi/virtio_scsi.ko.xz
清空历史记录
echo "" > .bash_history
dd
mount /dev/vdb1 /mnt
fdisk -l -u /dev/vda
Disk /dev/vda:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bde00
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/vda1 * 2048 411647 409600 200M 83 Linux
/dev/vda2 411648 7145471 6733824 3.2G 8e Linux LVM
(dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/vda | gzip -9 > /mnt/rhel8.img.gz &)