<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ò) 收藏

          個人認(rèn)為這個功能是非常重要的,所以編譯了進(jìn)去.

          RAM disk support 即內(nèi)存磁盤(比較貼切的說法是虛擬磁盤,即撥出一部分內(nèi)存當(dāng)做磁盤用).這是制作babylinux項目中的核心內(nèi)容,由于一張軟盤的空間有限, babylinux的根文件系統(tǒng)是用gzip壓縮法高度壓縮的,在運(yùn)行時,將解壓縮后的文件拷貝到一個RAM disk運(yùn)行,所以在運(yùn)行時,你在根文件系統(tǒng)上的所有操作實(shí)際上是在內(nèi)存上進(jìn)行的.但是在形式上和在真正的磁盤上運(yùn)行一樣.只不過放在RAM disk上的所有內(nèi)容會在系統(tǒng)關(guān)機(jī)后全部消失.

          不僅在運(yùn)行babylinux時用到ramdisk,我們在制作壓縮的根文件系統(tǒng)時也要用到ramdisk,學(xué)習(xí)ramdisk的使用是做一個babylinux的重要目的之一. 在linux中,還支持另外一種虛擬磁盤,叫做shm,

          (shared memory),這種虛擬磁盤機(jī)制比ramdisk更加先進(jìn),ramdisk的大小是固定的,由編譯內(nèi)核時候的default ram disk size 決定.默認(rèn)為4096K(4M),也可以在內(nèi)核裝載前加上ramdisk_size=參數(shù)來決定他的大小,但是系統(tǒng)一旦啟動,ramdisk的大小是不能改變的,而shm的大小卻動態(tài)的改變.默認(rèn)情況下為物理內(nèi)存的一半,當(dāng)系統(tǒng)需要更多內(nèi)存的時,他就自動縮小.系統(tǒng)內(nèi)存富余時,他自動增大,這樣可以充分靈活的利用內(nèi)存空間,shm通常用來作為系統(tǒng)的磁盤高速緩存,存放系統(tǒng)運(yùn)行中的臨時文件等.redaht 的linux在默認(rèn)情況下都有shm的支持,可以用mount和df察看他的掛裝點(diǎn)和大小,如下命令:

          [root@gucuiwen linux]# mount

          /dev/hda1 on / type ext3 (rw)

          none on /proc type proc (rw)

          usbdevfs on /proc/bus/usb type usbdevfs (rw)

          none on /dev/pts type devpts (rw,gid=5,mode=620)

          /dev/hda6 on /home type ext3 (rw)

          /dev/hda5 on /oracle type ext3 (rw)

          none on /dev/shm type tmpfs (rw)

          /dev/hda7 on /var type ext3 (rw)

          [root@gucuiwen linux]# df -h

          文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)

          /dev/hda1 2.9G 2.7G 26M 100% /

          /dev/hda6 3.8G 1.8G 1.8G 50% /home

          /dev/hda5 5.7G 677M 4.8G 13% /oracle

          none 125M 0 125M 0% /dev/shm

          /dev/hda7 711M 91M 584M 14% /var

          雖然shm有這么多的優(yōu)點(diǎn),我還是選擇了ramdisk,因為ramdisk可以很方便地在系統(tǒng)啟動的時候加載,而shm卻沒那么容易,下面就來講一下關(guān)于內(nèi)核啟動時加載ramdisk映象的相關(guān)內(nèi)容.

          initial RAM disk (initrd) support

          即初始化ramdisk支持,這個選項讓內(nèi)核有能力在內(nèi)核加載階段就能裝入RAMDISK,并運(yùn)行其中的內(nèi)容,否則只能在系統(tǒng)運(yùn)行階段用ramdisk ,我們平時在編譯了一個新內(nèi)核后,如果你的根文件系統(tǒng)用的是ext3,而你沒有把ext3編譯進(jìn)內(nèi)核,而只作為一個模塊編譯了,那么就需要用 mkinitrd命令做一個initrd (initializtion ramdisk),這個ramdisk里放了ext3的模塊,這樣內(nèi)核在加載根文件系統(tǒng)前就能正確識別ext3文件系統(tǒng).否則,內(nèi)核加載的最后一步就會出現(xiàn)kernel panic cant not find init .... 的錯誤.

          在babylinux項目中,這個選項是必需的,這里的作用是把解壓的根文件系統(tǒng)映象裝入ramdisk.

          Per partition statics in /proc/partitions

          這個選項不是必需的,但是我發(fā)現(xiàn)如果我不把這個功能編譯進(jìn)內(nèi)核,那么當(dāng)我在掛裝文件系統(tǒng)的時候會有些小問題,比如我不能以簡寫的掛裝命令來掛裝文件系統(tǒng). 我不確定到底是不是這個選項的關(guān)系,但是把這個選項編譯進(jìn)內(nèi)核只增大一點(diǎn)點(diǎn)內(nèi)核空間,所以為了避免麻煩,我把他編譯了進(jìn)去.

          Multi-device support (RAID and LVM)

          Cryptography support (CryptoAPI)

          這兩個大項全部選擇N,因為在個人用PC上,及少牽涉到這兩項,如果你真的有RAID設(shè)備或者LVM,那么就自己摸索著配置一下吧.

          Networking options

          這一大項中,只需要把下列項目編譯進(jìn)內(nèi)核:

          Packet socket :mmapped IO

          TCP/IP networking

          對于IP:advanced router這項,如果你想重點(diǎn)把babylinux用做靜態(tài)路由軟件,那么把這項編譯進(jìn)去,而對于network packet filtering (replaces ipchains)這一項,沒有必要編譯進(jìn)去了,因為busybox沒有提供iptables工具來設(shè)置包過濾防火墻.同樣,unix domain sockets這項也不必選擇,只有運(yùn)行X的情況下才需要選這項.

          Telephony Support 選擇N

          ATA/IDE/MFM/RLL support

          選擇Y,然后下面的'IDE,ATA and ATAPI Block Devices'按鈕就被激活

          下面幾項請選擇Y,其余都可以是N.

          Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

          Include IDE/ATA-2 DISK support

          Auto-Geometry Resizing support

          Include IDE/ATA CDROM support

          如果你的內(nèi)核要運(yùn)行在一臺很老的pentium或486上,請把CMD640 chipset bugfix/support編譯進(jìn)去,因為那時候主板的CMD640 IDE控制芯片大多有莫名其妙的BUG,把這項編譯進(jìn)去會修復(fù)這個bug.

          下面幾個大項:

          SCSI support

          Fusion MPT device support

          IEEE 1394(FireWire) support

          I2O device support

          全部選擇N,這里可能有你想要的好東西,比如1394接口驅(qū)動,但是在babylinux上意義不大,而且我們的空間只有1440K.

          下面一個大項:

          Network device support

          選擇Y,這樣就可以支持網(wǎng)卡了,其余都選擇N.然后點(diǎn)Ethernet(10 or 100 Mbit)按鈕選擇你需要的網(wǎng)卡驅(qū)動,你可以把最常見的幾種Reltek8139,NE2000,3COM等網(wǎng)卡編譯進(jìn)內(nèi)核.雖然網(wǎng)卡的驅(qū)動通常都很小, 但是不要太貪心,選2~3個就足夠了,否則你的內(nèi)核就會一下子多出幾十K.在我先前編譯的babylinux內(nèi)核中,我把via-rhine網(wǎng)卡編譯了進(jìn)去,是因為我打造babylinux的機(jī)器上只有一塊那個芯片的網(wǎng)卡.

          如果你發(fā)現(xiàn)你需要的網(wǎng)卡是灰色的,不能點(diǎn),那么先確定他上一級的選項已經(jīng)點(diǎn)了,比如你想選NE2000的網(wǎng)卡,就必需先選擇ELSA,VLB,PCI and on board controllers.如果還不能點(diǎn),那么請確定是否已經(jīng)把PCI的支持選項選上了,(在Geneal setup)里.沒有PCI的支持,PCI的網(wǎng)卡將不能選.

          可能你是個有錢人,在自己的PC上用千兆網(wǎng)卡,那么請在千兆網(wǎng)卡那一欄選擇.



          關(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); })();