天天看點

ubuntu環境下寫一個簡單的作業系統(一)linux下建立軟碟鏡像與格式化

    之是以加入這麼一節是因為許多制作作業系統的參考書都是從軟碟講起的,而現在市場上基本不存在軟碟一說,是以建立一個虛拟的軟碟就十分必要。這節主要包括三個linux指令bximage(建立軟碟的工具如果沒有需要apt install)、mount、mkfs。

    好了廢話少說,開始建立虛拟磁盤吧選擇一個工作目錄,打開終端。執行bximage,效果如下所示,其中以#開頭的是我的說明和注釋。

[email protected]:~$ mkdir temp
#作為示範我在home目錄裡建了一個temp檔案夾,cd轉到這個檔案夾
[email protected]:~$ cd temp
[email protected]:~/temp$ bximage
#輸入bximage 出現如下結果
=======================================================================
                                bximage
                  Disk Image Creation Tool for Bochs
          $Id: bximage.c 11315 2012-08-05 18:13:38Z vruppert $
========================================================================

Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd
#詢問建立硬碟還是軟碟,選擇fd 軟碟
Choose the size of floppy disk image to create, in megabytes.
Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
 [1.44] 
#請輸入軟碟大小,預設1.44MB ,直接回車取預設值
I will create a floppy image with
  cyl=80
  heads=2
  sectors per track=18
  total sectors=2880
  total bytes=1474560

What should I name the image?
[a.img] 
#輸入檔案名字預設a.img
Writing: [] Done.

I wrote 1474560 bytes to a.img.

The following line should appear in your bochsrc:
  floppya: image="a.img", status=inserted
[email protected]:~/temp$ 
           

    這樣就好了,也許你會好奇bximage是怎麼樣建立一個虛拟軟碟的,其實這個過程很簡單就是建立了一個名字為a.img的檔案1.44MB的NULL,也就是十六進制的'\00',可以在上面的指令行直接輸入

temp$ vim a.img
           
ubuntu環境下寫一個簡單的作業系統(一)linux下建立軟碟鏡像與格式化

    看到的結果如圖所示,最後一行表示1行1474560個字元即1474560 Byte,1.44×1024×1000 Byte,1KB=1024B,1MB=1000kB,這個為什麼不都按1024算我也不是很清楚啦,也可能bximage的作者寫軟體的時候比較流行這樣算吧hhhhhh....

    雖然現在建立了一個硬碟但還沒有對軟碟格式化,是以檔案系統并不能識别,格式化的過程就是給軟碟寫入一個檔案系統,這樣就可以挂載和寫入檔案啦,寫入檔案系統的指令為 mkfs(make filesystem)具體用法如下:

mkfs(選項)(參數)
           

選項

fs:指定建立檔案系統時的參數;
-t<檔案系統類型>:指定要建立何種檔案系統;
-v:顯示版本資訊與詳細的使用方法;
-V:顯示簡要的使用方法;
-c:在制做檔案系統前,檢查該partition是否有壞軌。
           

參數

檔案系統:ext2 ext4 ntfs msdos 
對應分區:如 /dev/hda3
           

    因為我需要一個可以挂載在dos作業系統下的軟碟,故将其格式化為msdos 格式的檔案系統

mkfs -t msdos ./a.img
vim a.img
           
#執行後用 結果如下:
           
ubuntu環境下寫一個簡單的作業系統(一)linux下建立軟碟鏡像與格式化

這次的我們就看不太懂了,仿佛是mkfs調用了 mkfs.fat 建立了一個FAT12的檔案系統,然後寫入了一些與格式有關的奇怪的二進制,管他呢,我們已經可以挂載了。

    跨在一般可以将硬碟或者軟碟挂載在mnt media或者dev目錄下,但是我們隻是臨時用一下,就挂載在目前目錄下吧。

[email protected]:~/temp$ touch demo.txt
#建立一個文本檔案并用vim打開,寫入内容準備複制到 a.img
[email protected]:~/temp$ vim demo.txt
[email protected]:~/temp$ mkdir floppy
#建立floppy檔案夾用以挂載 a.img
[email protected]:~/temp$ mount a.img ./floppy
mount: only root can do that
#挂載提示需要root權限,使用sudo 輸入密碼
 [email protected]:~/temp$ sudo mount a.img ./floppy
[sudo] bobo 的密碼: 
[email protected]:~/temp$ cd floppy
[email protected]:~/temp/floppy$ ll
總用量 11
drwxr-xr-x 2 root root 7168 1月   1  1970 ./
drwxrwxr-x 3 bobo bobo 4096 4月   6 16:21 ../
#複制檔案
[email protected]:~/temp/floppy$ cp ../demo.txt ./
cp: 無法建立普通檔案'./demo.txt': 權限不夠
[email protected]:~/temp/floppy$ sudo cp ../demo.txt ./
[email protected]:~/temp/floppy$ ll
總用量 12
drwxr-xr-x 2 root root 7168 4月   6 16:22 ./
drwxrwxr-x 3 bobo bobo 4096 4月   6 16:21 ../
-rwxr-xr-x 1 root root   59 4月   6 16:22 demo.txt*
[email protected]:~/temp/floppy$ cd ../
#解除安裝
[email protected]:~/temp$ sudo umount floppy
[email protected]:~/temp$ 
           

好了,一切ok盡情玩耍吧!

繼續閱讀