折騰&玩機

折騰靠的是任性:跨越15年的相逢,用 3.16 內核跑 Red Hat 6.2古董 Linux (不是 RHEL 6.2)

最近我在看《KVM 虛擬化技術--實戰與原理解析》這本書,學到了不少虛擬機的玩法。 不由得感嘆自己以前對虛擬機的功能認識還停留在非常簡單的程度。有時間我會在另一篇文章里介紹一下我認為比較有意思的虛擬機折騰玩法。這裡專門記錄我為了能讓15年前紅帽出品的6.2發行版能跑在 QEMU 上所折騰的事情。

為啥要跑 Red Hat 6.2

某個夜深人靜的夜晚,沒有約妹子,我在網上亂逛,在 tldp 站點上看到一篇介紹如何構造最小 Linux 系統的HOWTO文章(http://users.cecs.anu.edu.au/~okeefe/p2b/buildMin/buildMin.html)。文章很老了,2000年的,而且裡面所用的系統是Red Hat Linux 6.1版本的。我一直覺得 LFS 還是太複雜了,而這篇文章所涉及的組件最少,於是我就想找個6.1版的系統安裝到qemu虛擬機上再照著做一個最小系統出來。在這個kernel archive可以找到很多古董發行版。我只找到了6.2版的iso鏡像而文章里所用的6.1版沒有提供鏡像。所以我下載了redhat-6.2-i386.iso安裝盤。

安裝系統

我的host用的是 Ubuntu 14.10。系統安裝有 QEMU 最新版本,啟用kvm模塊。
1. 創建一個硬碟鏡像
qemu-img create -f qcow2 redhat.img 2G
這樣創建了一個2G大小的鏡像
2. 啟動虛擬機&安裝系統
qemu-system-x86_64 redhat.img -cdrom redhat-6.2-i386.iso -net nic,model=rtl8139 -m 128M
安裝系統提供了字元菜單,至於中文就別指望了。不過安裝過程倒很簡單。

遇到的問題

1. 啟動失敗和對策
安裝好系統以後,重啟虛擬機,機器會提示如此錯誤:

3.16-red-hat-6.1-fail

這裡找到了線索。做法是在 LILO 提示符出來時按 Tab 鍵 ,出現兩個啟動選項,輸入 linux-up 回車即可。此時系統就能無誤啟動成功了。

2. 網卡問題
從啟動 QEMU 的命令行可以看出,QEMU 模擬了 rtl8139 這款較老的網卡。在6.2系統中內核已經認出了這個設備。但是用 ifconfig 可以看出網卡接收不到任何數據:

linuxstory-3.16-red-hat-6.2-zoot-ifconfig

我懷疑可能是宿主機的橋接網路設置有問題,於是用相同的配置啟動了ezgo 的虛擬機,發現網卡工作正常。那麼可以確定是6.2自己的內核網卡驅動和 QEMU 的網卡配合起來出問題了。

試試看,用宿主機的內核來啟動

QEMU 提供-kernel 和-initrd 選項用來指定啟動虛擬機 Linux 的內核。我們來試試看用3.16的內核替代6.2紅帽的2.4.7內核看看!
* 步驟一:
將geust的fstab文件中所有hdaX改為sdaX。在老內核中ide設備的命名形式是hda1,hdb2等等,sda是專門命名scsi設備的。現在的內核硬碟都使用了scsi設備驅動,統一都以scsi設備的形式命名。
* 步驟二:
新建/sys目錄,下次啟動就可以掛載sysfs文件系統,這個是2.4內核沒有的功能。
*步驟三: qemu-system-x86_64 redhat.img -net nic,model=rtl8139 -sdl -net tap -enable-kvm -kernel /boot/vmlinuz-3.16.0-25-generic -append 'root=/dev/sda5' -initrd /boot/initrd.img-3.16.0-25-generic
注意在上面的選項中,用-append制定了向內核指定的參數,我們指定了root設備參數。當然推薦再加個vga參數,讓一屏顯示更多字元。

開機

哇塞!新內核可以順利啟動了!真是有點驚喜,經測試,網卡也終於允許正常了,甚至還能獲取到 ipv6 地址。

3.16-red-hat-6.1-boot


簡單測試一下,GCC 什麼的工具都能運行,但是和內核打交道的工具肯定會有問題。例如ps會 core dump。guest中的ps期望讀到的/proc目錄裡面的文件格式是2.4內核生成的文件格式。我們這個3.16內核生成的文件肯定不一樣了。

更改了X配置文件中滑鼠設備路徑,從/dev/mouse 改成/dev/input/mouse0,X也可以啟動了!不過解析度還是有問題。應該深入一下可以解決的。

更新,可以體驗傳說中的 FVWM2

折騰了一晚上,還是沒辦法把 guest 上的X server正常工作, QEMU 的 cirrus 顯卡始終不能在老的X server下工作。於是決定用宿主機開啟一個X server,將 guest 作為X client。上圖!

LILO 引導,新來的 Linux 小朋友可能還沒見過...%>_<%

linuxstory-3.16-red-hat-6.2-zoot-lilo

熟悉的 Red Hat 小紅帽 Logo

linuxstory-3.16-red-hat-6.2-zoot-logo

xdm :linuxstory-3.16-red-hat-6.2-zoot-xdm

!!!在這裡說一下,gdm和xdm現在還沒法正常啟動一個完整的gnome環境。gnome-session 會core dump。

但是FVMW2,也沒有讓我失望:

3.16-red-hat-6.1-graphics

最後看看悲劇的 Netscape 瀏覽器,緬懷一下,當年 Red Hat 6.2 是帶這款瀏覽器的,可惜後來被微軟Windows 里綁定 IE 乾死了,但是卻誕生了偉大的 Mozilla 和 火狐 Firefox,生得光榮,死得偉大,敬禮...

linuxstory-3.16-red-hat-6.2-zoot-Netscape
具體做法是:
1. 在宿主機下載Xnest軟體,在/etc/下添加一個配置文件X1.hosts,此文件允許guest連接本地 :1 伺服器
inet 172.18.18.62 #此ip為guest的ip
2. 宿主機啟動一個新的X server
Xnest :1
或者
xinit -- :1
3. guest 設置 DISPLAY 環境變數,輸入  fvwm2

然後就可以體驗了!!此外我為了體驗一下xdm還將guest上的xdm配置成不啟動本地 X server,只等待外部連接的設置。

尾聲

古董系統是跌跌撞撞勉勉強強啟動起來了。終於可以好好看那個howto繼續做最小系統了。其實還有一些可以折騰的地方,比方說把procps源碼包下載來調試調試,改改ps的源碼讓它在新內核上工作正常。
另一方面,3.16 內核還能帶動15年前的發行版這個事實倒說明了內核對外的介面是非常穩定的。折騰完畢,打完收工。

一起折騰

有小夥伴看完這篇文章也想折騰,不折騰不爽的,我把我處理好的虛擬機文件上傳到了網盤中提供下載歡迎一起折騰,下載地址:http://pan.baidu.com/s/1mg41b9u;文件名是:redhat-6.2-linuxstory.img ;下載到本地在終端中直接執行如下命令即可奇蹟發生(熱淚盈眶),(用戶名 root 密碼 zhu)當然你得先安裝 QEMU ,最新版本是 2.2.0。不謝。guest網卡設置了靜態ip。看官記得根據自己需要修改。

最後總結一下我的啟動命令:

qemu-system-x86_64 redhat-6.2-linuxstory.img -net nic,model=rtl8139 -sdl -net tap -enable-kvm -kernel /boot/vmlinuz-3.16.0-25-generic -append 'root=/dev/sda5 rhgb vga=792' -initrd /boot/initrd.img-3.16.0-25-generic -m 1G

有關於linux橋接網路的設置可以自行搜索~原創折騰,轉載請註明本文地址:http://www.linuxstory.org/meet-after-15-years-red-hat-linux-6-1-zoot-run-on-kernel-3-16/

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
喜歡琢磨內核,折騰 Linux,玩西南大學研究僧 GEEK 一枚,西南大學開源協會和重慶LUG 資深元老玩票~ 國防科技大學 phd candidate

    You may also like

    3 Comments

    1. 當年連邦軟體買的Red Hat 6光碟應該還在

      1. wow!看來是老前輩,前輩好!我覺得這個可以珍藏了^_^

    2. […] 原文:http://www.linuxstory.org/meet-after-15-years-red-hat-linux-6-1-zoot-run-on-kernel-3-16/ 作者: LINGYU […]

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    折騰&玩機

    讓樹莓派變成你的家庭防火牆

    以往,我們自己做家庭防火牆,使用的更多的是一台淘汰的台式主機加裝一張網卡,安裝上一個比較穩定的 Linux 發行版,然後稍作配置即可。不過現在有了樹莓派,我們可以以更低的功耗、更小的空間實現這些功能。
    折騰&玩機

    手把手教你把舊電腦變成一台速度超快的 Chromebook

    很多朋友都體驗過 Chromebook 或者 Chrome 瀏覽器的「健步如飛」,也體驗過用10年前舊電腦慢得「生不如死」,殊不知天地英雄生死之間只隔著一步,這一步上可化腐朽為神奇,下可變破銅爛鐵為神器。那就是今天我們這篇文章能給大家帶來的,教你免費把你的筆記本電腦打造成 Chromebook。
    折騰&玩機

    KDE Connect —— 讓 Android 手機成為 KDE 桌面的一部分

    KDE Connect項目致力於讓設備間能夠互相通信。例如,利用KDE Connect你可以在你的電腦上接受到來自手機的通知,或者將手機用作是桌面電腦的遠程輸入設備。為此,KDE Connect中實現了一個網路安全通信協議,並且可以在此之上開發各類插件。目前KDE Connect為KDE、Android和黑莓開發了客戶端,很快也會支持iPhone。
    折騰&玩機

    你準備好把你的智能手機變成自動四軸無人機嗎?

    你肯定有一部智能手機對吧?那麼,它能灰起來么?為什麼你一臉詫異地看著我?手機現在已經可以滿天灰來灰去啦,是真事兒,而且這一切都歸功於xCraft。當人們都疲於打造裝著槍支彈藥的戰鬥無人機的時候,無人駕駛飛機製造商公司xCraft的CEO,JD Claridge正默默地將他把智能手機轉變成無人機——PhoneDrone的想法正在一步步地實現。