1. 程式人生 > >某企業生產系統升級Linux系統及內核

某企業生產系統升級Linux系統及內核

編譯 內核

一、背景介紹

Phoenix Talon漏洞曝光後,影響激活目前市面上99%的Linux系統版本,某企業為了提升系統安全性,並滿足合規性要求,計劃將目前redhat 6.2版本升級到6.8版本後,再將內核升級到符合要求的4.11.6版本。由於企業生產系統部署在VMware 虛擬化平臺上,為了安全起見,先將生產系統中的一套業務系統(3臺)虛擬機克隆一份,在克隆出來的虛擬機上進行測試,測試完成後,關閉原有虛擬機運行觀察一個月,確認運行正常,刪除原有虛擬機。

二、操作步驟

1.在vCenter上找到目標虛擬機並進行克隆(步驟略)

2.啟動克隆後的虛擬機,此時克隆後的虛擬機無法連接網絡,此時使用ifconfig命令看到設備名稱變為eth3

技術分享

3.打開/etc/sysconfig/network-script目錄,發現克隆後的虛擬機多出一個ifcfg-Auto_eth2的設備名稱,但是原有虛擬機的IP地址等設置信息並不在ifcfg-eth0中

技術分享

4.打開此虛擬機的設置,找到虛擬網卡的mac地址

技術分享

5.再到/etc/udev/rules.d/目錄下找到70-persistent-net.rules文件

技術分享

6.打開70-persistent-net.rules文件發現克隆後的虛擬機在70-persistent-net.rules文件中變成了4個網卡,與虛擬機網卡mac地址相吻合的設備名稱變成了eth3,這也就能解釋步驟2中ifconfig命令看到的設備名稱是eth3。

技術分享

7.刪除70-persistent-net.rules文件中多余的網卡信息,並將eth3改為eth0後,刪除/etc/sysconfig/network-script目錄下現有網卡配置文件,並將ifcfg-Auto_eth2改名為ifcfg-eth0後重啟虛擬機,此時克隆後的虛擬機網絡連接就恢復正常。

技術分享

8.將光盤分別掛載到3臺虛擬機上,並將光盤設置為本地yum源,使用yum update命令進行操作系統及內核升級(步驟略)

9.升級完成後系統由redhat6.2升級到6.8,內核版本由2.6.2升級到2.6.4,下載4.11.6內核源碼包上傳至其中一臺VM上,進行內核編譯,編譯完成後更改/boot/grub/grub.conf文件,將默認使用的內核設置為編譯後的內核,重啟虛擬機確認內核版本是否為4.11.6(步驟略)

10.編譯後的內核其實就是在/boot目錄下多了新的initramfs、Syste.map、vmlinuz內核啟動時用到的文件

技術分享

以及在/lib/modules目錄下新內核的庫文件(64位系統編譯完後modules目錄也在/lib而不是/lib64目錄下)

技術分享

11.由於內核編譯過程很費時間,而3臺VM都是運行在虛擬化平臺上,且平臺硬件和VM系統信息完全一樣,所以其他2臺VM就不需要再進行編譯,而是將編譯好的VM /boot目錄下的initramfs、Syste.map、vmlinuz文件和/lib/modules目錄下新內核的庫文件拷貝到其他2臺VM對應目錄下後,再使用編譯好的VM /boot目錄下的grub目錄覆蓋其他2臺VM的grub目錄後,其他2臺VM重啟也就是4.11.6內核了。

產生的疑問

1.grub.conf文件記錄的是各分區的uuid號,直接覆蓋掉待升級內核的grub.conf文件還可以正常啟動,3個VM的uuid完全一樣?

2.升級內核後操作系統比發生改變,而是用yum update命令內核和操作系統都會升級,說明內核和操作系統是兩個獨立的存在,對於內核來說操作系統是不是個類似rpm包的東西,如果是,包名是什麽?

3.通過上述測試發現升級完內核後,程序可以正常啟動,個人感覺內核是一個比操作系統更底層的東西,並且和操作系統無太大直接關系,而應用程序是跑在操作系統上的,與內核的直接關系更小,那麽內核在不同系統版本見是否可以使用直接拷貝的方式



本文出自 “兔樣兔森破” 博客,請務必保留此出處http://arkling.blog.51cto.com/2844506/1941636

某企業生產系統升級Linux系統及內核