自分で操作システムを書きます。


本文は淵先生が書いた『Orange S:一つのオペレーティングシステムの実現』を参考にします。参考記事:http://www.linuxidc.com/Linux/2016-10/135905.htm http://blog.csdn.net/tkp2014/article/details/42527557
実験環境
VMware 11.0+uuntu 14.04(64位)
実験の過程
1.nasmをインストールする
まず、サイトでhttp://www.nasm.us/上でnasmをダウンロードして、ここでバージョンをダウンロードするのはnasm-2.02.tar.gzです。
Terminalでは下記のコマンドを実行してインストールします。
tar xvf nasm-2.2.02 tar.gz/解凍
          
./configure make sudomake install
インストールが完了しました。nasm-versionを入力してインストールが成功したかどうか確認してください。nasmのバージョン情報があれば、インストールが成功したと説明します。
ハローワールドプログラムでnasmをテストできます。ハロー.asmソースコードは以下の通りです。
section .text
global main
main:
mov eax,4 ;4   
mov ebx,1 ;ebx 1    
mov ecx,msge ;         ecx
mov edx,14 ;        edx
int 80h ;    
mov eax,1 ;1   
int 80h ;   

msge:
db "Hello world!",0ah,0dh
上のコードをハロー.asmとして保存し、コマンドを実行します。nasm-f elf 64(elf 32)ハロー.asm(ここでelf 64を使うか、それともelf 32を使うかはオペレーティングシステムの桁数を見て決定します。)gcc-o hello.o.helloを出力すると、「ハローワールド」がインストールされました。
2 bochsをインストールする
BochsはC++で書いています。まずC++関連ソフトをインストールして、コマンドを実行します。
sudo appt-get install build-esential sudo ap-get install xorg-dev sudo ap-get install bison sudo ap-get install g+
サイトでhttps://sourceforge.net/projects/bochs/files/ bochs-2.6.9.tar.gzをダウンロードします。
nasmのインストールと同様に、以下のコマンドを実行します。
sudo tar zxvf bochs-2.9.tar.gz/解凍
解圧後のディレクトリに入り、configurスクリプトを実行して、マシンをテストします。C/C++コンパイラとライブラリがあります。実行:
sudo./configur–enaber-debuggar–enaber-disasm(この二つはデバッグとアンチアセンブル機能を開くために使うものです)
スドメーク
sudo make install//インストール
インストールが間違っている場合は、記事を参照してください。http://www.linuxidc.com/Linux/2016-10/135905.htm
3簡易操作システムを起動する
まず仮想ディスクを作成し、実行:
bximage
以下の通りです
自己动手写操作系统——开发环境搭建_第1张图片
ハードディスクを作成するかそれともフロッピーディスクの映像を作成するかを尋ねる時、私達は「fd」を入力して、フロッピーディスクの映像を選んで、残りのオプションはデフォルトで結構です。
bximageツールを使ってフロッピーディスクの作成を完了すると、現在のツールディレクトリの下にa.imgというフロッピーディスクのイメージが追加されます。次はフロッピーの映像にコードを書き込む必要があります。コードは淵先生の本のコードです。実行コマンド:
dd if=boot.bin of=/home/zjd/Downloads/bochs-2.69/a.img
ifはダウンロードしたミラーがある場所で、ofはフロッピーがある経路です。
これでフロッピーが用意されました。次に、bochs起動に必要なプロファイルを作成します。これは主に仮想コンピュータBIOS&VGA BIOSのパス、メモリサイズ、フロッピーディスクサイズ、起動ディスク、ログファイルの位置、マウスオンとキーボードレイアウトの設定などの設定情報を定義しています。まずbochsrcファイルを新規作成し、ファイルを開いて編集し、内容は以下の通りです。
###############################################################
# Configuration file for Bochs
###############################################################

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

# what disk images will be used 
floppya: 1_44=/home/zjd/Documents/OS/a.img, status=inserted

# choose the boot disk.
boot: floppy

# where do we send log messages?
log: bochsout.txt

# disable the mouse
mouse: enabled=0

# enable key mapping, using US layout as default.
keyboard: keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map
最後に、bochsを実行します。
./bochs-f~/Desktop/bochsrc
ここで、−fの後のパラメータは、bochsrcの経路である。次のインターフェースがあります。
自己动手写操作系统——开发环境搭建_第2张图片
オプション6を選択して実行できます。端末にcを入力し、「ハロー、world」を表示し、第一歩が完了します。
自己动手写操作系统——开发环境搭建_第3张图片