linux文件系统制作
2015-01-17 12:00
155 查看
一、U-Boot入门
Uboot是业界老大,那如何编译uboot,烧写,和uboot命令的使用
1、编译uboot
进入uboot_tiny6410的文件夹,使用命令:make
tiny6410_config (对uboot先进行配置,具体配置在Makefile文件中,感兴趣的话可以自己去看)。
编译uboot:make ARCH=arm CROSS_COMPILE=arm-linux-(使用交叉编译,cpu为arm,交叉编译链为arm-linux-)
2、uboot使用命令
使用dnw将uboot下载到nand_flash中,从nand_flash启动开发板,在倒计时的地方,回车就进入了uboot的命令行。
尽管uboot提供了丰富的命令集,但不同的开发板所支持的命令却不一样(可配置),help命令可用于查看当前单板所支持的命令。
#help
4000
查看命令
#printenv或print:查看环境变量
#setenv name value...add/modify environment variable 'name' to 'value'
#setenv name delete environment variable 'name'
#saveenv 保存环境变量 将当前定义的所有变量及其值存入flash中。
下面配置一下tftp,目的是使用tftp将uImage内核下载到开发板中
注意:使用tftp首先要配置好网络
#setenv ipaddr 192.168.142.83
#setenv serverip 192.168.142.84
一定要配置在一个网段,不然会出现ping不通的现象,也就不能使用tftp下载文件了。
pring一下服务器,看有没有连通。
记得还要在服务器端启动tftp,如果没有安装的话,还要安装一个。
查看tftp是否安装:netstat -a | grep tftp
安装tftp:rpm -ivh 安装包名
在启动tftp之前要先配置:#vi /etc/xinetd.d/tftp
![](http://img.educity.cn/img_21/359/2014062608/607084124.jpg)
disable = no
server_args = -s /tftpboot tftp服务器共享文件夹
这个时候开发板作为客户端,linux
_pc机作为服务端。就可以登录客户端从服务器下载资料了(uboot已经安装了tftp客户端)
客户端输入:
tftp 0xc0008000 uImage把tftp服务器上的uImage下载到0xc0008000处。
说明:编译内核会生产两个镜像文件zImag和uImag,uImag是有头说明的,共64个字节。
bootm 0xc0008000 执行固定格式的2进制程序
md:显示内存区的内容。
md采用十六进制和ASCII码两种形式来显示存储单元的内容。这条命令还可以采用长度标示符.l,.w和.b:
md [.b,.w,.l]address
mm修改内存,地址自动递增。
mm [.b,.w,.l] address
mm提供一种互动修改存储器内容的方法。它会显示地址和当前值,然后提示用户输入。如果你输入了一个合法的十六进制数,这个新的值就会被写入该地址。然后提示下一个地址。如果你没有输入任何值,只是按了一下回车,那么该地址的内容保存不变。如果想结束输入,则输入空格,然后回车
nand erase 起始地址start长度len
擦除start处开始的,长度为len的区域
范例:#nand erase 0x4000000 0x500000
写和读NAND_FLASH
nand write 内存起始地址 flash起始地址 长度len
将内存起始地址处,长度为len的数据,写入flash起始地址处。
#nand write c0008000 400000 500000
nand write 内存起始地址 flash起始地址 长度len
将flash起始地址处,长度为len的数据,读到内存起始地址处。
#nand read c0008000 400000 500000
设置自启动
1:设置从nand flash自动启动
#setenv bootcmd nand read c0008000 400000 500000 \; bootm c0008000
2:设置自动下载内核到内存后启动
#setenv bootcmd tftp c0008000 uImage.bin \;bootm c0008000
![](http://img.educity.cn/img_21/359/2014062608/608084124.jpg)
相关阅读:
u-boot Makefile完全解读
U-Boot中的date命令
U-Boot源代码下载地址
U-Boot下的两个重要数据:bd_t和gd_t
U-Boot中的version命令
U-Boot中的usb命令
二、嵌入式linux内核制作
制作嵌入式平台使用的linux内核,方法和制作PC平台的linux内核基本一致。
1、清理原有配置与中间文件
X86:make distclean
arm:make distclean
2、配置内核
x86:make menuconfig
arm:make menuconfig ARCH=arm
在这里呢,我们不自己配置。使用国嵌提供的配置文件config-file.
mv nfig
使用 make menuconfig查看是否配置成功
![](http://img.educity.cn/img_21/359/2014062608/609084124.jpg)
3、编译内核
x86:make bzImage
arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-
注意要将mkimage添加到 /bn文件下,因为内核的编译要用到mkimae这个工具,而它存在uboot的tools文件夹下。
![](http://img.educity.cn/img_21/359/2014062608/610084124.jpg)
这个时候制作的内核还没有文件系统,所以运行到某个地方就停止了,需要制作根文件系统。
三、根文件系统制作
![](http://img.educity.cn/img_21/359/2014062608/611084124.jpg)
1.1、创建目录
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
1.2、创建设备文件
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
1.3、加入配置文件
#tar -zxvf etc.tar.gz
配置文件由国嵌提供
1.4、添加内核模块
#cd .../linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install ARCH=arm INSTALL_MOD_PATH=.../rootfs
1.5、编译/安装busybox
Busybox:嵌入式开发中的瑞士军刀
1、配置busybox
#make menuconfig
Busybox setting ->build options->
选中“Build busybox as a static binary”,静态链接
Cross Compiler prefix(arm-linux-)
Installation options->
选中“Don‘t usr/usr”,选中该项可以避免busybox被安装到宿主系统的/usr 目录下,破坏宿主系统
Busybox Installation prefix(/xxx/rootfs)
该选项表明编译后的busybox的安装位置
2、编译、安装busybox
make
make install
2、挂载根文件系统
根据存储设备的硬件特性、系统需求,不同的文件系统有不同的应用场合。在嵌入式linux应用中,主要的存储设备为RAM和FLASH,常用的基于存储设备的文件系统类型包括:jffs2,yaffs2,ubifs,ramdisk等
![](http://img.educity.cn/img_21/359/2014062608/612084124.jpg)
2.2、使用Initramfs
1、#cd .../rootfs/
#ln -s ./bin/busybox init
2.配置linux内核,支持initramfs
![](http://img.educity.cn/img_21/359/2014062608/613084124.jpg)
![](http://img.educity.cn/img_21/359/2014062608/614084124.jpg)
3、编译内核
4、setenv bootargs noinitrd console=ttySAC0,115200
使用NFS
1、内核配置
去掉init
->filesys->networkFS-root file from nfs
内核编译
bootargs 告诉内核以什么方式启动
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.142.84:/home/kernal_driver/rootfs,proto=tcp,nfsvers=3 ip=192.168.142.83:192.168.142.84:192.168.142.254:255.255.255.0::eth0:of
![](http://img.educity.cn/img_21/359/2014062608/615084124.jpg)
启动NFS,在此之前要先配置
vi /etc/exports
/home/kernal_driver/rootfs *(rw,sync,no_root_squash)
启动:/etc/init.d/nfs restart
使用nfs后的效果为:当在pc机上改动rootfs内容时,开发板根文件下内容也修改了,如果开发板用户权限给了可写的话,开发板上内容的改动也可以修改PC机下的rootfs中的文件。这就是说,开发板的内核挂载到PC机的linux上了,它们两个实现了互连。
而实际产品不会这样子,nfs是在开发阶段使用的一种方式。 NFS网络挂载文件系统
Uboot是业界老大,那如何编译uboot,烧写,和uboot命令的使用
1、编译uboot
进入uboot_tiny6410的文件夹,使用命令:make
tiny6410_config (对uboot先进行配置,具体配置在Makefile文件中,感兴趣的话可以自己去看)。
编译uboot:make ARCH=arm CROSS_COMPILE=arm-linux-(使用交叉编译,cpu为arm,交叉编译链为arm-linux-)
2、uboot使用命令
使用dnw将uboot下载到nand_flash中,从nand_flash启动开发板,在倒计时的地方,回车就进入了uboot的命令行。
尽管uboot提供了丰富的命令集,但不同的开发板所支持的命令却不一样(可配置),help命令可用于查看当前单板所支持的命令。
#help
4000
查看命令
#printenv或print:查看环境变量
#setenv name value...add/modify environment variable 'name' to 'value'
#setenv name delete environment variable 'name'
#saveenv 保存环境变量 将当前定义的所有变量及其值存入flash中。
下面配置一下tftp,目的是使用tftp将uImage内核下载到开发板中
注意:使用tftp首先要配置好网络
#setenv ipaddr 192.168.142.83
#setenv serverip 192.168.142.84
一定要配置在一个网段,不然会出现ping不通的现象,也就不能使用tftp下载文件了。
pring一下服务器,看有没有连通。
记得还要在服务器端启动tftp,如果没有安装的话,还要安装一个。
查看tftp是否安装:netstat -a | grep tftp
安装tftp:rpm -ivh 安装包名
在启动tftp之前要先配置:#vi /etc/xinetd.d/tftp
![](http://img.educity.cn/img_21/359/2014062608/607084124.jpg)
disable = no
server_args = -s /tftpboot tftp服务器共享文件夹
这个时候开发板作为客户端,linux
_pc机作为服务端。就可以登录客户端从服务器下载资料了(uboot已经安装了tftp客户端)
客户端输入:
tftp 0xc0008000 uImage把tftp服务器上的uImage下载到0xc0008000处。
说明:编译内核会生产两个镜像文件zImag和uImag,uImag是有头说明的,共64个字节。
bootm 0xc0008000 执行固定格式的2进制程序
md:显示内存区的内容。
md采用十六进制和ASCII码两种形式来显示存储单元的内容。这条命令还可以采用长度标示符.l,.w和.b:
md [.b,.w,.l]address
mm修改内存,地址自动递增。
mm [.b,.w,.l] address
mm提供一种互动修改存储器内容的方法。它会显示地址和当前值,然后提示用户输入。如果你输入了一个合法的十六进制数,这个新的值就会被写入该地址。然后提示下一个地址。如果你没有输入任何值,只是按了一下回车,那么该地址的内容保存不变。如果想结束输入,则输入空格,然后回车
nand erase 起始地址start长度len
擦除start处开始的,长度为len的区域
范例:#nand erase 0x4000000 0x500000
写和读NAND_FLASH
nand write 内存起始地址 flash起始地址 长度len
将内存起始地址处,长度为len的数据,写入flash起始地址处。
#nand write c0008000 400000 500000
nand write 内存起始地址 flash起始地址 长度len
将flash起始地址处,长度为len的数据,读到内存起始地址处。
#nand read c0008000 400000 500000
设置自启动
1:设置从nand flash自动启动
#setenv bootcmd nand read c0008000 400000 500000 \; bootm c0008000
2:设置自动下载内核到内存后启动
#setenv bootcmd tftp c0008000 uImage.bin \;bootm c0008000
![](http://img.educity.cn/img_21/359/2014062608/608084124.jpg)
相关阅读:
u-boot Makefile完全解读
U-Boot中的date命令
U-Boot源代码下载地址
U-Boot下的两个重要数据:bd_t和gd_t
U-Boot中的version命令
U-Boot中的usb命令
二、嵌入式linux内核制作
制作嵌入式平台使用的linux内核,方法和制作PC平台的linux内核基本一致。
1、清理原有配置与中间文件
X86:make distclean
arm:make distclean
2、配置内核
x86:make menuconfig
arm:make menuconfig ARCH=arm
在这里呢,我们不自己配置。使用国嵌提供的配置文件config-file.
mv nfig
使用 make menuconfig查看是否配置成功
![](http://img.educity.cn/img_21/359/2014062608/609084124.jpg)
3、编译内核
x86:make bzImage
arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-
注意要将mkimage添加到 /bn文件下,因为内核的编译要用到mkimae这个工具,而它存在uboot的tools文件夹下。
![](http://img.educity.cn/img_21/359/2014062608/610084124.jpg)
这个时候制作的内核还没有文件系统,所以运行到某个地方就停止了,需要制作根文件系统。
三、根文件系统制作
![](http://img.educity.cn/img_21/359/2014062608/611084124.jpg)
1.1、创建目录
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
1.2、创建设备文件
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
1.3、加入配置文件
#tar -zxvf etc.tar.gz
配置文件由国嵌提供
1.4、添加内核模块
#cd .../linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install ARCH=arm INSTALL_MOD_PATH=.../rootfs
1.5、编译/安装busybox
Busybox:嵌入式开发中的瑞士军刀
1、配置busybox
#make menuconfig
Busybox setting ->build options->
选中“Build busybox as a static binary”,静态链接
Cross Compiler prefix(arm-linux-)
Installation options->
选中“Don‘t usr/usr”,选中该项可以避免busybox被安装到宿主系统的/usr 目录下,破坏宿主系统
Busybox Installation prefix(/xxx/rootfs)
该选项表明编译后的busybox的安装位置
2、编译、安装busybox
make
make install
2、挂载根文件系统
根据存储设备的硬件特性、系统需求,不同的文件系统有不同的应用场合。在嵌入式linux应用中,主要的存储设备为RAM和FLASH,常用的基于存储设备的文件系统类型包括:jffs2,yaffs2,ubifs,ramdisk等
![](http://img.educity.cn/img_21/359/2014062608/612084124.jpg)
2.2、使用Initramfs
1、#cd .../rootfs/
#ln -s ./bin/busybox init
2.配置linux内核,支持initramfs
![](http://img.educity.cn/img_21/359/2014062608/613084124.jpg)
![](http://img.educity.cn/img_21/359/2014062608/614084124.jpg)
3、编译内核
4、setenv bootargs noinitrd console=ttySAC0,115200
使用NFS
1、内核配置
去掉init
->filesys->networkFS-root file from nfs
内核编译
bootargs 告诉内核以什么方式启动
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.142.84:/home/kernal_driver/rootfs,proto=tcp,nfsvers=3 ip=192.168.142.83:192.168.142.84:192.168.142.254:255.255.255.0::eth0:of
![](http://img.educity.cn/img_21/359/2014062608/615084124.jpg)
启动NFS,在此之前要先配置
vi /etc/exports
/home/kernal_driver/rootfs *(rw,sync,no_root_squash)
启动:/etc/init.d/nfs restart
使用nfs后的效果为:当在pc机上改动rootfs内容时,开发板根文件下内容也修改了,如果开发板用户权限给了可写的话,开发板上内容的改动也可以修改PC机下的rootfs中的文件。这就是说,开发板的内核挂载到PC机的linux上了,它们两个实现了互连。
而实际产品不会这样子,nfs是在开发阶段使用的一种方式。 NFS网络挂载文件系统
相关文章推荐
- linux-2.6.24.4内核移植到s3c2440----使用busybox-1.9.2制作根文件系统
- 如何制作嵌入式Linux文件系统
- Linux系统下面制作RPM安装文件
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作
- 如何制作嵌入式Linux文件系统
- 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
- 如何制作嵌入式Linux文件系统
- 转:制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
- Linux内核移植和根文件系统制作
- 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
- 如何制作嵌入式Linux文件系统
- 用busybox制作嵌入式Linux的文件系统
- 用busybox制作嵌入式Linux的文件系统
- linux 内核移植和根文件系统的制作
- 用busybox制作嵌入式Linux的文件系统
- 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
- 用Busybox制作嵌入式Linux的文件系统
- 嵌入式Linux文件系统制作详解
- 用busybox制作嵌入式Linux的文件系统
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作