PPP撥號在ARM2410平臺上的移植
本次PPP移植是在三星arm2410的平臺上進(jìn)行的,所用的工作環(huán)境為:
Kernel: 2.4.18Sysvinit:2.86Tinylogin:1.4Glibc: 2.2.5CC:3.3PPP: 2.4.1U-boot:1.1.3一、具體操作步驟首先編譯內(nèi)核支持 PPP:
$make menuconfig l$make ARCH=arm CROSS_COMPILE=/../arm-linux- zImage$./mkimage2410 uImage其中mkimage2410文件來自u-boot1.1.1 需要根據(jù)你的路徑修改mkimage2410的內(nèi)容,指定mkimage文件的位置。
第二步,制作文件系統(tǒng):
1. 編譯Busybox$make menuconfigBuild options ---->
[*] Build BusyBox as a static binary (no shared libs)[*] Do you want to build BusyBox with a Cross Compiler?
(/usr/local/arm/3.3/bin/arm-linux-) Cross Compiler prefix$make$make PREFIX=/../rootfs/ install注意:Busybox的README中說用make busybox 來編譯busybox但是這樣做好像有點問題,有時不能成功,其實直接用make就行了。
2. 編譯System V init$cd src$make CROSS=/../arm-linux- PREFIX=/../rootfs/ all$make PREFIX=/../rootfs install3. 編譯 Tinylogin$make CROSS=/../arm-linux- PREFIX=/../rootfs/ all$make PREFIX=/../rootfs install4.交叉編譯 PPP:
$export CROSS_COMPILE=/../arm-linux-$export CC=/../arm-linux-gcc$make這樣就在目錄: /../ppp-2.4.1/pppd,/../ppp-2.4.1/pppdump,/../ppp-2.4.1/pppstats and /../ppp-2.4.1/chat下得到了可執(zhí)行程序pppd,pppdump,pppstats 和 chat.
將它們復(fù)制到 /../rootfs/usr/sbin 目錄下移到文件系統(tǒng)根目錄#mkdir etc dev#cd dev#mknod 600 console 5 1#mknod ppp c 108 0#cd ..
配制/etc目錄下的文件和文件夾,如: inittab fstab host.conf rc.d以便內(nèi)核參正確啟動文件系統(tǒng).
最后,從/../3.3/lib目錄下選出所需要的庫文件放到文件系統(tǒng)根目錄rootfs/lib下面.
$su#mkdir tmp/initrd#dd if=/dev/zero of=images/initrd.img bs=1k count=8192#/sbin/mke2fs –F –v –m0 images/initrd.img#mount –o loop images/initrd.img tmp/initrd#cp –av rootfs/* tmp/initrd#umount tmp/initrd#exit$gzip –9 images/initrd.img > images/initrd.bin這樣,就得到了我們所需要的uImage 和initrd.bin.將U-boot燒到板子上并設(shè)置好環(huán)境變量后就能通過tftp下載kernel 和ramdisk到目標(biāo)板上運行了.
總結(jié):嵌入式linux下應(yīng)用程序的移植,實際上是一個系統(tǒng)平臺轉(zhuǎn)換的過程。最好能先在宿主機(jī)(X86)上對程序源文件進(jìn)行從頭到尾的編譯、連接,讓它首先在宿主機(jī)上跑起來。弄清每一個步驟及其工作的具體內(nèi)容,在向目標(biāo)板移植的過程中一定要保證交叉編譯,其它文件配置和操作步驟跟宿主機(jī)上幾乎完全一樣。
評論