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

新聞中心

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

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

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

個人認為這個功能是非常重要的,所以編譯了進去.

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

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

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

[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

文件系統 容量 已用 可用 已用% 掛載點

/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有這么多的優點,我還是選擇了ramdisk,因為ramdisk可以很方便地在系統啟動的時候加載,而shm卻沒那么容易,下面就來講一下關于內核啟動時加載ramdisk映象的相關內容.

initial RAM disk (initrd) support

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

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

Per partition statics in /proc/partitions

這個選項不是必需的,但是我發現如果我不把這個功能編譯進內核,那么當我在掛裝文件系統的時候會有些小問題,比如我不能以簡寫的掛裝命令來掛裝文件系統. 我不確定到底是不是這個選項的關系,但是把這個選項編譯進內核只增大一點點內核空間,所以為了避免麻煩,我把他編譯了進去.

Multi-device support (RAID and LVM)

Cryptography support (CryptoAPI)

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

Networking options

這一大項中,只需要把下列項目編譯進內核:

Packet socket :mmapped IO

TCP/IP networking

對于IP:advanced router這項,如果你想重點把babylinux用做靜態路由軟件,那么把這項編譯進去,而對于network packet filtering (replaces ipchains)這一項,沒有必要編譯進去了,因為busybox沒有提供iptables工具來設置包過濾防火墻.同樣,unix domain sockets這項也不必選擇,只有運行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

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

下面幾個大項:

SCSI support

Fusion MPT device support

IEEE 1394(FireWire) support

I2O device support

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

下面一個大項:

Network device support

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

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

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



關鍵詞:

評論


相關推薦

技術專區

關閉