日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 一、編譯1.busybox簡(jiǎn)介熟悉嵌入式Linux的人對(duì)busybox一定不會(huì)陌生。它被非常形象地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀”,因?yàn)樗鼘⒃S多常用的UNIX命令和工具結(jié)合

 一、編譯

1.busybox簡(jiǎn)介

熟悉嵌入式Linux的人對(duì)busybox一定不會(huì)陌生。它被非常形象地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀”,因?yàn)樗鼘⒃S多常用的UNIX命令和工具結(jié)合到了一個(gè)單獨(dú)的可執(zhí)行程序中。雖然與相應(yīng)的GNU工具比較起來(lái),busybox所提供的功能和參數(shù)略少,但在比較小的系統(tǒng)(例如啟動(dòng)盤(pán))或者嵌入式系統(tǒng)中,已經(jīng)足夠了。

下面就來(lái)一步步地用busybox從無(wú)到有地建立一個(gè)全新的Linux文件系統(tǒng)。

2. 編譯busybox

完整的源代碼可以從http://www.busybox.net下載,壓縮包大小為1.3 MB左右。將源碼解壓之后,進(jìn)入到busybox1.00目錄中,運(yùn)行make menuconfig可以打開(kāi)它的編譯界面。這個(gè)界面和Linux內(nèi)核編譯有些接近。在這個(gè)菜單界面中除了可以對(duì)最終編譯到可執(zhí)行文件中的命令進(jìn)行選擇外,還有很多其他設(shè)置也是非常重要的。下面三個(gè)目錄是很多人都會(huì)感興趣的:

我改變了以下選項(xiàng):

General Configuration --->

[*] Support for devfs

Build Options --->

[ ] Build BusyBox as a static binary (no shared libs)

[*] Do you want to build BusyBox with a Cross Compiler?

/usr/local/arm/3.4.1/bin/arm-linux-

(/usr/local/arm/3.4.1/bin/arm-linux-) Cross Compiler prefix

Installation Options --->

(./_install) BusyBox installation prefix

然后到當(dāng)前目錄建立一個(gè)_install的文件夾。

Linux Ext2 FS Progs --->

[*] e2fsck

Linux Module Utilities --->

[*] insmod

[*] rmmod

[ ] lsmod

[ ] modprobe

--- Options common to multiple modutils

[*] Support tainted module checking with new kernels (NEW)

[ ] Support version 2.2.x to 2.4.x Linux kernels

[*] Support version 2.6.x Linux kernels (NEW)

注意此處的選擇,可能會(huì)影響到編譯不過(guò)。

Networking Utilities --->

[*] ftpget

[*] ftpput

...

[*] wget

...

[*] telnet

[*] Pass TERM type to remote host (NEW)

[*] Pass USER type to remote host (NEW)

[*] telnetd

注釋:tlenetd命令是一個(gè)遠(yuǎn)程登錄服務(wù)程序,把它編譯進(jìn)busybox中會(huì)為將來(lái)的調(diào)試提供很多的方便。

Shells --->

[*] Enable builtin version of 'echo'

Linux System Utilities --->

[*] mount

[*] Support mounting NFS file systems

注釋:這個(gè)比較重要,否則會(huì)在后來(lái)的mount時(shí)候出現(xiàn)mount program didn't pass remote address的錯(cuò)誤。

在Installation Options里面可以設(shè)置安裝的路徑,即設(shè)置為新文件系統(tǒng)的根目錄。當(dāng)然也可以用缺省的 _install目錄,安裝之后再?gòu)?fù)制到新文件系統(tǒng)中去。

在設(shè)置Login/Password Management Utilities的時(shí)候,為了免去配置glibc的麻煩,最好設(shè)置使用busybox自己的password和shadow文件的功能(Use internal password and group functions rather than system functions)。

busybox提供的命令無(wú)疑比較全面,但它的缺省配置還不能構(gòu)成一個(gè)功能比較完備的文件系統(tǒng)。必須要添加的命令有Login/Password Management Utilities里面的getty、login和passwd,這些命令從前是由另外一個(gè)軟件包tinylogin所提供的。當(dāng)然,如果不需要一個(gè)交互的登錄界面,這些命令也可以去掉。通過(guò)設(shè)定內(nèi)核參數(shù)init=/bin/sh可以在系統(tǒng)啟圖1busybox的編譯配置界面動(dòng)后直接得到一個(gè)shell。

設(shè)置完畢后保存、退出,執(zhí)行make; make install命令,busybox將在未來(lái)的根文件系統(tǒng)中建立/usr、/bin、/sbin等目錄。從中可以看到,編譯好的busybox可執(zhí)行文件和其他應(yīng)用命令的符號(hào)鏈接。典型的busybox文件大小在動(dòng)態(tài)鏈接的情況下是300 KB左右,靜態(tài)鏈接為800 KB左右,用它實(shí)現(xiàn)的文件系統(tǒng)完全可以控制在1 MB以下。但就目前為止,得到的還不是一個(gè)完整可用的文件系統(tǒng),必須要在這個(gè)基礎(chǔ)上添加一些必要的文件,讓它可以工作。

編譯的時(shí)候可能出錯(cuò):variable or field '__user' declared void

可以將

/usr/local/arm/3.4.1/arm-linux/sys-include/linux/fd.h

中修改下面的語(yǔ)句,編譯完成后再修改回去。

//void __user *data;

void *data;

3. 安裝

make install

二、制作文件系統(tǒng)

用已經(jīng)編譯好的busybox制作完善的能自啟動(dòng)的文件系統(tǒng)

1、建立文件夾arm2410-root-1.0:

mkdir /ebutek/arm2410-root-1.0

export ARM2410HOME=/ebutek/arm2410-root-1.0

export BUSYBOXHOME=/ebutek/busybox-1.1.0

2、將busybox編譯后的文件拷貝到arm2410-root-1.0.

cp -fr $BUSYBOXHOME/_install/* $arm2410HOME

拷貝后可以看到$arm2410HOME下的文件如下:

ls -all $arm2410HOME

總計(jì) 20

drwxr-xr-x 5 root root 4096 01-24 13:58 .

drwxr-xr-x 16 root root 4096 01-24 13:56 ..

drwxr-xr-x 2 root root 4096 01-24 13:58 bin

lrwxrwxrwx 1 root root 11 01-24 13:58 linuxrc -> bin/busybox

drwxr-xr-x 2 root root 4096 01-24 13:58 sbin

drwxr-xr-x 4 root root 4096 01-24 13:58 usr

3、創(chuàng)建其它文件夾:

cd $arm2410HOME

mkdir mnt root var tmp proc boot etc lib dev

mkdir var/{lock,log,mail,run,spool}

3、將交叉編譯器中的busybox需要的lib庫(kù)文件拷貝過(guò)來(lái)。

在/usr/local/arm/3.4.1/arm-linux/lib中找到如下文件和鏈接:

-rwxrwxrwx 192519 ld-2.3.2.so

lrwxrwxrwx 111 ld-linux.so.2 -> ld-2.3.2.so

-rwxrwxrwx 1 1190032 libc-2.3.2.so

lrwxrwxrwx 113 libc.so.6 -> libc-2.3.2.so

-rwxr-xr-x 118348 libcrypt-2.3.2.so[!--empirenews.page--]

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

將其拷貝到$arm2410HOME/lib中。

(可以編寫(xiě)一個(gè)腳本: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,應(yīng)該和上面相同,包括文件及其鏈接。

4、設(shè)定etc,準(zhǔn)備啟動(dòng):

將busybox源代碼 example/bootfloopy/etc目錄中的文件拷貝過(guò)來(lái)到$arm2410HOME/etc。

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

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

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

::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)的啟動(dòng)腳本為/etc/init.d/rcS;第二行指定在第一個(gè)虛擬終端打開(kāi)一個(gè)登錄會(huì)話;第三行指定在第三個(gè)虛擬終端打開(kāi)一個(gè)無(wú)須登錄驗(yàn)證的shell;第四行指定了當(dāng)按下ctrl+alt+del組合鍵時(shí)的執(zhí)行命令;最后兩行指定了關(guān)機(jī)時(shí)執(zhí)行的操作。

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

/dev/hda1/ext2rw,noauto01

devpts/dev/ptsdevptsdefaults00

其中第三行是為UNIX PTYs準(zhǔn)備的,telnetd要用到。

profile 文件是終端登錄之后首先運(yùn)行的腳本,這里可以不去管它。我們比較關(guān)心的是系統(tǒng)在無(wú)人登錄的情況下有哪些程序要執(zhí)行。從inittab文件可以看出系統(tǒng)啟動(dòng)之后要運(yùn)行/etc/init.d/rcS腳本,需要啟動(dòng)的程序和需要進(jìn)行的設(shè)置都可以寫(xiě)在這里面。一個(gè)可能的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

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

passwd:

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

group:

root:x:0:

shadow:

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

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

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

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

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

mkyaffsimage filesystem root.yaffs

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

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

(1)準(zhǔn)備tftp下載

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

chmod 755 root.yaffs

/etc/init.d/xinetd restart

(2)下載到目標(biāo)板

啟動(dòng)目標(biāo)板到uboot,在minicom下輸入以下命令:

tftp 33000000 root.yaffs

下載完成后uboot會(huì)返回文件的大小,假設(shè)為x

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

nand write.yaffs 33000000 230000 x

重新啟動(dòng)目標(biāo)板,如果能啟動(dòng)到busybox提示符即可。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

釋放8千崗位,吸引超1萬(wàn)名碩博人才 上海2024年10月28日 /美通社/ -- 又到一年"金九銀十"求職季。10月23日,2024上海首屆千...

關(guān)鍵字: 大眾 BSP ROOT 中科院

上海2023年9月21日 /美通社/ -- 由于在雇主品牌建設(shè)擁有優(yōu)異表現(xiàn),臺(tái)達(dá)于9月15日在 “2023 HRoot 人力資本論壇·上海站”獲頒“2023大中華區(qū)卓越雇...

關(guān)鍵字: ROOT MIDDOT EXPLORING

不一樣的人力資源日818 HR Day 上海2023年8月18日 /美通社/ -- 每年的8月18日,是屬于人力資源工作者的節(jié)日。多年以來(lái),中智一直致力于提升人力資本在企業(yè)...

關(guān)鍵字: AI MIDDOT BSP ROOT

剛?cè)腴T(mén)嵌入式,選入門(mén)級(jí)RZ/G2L開(kāi)發(fā)板,采用郵票孔形式封裝了RZ/G2L核心板。

關(guān)鍵字: 開(kāi)發(fā)板 嵌入式LINUX 嵌入式系統(tǒng)

上海2023年2月3日 /美通社/ -- 一元復(fù)始,萬(wàn)象更新,2023年如約而至?;厥?022,兄弟(中國(guó))商業(yè)有限公司(以下簡(jiǎn)稱"兄弟(中國(guó))")在嶄新...

關(guān)鍵字: SE BSP ROOT 可持續(xù)發(fā)展

ETC(Electronic Toll Collection )電子收費(fèi)系統(tǒng),旨在消除收費(fèi)道路、收費(fèi)汽車(chē)專用道、收費(fèi)橋梁和收費(fèi)隧道的時(shí)間延誤,在不收取現(xiàn)金和不要求車(chē)輛停車(chē)的情況完成收費(fèi)。它利用DSRC(Dedi-cate...

關(guān)鍵字: ETC RSU OBU

上海2022年11月30日 /美通社/ -- 近日來(lái),上海豐之沃電子商務(wù)科技股份有限公司(Avantouch)宣布已在線上線下接入了豐富的使用渠道及服務(wù)、產(chǎn)品等,覆蓋了吃、喝、玩、樂(lè)、生活等各個(gè)方面,為其用戶帶來(lái)了更多多...

關(guān)鍵字: ADI ETC SERVICE TOUCH

家住株洲天元區(qū)的雷先生最近注意到,不知道什么時(shí)候開(kāi)始,他每天回家的路上,遇上的紅燈次數(shù)明顯變少了,經(jīng)?!耙宦肪G燈”就到了小區(qū)。雷先生不是唯一一個(gè)察覺(jué)到變化的車(chē)主。最近到株洲出差的鄧女士也發(fā)現(xiàn),她開(kāi)車(chē)時(shí)打開(kāi)百度地圖導(dǎo)航時(shí),...

關(guān)鍵字: 智慧交通 APP ETC

 從亞太地區(qū)選定五家初創(chuàng)公司合作,試點(diǎn)新技術(shù),重點(diǎn)關(guān)注標(biāo)簽和包裝行業(yè)的價(jià)值鏈效率,供應(yīng)鏈彈性及可持續(xù)性和材料創(chuàng)新 上海2022年8月22日 /美通社/ -- 全球...

關(guān)鍵字: ETC 加速器 ST AD

以前在高速上面收費(fèi)的時(shí)候都是人工收費(fèi),過(guò)一輛車(chē)要停頓一會(huì),要么是交錢(qián)的時(shí)候需要找零,后來(lái)慢慢可以手機(jī)支付,但是還是需要一點(diǎn)時(shí)間,在人口通道這里同行的速度會(huì)比較慢,如果突然遇到節(jié)假日的時(shí)候,經(jīng)常會(huì)發(fā)生擁堵的情況,汽車(chē)通行的...

關(guān)鍵字: ETC 高速公路 電子標(biāo)簽
關(guān)閉