久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 最小的Linux系統制作過程詳解

最小的Linux系統制作過程詳解

作者: 時間:2016-10-08 來源:網絡 收藏

hostname BabyLinux

可以自己作相應的修改.

以上是babylinux根文件系統的所有內容,他的總大小應該在1M左右.

][root@gucuiwen baby]# du -hs

1.1M .

九,制作ramdisk映象文件

babylinux根文件系統所有東西都放在/babylinux/rootfs下,我們將利用ramdisk把這些內容做成ramdisk映象文件并壓縮他.

以下主要是ramdisk的用法,看完以下內容,你應當學會ramdisk的使用.

[root@gucuiwen babylinux]# dd if=/dev/zero of=/dev/ram1

dd: 正在寫入 ‘/dev/ram1’: 設備上沒有空間

讀入了 8193+0 個塊

輸出了 8192+0 個塊

zero是一個特殊的設備,表示全部為0的字符塊.上面這條命令的意思是把系統的第一個ramdisk用全部為0的數據填充,因為ramdisk默認大小為4M,因此當讀滿8192個塊(每塊512字節)后,顯示'設備上沒空間'.這很正常,/dev/ram1已經被填充滿了.

如果指定塊的大小:

[root@gucuiwen babylinux]# dd if=/dev/zero of=/dev/ram1 bs=1M count=4

讀入了 4+0 個塊

輸出了 4+0 個塊

不會有錯誤提示,這里演示了dd的一般用法,接下來還要頻繁用到dd命令.

在/dev下有很多ramdisk設備,ram1,ram2,ram3....

一般用第一個就可以了.

填充后,ram1就有可空間,可以在這個空間上創見一個文件系統:

[root@gucuiwen babylinux]# mkfs.ext2 -m0 /dev/ram1

mke2fs 1.32 (09-Nov-2002)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

1024 inodes, 4096 blocks

0 blocks (0.00%) reserved for the super user

First data block=1

1 block group

8192 blocks per group, 8192 fragments per group

1024 inodes per group

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

將ram1掛裝到文件系統中:

先建立一個掛裝點:

#mkdir /mnt/ram

掛上ram1:

#mount /dev/ram1 /mnt/ram

將先前做好的babylinux根文件系統拷貝到ram1上.

#cp -R /babylinux/rootfs/* /mnt/ram

做完以上幾步,你應就白了ramdisk設備的含義,他是和hda1,hdb1,一樣的塊設備,用mount掛到文件系統下后就可以訪問,往里放東西,但是所有的東西在內存上.關機將丟失所有東西.

拷貝好babylinux根文件系統后卸載ram1:

#umount /dev/ram1

這時,雖然不能通過/mnt/ram這個掛裝點訪問ram1中的內容了,但是他卻切切實實得在內存中存在.

再用dd把這個ram1以映象方式取出來:

[root@gucuiwen babylinux]# dd if=/dev/ram1 of=/babylinux/ramdisk.img

讀入了 8192+0 個塊

輸出了 8192+0 個塊

驗證一下取出來的內容:

[root@gucuiwen babylinux]# file ramdisk.img

ramdisk.img: Linux rev 1.0 ext2 filesystem data

他是一個ext2 文件系統,類似一個ISO光盤映象文件.

因次,我們可以用loop設備來把他重新掛裝到文件系統里:

[root@gucuiwen babylinux]# mount -o loop ramdisk.img /mnt/ram/

為了方便,我仍舊把他掛在/mnt/ram下,因此,在先前一定要把/dev/ram1 umount掉

查看/mnt/ram下的內容,他應該和/babylinux/rootfs下的一模一樣,否則就是出錯了:

[root@gucuiwen babylinux]# ls /mnt/ram

bin dev etc home lost+found mnt proc root sbin tmp usr var

這樣,我們就得到了一個ramdisk根文件系統映象:ramdisk.img

把他umount掉:

#umount /mnt/ram

如果是第一次接觸ramdisk,你可能對上述的內容很迷惑,如果這樣,請反復閱讀和理解上面的內容,自己多動手做幾次試驗,就可以理解.

壓縮ramdisk.img印象文件:

[root@gucuiwen babylinux]# gzip -v9 ramdisk.img

ramdisk.img: 87.9% -- replaced with ramdisk.img.gz

查看壓縮后的大小:

[root@gucuiwen babylinux]# ls -lh ramdisk.img.gz

-rw-r--r-- 1 root root 495K 11月 30 11:32 ramdisk.img.gz

我得到的壓縮ramdisk映象文件安是495K. 加上內核的845K,是1340K

符合公式:

內核大小+文件系統壓縮印象文件+50K = 1440K

如果你做出來的kernel和ramdisk.img.gz太大了,請重新制作kernel或ramdisk.img.gz,在其中做一些取舍,如果你的 kernel和ramdisk.img.gz太小了,那么可以再往里面添加一些內容,使你的babylinux功能更強.

十,內核與busybox的整合

準備一張完好的空白軟盤

創建一個比內核大小略大的文件系統:

比如內核大小是845K,那么我我創見一個920K的文件系統:

#mkfs.ext2 -m0 /dev/fd0 920

如果空間允許,還可以再大一些,但是必需保證

1440K-文件系統大小>=ramdisk.img.gz的大小.

掛上軟盤

#mount /dev/fd0

將內核拷貝到軟盤:

#cp /babylinux/bzImage /mnt/floppy/

將lilo引導文件安boot.b 拷貝到軟盤

#cp /boot/boot.b /mnt/floppy

新建一個lilo.conf 配置文件:

prompt

timeout=60

default=linux

boot=/dev/fd0

map=/mnt/floppy/map

install=/mnt/floppy/boot.b

linear

image=/mnt/floppy/bzImage

label=linux

read-only

vga=788

root=/dev/fd0

append=load_ramdisk=1 ramdisk_start=940

vga=788表示讓內核支持字符界面的高分辨率顯示,你可以改成vga=ask,這樣可以在啟動的時候選擇分辨率.



關鍵詞:

評論


相關推薦

技術專區

關閉