使用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 包含了已经做好的映像,可以直接运行。



 本文转自 21cnbao 51CTO博客,原文链接:http://blog.51cto.com/21cnbao/213771,如需转载请自行联系原作者




相关文章
|
4月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
75 2
|
2月前
|
机器学习/深度学习 人工智能 Ubuntu
|
2月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
663 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
3月前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
3月前
|
Linux
用QEMU模拟运行uboot从SD卡启动Linux
用QEMU模拟运行uboot从SD卡启动Linux
|
4月前
|
Linux 网络安全 开发工具
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
本文介绍了如何基于Linux Kernel 5.15.102版本和BusyBox创建一个自定义的迷你Linux ARM系统,并使用QEMU进行启动和调试,包括内核和BusyBox的编译配置、根文件系统的制作以及运行QEMU时的命令和参数设置。
405 0
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
|
3月前
|
存储 传感器 Linux
STM32微控制器为何不适合运行Linux系统的分析
总的来说,虽然技术上可能存在某些特殊情况下将Linux移植到高端STM32微控制器上的可能性,但从资源、性能、成本和应用场景等多个方面考虑,STM32微控制器不适合运行Linux系统。对于需要运行Linux的应用,更适合选择ARM Cortex-A系列处理器的开发平台。
295 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
107 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
375 6