折腾&玩机

折腾靠的是任性:跨越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 […]

    回复 lpsk 取消回复

    您的电子邮箱地址不会被公开。 必填项已用*标注

    此站点使用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的想法正在一步步地实现。