在命令提示符下輸入
vi my_image
進入VI界面之后,輸入以下的文本
dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=512
mkfs -t ext2 /dev/loop0
mount -t ext2 /dev/loop0 /mnt
mkdir -P /mnt/dev
mkdir -P /mnt/bin
mkdir -P /mnt/etc
...
umount /mnt
losetup -d /dev/loop0
dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz
rm -f /tmp/tmp_loop
sync
當你輸完上面的所有文本之后,按ESC鍵,再按住冒號,最后輸入wq,最后就在當前目錄下生成了一個my_image的腳本文件,然后輸入./my_image,之后在/tmp目錄下有一個Image.gz文件,就是你所想要的Image文件了
總體實現思路:
1.首先打開VI編輯器,相當于WINDOWS下的記事本之類的程序,當然比它強大很多,以便用它來寫一個腳本文件,腳本文件類似下DOS下的批處理文件,免得你每次輸入很多相同的命令
2.用DD工具來做一個虛擬的磁盤文件,DD工具有點強大,可以克隆整個分區,某個文件,或者整個硬盤,類似于GHOST之類的軟件
3.將此虛擬的磁盤系統格式化成你指定的分區,比如EXT2,FAT等,這里所使用的工具就是mkfs
4.將格式好的虛擬磁盤掛載到一個目錄下,類似于你掛載一個WINDOWS的分區一樣,掛載好了之后,你就可以在此目錄下進行各種操作了
5.此時你的虛擬磁盤下還沒有任何文件,你需要在下面新建一些LINUX所需要的目錄,比如dev,proc,bin,etc等,此時,為了方便,你可以將你PC機上的某些目錄拷過去,由于你PC機上的目錄下的文件太多也太大,所以推薦你照著PC機新建目錄,然后再將你想要的某些文件從PC機拷貝到你的虛擬磁盤中去
6.當你將所需要的文件全部拷上去了之后,就可以卸載了
7.將你制做好的虛擬磁盤文件壓縮(當然,你也可以不壓縮,這取決于你的BOOTLOADER)
對上面腳本的詳細注解如下:
第一句:dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=512,做一個虛擬磁盤(相當于在WINDOWS上的ISO文件),其中每1024字節為一塊,類似于硬盤的分塊,一共有512K的大小,當然,你也可以做成不只512K大小,改相應的參數就行了
第二句:mkfs -t ext2 /dev/loop0 ,將你虛擬的磁盤進行格式化,這里格式化成EXT2文件系統,還記得WINDOWS下的ISO吧?不過ISO只能是固定的東東,這里的虛擬磁盤可以是任何LINUX支持的文件系統!!!
第三句:mount -t ext2 /dev/loop0 /mnt,掛載分區,不用我多說了,需要注意的一點是,最好事先不要在MNT目錄下掛載其它的分區,或者放其它的文件,也就是說要么它就是一個空目錄,要么你就改一個目錄來進行你的掛載操作,當然,如果你放了一些文件或者已經掛載了某個分區也沒什么,只不過那個分區里的東西全不見了(只是暫時的,當你操作完成之后就恢復了)
第四句之后:
mkdir -P /mnt/dev
mkdir -P /mnt/bin
mkdir -P /mnt/etc
...
就是新建目錄,參數P是指如果有該目錄的話,就忽略,最后的省略號是指我省略了一些步驟,并不是要你在文本編輯器里輸入省略號!!!!!而且后面還省略了從PC機拷貝文件的步驟,因為我并不知道你需要什么具體文件
最后幾句:
umount /mnt
losetup -d /dev/loop0
dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz
rm -f /tmp/tmp_loop
sync
卸載分區
通知系統不再需要虛擬磁盤
將生成的/tmp下的tmp_loop文件(就是那個虛擬磁盤文件),用GZIP壓縮,并拷貝到/tmp/下,并改名為Image.gz
刪除磁盤虛擬文件
文件寫操作同步,在LINUX下的磁盤操作時,是有一個緩沖的過程,相當于你發過寫磁盤的命令,但此時向磁盤的寫操作還沒發生,時已經向用戶返回寫成功了,為了確保寫操作完成,就需要這個sync命令以確保你的鏡像文件完整
最后需要注意的是:
至于你的文件系統里面要放什么東西,完全由你自己決定,比如你需要一個BusyBox之類的,也需你還要支持你自己的驅動,我在這里只是簡單提兩句,請參閱相關文檔
總體思路是一樣的,你可以根據我說的整體思路,你完全可以舉一反三,靈活運用,呵,我在這里YY了幾句,請高手嘴下留情哈!!!!!