2020年底,CentOS 就完全宣告生命週期終止,連更新安裝都沒辦法了。2021年9月,使用者說他必須裝 6.9 才能跑所需的軟體,只好再來努力的裝。
硬體資訊
依據 Intel 的說明,Intel Gigabit 網路連線有三個 Linux* 基礎驅動程式:
- igb-x.x.x.tar.gz 驅動程式:支援所有 82575/6、82580、I350、I354 和 I210/I211 型的 gigabit 網路連線。
- e1000e-x.x.x.x.tar.gz 驅動程式:支援 Intel® PRO/1000 PCI-E (82563/6/7、82571/2/3/4/7/8/9 或 82583) I217/I218/I219 型的 gigabit 網路介面卡。
- e1000-x.x.x.tar.gz 驅動程式:支援 Intel® PRO/1000 PCI 和 PCI-X 系列的 gigabit 網路連線。
其中 I225 ,Intel 只提供 Win 64 的 driver,Linux 由 kernel 提供,模組名稱為 igc。
安裝經過
使用者僅說要裝 CentOS,但未指定要安那個版本,考慮 CentOS 8 很快就不再維護了,最先裝 CentOS 7。CentOS 7 裝好後,只有 I225 的網卡會動,不過重開機後又不動了,必需把網路線拔掉再重插,即可連上網路。I219 則完全不動,載入 e1000e 的 driver 也偵測不到網卡。只好改裝 CentOS 8,裝好後,兩個網卡都可正常運作。
不過使用者拿回去後,過了幾天就說要改裝 CentOS 6.9 才行,只好經歷重重難關來安裝 CentOS 6.9。
安裝 CentOS 6.9
在官網上說,自 CentOS 6.5 以後,就可以用 USB 隨身碟安裝。但試了用 dd 寫入 USB disk 或用 Rufus 寫都無法成功開機。注意,用 Rufus 將 ISO 檔寫入隨身碟時,要選 ISO 模式。更慘的是,先前可以用光碟片安裝,這次連安裝光碟片都無法開機,只好想其他辦法安裝。最後決定在 VM 中先裝好,再想辦法複製過去。
不敢執行更新,但也無法執行 yum install xxxx ,必須要修改 /etc/yum.repos.d/CentOS-Base.repo 的設定,指向 vault.centos.org,用下列指令一次搞定。
sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\//baseurl=http:\/\/vault.centos.org\/6.10\//g' /etc/yum.repos.d/CentOS-Base.repo
再重新執行安裝。
槮器太新,連 CentOS 都無法正常啟動網路,一定要裝 Intel 的驅動程式,要先裝 devel-tool。
因為要裝最新的網卡驅動程式,必須安裝新版的 gcc。
mount /dev/sdd1 /mnt/src
mount /dev/nvme0n1p1 /mnt/dst
cd /mnt/src
find ./ -xdev -print0 | cpio -pa0V /mnt/dst
cd /mnt
umount /mnt/src
umount /mnt/dst
mount /dev/sdd2 /mnt/src
mount /dev/nvme0n1p2 /mnt/dst
cd /mnt/src
find ./ -xdev -print0 | cpio -pa0V /mnt/dst
cd /mnt
umount /mnt/src
umount /mnt/dst
使用 chroot 進入目標磁碟,建立 grub
mkdir /mnt/sysimage
mount /dev/nvme0n1p2 /mnt/sysimage
mount /dev/nvme0n1p1 /mnt/sysimage/boot
mount --bind /proc /mnt/sysimage/proc
mount --bind /dev /mnt/sysimage/dev
mount --bind /sys /mnt/sysimage/sys
chroot /mnt/sysimage
source /etc/profile
export PS1="(chroot) ${PS1}"
#######
# 進入 chroot 後,安裝 grub
#######
grub-install --target=i386-pc /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg
### 記得修改 /etc/fstab ###
最前面要留約 2MB 的空間,建立 grub boot 資料,不然會出現像下面的錯誤。 可以先建一個 2MB 的分割區,等全部分割區都建好後,再把最前面的分割區刪除。
# grub-install --target=i386-pc /dev/nvme0n1
Installing for i386-pc platform.
grub-install: warning: your embedding area is unusually small. core.img won't fit in it..
grub-install: warning: 不可能內嵌。GRUB 在本設置中僅能藉由區塊清單來安裝。然而,使用區塊清單不僅「不可靠」甚至令人挫折。.
grub-install:錯誤: 不會繼續處理區塊清單.
CentOS 6.9 使用 GRUB 0.97,系統裝在 nvme SSD,開機時會出現下面的錯誤。
yum install bison
wget http://ftp.gnu.org/gnu/grub/grub-2.02.tar.gz
tar xvfz grub-2.02.tar.gz
cd grub-2.02
./configure
make -j4
make install
- yum install gcc gcc-c++
- yum install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
- svn ls svn://gcc.gnu.org/svn/gcc/tags | grep gcc | grep release
- cd ~/cent6-install
- svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_5_release/ (這個會花很多時間)
- cd gcc_4_8_5_release/
- ./contrib/download_prerequisites
- cd ..
- mkdir gcc_4_8_5_build/
- cd gcc_4_8_5_build/
- ../gcc_4_8_5_release/configure --prefix=/usr/local/gcc-4.8.5 --enable-languages=c,c++
- make -j6,約 40分鐘
- sudo make install
- echo "/usr/local/lib64" > gcc-4.8.5.conf
- sudo mv gcc-4.8.5.conf /etc/ld.so.conf.d/
- sudo ldconfig,會出錯,不管它 -- ldconfig: /usr/local/gcc-4.8.5/lib64/libstdc++.so.6.0.19-gdb.py 不是一個 ELF 檔 - 其開頭的魔術位元組是錯的。
struct net_device netdev = pci_get_drvdata(to_pci_dev(dev));
修改成
struct net_device netdev = pci_get_drvdata(pdev);
使用 USB 磁碟安裝
新機器很強,考慮直接在新機器用 USB 磁碟開機,再用 Vmware 的 VM 安裝 CentOS 6.9。USB 磁碟使用 240GB 的 SSD 就很足夠了,裝的是 Ubuntu 18。BIOS 的 CSM 要設成 Legacy,VTx 的 VM支援功能要 enable。然後就可以在新機器上直接進行上述的動作了。
另外,USB 上的 OS 要裝 ssh, xrdp, build-essential,其中 xrdp 可以透過 remote desk 來遠端操作。Ubuntu 要另外安裝 ssh 才能啟動 sshd 服務。Vmare 則需要 gcc 用來安裝 kernel module。
遠端 SSH 連線
ajax@aj-i9 ~ $ ssh ntu@10.161.91.142
Unable to negotiate with 10.161.91.142 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
ajax@aj-i9 ~ $ ssh -o HostKeyAlgorithms\ ssh-rsa ntu@10.161.91.142
The authenticity of host '10.161.91.142 (10.161.91.142)' can't be established.
RSA key fingerprint is SHA256:3VMP62P2ny4P0tOWMjXPGMOWBDhAbzb+pP91J0kcAm4.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.161.91.142' (RSA) to the list of known hosts.
ntu@10.161.91.142's password:
Last login: Tue Jul 5 16:37:45 2022 from 10.161.91.142
[ntu@localhost ~]$