Linux Kernel 0.01 的编译和运行
Linux Kernel 0.01 的編譯和運(yùn)行
本文操作環(huán)境均在?Linux 系統(tǒng)中實(shí)現(xiàn)。
==================================================================================
一、準(zhǔn)備工作
下面說(shuō)明的內(nèi)容要使用?bochs?模擬器和Linux 0.11作為開(kāi)發(fā)平臺(tái)。
1. 取得Linux 0.11開(kāi)發(fā)平臺(tái)文件,下載地址是: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. 創(chuàng)建一空文件作為 bochs 模擬磁盤(pán)映像:
$ dd if=/dev/zero of=./B4M bs=512 count=8500
4. 對(duì)模擬磁盤(pán) B4M 分區(qū):
$ su
# losetup /dev/loop0 ./B4M
# fdisk /dev/loop0 -C 100 -H 5 -S 17
??進(jìn)入 fdisk 后使用 "n"命令添加第一主分區(qū)(primary 1),占模擬盤(pán)的最大尺寸,分區(qū)標(biāo)志為81(Minix),然后用"w"命令保存退出。
# losetup -d /dev/loop0
# exit
5. 進(jìn)入 Linux 0.11開(kāi)發(fā)平臺(tái),對(duì)模擬盤(pán)制作 Minix 文件系統(tǒng),在Linux 0.11中,執(zhí)行命令:
# 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 環(huán)境。
二、編譯 Linux Kernel 0.01
1. 先修改 0.01 源碼,修改內(nèi)容包括:
???1) 修改 ./Makefile 中部分編譯命令,刪除 ./{fs,kernel,lib}/Makefile 的CFLAGS選項(xiàng)中的 "-mstring-insns";
???2) 修改 ./boot/boot.s ,把注釋符由 "|" 改為 "!" ;
???3) 修改 ./kernel/system_call.s ,把 _hd_interrupt 中斷向量的開(kāi)中斷命令后移。
???這里有一個(gè) patch 文件,下載后執(zhí)行以下命令完成上面的修改內(nèi)容:
$ tar xzf patch-0.01.tgz
$ cd linux
$ patch -p0 < ../patch-0.01
2. 把修改后的源碼復(fù)制到 Linux 0.11 環(huán)境中。下面將使用模擬軟盤(pán)作為L(zhǎng)inux 0.11環(huán)境和系統(tǒng)的數(shù)據(jù)交換區(qū),請(qǐng)先對(duì)相應(yīng)文件作好備份。
$ 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. 進(jìn)入 Linux 0.11開(kāi)發(fā)平臺(tái),復(fù)制并編譯 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 復(fù)制出來(lái),作為模擬啟動(dòng)軟盤(pán)。
$ su
# mount -o loop bootimage-0.11-hd ./tmp
# cp ./tmp/Image-0.01 .
# umount ./tmp
# exit
三、運(yùn)行 Linux 0.01
1. 把前面第一和第二階段得到的兩個(gè)文件復(fù)制到目錄 linux-0.01-dev 中
$ cp B4M Image-0.01 ~/linux-0.01-dev
2. 在目錄 linux-0.01-dev 建立 bochs 配置文件,其中的硬盤(pán)和軟盤(pán)參數(shù)如下:
ata0-master: type=disk, path=./B4M, cylinders=100, heads=5, spt=17, translation=none
floppya: 1_44=Image-0.01, status=inserted
3. 啟動(dòng)bochs,現(xiàn)在可以看到提示符 "bash#" 了。
總結(jié)
以上是生活随笔為你收集整理的Linux Kernel 0.01 的编译和运行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: STM32F103ZE单片机在WWDG窗
- 下一篇: Linux下redis安装与使用