移植Linux内核到s3c6410(使用busybox构建initrd ramdisk)

转载 2013年12月02日 23:09:08

busybox就是linux的一个应用程序,就是讲一套非常使用的命令工具集成到一个busybox命令下,它不一定是最全的,但是是非常使用的,被大家称为嵌入式linux的“瑞士军刀”,其编译和配置方法跟linux内核非常相似,使用比较方便。
 下载地址:http://www.busybox.net/

相关阅读:
 
移植Linux内核到s3c6410(配置内核make menuconfig) http://www.linuxidc.com/Linux/2011-08/40002.htm
 
移植Linux内核到s3c6410(编译内核make uImage)http://www.linuxidc.com/Linux/2011-08/40003.htm
 
移植Linux内核到s3c6410(使用busybox构建initrd ramdisk)  http://www.linuxidc.com/Linux/2011-08/40004.htm
 
U-Boot源代码下载地址   http://www.linuxidc.com/Linux/2011-07/38897.htm
 
busybox常用配置

make  defconfig 默认配置
allyesconfig 最大配置
allnoconfig 最小配置
menuconfig手动配置
 
我编译时先用deconfig默认配置,然后再使用menuconfig来手动修改一些配置:
 
1、把busybox编译成静态链接的可执行文件,运行时独立其他函数库,否则运行时就依赖其他库文件。单独有内核时无法运行。
 
busybox settings -> Build Options ->Build BusyBox as a static binary (no shared libs)
 
2、取消下面这个配置项目,否则make install时会将编译生成的命令覆盖当前系统/usr目录的命令,破坏宿主机的系统。 取消后make install时会生成一个-install目录,里面有bin和sbin目录,里面的命令已经默认链接到busybox了。
 
busybox settings -> Installation Options ->Don't use /usr
 


3、选这个选项后,可以将用户名字符串替换提示符。如 [root@localhost linux]# ,否则会显示为:PS1="[/u@/h /w]# " 。
 
busybox settings -> busybox library tuning -> username completion、fancy shell prompts
 

编译后执行make install就会再busybox根目录下生成一个_install目录,里面有bin和sbin目录,链接也已经OK。
 
initrd有了上面那两个目录还不够,还得要一些必要的目录和文件,,如proc,var,dev下的console设备节点等,在busybox源码的根目录下有个examples目录,里面有创建这些目录和device inode等的一些脚本模板,可以帮助大家创建这些目录和文件。
 
我自己编写的模板是,最后的是个采用的是linux2.6内核支持的cpio格式:
 
#!/bin/bash
ROOTFSDIR=/tmp/linux/Rootfs
BUSYBOXSOURCE=/tmp/linux/busybox-1.17.4
TARTGET=/mnt/hgfs/cml
 
echo " start make rootfs......"
rm -fr $ROOTFSDIR/ramdisk.img
rm -fr $ROOTFSDIR/ramdisk.img.gz
rm -fr $ROOTFSDIR/rootfs
cd $ROOTFSDIR
 
echo "--------creat dir--------"
mkdir $ROOTFSDIR/rootfs
cd rootfs
mkdir dev etc lib proc tmp usr var sys
chmod 777 tmp
mkdir usr/lib
mkdir var/lib var/lock var/log var/run var/tmp
chmod 777 var/tmp
 
echo "--------copy busybox--------"
cp -a $BUSYBOXSOURCE/_install .
cp -a $BUSYBOXSOURCE/examples/bootfloppy/etc etc/
 
echo "-----make device inodes-----"
cd dev
mknod console c 5 1
mknod mem c 1 1
mknod null c 1 3
 
# ttys
mknod tty c 5 0
for i in `seq 0 9`; do
        mknod tty$i c 4 $i
done
 
echo "------cpio gzip-------"
cd ..
find .|cpio -c -o > ../ramdisk.img
gzip ../ramdisk.img
 
cp $ROOTFSDIR/ramdisk.img.gz $TARTGET
 
最后生成了我们需要的经过cpio和gzip处理过后的ramdisk.img.gz,欣喜。

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-08/40004.htm

关于initrd的一些整理

initrd是init ramdisk的缩写,initramfs是init ramfs的缩写,名称里加了init前缀,代表它们具有了引导内核启动的功能 initrd是gziped的,initramf...
  • why_how123
  • why_how123
  • 2013年07月15日 18:49
  • 666

在Fedora22平台下将opencv移植到S3C6410

经过两天的努力终于在Fedora22平台上将Opencv(包括Opencv-3.0.0和Opencv-2.2.0)移植到arm开发板上,我没用qt进行显示,只是应用库。 下面我把编译Oencv要用的...
  • good123_2014
  • good123_2014
  • 2015年09月26日 21:45
  • 545

嵌入式linux usb wifi移植[s3c6410平台原创]

  • lubing20044793
  • lubing20044793
  • 2014年06月11日 21:47
  • 1896

ramdisk 和busybox在开发板上的移植[转]

原文链接:http://windowzs.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3d12...
  • scancsdn
  • scancsdn
  • 2014年08月07日 19:27
  • 178

Ramdisk简介以及嵌入式Linux上实现

作者: Sam (甄峰)  sam_code@hotmail.com   Sam多年前在刚接触Linux时第一个项目是个DVR项目,此项目当时谁作谁辞职。在Sam加入之前,几乎已经换了3拨...
  • wangjidong198612
  • wangjidong198612
  • 2015年08月19日 17:05
  • 271

Busybox移植配置方法

BusyBox是标准 Linux 工具的一个单个可执行实现。BusyBox包含了一些简单的工具,例如cat 和echo,还包含了一些更大、更复杂的工具,例如grep、find、mount 以及 tel...
  • u013485792
  • u013485792
  • 2016年01月29日 14:52
  • 468

s5pv210 linux3.8.3内核移植之四:使linux内核支持nfs文件系统

1.配置启动参数 root@xjg:/home/x210v3/kernel/linux-3.8.3# make menuconfig  Boot options  --->  Kernel comm...
  • u010346967
  • u010346967
  • 2015年06月17日 13:37
  • 919

TQ335X开发板内核3.17.2移植和busybox移植

硬件平台:TQ335X_BOARD_V2.1 软件环境:VMWARE10+UBUNTU14.04 KERNEL:3.17.2 Busybox:1.20 参考 http://blog.csd...
  • Stephen_yu
  • Stephen_yu
  • 2016年05月31日 21:45
  • 2504

使用BusyBox构建根文件系统

busybox构建系统之前的准备 第一安装: 为了解决busybox编译出错:fatal error:curse.h错误是因为缺少套件ncurses devel apt-get install lib...
  • Michaelwubo
  • Michaelwubo
  • 2015年08月12日 10:56
  • 2138

如何创建Linux Initrd

Linux初始RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再...
  • davidsky11
  • davidsky11
  • 2014年06月17日 23:29
  • 1205
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:移植Linux内核到s3c6410(使用busybox构建initrd ramdisk)
举报原因:
原因补充:

(最多只允许输入30个字)