威尼斯wns.9778官网活动_vnsc威尼斯城官网

热门关键词: 威尼斯wns.9778官网活动,vnsc威尼斯城官网
当前位置:威尼斯wns.9778官网活动 > 计算机教程 > 使用busybox构建根文件系统

使用busybox构建根文件系统

文章作者:计算机教程 上传时间:2019-09-07

/sbin存放系统管理员使用的管理程序的目录

9.建立/etc/fstab文件,输入如下内容:

#device    mount-point     type options     dump    fsch order

proc /proc proc defaults  0       0

sysfs /sys sysfs defaults   0       0

tmpfs /tmp tmpfs defaults   0       0

tmpfs /dev tmpfs defaults   0       0

 

10.建立/etc/profile文件,输入如下内容:

  Linux的根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序,一般说来根目录”/”下的顶层目录都有一些比较固定命名和用途。  

12.完成,将_install所有文件复制到nfs根目录,运行

问题解决:

1.Kernel panic - not syncing: No init found

原因是缺少busybox启动所需的库,将交叉编译器/libc/lib中所有库复制到/lib下即可(用cp -a)

附加:

设置密码

/etc/passwd文件格式

用户名:密码:用户ID:组ID:注释:初始工作目录:初始shell

  这是一个空目录,常作为proc文件系统的挂接点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。  www.2cto.com  

7.建立/etc/inittab文件,输入如下内容:

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

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

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

bin  linuxrc  sbin  usr

1.解压busybox安装包

tar xjvf busybox-1.22.1.tar.bz2

  该目录下存放系统命令,即只有管理员能够使用的命令,系统命令还可以存放在/usr/sbin,/usr/local/sbin目录下,/sbin目录中存放的是基 本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。

2.修改Makefile文件:

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

/dev 存放设备文件的目录  www.2cto.com  

简介

所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。该标准规定了根目录下各个子目录的名称及其存放的内容:

目录名 存放的内容

/bin 基础的用户命令,例如ls、cp等

/sbin 必备的系统管理员命令,例如ifconfig、reboot等

/dev 设备文件,例如mtdblock0、tty1等

/etc 系统配置文件,包括启动文件,例如inittab等

/lib 必要的链接库,例如C链接库、内核模块

/home 普通用户主目录

/root root用户主目录

/usr/bin 非必备的用户程序,例如find、du等

/usr/sbin 非必备的管理员程序,例如chroot、inetd等

/usr/lib 库文件

/var 守护程序和工具程序所存放的可变,例如日志文件

/proc 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容

/sys 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容

/mnt 文件系统挂接点,用于临时安装文件系统

/tmp 临时性的文件,重启后将自动清除

BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。编译完busybox将会得到如下文件和目录:

linuxrc bin sbin usr

一般情况下,linux的启动流程:

linuxrc挂载/etc目录为ramfs,复制相应文件到/etc,启动/sbin/init->

init进程,根据/etc/inittab执行相应动作(初始化、重启、关机、启动shell)->

执行/etc/init.d/rcS脚本(挂载文件系统、系统环境变量设置)->

执行/usr/etc/rc.local脚本(如安装核心模块、进行网络配置、运行应用程序、启动图形界面、用户环境变量设置等)->

/bin/mount -a

4.编译busybox:

make && make install

将会产生_install文件夹,里面有如下目录:

bin  linuxrc sbin  usr

$ make menuconfig

#!/bin/sh 

9、  添加库

3.配置busybox:

make menuconfig

注释:

make menuconfig需要libncurses5-dev:

sudo apt-get install libncurses5-dev

::restart:/sbin/init

5.添加其他所需目录:

mkdir dev etc mnt proc var tmp sys root lib opt home

/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。

export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib

File systems --->

6.添加动态库到lib目录下,从交叉编译器的libc/lib目录下复制:

cd lib

cp -a /opt/4.4.1/arm-none-linux-gnueabi/libc/lib/libc-2.10.1.so .

cp -a /opt/4.4.1/arm-none-linux-gnueabi/libc/lib/libc.so.6 .

cp -a /opt/4.4.1/arm-none-linux-gnueabi/libc/lib/libm-2.10.1.so .

cp -a /opt/4.4.1/arm-none-linux-gnueabi/libc/lib/libm.so.6 .

cp -a /opt/4.4.1/arm-none-linux-gnueabi/libc/lib/ld-linux.so.3 .

cp -a /opt/4.4.1/arm-none-linux-gnueabi/libc/lib/ld-2.10.1.so .

注释:

cp -a表示复制硬链接,而不是复制文件。由于libxxx.so.xxx都是指向libxxx-xxx.so的软连接

这里只复制了busybox需要的三个动态库,其余的库可根据需要再添加

这里我们挂在的文件系统有三个proc、sysfs和tmpfs,在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持

8.建立/etc/init.d/rcS文件,并添加可执行权限(chmod x rcS),输入如下内容:

#!/bin/sh

#This is the firstscript called by init process

/bin/mount -a

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

mdev -s

注释:

需要telnet服务可添加如下命令:

mkdir /dev/pts

mount -t devpts devpts /dev/pts

tmpfs         /dev          tmpfs       defaults         0          0

11.在/dev下创建设备节点:

sudo mknod -m 666 dev/console c 5 1

sudo mknod -m 666 dev/null c 1 3

 

  该目录下存放共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可执行程序,比如:/bin /sbin 目录下的程序。

  www.2cto.com  

为rcS添加可执行权限:

 

$ cd _install

/bin 存放二进制可执行命令的目录

# /bin/sh invocations on selected ttys

/root 系统管理员的主目录

$ mkdir /etc/init.d -p

  该目录下存放的是设备文件,设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。比如通过"dev/ttySAC0"文件可以操作串口0,通过"/dev/mtdblock1"可以访问MTD设备的第2个分区。

tmpfs      /tmp         tmpfs       defaults          0          0

$ arm-cortex_a8-linux-gnueabi-strip  lib/*

  /usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,这表明/usr目录下的内容可以在多个主机间共享,这些主要也符合FHS标准的。/usr中的文件应该是只读的,其他主机相关的,可变的文件应该保存在其他目录下,比如/var。/usr目录在嵌入式中可以精减。

$ vim /etc/fstab

文件内容如下:

6、  安装

 

  www.2cto.com  

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

http://busybox.net/downloads/

$ make zImage

sysfs         /sys          sysfs       defaults         0          0

$ mknod   dev/console  c 5 1

export USER=root

$ make install

  /bin目录下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,[,test等“[”命令其实就是test命令,我们在利用Busybox制作根文件系统时,在生成的bin目录下,可以看到一些可执行的文件,也就是可用的一些命令。  

在etc下添加profile文件

#!/bin/sh

 

 

 

 

$ chmod   x init.d/rcS

rcS文件内容为:

linux文件系统的移植-根文件系统制作

export HOSTNAME=farsight

 

# Start an "askfirst" shell on the console (whatever that may be)

2、  u-boot.bin http://download.csdn.net/detail/baby_afu/4412826

3、  进入源码目录

 

export PATH LD_LIBRARY_PATH

 

 

 

在etc下创建init.d目录,并在init.d下创建rcS文件

/home 用户主目录,比如用户user的主目录就是/home/user,可以用~user表示

 

 

$ cd busybox-1.17.3

3、  目标机:FS_S5PC100平台

10、 添加系统启动文件

export PS1="[[email protected]$HOSTNAME W]# "

/tmp 公用的临时文件存储点

#!/bin/sh

8、  创建其他需要的目录

  www.2cto.com  

export HOME=root

              [*] Tmpfs POSIX Access Control Lists

 

       Build Options --->

/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。

$ mkdir  dev etc  mnt proc var tmp sys root

       Pseudo filesystems --->

$ rm *.o *.a

 

$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/*  ./lib/

  与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。

  www.2cto.com  

下面列出了一个Linux根文件系统中的比较常见的目录结构:

# Stuff to do before rebooting

PATH=/bin:/sbin:/usr/bin:/usr/sbin

本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:使用busybox构建根文件系统

关键词: