新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Busybox制作嵌入式Linux的文件系統(tǒng)

Busybox制作嵌入式Linux的文件系統(tǒng)

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

lrwxrwxrwx 117 libcrypt.so.1 -> libcrypt-2.3.2.so

將其拷貝到$arm2410HOME/lib中。

(可以編寫一個腳本:vi envCp,將下面的命令拷貝至腳本然后執(zhí)行即可:執(zhí)行chmod u+rx envCp,然后./envCp)

cp -l /usr/local/arm/3.4.1/arm-linux/lib/ld-2.3.2.so $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/ld-linux.so.2 $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libcrypt-2.3.2.so $arm2410HOME/lib

cp -l /usr/local/arm/3.4.1/arm-linux/lib/libcrypt.so.1 $arm2410HOME/lib

拷貝后檢查一下:

ls -all $arm2410HOME/lib,應該和上面相同,包括文件及其鏈接。

4、設定etc,準備啟動:

將busybox源代碼 example/bootfloopy/etc目錄中的文件拷貝過來到$arm2410HOME/etc。

cp -fr $BUSYBOXHOME/examples/bootfloppy/etc/* $arm2410HOME/etc

etc文件夾是許多系統(tǒng)配置文件保存的地方。這些文件非常重要,如果配置錯誤,就可能影響系統(tǒng)的啟動。busybox源代碼 example/bootfloopy/etc目錄中的文件算是一個簡單的例子,可以把其中的文件拷貝過來作為基礎。(在 example/bootfloopy目錄中的一些腳本和文檔也很值得閱讀)

首先inittab文件是系統(tǒng)啟動后所訪問的第一個腳本文件,后續(xù)啟動的文件都由它指定。這個文件的格式和普通微機Linux上的inittab是有區(qū)別的,其具體含義可以參考busybox的文檔。下面是一個比較簡單的例子:

::sysinit:/etc/init.d/rcS

tty0::respawn:/sbin/getty 38400 tty0

tty2::askfirst:/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount ar

::shutdown:/bin/mount / o remount,ro

其中第一行指定了系統(tǒng)的啟動腳本為/etc/init.d/rcS;第二行指定在第一個虛擬終端打開一個登錄會話;第三行指定在第三個虛擬終端打開一個無須登錄驗證的shell;第四行指定了當按下ctrl+alt+del組合鍵時的執(zhí)行命令;最后兩行指定了關機時執(zhí)行的操作。

fstab文件定義了文件系統(tǒng)的各個“掛接點”,需要與實際的系統(tǒng)相配合。一個簡單的fstab文件如下:proc/procprocdefaults00

/dev/hda1/ext2rw,noauto01

devpts/dev/ptsdevptsdefaults00

其中第三行是為UNIX PTYs準備的,telnetd要用到。

profile 文件是終端登錄之后首先運行的腳本,這里可以不去管它。我們比較關心的是系統(tǒng)在無人登錄的情況下有哪些程序要執(zhí)行。從inittab文件可以看出系統(tǒng)啟動之后要運行/etc/init.d/rcS腳本,需要啟動的程序和需要進行的設置都可以寫在這里面。一個可能的rcS文件如下:

#! /bin/sh

echo e 'Starting System'

ifconfig lo 127.0.0.1

ifconfig eth0 192.168.0.100

hostname F /etc/hostname

/bin/mount / o remount,rw

/bin/mount /proc

/bin/mount /dev/pts

/usr/sbin/telnetd

dmesg > /var/log/dmesg

為了滿足終端登錄用戶驗證的要求,etc目錄下還需要有passwd、group和shadow (在編譯busybox時如果不選擇shadow功能將不需要這個文件)。這些文件至少要包含 root用戶的定義,如下所示:

passwd:

root:x:0:0:root:/root:/bin/sh

group:

root:x:0:

shadow:

root::12179:0:99999:7:::

其中,如果shadow (對于不支持shadow的系統(tǒng)則是passwd )文件的第一個冒號和第二個冒號之間沒有內(nèi)容,表示這個用戶登錄不需要密碼。如果需要設定密碼或者增加新的登錄用戶,就可以參考開發(fā)主機上的相應文件,或者在目標系統(tǒng)啟動之后用passwd命令和adduser命令完成。

最后還可以給目標機起一個名字,在/etc目錄下建立文件hostname,將起好的名字寫到里面。前面介紹的啟動腳本rcS,通過hostname命令把文件的內(nèi)容設置為機器名。

5、制作yaffs文件系統(tǒng):

找到y(tǒng)affs制作工具mkyaffsimage,將其拷貝到/bin目錄下,以便于利用系統(tǒng)環(huán)境變量能找到,然后用下面的命令:

mkyaffsimage filesystem root.yaffs

就可以filesystem目錄制作成一個名叫root.yaffs的映像。

6、用uboot將yaffs文件系統(tǒng)下載到目標板:

(1)準備tftp下載

將制作好的yaffs文件系統(tǒng)映像拷貝到/tftpboot下,修改其權(quán)限至少為755, 然后重新啟動 xinetd 服務。

chmod 755 root.yaffs

/etc/init.d/xinetd restart

(2)下載到目標板

啟動目標板到uboot,在minicom下輸入以下命令:

tftp 33000000 root.yaffs

下載完成后uboot會返回文件的大小,假設為x

nand erase 230000 3dcc000(此處擦除的要比較大,因為內(nèi)核要掛載一些文件)

nand write.yaffs 33000000 230000 x

重新啟動目標板,如果能啟動到busybox提示符即可。


上一頁 1 2 下一頁

關鍵詞:

評論


相關推薦

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

關閉