燒寫內(nèi)核
1 配置編譯linux內(nèi)核
?通過make menuconfig編譯內(nèi)核
?make zImage
?
2 制作uImage
?在.../linux-2.6.32.2/arch/arm/boot下面可以找到生成的zImage
?把.../u-boot-2010.03-tekkaman-master/tools下的mkimage拷貝到/usr/sbin目錄下
?#cd /root
?#ls -a
?#vi .bashrc
?加上路徑 PATH=$PATH:/usr/sbin?
?#cd .../linux-2.6.32.2/arch/arm/boot
?#mkimage -n 'mini2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage
?此處,注意-a和-e后的地址相差0x40,即64個(gè)字節(jié),為了后面,用bootm 30008000來啟動(dòng)內(nèi)核
?從而生成uImage
?uImage和zImage的區(qū)別是,uImage在zImage的前面加上了64字節(jié)的啟動(dòng)數(shù)據(jù),供bootm來用,如果是zImage的話,只能通過go命令來啟動(dòng)。
?最后,加上可執(zhí)行權(quán)限,將uImage放置到tftpboot目錄下。
?chmod +x uImage
?cp uImage /root/tftpboot
3 安裝tftp
?3.1 下載tftp服務(wù)器、客戶端tftp和守護(hù)進(jìn)程xinetd三個(gè)包
??yum install xinetd tftp tftp-server
?3.2 建立tftp工作目錄并修改屬性(不修改屬性會(huì)出現(xiàn)error)
??cd /
??mkdir tftpboot
??chmod 777 -R tftpboot/
?3.2 配置vi /etc/xinetd.d/tftp
??server_args= -s /tftpboot -c?
??/tftpboot是創(chuàng)建tftpboot的目錄,可以修改,我的是/root/src/mini2440/tftpboot
??-s,必須加,否則會(huì)出現(xiàn)決定路徑之類的錯(cuò)誤
??-c, 是允許客戶端更改工作目錄下的文件
??diable=no
?3.4 啟動(dòng)服務(wù)
??在開啟服務(wù)之前,務(wù)必關(guān)閉防火墻service iptables stop
??另外需修改/etc/selinux/config文件中的SELINUX="" 為 disabled ,然后重啟。否則,出現(xiàn)Transfer timed out錯(cuò)誤。
??service xinetd start
??可能service服務(wù)不識(shí)別,只需把該命令所在的路徑加入路徑環(huán)境變量即可PATH=$PATH:/sbin
?3.5 查看服務(wù)
??可以通過相關(guān)命令查看tftp服務(wù)是否啟動(dòng)
??netstat -a|grep tftp
??udp??????? 0????? 0 *:tftp????????????????????? *:*
??說明啟動(dòng)了
?3.6 驗(yàn)證tftp服務(wù)可以使用
??tftp 127.0.0.1
??tftp> get uImage?//uImage是tftpboot目錄下的存在的文件
??tftp> q??????//退出
??如果在執(zhí)行此命令的目錄下有了uImage文件,則說明tftp安裝成功。
??
4 安裝NFS
?4.1 查看是否安裝了NFS
??rpm -qa|grep nfs
??nfs-utils-lib-1.1.5-3.fc14.i686
??nfs-utils-1.2.3-6.fc14.i686
??如果有這兩個(gè)包,則說明已安裝,否則,用yum進(jìn)行安裝即可。
?4.2 配置NFS
??vi /etc/exports
??/root/src/mini2440/rootfs 192.168.2.*(rw,sync,no_root_squash)
??exports在第一次設(shè)置時(shí)是空的,在第一行輸入上述信息
??/root/src/mini2440/rootfs?//允許掛載的目錄
??192.168.2.*?//允許192.168.2.網(wǎng)段的訪問
??(rw,sync)??//訪問的模式,可讀可寫,同步訪問
?4.3 開啟服務(wù)
??前提還是先關(guān)閉防火墻
??service nfs start
??查看NFS是否開啟
??service nfs status
??關(guān)閉服務(wù)
??service nfs stop
?4.4 設(shè)置系統(tǒng)自動(dòng)開啟NFS
??通過setup,進(jìn)入system services,找到nfs,然后,按下空格選上,保存即可。
?
5 設(shè)置啟動(dòng)參數(shù)
?進(jìn)入u-boot的下載命令界面
?print
?查看環(huán)境變量值
?setenv ipaddr=192.168.2.250
?setenv serverip=192.168.2.103
?setenv gatewayip=192.168.2.1
?setenv?bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.2.103:/root/src/mini2440/rootfs ip=192.168.2.250:192.168.2.103::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M
6 下載內(nèi)核
?6.1 首先驗(yàn)證網(wǎng)絡(luò)
??在u-boot里 ping 192.168.2.103
??host 192.168.2.103 is alive
??證明網(wǎng)絡(luò)可行
?6.2 利用tftp命令下載內(nèi)核uImage,此uImage是處理好之后放在tftpboot目錄下的
??tftp 30008000 uImage
??此時(shí),uImage下載到了內(nèi)存的30008000處
??啟動(dòng)內(nèi)核
??bootm 30008000
??如果根文件系統(tǒng)制作好了,并且放在了nfsroot知道的地方,即主機(jī)中開放出來的NFS掛載點(diǎn)
??則啟動(dòng)成功。
?
?