<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 最小的Linux系統(tǒng)制作過程詳解

          最小的Linux系統(tǒng)制作過程詳解

          作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

          hostname BabyLinux

          可以自己作相應(yīng)的修改.

          以上是babylinux根文件系統(tǒng)的所有內(nèi)容,他的總大小應(yīng)該在1M左右.

          ][root@gucuiwen baby]# du -hs

          1.1M .

          九,制作ramdisk映象文件

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

          以下主要是ramdisk的用法,看完以下內(nèi)容,你應(yīng)當學(xué)會ramdisk的使用.

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

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

          讀入了 8193+0 個塊

          輸出了 8192+0 個塊

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

          如果指定塊的大小:

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

          讀入了 4+0 個塊

          輸出了 4+0 個塊

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

          在/dev下有很多ramdisk設(shè)備,ram1,ram2,ram3....

          一般用第一個就可以了.

          填充后,ram1就有可空間,可以在這個空間上創(chuàng)見一個文件系統(tǒng):

          [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掛裝到文件系統(tǒng)中:

          先建立一個掛裝點:

          #mkdir /mnt/ram

          掛上ram1:

          #mount /dev/ram1 /mnt/ram

          將先前做好的babylinux根文件系統(tǒng)拷貝到ram1上.

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

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

          拷貝好babylinux根文件系統(tǒng)后卸載ram1:

          #umount /dev/ram1

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

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

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

          讀入了 8192+0 個塊

          輸出了 8192+0 個塊

          驗證一下取出來的內(nèi)容:

          [root@gucuiwen babylinux]# file ramdisk.img

          ramdisk.img: Linux rev 1.0 ext2 filesystem data

          他是一個ext2 文件系統(tǒng),類似一個ISO光盤映象文件.

          因次,我們可以用loop設(shè)備來把他重新掛裝到文件系統(tǒng)里:

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

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

          查看/mnt/ram下的內(nèi)容,他應(yīng)該和/babylinux/rootfs下的一模一樣,否則就是出錯了:

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

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

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

          把他umount掉:

          #umount /mnt/ram

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

          壓縮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. 加上內(nèi)核的845K,是1340K

          符合公式:

          內(nèi)核大小+文件系統(tǒng)壓縮印象文件+50K = 1440K

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

          十,內(nèi)核與busybox的整合

          準備一張完好的空白軟盤

          創(chuàng)建一個比內(nèi)核大小略大的文件系統(tǒng):

          比如內(nèi)核大小是845K,那么我我創(chuàng)見一個920K的文件系統(tǒng):

          #mkfs.ext2 -m0 /dev/fd0 920

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

          1440K-文件系統(tǒng)大小>=ramdisk.img.gz的大小.

          掛上軟盤

          #mount /dev/fd0

          將內(nèi)核拷貝到軟盤:

          #cp /babylinux/bzImage /mnt/floppy/

          將lilo引導(dǎo)文件安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表示讓內(nèi)核支持字符界面的高分辨率顯示,你可以改成vga=ask,這樣可以在啟動的時候選擇分辨率.



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();