請訪問原文鏈接:https://sysin.org/blog/rocky-linux-8-install,查看最新版。原創作品,轉載請保留出處。
作者:gc(at)sysin.org,主頁:www.sysin.org
iso 下載:https://sysin.org/blog/rocky-linux-8
ovf 下載:https://sysin.org/blog/rocky-linux-8-ovf
Redhat 對 CentOS Linux 8 的支持也已從 2029年 5 月 31 日縮短至 2021 年 12 月 31 日。
Rocky Linux 8 正式版已經發布,作為 CentOS 的權威替代,是時候考慮將 CentOS 8 替換為 Rocky Linux 了。
Rocky Linux 簡介
2021 年 6 月 21 日,Rocky Linux 8.4 首個正式版發布,Rocky Linux 由 CentOS 項目的創始人 Gregory Kurtzer 領導。

以社區驅動為導向,為您帶來企業級、可生產的 Linux 系統。
Rocky Linux 項目是什么?
Rocky Linux 是一個社區化的企業級操作系統。其設計為的是與美國頂級企業 Linux 發行版實現 100% Bug 級兼容,而原因是后者的下游合作伙伴轉移了發展方向。目前社區正在集中力量發展有關設施。Rocky Linux 由 CentOS 項目的創始人 Gregory Kurtzer 領導。目前已經發布了首個正式版。
常見問題
“下游合作伙伴轉移了發展方向” 是什么意思?
CentOS 項目最近宣布了 CentOS 的戰略轉變,CentOS 以前是作為上游供應商的下游構建版本存在的(即它會在上游供應商之后收到補丁和更新),而現在它將轉移為一個上游構建版本(即它會在上游供應商納入之前測試補丁和更新)。另外,對 CentOS Linux 8 的支持也已從 2029 年 5 月 31 日縮短至 2021 年 12 月 31 日。
那么 Rocky Linux 從何而來呢?
Rocky Linux 的目標是像 CentOS 以前那樣作為一個下游構建版本,在被上游供應商納入包更新之后(而不是之前)構建發行。
CentOS 是紅帽公司(Red Hat, Inc.)的注冊商標,Rocky Linux 項目既不隸屬於紅帽公司(Red Hat, Inc.),也無受其認可。
新特性
CentOS 8 新特性
-
DNF 成為了默認的軟件包管理器,同時 yum 仍然是可用的(yum 是 dnf 的鏈接)
-
使用網絡管理器(
nmcli和nmtui)進行網絡配置,移除了網絡腳本 -
使用 Podman 進行容器管理
-
引入了兩個新的包倉庫:BaseOS 和 AppStream
-
使用 Cockpit 作為默認的系統管理工具
-
默認使用 Wayland 作為顯示服務器
-
iptables將被nftables取代 -
使用 Linux 內核 4.18
-
動態編程語言、Web 和數據庫服務器
Python 3.6是默認的 Python 環境,有限支持 Python 2.7Node.js是在 RHEL 最新包含的,其他動態語言更新包括:PHP 7.2,Ruby 2.5,Perl 5.26,SWIG 3.0- RHEL 8 提供的數據庫服務包括:
MariaDB 10.3,MySQL 8.0,PostgreSQL 10,PostgreSQL 9.6, 和Redis 5 - RHEL 8 提供
Apache HTTP Server 2.4以及首次引入的,nginx 1.14 Squid版本升級到 4.4 ,同時也首次提供Varnish Cache 6.0
CentOS 8.4 Upstream changes
See the Overview section of the upstream RHEL 8.4 release notes.
Of particular note, this release adds the following new versions of software in optional module streams.
- Python 3.9
- SWIG 4.0
- Subversion 1.14
- Redis 6
- PostgreSQL 13
- MariaDB 10.5
Several rolling AppStream have been rebased to newer versions.
- LLVM Toolset 11.0.0
- Rust Toolset 1.49.0
- Go Toolset 1.15.7
Yum repo file and repoid changes
You may also want to update any scripts that you have that specify repoids using the --enablerepo or --disablerepo flags
| Repoid (8.2.2004 and before) | Repoid (8.3.2011 and later) |
|---|---|
| BaseOS | baseos |
| AppStream | appstream |
| PowerTools | powertools |
| centosplus | plus |
| HighAvailability | ha |
| base-debuginfo | debuginfo |
| Devel | devel |
| BaseOS-source | baseos-source |
| AppStream-source | appstream-source |
| centosplus-source | plus-source |
| base-debuginfo | debuginfo |
安裝要點
詳細步驟參看 CentOS 8 安裝截圖,這里列出幾個注意點。
推薦使用 Minimal 安裝介質。
先配置網絡,否則某些項目無法配置。
-
Network & Hostname:點擊 OFF 按鈕為 ON,點擊 Configure... 按鈕,General 頁面注意勾選 “Connect automatically with priority”,根據需要手動配置 IP 地址和 DNS。
-
Installation Destination:點選 Custom,默認使用 LVM,點擊 “Click here to create them automatically” 自動創建,手動調整:刪除 /home,將 SWAP 修改為整數 4 GiB,/boot 默認 1024 MiB,剩余分配給 /。
-
Installation Source:如果是 Minimal 或者 DVD 介質,默認是 Local media
如果是 boot 安裝介質,配置網絡后自動修改為 Cloest mirror,也可以根據需要手動指定:這里可以使用 163 或者阿里雲鏡像 https://mirrors.aliyun.com/CentOS/8/BaseOS/x86_64/os/
https://mirrors.163.com/CentOS/8/BaseOS/x86_64/os/ -
Keyboard:默認 English (US)
-
Language Support:下拉到最下面 “中文”,勾選 “簡體中文” 和兩個 “繁體中文”
-
Software Selection:Minimal Install,勾選 "Development Tools",虛機同時勾選 “Guest Agent”
-
KDUMP:默認啟用
-
Time & Date:點選 Asia/Shanghai,Network Time 自動 ON(前面先配置了網絡)
-
Security Policy:暫無,忽略
-
Root Password:支持 root 密碼
-
User Creation:新建額外的賬號,可選
"Development Tools" 有哪些軟件?
# dnf groupinfo "Development Tools"
Updating Subscription Management repositories.
Group: Development Tools
Description: A basic development environment.
Mandatory Packages:
autoconf
automake
binutils
bison
flex
gcc
gcc-c++
gdb
glibc-devel
libtool
make
pkgconf
pkgconf-m4
pkgconf-pkg-config
redhat-rpm-config
rpm-build
rpm-sign
strace
Default Packages:
asciidoc
byacc
ctags
diffstat
git
intltool
ltrace
patchutils
perl-Fedora-VSP
perl-generators
pesign
source-highlight
systemtap
valgrind
Optional Packages:
cmake
expect
rpmdevtools
rpmlint
手動安裝開發工具命令:dnf groupinstall "Development Tools"
系統配置
1. 格式化網卡命名
即禁用 consistent interface device naming
要點:與 CentOS 7 配置上略有不同。
- CentOS 7:net.ifnames=0 biosdevname=0
- CentOS 8:net.ifnames=0
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost ~]# ls
ifcfg-ens33
注意這里的名稱根據硬件有所變動,這里是 vm 環境,本次名稱為 ens33,如果你希望繼續使用 eth0 這樣的傳統名稱,那么在安裝啟動時加上參數:net.ifnames=0
這種變化的原因,從 CentOS 7 開始,是由於 systemd 和 udev 引入了一種新的網絡設備命名方式 – 一致網絡設備命名(CONSISTENT NETWORK DEVICE NAMING)。可以根據固件、拓撲、位置信息來設置固定名字,帶來的好處是命名自動化,名字完全可預測,在硬件壞了以后更換也不會影響設備的命名,這樣可以讓硬件的更換無縫化。帶來的不利是新的設備名稱比傳統的名稱難以閱讀。比如新的名稱是 enp5s0.
Rocky Linux 8 grub 默認配置如下:
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed's, release .*$,,g'/etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
不同於 CentOS 8,沒有 rhgb quiet
rhgb 表示 redhat graphics boot,就是會看到圖片來代替啟動過程中顯示的文本信息,這些信息在啟動后用 dmesg 也可以看到
quiet 表示在啟動過程中只有重要信息顯示,類似硬件自檢的消息不回顯示
1.1 編輯 grub 配置文件
# 如果系統已經安裝,希望改成 eth0 這樣的名稱,那么需要:
# 修改 grub2 啟動參數
vi /etc/default/grub
# 也有文章修改 /etc/sysconfig/grub,該文件是 /etc/default/grub 的鏈接
# 增加內容:net.ifnames=0
# 原內容:
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap"
# 修改后 (位置並沒有嚴格要求,一般添加在最后面即可):
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap net.ifnames=0"
#保存
:x
因為默認沒有 rhgb quiet 參數,以下僅適用於 CentOS
# 直接用 sed 命令替換
# CentOS 8
sed -i 's/rhgb/net.ifnames=0 rhgb/' /etc/default/grub
# CentOS 7
sed -i 's/rhgb/net.ifnames=0 biosdevname=0 rhgb/' /etc/default/grub
1.2 運行如下命令重建 grub.cfg 文件
# legacy boot mode:
grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFI boot mode:
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
1.3 重命名網卡配置文件
# 重新對文件進行命名:
cd /etc/sysconfig/network-scripts/
mv ifcfg-ens33 ifcfg-eth0
vi ifcfg-eth0
編輯 NAME=eth0
編輯 DEVICE=eth0
注釋 HWADDR,如果有
1.4 重啟生效
reboot
重新登錄后,執行命令 nmcli 可以看到網卡名稱已經變成 “eth0”,則配置成功。
參考:官方文檔
2. 配置網絡
2.1 方法一:手工配置 ifcfg,使用 nmcli 來生效新的網絡配置
安裝過程中最好配置好網絡,如果需要編輯網絡,修改配置文件如下:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none #static,使用靜態 IP 配置(CentOS 8 這里是 none 也是靜態)
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=34f808f1-1232-4900-83db-82d32533f776
DEVICE=eth0
ONBOOT=yes #開機自動啟用網絡連接
IPADDR=10.3.5.5 #IP 地址
PREFIX=24 #掩碼
GATEWAY=10.3.5.1 #默認網關
DNS1=10.3.5.11 #DNS 服務器
DNS2=10.3.5.12 #備用 NDS 服務器
DOMAIN=sysin.org #域名
IPV6_PRIVACY=no
nmcli c reload #重新加載網絡配置
ping www.baidu.com #測試網絡是否正常
ip addr #查看 IP 地址
重啟網絡
比如配置了靜態路由,使用
nmcli c reload無法生效,需要重啟網絡
systemctl restart NetworkManager.service
nmcli networking off && nmcli networking on
注意:CentOS 8 (默認安裝) 重啟網絡 "systemctl restart network" 已經不可用。
nmcli n #查看 nmcli 狀態
nmcli n on #啟動 nmcli
nmcli c up eth0 #啟動網卡 eth0
nmcli c down eth0 #關閉網卡 eth0
nmcli d c eth0 #激活網卡
nmcli d show eth0 #查看網卡 eth0 信息
nmcli r all off #關閉無線
2.2 方法二:RHEL8/CentOS8 完全使用 nmcli 來管理網絡
nmcli 命令幫助:
命令不支持自動補全,但是可以通過 - h 參數逐步獲得幫助
## 說明 nmcli 后面的命令關鍵字都可以用第一個字母簡寫來標識,例如:
## nmcli connection = nmcli c
## nmcli connection show --active = nmcli c s --a
nmcli -h
nmcli connection -h
nmcli connection add -h
nmcli connection modify -h
創建一個完整的配置文件:
IFACE=`nmcli dev|grep ethernet|awk '{print $1}'`
nmcli con delete $IFACE
# 下面將使用傳統的 eth0 命名方式,前提是已經做了格式化網卡名稱的配置
nmcli con add con-name eth0 ifname eth0 type ethernet autoconnect yes
nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 10.3.5.5/24 \
ipv4.dns "10.3.5.11, 10.3.5.12" \
ipv4.gateway 10.3.5.1 \
ipv4.dns-search sysin.org
nmcli c up eth0
nmcli c reload
可以配置的參數選項:
ipv4.[method, dns, dns-search, dns-options, dns-priority, addresses, gateway, routes, route-metric, route-table, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-timeout, dhcp-send-hostname, dhcp-hostname, dhcp-fqdn, never-default, may-fail, dad-timeout]
nmcli 示例命令參考:
# 查看網卡信息
nmcli connection
NAME UUID TYPE DEVICE
eth0 db05ccae-3a48-4300-b3a6-7c56429c4f54 ethernet eth0
# 顯示具體的網絡接口信息
nmcli connection show eth0
# 顯示所有活動連接
nmcli connection show --active
# 刪除一個網卡連接
nmcli connection delete eth0
# 創建一個網卡連接
IFACE=`nmcli dev|grep ethernet|awk '{print $1}'`
nmcli con delete $IFACE
nmcli con add con-name "$IFACE" ifname "$IFACE" type ethernet autoconnect yes
# 給 eth0 添加一個 IP 和子網掩碼(NETMASK)
nmcli connection modify eth0 ipv4.addresses 10.3.5.5/24
# 給 eth0 添加兩個 IP 地址和掩碼
nmcli connection modify eth0 ipv4.addresses "10.3.5.5/24, 10.3.5.6/24"
# IP 獲取方式設置成手動(BOOTPROTO=static/none)
nmcli connection modify eth0 ipv4.method manual
# 添加一個 ipv4
nmcli connection modify eth0 +ipv4.addresses 10.3.5.6/24
# 刪除一個 ipv4
nmcli connection modify eth0 -ipv4.addresses 10.3.5.6/24
# 添加 DNS
nmcli connection modify eth0 ipv4.dns 10.3.5.11
# 同時添加兩個 DNS
nmcli connection modify eth0 ipv4.dns "10.3.5.11, 10.3.5.12"
# 刪除 DNS
nmcli connection modify eth0 -ipv4.dns 10.3.5.11
# 刪除第一個 DNS
nmcli connection modify eth0 -ipv4.dns 1
# 添加一個網關(GATEWAY)
nmcli connection modify eth0 ipv4.gateway 10.3.5.1
# 都可以同時寫,例如:
nmcli connection modify eth0 ipv4.dns 10.3.5.11 ipv4.gateway 10.3.5.1
# 域名 dns-search,對應 ifcfg 中的 DOMAIN
nmcli connection modify eth0 ipv4.dns-search sysin.org
# 使用 nmcli 重新回載網絡配置
nmcli c reload
# 如果之前沒有 eth0 的 connection,則上一步 reload 后就已經自動生效了
nmcli c up eth0
2.3 方法三:手工配置 ifcfg,安裝 network.service 服務
可以通過 yum install network-scripts 來安裝傳統的 network.service,不過 redhat 說了,在下一個 RHEL 的大版本里將徹底廢除,因此不建議使用 network.service。
yum install network-scripts
service network restart #重啟網絡服務
systemctl restart network.service #重啟網絡服務
3. 修改主機名
說明:與 CentOS 7 方法相同
- 即時生效
hostname sysin #設置主機名為 sysin
- 永久生效
vi /etc/hostname #編輯配置文件
sysin #修改 localhost.localdomain 為 sysin
:x #保存退出
或者使用命令:`hostnamectl set-hostname sysin`
同時修改 hosts 文件:
vi /etc/hosts #編輯配置文件
127.0.0.1 sysin #增加一條
:x #保存退出
通過命令快速修改示例
hostnamectl set-hostname sysin
# 主機名這里是 sysin,替換實際名稱直接執行
NICName=`ip add|egrep global|awk '{print $NF}'|head -n 1`
IP=`ip add|grep global|awk -F'[/]+' '{ print $3 }'|head -n 1`
Hostname=`hostname`
HostnameAll=`hostname --fqdn` #注意這里 `` 不是引號
echo "網卡名稱:$NICName"
echo "IP 地址: $IP"
echo "主機名稱: $Hostname $HostnameAll"
echo "$IP $Hostname $HostnameAll">>/etc/hosts
4. 激活 cockpit web console
CentOS 8 默認集成了 cockpit,登錄畫面提示激活方法(模板未啟用):
systemctl enable --now cockpit.socket
然后通過瀏覽器訪問:http://<IP>:9090
補充說明:
Cockpit(飛機駕駛艙)使用方法
在 web 瀏覽器中查看服務器並使用鼠標執行系統任務。很容易管理存儲、配置網絡和檢查日志等操作。
1) RHEL 8 自動安裝了 Cockpit,Cockpit 所需的防火牆端口會自動打開
2) Cockpit 界面可用於將基於策略的解密(PBD)規則應用於受管系統上的磁盤
3) 對於在身份管理(IdM)域中注冊的系統,Cockpit 默認使用域的集中管理的 IdM 資源
4) Cockpit 菜單和頁面可以在移勱瀏覽器上導航
5) 可以從 Cockpit Web 界面創建和管理虛擬機
6) 現在可以將 “虛擬機” 頁面添加到 Cockpit 界面,該界面使用戶可以創建和管理基於 libvirt 的虛擬機
安裝 cockpit
`yum -y install cockpit`
啟用 cockpit
`systemctl enable --now cockpit.socket`
設置開機自啟動同時開啟服務一條命令就可以搞定
使用 Cockpit
Cockpit 監聽 9090 端口
使用瀏覽器訪問 `http://<IP>:9090`
5. 關閉 SELINUX
vi /etc/selinux/config
# SELINUX=enforcing #注釋掉
# SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:x #保存,關閉
setenforce 0 #使配置立即生效,或者重啟系統
#shutdown -r now #重啟系統生效
sestatus #查看狀態
# 直接使用 sed 命令修改
# 修改 ELINUX=enforcing 為 SELINUX=disabled,即替換行
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
# 或者:sed -i '/^SELINUX=enforcing/c SELINUX=disabled' /etc/selinux/config
# 注釋 SELINUXTYPE=targeted
sed -i 's/^SELINUXTYPE=targeted/#&/' /etc/selinux/config
6. 配置 firewalld
關閉 firewalld(模板配置)
CentOS 8 主要改動和 RedHat Enterprise Linux 8 是一致的,基於 Fedora 28 和內核版本 4.18,其中網絡方面的主要改動是用 nftables 框架替代 iptables 框架作為默認的網絡包過濾工具。
systemctl stop firewalld.service #停止 firewall
systemctl disable firewalld.service #禁止 firewall 開機啟動
firewall-cmd --state #查看狀態
firewalld 常用命令(nftables 使用 nft 命令,參看其他文檔)
CentOS 8 中 firewalld 已經與 iptables 解綁,后端改用 nftables,需要用 nft 或者 firewall-cmd 開放端口或者服務。
# 查看配置
firewall-cmd --list-all
firewall-cmd --list-services #默認開放:ssh dhcpv6-client
firewall-cmd --zone=public --list-services #指定區域進行查看
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports #指定區域進行查看
# 查看配置保存文件
cat /etc/firewalld/zones/public.xml
# 添加一個 TCP 端口 (刪除將 add 關鍵字修改為 remove)
firewall-cmd --zone=public --add-port=80/tcp --permanent #--permanent 表示永久生效
firewall-cmd --add-port=80/tcp --permanent #與上面是等價的,默認 zone 為 pulic
firewall-cmd --reload #重新加載配置生效
# 關於 zone
firewall-cmd --get-zones #查看所有 zone 的命令,CentOS 7 一共有 9 個 zone
block dmz drop external home internal public trusted work
firewall-cmd --get-zones ##CentOS 8 有 10 個 zone
block dmz drop external home internal libvirt public trusted work
firewall-cmd --get-default-zone #查看默認的 zone 的命令
public
# 添加一個服務
firewall-cmd --add-service=snmp --permanent
firewall-cmd --reload
firewall-cmd --get-services #查看可用的服務
# 限定源地址訪問
firewall-cmd --add-rich-rule="rule family="ipv4"source address="192.168.1.0/24"port protocol="tcp"port="3306"accept" --permanent
firewall-cmd --reload
添加幾個常用的服務:
firewall-cmd --add-service=snmp --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
禁 Ping:
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop' #全部禁 ping
firewall-cmd --permanent --add-rich-rule='rule family="ipv4"source address="192.168.1.0/24"protocol value="icmp"accept' #指定 192.168.1.0/24 允許 icmp
7. 安裝 EPEL (Extra Packages for Enterprise Linux)
yum -y install epel-release
或者 (EL8):
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
8. 安裝一些必備工具
# 一些基本工具最小化安裝可能沒有 (經測 vim 和 wget 等沒有安裝)
yum -y install vim wget zip unzip
# gcc 等選擇開發工具(上述安裝過程建議勾選了"Development Tools")
dnf groupinstall "Development Tools"
# Rocky Linux 默認沒有 tar 命令,AlmaLinux 也沒有,但是 CentOS 默認有
yum -y install tar
# 以下網絡工具已經不存在
# yum -y install setuptool system-config-network-tui system-config-firewall-tui
# 默認安裝沒有 ifconfig 命令,安裝 net-tools
# ifconfig、netstat、route 等命令集
yum -y install net-tools
# host、dig 和 nslookup
yum -y install bind-utils
# 更好的 top 工具
yum -y install htop
#Anolis OS 中沒有
#https://github.com/hishamhm/htop
# 文件傳輸:sz 和 rz
yum -y install lrzsz
# 查看日志神器 Log file Navigator
yum -y install lnav
# 該軟件現在已經包含在 EPEL 中
# 初期 EPEL 中沒有,直接在線安裝
#rpm -ivh https://github.com/tstack/lnav/releases/download/v0.9.0/lnav-0.9.0-1.x86_64.rpm
#Anolis OS 中沒有
# NTP 已經廢棄,改用 chrony,默認自帶
# yum -y install ntp
# nc:
yum -y install nc
# lsof:
yum -y install lsof
# tree:
yum -y install tree
# pstree:
yum -y install psmisc
# ncdu:NCurses Disk Usage
yum -y install ncdu #新增工具,模板尚未加入,下個版本更新
# dstat 監控 CPU、磁盤和網絡使用率,下個版本加入
yum -y install dstat
fd 命令(fd-find,強烈推薦)
# 下載(二選一):
# gcc 編譯版本
wget https://github.com/sharkdp/fd/releases/download/v8.0.0/fd-v8.0.0-x86_64-unknown-linux-gnu.tar.gz
# musl libc 編譯版本 (推薦)
wget https://github.com/sharkdp/fd/releases/download/v8.0.0/fd-v8.0.0-x86_64-unknown-linux-musl.tar.gz
# 安裝:
tar -zxvf fd-v8.0.0-x86_64-unknown-linux-*.tar.gz
cd fd-v8.0.0-x86_64-unknown-linux-musl
cp ./fd /usr/local/bin/
cp ./fd.1 /usr/local/share/man/man1/
mandb
可以根據個人習慣安裝一些常用工具。
9. 配置 NTP
在 CentOS 8.0 中默認不再支持 ntp 軟件包,時間同步將由 chrony 來實現。
cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# These servers were defined in the installation:
pool 2.pool.ntp.org iburst #Rocky default
pool 2.centos.pool.ntp.org iburst #CentOS default
pool 0.pool.ntp.org iburst
pool ntp1.aliyun.com iburst
pool ntp2.aliyun.com iburst
10. 安裝 SNMP
yum -y install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils
# 對比 CentOS 7 net-snmp-perl 已經不存在 (未知)
# 因為是模板,這里暫不配置
11. 虛機安裝 VM-tools
在系統安裝時候勾選了 “Guest Agent”,將自動安裝 open-vm-tools
手動安裝 open-vm-tools:
# http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2073803
yum -y install open-vm-tools
# 開啟服務
#chkconfig vmtoolsd on
systemctl enable vmtoolsd.service
# 啟動服務
#service vmtoolsd start
systemctl start vmtoolsd
# 查看版本
vmtoolsd -v
#現在已經 11.2.0
VMware Tools daemon, version 11.2.0.23855 (build-16938113)
12. 用 yum 排除不需要的更新包
# 修改 yum 的配置文件
vi /etc/yum.conf
# 在 [main] 的最后添加 exclude=kernel*
# 示例:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
exclude=kernel*
說明:
通常在用 yum 進行更新時老是會更新內核,這樣就造成了兩個問題:
1). 內核過多,占用系統的空間
2). 如果是自行編譯安裝的 nvidia 顯卡驅動的話,進入更新的核心時需要再重新安裝顯卡驅動
這里介紹好的辦法解決這個問題,就是在更新時排除對內核的更新,方法有兩個:
1). 修改 yum 的配置文件 vi /etc/yum.conf,在 [main] 的最后添加 exclude=kernel*
2). 直接在 yum 的命令行執行如下的命令: yum --exclude=kernel* update
以上的辦法也適合你要求自行排除的其它更新軟件包。
備注:安裝某些軟件包需要新版內核支持,需要刪除以上配置。
13. 更換國內鏡像 yum 源
Rocky Linux 默認 repo 如下:
[root@localhost ~]# dnf repolist
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
extras Rocky Linux 8 - Extras
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
total 44
-rw-r--r--. 1 root root 700 Jun 19 22:20 Rocky-AppStream.repo
-rw-r--r--. 1 root root 685 Jun 19 22:20 Rocky-BaseOS.repo
-rw-r--r--. 1 root root 713 Jun 19 22:20 Rocky-Devel.repo
-rw-r--r--. 1 root root 685 Jun 19 22:20 Rocky-Extras.repo
-rw-r--r--. 1 root root 721 Jun 19 22:20 Rocky-HighAvailability.repo
-rw-r--r--. 1 root root 680 Jun 19 22:20 Rocky-Media.repo
-rw-r--r--. 1 root root 685 Jun 19 22:20 Rocky-Plus.repo
-rw-r--r--. 1 root root 705 Jun 19 22:20 Rocky-PowerTools.repo
-rw-r--r--. 1 root root 736 Jun 19 22:20 Rocky-ResilientStorage.repo
-rw-r--r--. 1 root root 671 Jun 19 22:20 Rocky-RT.repo
-rw-r--r--. 1 root root 2407 Jun 19 22:20 Rocky-Sources.repo
Rocky Linux 國內鏡像源
上海交通大學示例:
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.sjtug.sjtu.edu.cn/rocky|g' \
-i.bak \
/etc/yum.repos.d/Rocky-*.repo
更換其他鏡像,對應按照上面替換 Mirror Name 即可,注意路徑 “/rocky”。
官方列表:https://mirror.rockylinux.org/mirrormanager/mirrors
CN 開頭的站點
| Country | Site Name | Mirror Name | Categories | Bandwidth | Internet2 | Comment |
|---|---|---|---|---|---|---|
| CN | EuropeJing | mirrors.europejing.com | Rocky Linux: http | 300 | No | Personal network, located in Guangdong, mirrors rocky-production every day at 3:00 |
| CN | eScience Center, Nanjing University | mirrors.nju.edu.cn | Rocky Linux: http | https | rsync | 10000 | No | |
| CN | SDU-Mirrors | mirrors.sdu.edu.cn | Rocky Linux: https | 1000 | No | Located in Qingdao, Shandong, China. Shandong University, China. Sync from official Master. Sync once a day for now. |
| CN | SJTUG | mirrors.sjtug.sjtu.edu.cn | Rocky Linux: https | rsync | 1000 | No | Hosted by Shanghai Jiao Tong University Linux User Group. Server Location: Shanghai, China. For downstream mirror maintainers, please email sjtug-mirror-maintainers@googlegroups.com for request before rsync from us. |
| CN | SKYSHE | mirrors.skyshe.cn | Rocky Linux: https | http | 1000 | Yes | Personal network, Sync from official Master. Sync once a day for now. |
修改 epel,若安裝了 epel,同時修改如下:
# dnf repolist
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras Rocky Linux 8 - Extras
# 修改 epel(url 不一樣)
sed -e 's/metalink=/#metalink=/g' \
-e 's/#baseurl=/baseurl=/g' \
-e 's/https:\/\/download.fedoraproject.org\/pub/https:\/\/mirrors.aliyun.com/g' \
-i.bak \
/etc/yum.repos.d/epel*.repo
清理並重新生成軟件包信息緩存
yum clean all
yum autoremove
rm -rf /var/cache/yum
yum makecache
14. 更新軟件包
dnf clean all
dnf mackecache #緩存軟件包信息
dnf upgrade #更新軟件包
#rm -rf /var/cache/dnf
15. 安裝圖形界面
基於特定場景需要,一般不用安裝
yum grouplist #查看可安裝的組件
yum groupinstall "Server with GUI" #安裝 GNOME 圖形界面 (與 CentOS 7 名稱不一樣)
yum groupinstall "Graphical Administration Tools" #將自動安裝
startx #啟動圖形界面
實例:
[root@localhost ~]# yum grouplist
Last metadata expiration check: 1:12:58 ago on Sat 09 Nov 2019 03:59:09 PM CST.
Available Environment Groups:
Server with GUI
Server
Workstation
KDE Plasma Workspaces
Virtualization Host
Custom Operating System
Installed Environment Groups:
Minimal Install
Installed Groups:
Development Tools
Available Groups:
Container Management
.NET Core Development
RPM Development Tools
Smart Card Support
Graphical Administration Tools
Headless Management
Legacy UNIX Compatibility
Network Servers
Scientific Support
Security Tools
System Tools
Fedora Packager
[root@localhost ~]# yum groupinstall "Server with GUI"
Installing Environment Groups:
Server with GUI
Installing Groups:
Container Management
Core
Fonts
GNOME
Guest Desktop Agents
Hardware Monitoring Utilities
Hardware Support
Headless Management
Internet Browser
Multimedia
Common NetworkManager submodules
Printing Client
Server product core
Standard
Transaction Summary
==============================================================================================================
Install 744 Packages
Total download size: 696 M
Installed size: 2.1 G
Is this ok [y/N]:
16. Shell 配置
命令自動補全忽略大小寫
該配置針對 Bash,僅使用 Zsh 可以忽略。
echo 'set completion-ignore-case on' >> ~/.inputrc
修改 ll 命令
Linux 中默認定義了 ll 別名,但參數比較少,需要使用更加強大的 ll 別名。
寫入環境變量(當前用戶優先執行):
zsh:
echo 'alias ll="ls -lahF --color=auto --time-style=long-iso"' >> ~/.zshrc
bash:
echo 'alias ll="ls -lahF --color=auto --time-style=long-iso"' >> ~/.bashrc
注意:僅僅針對當前用戶,寫入全局用戶配置文件:/etc/skel/.bashrc 或者 /etc/skel/.zshrc
高級版 ls:以數字顯示權限
這里我們把命令叫做 lll
命令:
ls -lahF --color=auto --time-style=long-iso | awk '{k=0;s=0;for(i=0;i<=8;i++){k+=((substr($1,i+2,1)~/[rwxst]/)*2^(8-i))}j=4;for(i=4;i<=10;i+=3){s+=((substr($1,i,1)~/[stST]/)*j);j/=2}if(k){printf("%0o%0o ",s,k)}print}'
創建文件
在使用 cat EOF 中出現 $ 變量通常會直接被執行,顯示執行的結果。若想保持 $ 變量不變需要使用 \ 符進行注釋。
#如果非 root 用戶,切換到 root
sudo -i
cat > /usr/local/bin/lll <<EOF
#!/bin/bash
ls -lahF --color=auto --time-style=long-iso | awk '{k=0;s=0;for(i=0;i<=8;i++){k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i))}j=4;for(i=4;i<=10;i+=3){s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2}if(k){printf("%0o%0o ",s,k)}print}'
EOF
#賦予執行權限:
chmod +x /usr/local/bin/lll
#如果非 root 用戶,執行完畢退出
exit
vi 和 vim
CentOS 8 系列 vi 和 vim 是不同的軟件,默認安裝的是 vi,vim 需要手動安裝。
創建 vi 鏈接直接使用 vim:
ln -s /usr/bin/vim /usr/local/bin/vi
創建 vimrc 配置文件:
可以根據個人習慣來配置 vim,並用於全局配置。
# 當面用戶
~/.vimrc
# 全局新用戶默認
/etc/skel/.vimrc
17. Zsh
以下是針對當前用戶配置。全局配置請參看其他文章,這里直接使用全局配置文件即可。
# Zsh
yum -y install zsh
# or
#dnf -y install zsh
chsh -s /bin/zsh
yum -y install git
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
sed -i '/^ZSH_THEME=.*/c ZSH_THEME="ys"' ~/.zshrc
echo 'alias ll="ls -lahF --color=auto --time-style=long-iso"' >> ~/.zshrc
git clone https://github.com/sangrealest/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
sed -i '/^plugins=.*/c plugins=(git zsh-autosuggestions)' ~/.zshrc
source ~/.zshrc
18. 清理並制作鏡像模板
清理 dnf/yum 緩存
dnf autoremove
dnf clean all
清理臨時文件夾
rm -rf /tmp/* #清空臨時文件夾
清空歷史記錄
#比較完整的清空歷史記錄
rm -f /var/log/audit/audit*
echo > /var/log/audit/audit.log
rm -f /var/log/secure*
echo > /var/log/secure
rm -f /var/log/btmp*
echo > /var/log/btmp
rm -f /var/log/wtmp*
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > ~/.bash_history
echo > ~/.zsh_history
history -c
至此,Rocky Linux 的基本配置已經完成,可以制作模板了。
