嵌入式linux生成bin文件,嵌入式linux之根文件系统制作

本文介绍如何在Ubuntu 14.04环境下编译BusyBox 1.20.2,并详细步骤地讲解了从源码下载、解压编译到配置选项的过程。同时,还提供了如何制作简单的根文件系统的方法,包括创建目录结构、添加启动配置文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

host$代表在主机(ubuntu14.04)下操作

target$代表在开发板下操作

[ username ]​表示你的用户名,例如root

一,busybox源码下载

二,解压编译

以busybox-1.20.2.tar​​​.bz2为例,虚拟机ubuntu14.04

64位

1.修改/opt及其子目录,文件的用户和组

host$ cd

/opt​

host$ sudo chown

[username] /opt -R

host$

sudo chgrp [username] /opt -R

2.copy

busybox-1.20.2.tar​.bz2到ubuntu的/opt下并解压

​host$ cp

xxx/busybox-1.20.2.tar​.bz2

/opt

​host$ tar -xvf

busybox-1.20.2.tar.bz2

3.配置选项

host$cd

​busybox-1.20.2

host$make

menuconfig

在弹出的窗口中,跳到如下位置​

Busybox

Settings

--->

Build Options

--->

[ ] Build BusyBox as a static binary (no shared libs)

(是否编译成静态库,在这里我没选,使用动态库)

根据需要选择静态还是动态库

其他的暂时先不管,保存退出

4.修改Makefile

host$vi

Makefile

修改ARCH

?=

CROSS_COMPILE

?=

为ARCH

?=arm

​CROSS_COMPILE

?=arm-linux-​(如果交叉编译器是arm-linux-gcc)

退出保存​

5.​编译

make;make install

6.检查生成的文件

默认安装目录为当前目录的_install目录

host$cd _install

查看busybox属性​

host$file

/bin/busybox​

​bin/busybox: setuid

ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV),

statically linked, for GNU/Linux 2.6.31, stripped

红色字体部分必须是ARM​

三,制作根文件系统

1.创建相应的目录

host$mkdir

dev lib

etc/init.d  proc

sys  home

mnt var tmp

root  -p

2.添加系统启动配置文件

host$vim

etc/inittab

::sysinit:/etc/init.d/rcS

::respawn:-/bin/sh

(注意/bin/sh前添加-)

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a –r

保存退出

host$vim

etc/fstab

proc   /proc

proc

defaults    0

0

tmpfs  /tmp

tmpfs

defaults     0

0

sysfs   /sys

sysfs

defaults

0  0

tmpfs  /dev

tmpfs

defaults

0  0

说明:sysfs,procfs,tmpfs都是虚拟文件系统,文件系统相关的信息存在内存中。

保存退出

host$vim

etc/init.d/rcS

/bin/mount

-a

mkdir /dev/pts

mount -t devpts devpts /dev/pts

echo /sbin/mdev >/proc/sys/kernel/hotplug

mdev –s

保存退出

修改rcS文件权限

host$chmod

777 etc/init.d/rcS

3.添加busybox运行时所需的动态库

如果在

“解压编译”“配置选项部分”选择的是静态编译,则这步不需要

查看所需动态库

host$

arm-linux-readelf -a bin/busybox | grep

"Shared"​

根据信息,把相应的动态库copy到_install目录的lib下

动态库位置:[cross-compiler dir]/xxx/lib

4.修改权限

host$sudo chown root

* -R

host$sudo chgrp root

* -R

host$sudo chmod u+s

bin/busybox(注意:用户和组修改为root后,再修改这个权限;否则,有些命令可能无法运行;例如,busybox的用户和组是hello,执行sudo

chmod u+s bin/busybox,把文件系统烧写到开发板,发现mount命令无法使用,提示you must be

root。具体请查看s权限说明)​​

四,烧写文件系统

_install里就是简单的文件系统,烧写到开发板,进行验证即可​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值