使用busybox構建yaffs2根文件系統(前言)

(一) 根文件系統啓動過程

由於默認的內核命令行上有init=/linuxrc, 因此,在文件系統被掛載後,運行的第一個程序是根目錄下的linuxrc。 這是一個指向/bin/busybox的鏈接,也就是說,系統起來後運行的第一個程序也就是busybox本身。
這種情況下,busybox首先將試圖解析/etc/inittab來獲取進一步的初始化配置信息(參考busybox源代碼init/init.c中的parse_inittab()函數)。如果根文件目錄中並沒有/etc/inittab這個配置文件,根據busybox的邏輯,它將生成默認的配置"/etc/init.d/rcS"這個開機腳本.

rcS這個腳本要完成一些必要目錄的掛載:

  1. /bin/mount -n -t proc none /proc
  2. /bin/mount -n -t sysfs none /sys
  3. /bin/mount -t ramfs none /dev

掛載“虛擬”文件系統,/proc, /sys,並且在/dev目錄上掛載一個ramfs,相當於把原本NAND Flash上的只讀的/dev目錄“覆蓋”上一塊可寫的空的SDRAM。

/sys和掛載了ramfs的/dev是正確創建設備節點的關鍵。對於2.6.29內核來說,已經沒有了devfs的支持,創建設備節點只有通過兩種辦法由文件系統完成:
1) 製作文件系統鏡像前用mknod手動創建好系統中所有的(包括可能有的)設備節點,並把這些節點文件一起做進文件系統鏡像中;
2)在文件系統初始化過程中,通過/sys目錄所輸出的信息,在/dev目錄下動態的創建系統中當前實際有的設備節點。

  1. echo /sbin/mdev > /proc/sys/kernel/hotplug
  2. /sbin/mdev -s
  3. /bin/hotplug
  4. 通過mdev -s 在/dev目錄下建立必要的設備節點;
  5. 設置內核的hotplug handler爲mdev, 即當設備熱插拔時,由mdev接收來自內核的消息並作出相應的迴應, 比如掛載U盤。對於mdev,需要注意的是,文件系統裏存在/etc/mdev.conf文件,它包含了mdev的配置信息。以下是mdev.conf的中的一部分,
    1. # serial port devices
    2. s3c2410_serial0    0:5    0666    =ttySAC0
    3. s3c2410_serial1    0:5    0666    =ttySAC1
    4. s3c2410_serial2    0:5    0666    =ttySAC2
    5. s3c2410_serial3    0:5    0666    =ttySAC3
    6. 原本串口驅動註冊的設備名是s3c2410_serial0, s3c2410_serial1和s3c2410_serial2,而mdev則會在/dev目錄下對應生成ttySAC0, ttySAC1和ttySAC2以符合應用程序對於串口設備名稱的習慣
  1. /sbin/ifconfig lo 127.0.0.1
  2. /etc/init.d/ifconfig-eth0

設定本機迴環地址爲127.0.0.1 ,運行網卡設置腳本/etc/init.d/ifconfig-eth0, 其中ifconfig-eth0中先判斷, 如果根文件系統爲nfs,則說明網卡已經配置OK,這裏什麼都不需要重新ifconfig配置了,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章