LinuxKernel0.01的编译和运行 linux编译运行java
本文操作环境均在 Linux 系统中实现。
==================================================================================
一、准备工作
下面说明的内容要使用bochs模拟器和Linux0.11作为开发平台。
1. 取得Linux 0.11开发平台文件,下载地址是:http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-040923.zip
2. 解压缩 linux-0.11-devel-040923.zip,修改其 bochs 配置文件bochsrc-hd.bxrc,添加如下行:
ata0-slave: type=disk, path=./B4M, cylinders=100, heads=5, spt=17,translation=none
3. 创建一空文件作为 bochs 模拟磁盘映像:
$ dd if=/dev/zero of=./B4M bs=512 count=8500
4. 对模拟磁盘 B4M 分区:
$ su
# losetup /dev/loop0 ./B4M
# fdisk /dev/loop0 -C 100 -H 5 -S 17
进入 fdisk 后使用"n"命令添加第一主分区(primary1),占模拟盘的最大尺寸,分区标志为81(Minix),然后用"w"命令保存退出。
# losetup -d /dev/loop0
# exit
5. 进入 Linux 0.11开发平台,对模拟盘制作 Minix 文件系统,在Linux 0.11中,执行命令:
# mkdir /mnt/hd6
# mkfs /dev/hd6 4241
# sync
# mount /dev/hd6 /mnt/hd6
# cd /mnt/hd6
# mkdir root
# cp -R /bin .
# cp -R /dev .
# cd /
# sync
# umount /dev/hd6
# exit
退出 Linux 0.11 环境。
二、编译 Linux Kernel 0.01
1. 先修改 0.01 源码,修改内容包括:
1) 修改 ./Makefile 中部分编译命令,删除./{fs,kernel,lib}/Makefile 的CFLAGS选项中的 "-mstring-insns";
2) 修改 ./boot/boot.s ,把注释符由 "|"改为 "!" ;
3) 修改 ./kernel/system_call.s,把 _hd_interrupt 中断向量的开中断命令后移。
这里有一个 patch文件,下载后执行以下命令完成上面的修改内容:
$ tar xzf patch-0.01.tgz
$ cd linux
$ patch -p0 < ../patch-0.01
2. 把修改后的源码复制到 Linux 0.11 环境中。下面将使用模拟软盘作为Linux0.11环境和系统的数据交换区,请先对相应文件作好备份。
$ cd linux-0.11-devel-040923
$ mkdir tmp
$ su
# mount -o loop bootimage-0.11-hd ./tmp
# cd tmp
# rm -fr *
# cp -R ../linux .
# umount ./tmp
# exit
3. 进入 Linux 0.11开发平台,复制并编译 Kernel 0.01:
# mkdir /fd0
# mount /dev/fd0 /fd0
# cp -R /fd0/linux /usr/src/linux-0.01
# cd /usr/src/linux-0.01
# make
# cp Image /fd0/Image-0.01
# sync
# exit
4. 把编译好的 Kernel 0.01 复制出来,作为模拟启动软盘。
$ su
# mount -o loop bootimage-0.11-hd ./tmp
# cp ./tmp/Image-0.01 .
# umount ./tmp
# exit
三、运行 Linux 0.01
1. 把前面第一和第二阶段得到的两个文件复制到目录 linux-0.01-dev 中
$ cp B4M Image-0.01 ~/linux-0.01-dev
2. 在目录 linux-0.01-dev 建立 bochs 配置文件,其中的硬盘和软盘参数如下:
ata0-master: type=disk, path=./B4M, cylinders=100, heads=5, spt=17,translation=none
floppya: 1_44=Image-0.01, status=inserted
3. 启动bochs,现在可以看到提示符 "bash#" 了。
更多阅读
LINUX操作系统VIM的安装和配置 linux中vim基本操作
LINUX操作系统VIM的安装和配置——简介VI是LINUX下最老牌的编辑工具,而VIM则是VI的升级版本,LINUX系统必备啊。LINUX操作系统VIM的安装和配置——工具/原料LINUX操作系统(ubuntu/Centos)LINUX操作系统VIM的安装和配置——VIM的安装
linux怎样查看当前使用的是哪个终端机 linux 查看当前用户
1、只查看当前终端的可以使用如下两个命令:tty 和 who am i其中who am i仅显示当前用户正使用的终端和登录时间如下图所示:2、查看所有终端1.命令w的功能最全面,能显示用户登录名、终端标志、星期几登录和具体登录时间、闲置时间、用户
怎样删除顽固的程序和文件 精 删除顽固文件的软件
在使用Windows系统的时候,我们经常遇到一些文件或者是程序无法将其删除,这些无法删除的程序大多是插件或者是病毒,有些也有可能是正在运行中,那么有什么办法可以将这些顽固程序和文件删除呢,接着往下看吧,让我们一起学习怎样删除这些顽
Linux端口的关闭和启用 linux查看端口启用
Linux端口的关闭和启用Coaku:Linux下面貌似没有什么直接开启或者关闭端口的命令,因为若仅仅只是开启了端口而不把它与进程相联系的话,端口的开启与关闭就显得毫无意义了(开了端口却没有程序处理进来的数据)。也就是说,Linux里面端口的
终极格斗的训练和实战要诀 街头格斗实战技巧
终极格斗的训练和实战要诀这原是《黑带》杂志2007年6月的一篇文章,对BJPenn(04年UFC次中量级冠军,08年UFC轻量级冠军,发这篇文章时后一个头衔还没拿到)的专访。 此主题相关图片如下:王平编译在世界综合格斗界,要想找出几个世界冠军不是