15年前的RedHat6.2古董Linux在3.16内核重生
csdh11 2025-04-30 16:11 14 浏览
最近我在看《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. 启动失败和对策
安装好系统以后,重启虚拟机,机器会提示如此错误:
在这里找到了线索。做法是在 LILO 提示符出来时按 Tab 键 ,出现两个启动选项,输入 linux-up 回车即可。此时系统就能无误启动成功了。
2. 网卡问题
从启动 QEMU 的命令行可以看出,QEMU 模拟了 rtl8139 这款较老的网卡。在6.2系统中内核已经认出了这个设备。但是用 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 地址。
简单测试一下,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小朋友可能还没见过…%>_<%
熟悉的 Red Hat小红帽 Logo
xdm :
!!!在这里说一下,gdm和xdm现在还没法正常启动一个完整的gnome环境。gnome-session 会core dump。
但是FVMW2,也没有让我失望:
最后看看悲剧的 Netscape浏览器,缅怀一下,当年 Red Hat 6.2是带这款浏览器的,可惜后来被微软在 Windows 里绑定 IE干死了,但是却诞生了伟大的 Mozilla和火狐 Firefox,生得光荣,死得伟大,敬礼…
具体做法是:
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桥接网络的设置可以自行搜索~
相关推荐
- SpringBoot+LayUI后台管理系统开发脚手架
-
源码获取方式:关注,转发之后私信回复【源码】即可免费获取到!项目简介本项目本着避免重复造轮子的原则,建立一套快速开发JavaWEB项目(springboot-mini),能满足大部分后台管理系统基础开...
- Spring Boot+Vue全栈开发实战,中文版高清PDF资源
-
SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础...
- 探秘Spring Cache:让Java应用飞起来的秘密武器
-
探秘SpringCache:让Java应用飞起来的秘密武器在当今快节奏的软件开发环境中,性能优化显得尤为重要。SpringCache作为Spring框架的一部分,为我们提供了强大的缓存管理能力,让...
- 3,从零开始搭建SSHM开发框架(集成Spring MVC)
-
目录本专题博客已共享在(这个可能会更新的稍微一些)https://code.csdn.net/yangwei19680827/maven_sshm_blog...
- Spring Boot中如何使用缓存?超简单
-
SpringBoot中的缓存可以减少从数据库重复获取数据或执行昂贵计算的需要,从而显著提高应用程序的性能。SpringBoot提供了与各种缓存提供程序的集成,您可以在应用程序中轻松配置和使用缓...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 1,从零开始搭建SSHM开发框架(环境准备)
-
目录本专题博客已共享在https://code.csdn.net/yangwei19680827/maven_sshm_blog1,从零开始搭建SSHM开发框架(环境准备)...
- 做一个适合二次开发的低代码平台,把程序员从curd中解脱出来-1
-
干程序员也有好长时间了,大多数时间都是在做curd。现在想做一个通用的curd平台直接将我们解放出来;把核心放在业务处理中。用过代码生成器,在数据表设计好之后使用它就可以生成需要的controller...
- 设计一个高性能Java Web框架(java做网站的框架)
-
设计一个高性能JavaWeb框架在当今互联网高速发展的时代,构建高性能的JavaWeb框架对于提升用户体验至关重要。本文将从多个角度探讨如何设计这样一个框架,让我们一起进入这段充满挑战和乐趣的旅程...
- 【推荐】强&牛!一款开源免费的功能强大的代码生成器系统!
-
今天,给大家推荐一个代码生成器系统项目,这个项目目前收获了5.3KStar,个人觉得不错,值得拿出来和大家分享下。这是我目前见过最好的代码生成器系统项目。功能完整,代码结构清晰。...
- Java面试题及答案总结(2025版持续更新)
-
大家好,我是Java面试分享最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试场景题及答案。...
- Java开发网站架构演变过程-从单体应用到微服务架构详解
-
Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构、集群架构、分布式架构、SOA架构和微服务架构。下面玄武老师来给大家详细介绍下这5种架构模式的发展背景、各自优缺点以及涉及到的...
- 本地缓存GuavaCache(一)(guava本地缓存原理)
-
在并发量、吞吐量越来越大的情况下往往是离不开缓存的,使用缓存能减轻数据库的压力,临时存储数据。根据不同的场景选择不同的缓存,分布式缓存有Redis,Memcached、Tair、EVCache、Aer...
- 一周热门
- 最近发表
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)
- jdk1.8.0_131下载 (34)
- dos 删除目录下所有子目录及文件 (36)