Linux Kernel 0.01 的编译和运行
Linux Kernel 0.01 的編譯和運行
本文操作環境均在?Linux 系統中實現。
==================================================================================
一、準備工作
下面說明的內容要使用?bochs?模擬器和Linux 0.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"命令添加第一主分區(primary 1),占模擬盤的最大尺寸,分區標志為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 環境中。下面將使用模擬軟盤作為Linux 0.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 Kernel 0.01 的编译和运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32F103ZE单片机在WWDG窗
- 下一篇: linux 其他常用命令