使用skyeye運行uboot, linux-2.6.31和busybox

LDD6410工程網址爲:
http://code.google.com/p/ldd6410
代碼經過svn管理,獲取方法:
# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://ldd6410.googlecode.com/svn/trunk/ ldd6410-read-only

本頁講解如何使用LDD6410工程的代碼在skyeye中運行uboot、2.6.31內核及文件系統。因爲目前skyeye還不支持s3c6410,因此咱們生成的映像都是s3c2410的。 支持如何功能:
  • cs8900網卡
  • 320*240 16bpp LCD
  • tftp
  • nfs
  • u-boot
  • linux-2.6.31
  • busybox
  • 從u-boot引導linux-2.6.31

主機端配置

安裝skyeye

  sudo apt-get install skyeye

安裝配置tftp服務器

在主機端執行:
  sudo apt-get install tftpd-hpa
  sudo mkdir
/home/tftp
  sudo chmod
777 /home/tftp
sudo vim /etc/default/tftpd-hpa修改文件內容爲:
  RUN_DAEMON="yes
  OPTIONS="
-l -c -s /home/tftp"
開啓tftp服務:
  sudo /etc/init.d/tftpd-hpa start
 
Starting HPA's tftpd: in.tftpd.
skyeye target從主機下載文件的方式是:
  tftp -r file -g 10.0.0.1

安裝配置NFS服務器

在主機端執行:
  apt-get install nfs-kernel-server
  cd
/home
  sudo ln
-s tftp nfs
sudo vim /etc/exports修改該文件內容爲:
  /home/nfs *(sync,rw)
運行exportfs -rv 開啓NFS服務:
   /etc/init.d/nfs-kernel-server restart
在skyeye target上mount nfs的方法是:
   mount -t nfs -o nolock 10.0.0.1:/home/nfs /mnt

編譯uboot、內核和文件系統

編譯u-boot

進入工程源代碼目錄ldd6410/s3c-u-boot-1.1.6,運行make smdk2410_config,接着運行make獲得u-boot映像。

編譯內核

將ldd6410項目ldd6410/patches/2410-skyeye_ldd6410-project.patch拷貝到linux 2.6.31源代碼目錄,打patch:
  patch -p0 < 2410-skyeye_ldd6410-project.patch
接着運行: make smdk2410_skyeye_defconfig配置內核 make vmlinux獲得內核的vmlinux映像。

製做根文件系統initrd.img

進入ldd6410工程代碼的以下目錄:ldd6410/utils/busybox-1.15.1 運行make menuconfig選擇必要的項目,而後運行make,make install。make install運行的結果是會生成install,busybox對應的linuxrc, /bin, /sbin, /usr就在該目錄了。 有了 busybox 後製做 initrd.img 就容易多了,只是提及來比較煩瑣。以命令演示以下: 建立映像文件並掛到 initrd 目錄
  mkdir initrd
  dd
if=/dev/zero of=initrd.img bs=1k count=4096
  mke2fs
-F -v initrd.img
  mount
-o loop initrd.img initrd
將添加 busybox 到此映像文件
  cd initrd
  cp
-r ../_install/* .
建立必要的目錄
  mkdir proc lib etc dev root home var tmp
  chmod
777 tmp
創建設備文件
  cd dev
  mknod
-m 644 console c 5 1
  mknod
-m 644 null c 1 3
  mknod
-m 640 ram b 1 1
  mknod
-m 644 mem c 1 1
  cd
..
建立腳本文件 etc/inittab, 內容以下:
  ::sysinit:/etc/init.d/rcS
 
::askfirst:-/bin/sh
 
::restart:/sbin/init
 
::ctrlaltdel:/sbin/reboot
 
::shutdown:/bin/umount -a -r
 
::shutdown:/sbin/swapoff -a
設置此腳本執行權限
  chmod 644 etc/inittab
建立腳本文件 etc/init.d/rcS, 內容以下:
  #!/bin/sh
 
/bin/mount -t proc none /proc
 
/sbin/ifconfig lo 127.0.0.1 up
 
/sbin/ifconfig eth0 10.0.0.2 netmask 255.0.0.0 up
  hostname skyeye
  mkdir
/var/tmp
  mkdir
/var/log
  mkdir
/var/run
  mkdir
/var/lock
 
/bin/ash
設置此腳本執行權限
  chmod 755 etc/init.d/rcS
最後一步,執行實際的寫入操做,生成 initrd.img
  cd ..
  umount initrd

運行

將編譯獲得的u-boot、vmlinux、initrd.img放入同一目錄,將vmlinux拷入tftp服務器根目錄。 能夠直接運行Linux,使用http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz 中的skyeye-standalone.conf配置文件,結合內核映像vmlinux:
sudo skyeye -e vmlinux -c skyeye-standalone.conf
也能夠先啓動u-boot,而後在uboot中下載vmlinux並啓動它,使用http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz 中的skyeye-with-uboot.conf 配置文件,結合先前編譯獲得的u-boot:
   sudo skyeye -e u-boot -c skyeye-with-uboot.conf
在u-boot正常啓動後,從tftp服務器下載vmlinux:
   tftp 0xc0000000 vmlinux
接着運行bootelf 0xc0000000,Linux內核開始啓動。
http://ldd6410.googlecode.com/files/ldd6410-skyeye-pack.tar.gz 包含了已經作好的映像,能夠直接運行。
相關文章
相關標籤/搜索