嵌入式 linux 根文件系统 rootfs

合集下载

嵌入式linux操作系统原理与应用

嵌入式linux操作系统原理与应用

嵌入式Linux操作系统是一种针对嵌入式设备设计和优化的Linux操作系统。

它在嵌入式系统中发挥着关键作用,为嵌入式设备提供了丰富的功能和灵活性。

以下是嵌入式Linux操作系统的原理和应用方面的概述:嵌入式Linux操作系统原理:内核:嵌入式Linux操作系统的核心是Linux内核,它提供了操作系统的基本功能,包括处理器管理、内存管理、设备驱动程序、文件系统和网络协议栈等。

裁剪:为了适应嵌入式设备的资源限制,嵌入式Linux操作系统通常经过裁剪和优化,只选择必要的功能和驱动程序,以减小内存占用和存储空间,并提高性能和响应速度。

交叉编译:由于嵌入式设备通常具有不同的硬件架构和处理器,所以嵌入式Linux操作系统需要通过交叉编译来生成适用于目标设备的可执行文件和库。

设备驱动:嵌入式Linux操作系统需要适配各种硬件设备,因此需要编写和集成相应的设备驱动程序,以使操作系统能够正确地与硬件进行通信和交互。

嵌入式Linux操作系统应用:嵌入式设备:嵌入式Linux操作系统广泛应用于各种嵌入式设备,如智能手机、平板电脑、家用电器、工业控制系统、车载设备等。

物联网(IoT):随着物联网的快速发展,嵌入式Linux操作系统被广泛应用于连接的嵌入式设备,用于数据采集、通信、远程控制和智能化管理。

嵌入式开发板:嵌入式Linux操作系统在开发板上提供了丰富的开发环境和工具链,用于嵌入式软件开发和调试。

自定义嵌入式系统:开发者可以基于嵌入式Linux操作系统构建自定义的嵌入式系统,根据特定需求进行定制和开发,实现各种功能和应用。

嵌入式Linux操作系统的原理和应用非常广泛,它为嵌入式设备提供了灵活性、可定制性和强大的功能支持,使得开发者能够构建高度定制化和功能丰富的嵌入式系统。

嵌入式系统根文件系统制作

嵌入式系统根文件系统制作

保存退出,直接make,make install。

可以看到如下目录3、用shell脚本创建根文件系统的目录结构,并在想要建立根文件系统的地方运行此脚本。

我是用root 用户登陆的,直接创建了设备节点。

执行这个sh:创建出一个主文件夹rootfs,里面有一批文件目录:4、把busybox源码目录下的etc的内容拷贝到这里的etc下5、修改拷贝过来的profile文件三、测试注意:前提是已烧写好uboot和内核镜像烧写文件系统1.开启windows 的tftp服务器,设置环境变量,保证开发板和windows在同一网段及开发板的tftp服务器的IP为windows的IP。

[up-class2410 #] setenv serverip 192.168.1.126[up-class2410 #] setenv ipaddr 192.168.1.129[up-class2410 #] saveenvSaving Environment to NAND...Erasing Nand...Writing to Nand... done2. 下载并烧写到nand flash文件系统对应的分区中[up-class2410 #]tftp 0x30008000 root.cramfs[up-class2410 #]nand erase 0x280000 0x400000[up-class2410 #]nand write 0x30008000 0x280000 0x3000003. 设置启动参数[up-class2410 #] setenv bootcmd nand read 0x30008000 0x80000 0x200000\; bootm此项是内核自动启动的参数,如果已设置就不用再重新设置[up-class2410 #] setenv bootargs root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200[up-class2410 #] saveenvSaving Environment to NAND...Erasing Nand...Writing to Nand... done[up-class2410 #] printenvbootdelay=5baudrate=115200ethaddr=08:00:3e:26:0a:5bbootfile="uImage"stdin=serialstdout=serialstderr=serialfilesize=26D000fileaddr=30008000netmask=255.255.255.0ipaddr=192.168.1.129serverip=192.168.1.126bootcmd=nand read 0x30008000 0x80000 0x200000; bootmbootargs=root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200Environment size: 332/16380 bytes4.重启开发板[up-class2410 #]reset。

bootload、kernel、rootfs

bootload、kernel、rootfs

嵌入式Linux系统的构建一、嵌入式Linux系统中的典型分区结构Root filesystemKernel二、各个结构的分析1、从咱们所学的硬件知识能够明白,在系统上电后需要一段程序来进行初始化(关闭WATCHDOG、改变系统时钟、初始化存储器操纵器、将更多的代码复制到内存中)。

简单的说bootload确实是这么一段小程序(相当于PC机中的BIOS),初始化硬件设备、预备好软件环境,最后挪用操作系统内核。

从某个观点上来看Bootload能够分为两种操作模式:启动模式和下载模式。

启动模式:上电后bootload从板子上的某个固态存储器上将操作系统加载到RAM中运行,整个进程并无效户的介入下载模式:在这种模式下,开发人员能够利用各类命令,通过串口连接或网络连接等通信手腕从主机下载文件,将它们直接放在内存运行或是烧入Flash类固态存储设备中。

Bootload能够分为两个时期:第一时期实现的功能:硬件设备初始化、为加载Bootload的第二时期代码预备RAM空间、复制Bootload的第二时期代码到RAM空间中、设置好栈、跳转到第二时期代码的C入口点第二时期:初始化本时期要利用的硬件设备、检测系统内存映射、将内核镜像和根文件映像从Flash上读到RAM空间中、为内核设置启动参数、挪用内核2、内核的结构:Linux内核文件数量快要2万,除去其他构架CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件有1万多个。

这些文件组织结构并非复杂,他们别离位于顶层目录下的17个子目录,各个目录功能独立Linu内核Makefile文件分类3、根文件系统嵌入式Linux 中都需要构建根文件系统,构建根文件系统的规那么在FHS(FilesystemHierarchy Standard)文档中,下面是根文件系统顶层目录。

三、根文件系统的制作一、进入到/opt/studyarm 目录,新建成立根文件系统目录的脚本文create_rootfs_bash,利用命令chmod +x create_rootfs_bash 改变文件的可执行限,./create_rootfs_bash 运行脚本,就完成了根文件系统目录的创建。

根文件系统(rootfs)

根文件系统(rootfs)

根文件系统(rootfs)展开全文一、根文件系统的作用是linux挂载的第一个文件系统,rootfs包含shell命令、linux系统配置文件(文件系统的挂载、网络服务、用户名、主机名、用户密码、环境变量...)、linux应用程序、应用程序处理的数据、独立的驱动模块(*.ko)。

根文件系统,相当于linux内核外围的一个应用环境。

====================================== ========================================= =========================二、控制台输出:[ 4.183226] yaffs: dev is 32505860 name is "mtdblock4" rw //存放rootfs的设备名字mtdblock4 ,rw可读写[ 4.183291] yaffs: passed flags ""[ 4.337878] VFS: Mounted root (yaffs filesystem) on device 31:4. //31:4 --》主设备:次设备号[ 4.338028] Freeing init memory: 536K ---->rootfs挂载成功,释放内核中一些初始化函数所占用的内存[ 4.357023] usb 1-1: New USB device found, idVendor=1a40, idProduct=0101[ 4.357083] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0[ 4.357145] usb 1-1: Product: USB 2.0 Hub[ 4.357747] hub 1-1:1.0: USB hub found[ 4.357852] hub 1-1:1.0: 4 ports detected[ 5.886184] smdkc110-rtc smdkc110-rtc: rtc disabled, re-enabling[ 6.086924] eth0: link down[ 6.087198] ADDRCONF(NETDEV_UP): eth0: link is not ready[root@YueQian /]#[root@YueQian /]#[root@YueQian /]#[root@YueQian /]#最小的根文件系统的内容:# ls /bin home media proc sys usrdev lib mnt root tmp varetc lost+found opt sbin====================================== ========================================= =========================三、根文件系统启动过程1、uboot的启动参数:init=/linuxrcinit是linux运行时的第一个进程,该进程执行的是/linuxrc 其中linuxrc -> bin/busyboxinit=/sbin/init 其中:init -> ../bin/busybox--------------------------------------------------------------------------------------------------------2、内核启动后,首先通过vfs去挂在rootfs,然后再执行init=/linuxrc ,linuxrc是busybox这个工作生成的文件。

beagleboard-xM构建交叉编译环境

beagleboard-xM构建交叉编译环境

玩转BeagleBoard xM——建立虚拟机开发环境和嵌入式Linux系统分类:beagleboard xM linux kernel rootfs 2012-07-28 10:36 343人阅读评论(0) 收藏举报在Beagleboard xM(简称bb)上建立能运行Linux系统,包括了创建启动用的TF卡,编译生成bootloader(MLO和u-boot.bin),编译生成内核镜像文件(uImage或zImage 文件),创建rootfs(Linux根文件系统)等工作。

这些工作需要在一台配置ARM交叉编译环境的Linux系统上完成。

下面分步完成整个系统的建立过程,直至Linux系统在bb上boot起来,进入shell命令行。

STEP 1:建立ARM嵌入式开发环境利用ARM交叉编译环境,可以x86系统上,编译ARM处理器上可执行的目标代码。

主要用于编译bb上的bootloader、内核镜像,以及其它ARM可执行程序。

具体步骤:(1)在VMware上创建一个虚拟机,安装发行版的ubuntu系统,用于建立ARM嵌入式开发环境。

(2)安装arm-linux-gcc,建立ARM交叉编译环境(需要root权限)1、下载arm-linux-gcc-4.3.2.tgz压缩包2、tar -xzvf arm-linux-gcc-4.3.2.tgz,自动解压至/user/local/arm/目录下。

ARM交叉编译器的所有可执行程序在/usr/local/arm/4.3.2/bin/目录下。

3、配置root用户环境变量,修改/etc/bash.bashrc文件#vi /etc/bash.bashrc在最后加上export PATH=$PATH:/usr/local/arm/4.3.2/bin4、测试arm-linux-gcc -v,会执行编译器,正常显示版本信息表示已安装配置成功STEP 2:创建bootloader和boot.scrTI OMAP系列处理器上的bootloader专指x-loader(MLO)和u-boot(u-boot.bin),两者用于完成Linux内核启动前的配置部分硬件系统配置,解压加载内核Image文件并引导内核启动。

嵌入式Linux中常见的文件系统及特点

嵌入式Linux中常见的文件系统及特点

嵌⼊式Linux中常见的⽂件系统及特点1、Linux可⽀持的⽂件系统有多种,但是这么多种的⽂件系统都是基于Linux内核所提供的⽂件系统VFS的接⼝API。

因此对于Linux内核级别实现的⽂件系统只有VFS虚拟⽂件系统; 其余实现的⽂件系统都是调⽤VFS⽂件系统的API更上⼀层实现的;2、Linux⽂件系统的组成结构: 1、⽤户层:⽤户层向外提供Linux内核所⽀持⽂件系统的VFS的API接⼝ 内核层:内核实现了所说的各种⽂件系统 驱动层:驱动层是块设备的驱动程序 硬件层:硬件层是不同⽂件系统⽀持的存储器;3、Linux启动时的⽂件系统: 硬件上电启动,各项硬件初始化后,第⼀个启动的⽂件系统时RootFS根⽂件系统,如果说根⽂件系统没有起来,系统出现异常、将重启;4、常⽤的⽂件系统运⾏、存储设备有: DRAM、SDRAM以及ROM其中常使⽤flash;5、根据不同的存储介质,常见的⽂件系统有: 基于Flash(Nor、Nand)的⽂件系统有: jffs2:可读写,数据压缩、⽀持哈希表的⽂件系统,掉电保护;缺点:不适合使⽤在⼤容量的Nand Flash中,内存使⽤量太⼤极⼤降低数据操作速度; yaffs:读写速度快,占⽤内存⼩,实现内存访问异常处理;混合的垃圾回收算法;特别适合嵌⼊式设备使⽤;跨平台、⾃带Nand 芯⽚驱动 cramfs:只读的⽂件系统,执⾏速度快,内容⽆法扩充;⽂件系统健壮; romfs:简单紧凑、只读、不⽀持动态擦写;较多使⽤在uclinux系统上; 基于RAM存储介质的⽂件系统: ramdisk:将⼀部分固定⼤⼩的内存当做分区使⽤,不能真正算的上实际的⽂件系统,更像是⼀种机制,将实际的⽂件系统加载到内存中;将⼀些经常被访问的⽽⼜不会更改的⽂件放⼊到内存中,达到提⾼系统效率的⽬的;同时还负责将内核镜像与⽂件系统⼀块加载到内存中; ramfs/tmpfs :基于内存的⽂件系统,⼯作于虚拟⽂件系统层,可以创建多个⽂件系统,可以指定每个⽂件系统最⼤使⽤内存;这种⽂件系统将所有的⽂件都放在RAM中,既可以提⾼读写速度,也可以避免对flash⼤量的读写操作;⽂件系统不可以格式化,占⽤内存⼤⼩可以指定; ⽹络⽂件系统: NFS:是⼀种基于⽹络共享技术,可以在不同平台、不同机器、不同操作系统上实现⽂件共享、⽂件传输;在嵌⼊式Linux系统初始开发阶段可以⾮常⽅便⽂件传输、⽂件修改;地址异常进⼊模式描述0x0000,0000复位管理模式电平复位0x0000,0004未定义指令异常未定义模式遇到不能处理的指令,⽆法识别的指令0x0000,000c 软件中断管理模式异常发⽣时CPU处理的步骤:R13(sp),R15(PC)1、保存当前执⾏位置:LR寄存器(R14)2、保存当前执⾏状态:CPSR3、寻找中断⼊⼝,中断向量表:PC寄存器找向量地址4、执⾏中断处理完成:5、中断返回,继续执⾏:R14 <exception_mode> = return linkSPSR<exception_mode>=CPSRCPSR[4:0] =exception mode number;/* 处理器⼯作模式控制位 */CPSR[5]=0; /* 使⽤ARM指令集 */If<exception_mode> == reset or FIQ thenCPSR[6]= 1;/* 屏蔽快速中断FIQ */CPSR[7]=1; /* 屏蔽外部中断IRQ */PC=exception vector address;复位异常中断处理程序的主要功能:1、设置异常中断向量表:2、初始化数据栈和寄存器:3、初始化存储系统MMU:4、初始化关键IO设备:5、使能中断:6、处理器切换到合适的模式:7、初始化C变量跳转到应⽤程序执⾏:R14<SVC> = 设置相应的值;SPSR<SVC> = 设置相应的值;CPSR[4:0]=0b10011;/* 进⼊特权模式 */CPSR[5]=0; /* 使⽤ARM指令集 */CPSR[6] =1; /* 禁⽌相关关闭FIQ */CPSR[7] =1; /* 禁⽌IRQ */If high vectors configured thenPC=0xffff,0000;ElsePC= 0x0000,0000;其余的异常以此类推;异常的优先级:1、Reset: 优先级1(最⾼)2、Data abort:23、FIQ:34、IRQ:45、Prefetch abort:56、SWI或者undefined instruction:6(最低),软件中断异常或者未定义指令异常ARM硬件接⼝:1、程序的链接地址和程序地址:ld程序链接地址程序链接地址:是程序运⾏的起始地址;程序地址:是程序保存在硬盘中的地址;2、呵呵呵。

buildroot编译详解

buildroot编译详解

Buildroot 是一个用于编译嵌入式Linux系统的工具,它可以帮助你构建一个完整的Linux系统,包括内核、根文件系统、应用程序等。

下面是Buildroot 编译的详细步骤:
1.下载Buildroot
可以从官网下载Buildroot的最新版本,下载后解压到本地目录。

2.配置Buildroot
进入Buildroot的顶层目录,执行以下命令进行配置:
make menuconfig
这个命令会打开一个文本界面,你可以在这个界面中进行配置。

具体的配置选项可以根据自己的需求进行选择,配置完成后记得保存退出。

3.选择目标板和内核版本
在配置Buildroot时,需要选择目标板和内核版本。

目标板可以根据自己的硬件平台进行选择,而内核版本则可以根据需要选择对应的版本。

4.编译应用程序和工具链
在配置完成后,可以执行以下命令开始编译:
make all
这个命令会编译Buildroot中的所有应用程序和工具链。

如果编译成功,会在output目录下生成相应的文件。

5.构建根文件系统和内核映像
在编译完成后,可以执行以下命令构建根文件系统和内核映像:
make rootfs_tar # 构建根文件系统
make zImage # 构建内核映像
这两个命令会分别构建根文件系统和内核映像,并存储在output目录下。

6.将内核映像和根文件系统复制到目标板中
最后,将生成的内核映像和根文件系统复制到目标板中,即可完成整个系统的构建。

linux之rootfs(UBIFS)

linux之rootfs(UBIFS)

resolve.conf dns nameserver 202.96.134.133 hostname init.d/rcS hostname mx27 passwd group shadow / / PC
1 passwd 7 6
21
32
x
MD5 DES 4 3 ID 5 4 ID 6 5
76
87
shell 9 10 Group 4 3
fstab mount -a
type options
dump pass 7 8 #for mdev 9 proc
/proc proc defaults
0 010 sysfs
/sys
sysfs defaults
0 011 12 #ma
inittab
1 # see busybox/examples/inittab 2 3 # Boot-time system configuration/initialization script. 4 # This is run first except when booting in single-user mode. 5 ::sysinit:/etc/init.d/rcS 6 7 #Start an "askfirst" shell on the console (whatever that may be) 8 #use res
-m -e
-c
barebox ubiattach
barebox erase /dev/nand0.root ubiattach /dev/nand0.root ubimkvol /dev/ubi0 root 0 dhcp tftp ubifs.img /dev/ubi0.root

嵌入式系统第七讲 嵌入式Linux系统启动分析

嵌入式系统第七讲 嵌入式Linux系统启动分析

嵌入式LINUX内核的版本控制 (2)
嵌入式Linux的版本号后面还会加一个后缀,如 “rmk4-mx1bsp0.3.6” ,该后缀往往表示针对某 个开发平台的补丁。几个常用的后缀:
– – –

rmk:表示由Russell King维护的ARM Linux; np:表示由Nicolas Pitre维护的基于StrongARM和 Xscale的ARM Linux; ac:表示由Alan Cox(Alan Cox是仅次于Linus的 Linux维护人员,主要负责网络部分和OSS等的维护 工作)维护的Linux代码; hh : 表 示 由 网 站 发 布 的 ARM Linux代码,主要是基于Xscale的,它包括工具链 、内核补丁、嵌入式图形系统等。
Bootloader空间位置
在flash中的典型空间分配情况
BootLoader 的主要功能(1/2)
初始化系统在启动阶段必需的硬件设备; 准备后续软件系统(如操作系统)运行所需 的软件环境,如复制操作系统内核代码到 RAM中等。 向内核传递启动参数; [可选]配置系统各种参数;
BootLoader 的主要功能(2/2)
BootLoader的特点
BootLoader是操作系统内核运行前的核心程 序,它具有如下特点: 代码量大; 由C语言写成,大多数时候需要嵌入式汇编 语言; 运行于SDRAM等随机存储器 由于它是启动内核前运行的最后一个程序, 它必须把控制权交给内核,因此它最后是一 条跳转到系统内核的语句。
嵌入式LINUX的内核源代码结构 (1)


COPYING
– GPL版权申明。
CREDITS
– 光荣榜。对Linux做出过重大贡献的人员信息。

jffs2文件系统

jffs2文件系统
#cat /etc/motd
根据要求创建:/proc /dev /tmp /sys目录 和文件 /etc/motd文件
同时为了兼容的问题作一个软链接: ln -s ./rc.d/rcS ./rc
继续修改etc/inittab文件,增加一个命令终端: ::respawn:/bin/cttyhack /bin/sh
b. 编译 make
c.把编译好的相关的命令copy到/root/rootfs: make install (/bin、/sbin、/usr/sbin、/usr/bin这些目录)
2) 制作有关的Linux启动的文件:
a. 在/root/fs目录下:创建etc目录 b. 把/armlinux/busybox-1.13.4/examples/inittab COPY到etc目录
5. 把root.img文件下载到目标机中(进入bootloader)
tftp root.img root
flash root
Hale Waihona Puke 6. 修改bootloader的命令行
root=1f02 rootfstype=jffs2 console=ttyS0,115200 mem=64M init=/in.sh
2) 库文件(包括QT库文件):
3)有关的Linux启动的文件:/etc/inittab , rc,(环境变量PATH,库文件的位置)
3、制作文件系统
1) 得到相应的命令,这个可以根据自己的要求来选择自己的命令。我们将使用busybox来得到我们的命令。我们这些命令必须是使用交叉编译器编译才行。
c. 修改inittab这个文件, (/etc/rc.d/rcS因为我们的Linux系统都是这样做的)

buildroot make 原理

buildroot make 原理

buildroot make 原理一、什么是buildrootBuildroot是一个用于嵌入式Linux系统的简化和自动化构建工具。

它允许用户通过配置文件定制自己的Linux系统,并使用make命令自动构建整个系统。

Buildroot主要用于构建根文件系统(rootfs),它是Linux系统的基础,包含了操作系统运行所需的所有文件和目录。

二、make的基本原理在介绍buildroot的make原理之前,我们先来了解一下make的基本原理。

make 是一个基于文件时间戳的自动化构建工具,它通过比较源文件和目标文件的时间戳来判断是否需要重新编译。

make工具通过读取Makefile文件中的规则来执行构建过程。

Makefile中定义了目标(target)、依赖关系(prerequisites)和构建命令(recipe)。

当make命令执行时,它会根据Makefile中的规则来判断哪些目标需要重新构建。

make会先判断目标文件是否存在,如果不存在或者目标文件的时间戳早于依赖文件,则需要执行构建命令来生成目标文件。

构建命令可以是编译源代码、链接目标文件等。

构建命令执行完毕后,会更新目标文件的时间戳。

make会递归地处理所有的依赖关系,确保所有的依赖文件都是最新的。

这样,只有需要重新构建的目标才会执行相应的构建命令,提高了构建的效率。

三、buildroot的make原理buildroot使用make作为构建工具,通过读取Makefile来执行构建过程。

buildroot的Makefile是由Kconfig文件和一些其他的Makefile片段生成的。

1. Kconfig文件Kconfig文件是buildroot的配置文件,用于定义系统的配置选项。

Kconfig文件使用一种特定的语法来描述配置选项,包括菜单(menu)、菜单项(menuconfig)和配置项(config)等。

Kconfig文件中的配置选项会生成一个.config文件,用于指定构建rootfs所需的软件包和配置参数。

解决mount root fs问题的方法

解决mount root fs问题的方法

解决mount root fs问题的方法在Linux系统中,"mount root fs"问题是一个常见的技术难题,通常发生在系统启动过程中,由于根文件系统未能正确挂载而导致系统无法正常加载。

下面将详细介绍几种解决这一问题的方法。

一、理解"mount root fs"问题"mount root fs"问题指的是在Linux系统启动时,内核未能成功挂载作为根文件系统的分区。

这可能是由于多种原因造成的,如文件系统损坏、分区表错误、挂载选项问题等。

二、解决方法1.修复文件系统如果文件系统受损,可以使用fsck工具进行修复。

通常,在系统启动时,可以通过以下步骤进行:- 重启系统,进入GRUB引导加载器界面。

- 选择需要启动的Linux内核,按e键进入编辑模式。

- 找到以"linux"或"linux16"开头的行,通常包含启动参数。

- 在行尾添加"init=/bin/bash"或"rw init=/sysroot/bin/sh",按Ctrl + X或F10启动。

- 在紧急模式下,运行"fsck -y /dev/sdXn"(将sdXn替换为根文件系统的设备名和分区号)来检查和修复文件系统。

- 修复完成后,执行"exec /sbin/init"或"exec switchroot /sysroot"来继续启动。

2.修改GRUB启动参数如果是挂载选项问题,可以在GRUB启动参数中修改:- 同样进入GRUB编辑模式。

- 找到启动参数行,修改或添加"ro"为"rw",表示以读写模式挂载根文件系统。

- 或者,尝试移除"rhgb"(redhat graphics boot)和"quiet"参数,以便在启动过程中查看可能的错误信息。

嵌入式Linux荔枝派V3SNorFlashxt25f128bFlash使用

嵌入式Linux荔枝派V3SNorFlashxt25f128bFlash使用

一、全志V3s出厂SD卡,需要增加对SPI NorFlash的支持SPI Flash 系统编译使用的是荔枝派zero上面焊接了一个芯天下的Nor Flash型号为:XT25F128B也就是16MByte。

内核:linux-zero-5.2.y1、嵌入式Linux 需要的程序⚫Uboot⚫Linux Kernel⚫Dtb设备树⚫根文件系统2、Nor Flash的支持,需要以下步骤1.配置uboot支持nor flash2.配置Linux kernel支持nor flash3.在设备树中添加nor flash的设备节点4.由于nor flash的特殊性需要选择JFFS2格式的文件系统3、Nor flash的分区XT25F128B,也就是16MByte NOR Flash作为启动介质,规划分区如下:由于内核中增加了网络驱动、音视频解码驱动,导致内核目前4.6MB左右,考虑到后期扩展,将内核分区扩大至6MB,文件系统分区缩小至8MB+960KB。

分区序号分区大小分区描述地址空间及分区名mtd0 1MB spl+uboot 0x0000000-0x0100000 : “uboot”mtd1 64KB dtb文件0x0100000-0x0110000: “dtb”mtd2 6MB linux内核0x0110000-0x0710000 : “kernel”mtd3 8MiB 960KiB 根文件系统 0x0710000-0x1000000 : “rootfs”三、编译Uboot由于目前Uboot环境变量固定存放在1MB位置之内,所有留给uboot的空间固定到flash前1MB的位置不变。

每个分区的大小必须是擦除块大小的整数倍,XT25F128B的擦除块大小是64KB。

1、下载uboot源码下载包含spi驱动的体验版本uboot,该驱动目前尚未合并到主线。

2、配置Flash支持型号执行make ARCH=arm menuconfig 打开uboot菜单配置,进入到Device Drivers ‣SPI Flash Support。

NUC97XLinuxyaffs2根文件系统制作

NUC97XLinuxyaffs2根文件系统制作

NUC97XLinuxyaffs2根文件系统制作NUC97X Linux yaffs2 根文件系统制作ARM kernrl文件系统中只有一个根文件系统,根文件系统被加载后,还可以再挂载其它文件系统,互不影响。

比如可以在Nandflash,SPI, EMMC,SD,U盘等每个存储模块上挂载不同的文件系统。

每个存储部件又可以具体分为许多块,就像电脑里分成许多盘。

不同部件甚至不同的块也可以有不同的文件系统。

挂载根文件系统后,如果要继续在其它存储部件或不同的块上挂载其它文件系统,可以使用mount命令来实现。

不同的块要被文件系统识别,可以要么在kernel环境下,使用命令把它变成所需要的某种文件格式的块。

也可以使用工具把你要烧录的文件夹,其中可以为空文件做成文件系统可识别的镜像烧到存储区域。

Kernel中默认就有根文件系统,但该文件系统操作的区域为RAM 中,如创建或修改文件,掉电或复位后文件和数据即丢失。

因此要制作能挂载在flash等存储部件的根文件系统,指定具体存储部件和存储位置,以便在ARM平台上运行的kernel能识别系统文件,同事能够保存和同步文件和数据。

制作根文件系统是制作ARM平台的文件系统,而不是制作PC端linux平台的根文件系统。

根文件系统制作过程,参考:Linux BSP\nuc970bsp-release-20161108\Documents\ChineseNUC970 Linux 快速入门.pdf 3.8章节,5.3.1 基本系統設置章节,5.3.4 文件系統設置章节。

開機命令設置–以RAM為根文件系統的設定開機命令設置–以SPI Flash JFFS2文件系統為根文件系統的設定開機命令設置–以NAND Flash YAFFS2文件系統為根文件系統的設定開機命令設置–以NAND Flash UBIFS文件系統為根文件系統的設定開機命令設置–以NFS文件系統為根文件系統的設定開機命令設置–以NAND Flash YAFFS2文件系統為根文件系統的設定介绍一.1.NAND flash的设置使能MTD 的“Caching block device access to MTD devices Device drivers”驅動中的基本設置如果需要由U-boot環境變數傳入就必須將”Command line partition table parsing”選上, 否則會使用驅動程式裡的默認配置, 这里要把该项禁止。

嵌入式linux烧录步骤

嵌入式linux烧录步骤

嵌入式linux烧录步骤嵌入式Linux的烧录过程可以根据具体的开发板、芯片或厂商而有所不同,但一般步骤如下:准备工作:1.获取固件:下载或编译适用于你的嵌入式设备的Linux内核镜像和根文件系统。

2.连接烧录设备:将开发板或目标设备通过USB、JTAG或其他适配器连接到计算机。

烧录过程:1.烧录工具选择:根据硬件和厂商提供的指南选择适当的烧录工具,比如dd命令、flashcp、U-Boot工具等。

2.擦除存储器(如果需要):如果需要擦除存储器(如闪存),可以使用工具进行擦除。

注意备份数据(如果需要)。

3.烧录内核镜像:使用烧录工具将预编译或自定义的Linux内核镜像烧录到设备的闪存中。

示例命令(使用dd命令烧录)sudo dd if=your_kernel_image of=/dev/sdX bs=4Mif=指定输入文件,of=指定设备路径(请替换为你的设备路径),bs=指定块大小。

4.烧录根文件系统:将根文件系统烧录到设备的闪存或存储介质中。

示例命令(使用dd命令烧录)sudo dd if=your_rootfs_image of=/dev/sdX bs=4M5.配置启动选项:根据需要,配置引导加载程序(如U-Boot)以引导新烧录的内核和文件系统。

6.断开连接并启动设备:完成烧录后,断开连接并重新启动嵌入式设备,使其加载新的内核和根文件系统。

注意事项:●在执行烧录操作之前,请确保你理解并确认要烧录的目标设备和存储介质。

●仔细阅读并遵循硬件厂商提供的烧录指南和文档。

●在烧录过程中小心操作,避免误操作导致数据丢失或损坏设备。

●这些步骤提供了一般性的指南,实际操作可能因设备、开发板和硬件环境而有所不同。

嵌入式linux系统移植试题-答案

嵌入式linux系统移植试题-答案

嵌入式Linux系统移植试题(时间:60分钟)一、单项选择题(每题2分,共40分)1.嵌入式linux系统移植不包括(D)[A] bootloader[B] linux内核[C] 根文件系统[D] 应用程序2.下列选项中符合gcc的编译流程的是(A )[A] 预处理->编译->汇编->连接[B] 预处理->汇编->编译->连接[C] 编译->预处理->汇编->连接[D] 预处理->连接->汇编->编译3.下列二进制工具哪个是丢弃目标文件的全部或者特定符号,减少文件体积的(D )[A] size[B] as [C] nm [D] strip4.下列二进制工具哪个是用来反汇编的(B)[A] nm[B] objdump [C] objcopy [D] string5.下列二进制工具哪个是用来进行目标格式转换的(C )[A] nm[B] objdump [C] objcopy [D] string6.下列二进制工具哪个是用来把程序地址转换为文件名和行号的(D)[A] nm[B] objdump [C] objcopy [D] addr2line7.FS4412开发平台上,uImage被解压到什么地址(B)[A] 0x [B] 0x [C] 0x [D] 0x43e000008.编译Linux内核设备树文件使用什么命令(D)[A] make dtbi[B] make tags [C] make dtb [D] make dtbs9.linux要求bootloader在运行内核前,让系统进入何种模式(B)[A] user[B] svc [C] system10.u-boot的命令中存放自启动命令的环境变量是(D)[A] ipaddr [B] bootargs [C] bootm [D] bootcmd11.u-boot的命令中,设置环境变量的命令是(A)[A] setenv [B] printenv [C] tftp [D] bootm12.u-boot中存放内核启动参数的环境变量是(C)[A] bootcmd[B] bootdelay [C] bootargs [D] ipaddr13.在内核配置时,哪个关键词是来包含下一级Kconfig (B)[A] menu endmenu[B] source [C] choice endchoice [D] depends on14. 在内核配置时,哪个关键词是来创建一个选项菜单(D)[A] menu endmenu[B] source [C] choice endchoice [D] config15. 内核配置的结果保存在哪个文件中(C)[A] Kconfig[B] Makefile [C] .config [D]16.下列函数适合在内核解压后,console初始化以前使用的是(B)[A] puts[B] printascii [C] printk [D] printf17.当console初始化以后,一般最为简单的内核调试方式为(A)[A] printk[B] puts [C] bdi2000 [D] kgdb18.下列哪些文件系统可以运行在eMMC上(C)[A] yaffs2[B] ios9660 [C] ext3 [D] tmpfs19.下列哪些文件系统是只读的(D)[A] ext2[B] yaffs2 [C] ext2 [D] cramfs20.下列不占用任何磁盘空间的文件系统是(D)[A] yaffs2[B] jffs2 [C ] cramfs [D] tmpfs二、简答题(前5题每题8分,最后一题10分,共60分)1. 简述嵌入式linux系统移植的主要内容有哪些(4分)交叉开发环境Bootloader kernel rootfs2. 如何定位下边oops信息错误位置( 6分)Unable to handle kernel NULL pointer dereference at virtual address 00000000pgd = c0004000[00000000] *pgd=00000000Internal error: Oops: 805 [#1]last sysfs file:Modules linked in:CPU: 0 Not tainted (2.6.35 #21)PC is at s3c_fb_probe+0xc/0x67cLR is at platform_drv_probe+0x1c/0x24pc : [<c029b66c>] lr : [<c01add04>] psr: a0000013sp : cfc29f0c ip : cfc457c0 fp : 00000000r10: 00000000 r9 : 00000000 r8 : c03bbb40r7 : c03b7a18 r6 : c03b7a18 r5 : c03a3310 r4 : 00000000r3 : 000000ff r2 : cfc28000 r1 : 00000000 r0 : c03a3308Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernelarm-none-linux-gnueabi-addr2line 0xc029b66c -e vmlinux -f或arm-none-linux-gnueabi-objdump -D vmlinux > 然后通过阅读汇编代码定位3.描述u-boot启动流程( 10分)第一阶段汇编实现。

嵌入式系统的组成

嵌入式系统的组成

1.1.2 嵌入式系统的组成嵌入式系统由硬件和软件两大部分组成,硬件一般由高性能微处理器和外围接口电路组成,软件一般由操作系统和应用程序构成,软件和硬件之间由所谓的中间层(BSP层,板级支持包)连接。

嵌入式系统的硬件有:嵌入式微处理器、存储器、输入输出(I/O、A/D、D/A)。

嵌入式系统的软件有:操作系统、应用软件。

操作系统是连接计算机硬件与应用程序的系统程序。

嵌入式操作系统可以分为实时操作系统和分时操作系统两类。

实时操作系统是指具有实时性,能支持实时控制系统工作的操作系统。

实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高计算机系统的使用效率,其重要特点是通过任务调度来满足对于重要时间在规定的时间内做出正确的响应。

分时操作系统,软件在时间上的执行并不严格,时间上的延误或者时序上的错误,一般不会造成灾难性后果。

嵌入式系统从组织层次上看,嵌入式系统一般由硬件层、中间层、软件层和功能层组成。

(1)硬件层硬件层由嵌入式微处理器、存储器系统、通用设备接口和I/O接口(A/D、D/A、I/O等)组成。

在一片嵌入式微处理器基础上增加电源电路、时钟电路和存储器电路(ROM和RAM 等),就构成了一个嵌入式核心控制模块。

其中操作系统和应用程序都可以固化在ROM中。

(2)中间层硬件层和软件层之间为中间层,也称为硬件抽象层HAL和板级支持包BSP,它把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关,一般应具有相关硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。

(3)软件层软件层由实时多任务操作系统RTOS、文件系统、图形用户接口GUI、网络系统及通用组件模块组成。

(4)功能层功能层由基于RTOS开发的应用程序组成,用来完成对被控对象的控制功能。

功能层是面向被控对象和用户的。

在专用的嵌入式板子上面运行GNU/Linux系统已经变得越来越流行。

一个嵌入式Linux 系统从软件的角度看通常可以分为四个层次:(1)引导加载程序。

Linux内核移植与根文件系统构建

Linux内核移植与根文件系统构建

Linux内核移植
10、SCSI device support
如果有SCSI 设备(SCSI 控制卡,硬盘或光驱等)则选上这项。目前SCSI 设备类型已经比较多,要具体区分它们你得先了解他们所使用的控制 芯片类型。2.6.X 内核中对各类型SCSI设备已经有更具体详细的支持。 <*> scsi support; <*>scsi disk support;
Linux内核移植
5、Networking option
网络选项,它主要是关于一些网络协议的选项。Linux 功能也就是在于 对网络功能的灵活支持。这部分内容相当多,根据不同情况,一般我 们把以下几项选上。 5.1、 packet socket 包协议支持,有些应用程序使用Packet 协议直接同网络设备通讯, 而不通过内核中的其它中介协议。同时它可以让你在TCP 不能用时找 到一个通讯方法。 5.2、 unix domain socket 对基本UNIX socket 的支持 5.3、 TCP/IP networking 对TCP/IP 协议栈的支持,当然要。如果你的内核很在意大小,而且 没有什么网络要就,也不使用类似X Window 之类基于Unix Socket 的应用那你可以不选,可节省大约144K 空间。
二、内核与根文件系统实验
• • • • 安装完成后依次执行以下命令: [root# root] Make dep [root# root] Make [root# root] Make PREFIX=./root install
由于根文件系统是内核启动时挂载的第一个文件系统那么根文件系统就要包括linux启动时所必须的目录和关键性的文件例如linux启动时都需要有init目录下的相关文件在linux挂载分区时linux一定会找etcfstab这个挂载文件等根文件系统中还包括了许多的应用程序bin目录等任何包括这些linux系统启动所必须的文件都可以成为根文件系统

使用Buildroot制作根文件系统

使用Buildroot制作根文件系统

使用Buildroot制作根文件系统Buildroot是一个用于构建嵌入式Linux根文件系统的工具,它提供了简单易用的配置方式和快速构建系统,可以帮助用户快速构建出自己的根文件系统。

Buildroot支持许多不同的架构和硬件平台,并集成了许多开源软件包,可以根据用户的需求来进行定制。

在本文中,我们将介绍使用Buildroot制作根文件系统的步骤和注意事项。

一、安装Buildroot在开始使用Buildroot制作根文件系统之前,需要先安装Buildroot。

可以在官方网站上下载最新版本的Buildroot,然后解压缩到本地目录。

在解压缩之后,进入到Buildroot的目录,可以看到有一个名为Makefile的文件,这是Buildroot的主要配置文件。

二、配置BuildrootConfigure Buildroot的过程就是创建一个默认的配置文件,通过这个默认配置文件生成根文件系统。

执行以下命令:```make menuconfig```这个命令将打开一个配置菜单,其中包括了一些基本的选项和一些高级选项。

基本选项包括选择所需的架构、选择和配置内核和交叉编译工具链等。

此外,还可以选择要安装的软件包、文件系统类型、文件系统大小等选项。

三、编译Buildroot完成配置后,就可以开始编译Buildroot。

执行以下命令:```make```这个命令将依照之前的配置文件,将所需的软件包下载、交叉编译、配置、安装,然后将所有安装的文件打包成 rootfs.tar 文件。

四、安装根文件系统在编译成功之后,就可以将根文件系统安装到目标平台上。

在目标平台上,先将 rootfs.tar 文件解压缩,然后将解压缩后的文件拷贝到目标文件系统的根目录下。

这里需要注意的是,需要将交叉编译的库和工具链一并拷贝到目标平台上。

五、启动目标平台在将根文件系统安装到目标平台之后,就可以启动目标平台并开始使用它了。

如果一切都配置正确的话,应该可以看到一个基本的 Linux 终端界面。

romfs详解

romfs详解

linux中romfs的详解Romfs是一种相对简单、占用空间较少的文件系统。

空间的节约来自于两个方面:首先内核支持Romfs文件系统比支持 ext2文件系统需要更少的代码;其次romfs文件系统相对简单,在建立文件系统超级块(Superblock)需要更少的存储空间。

Romfs是只读的文件系统,禁止写操作,因此系统同时需要虚拟盘(RAMDISK)支持临时文件和数据文件的存储。

对ROMFS文件系统的分析引言:ROMFS是在嵌入式设备上常用的一种文件系统,具备体积小,可靠性好,读取速度快等优点。

同时支持目录,符号链接,硬链接,设备文件。

但也有其局限性。

ROMFS是一种只读文件系统,同时由于ROMFS本身设计上的原因,使得ROMFS支持的最大文件不超过256M。

本文讨论了ROMFS的原理,并针对其代码做了详细的分析,指出了ROMFS的优缺点并做了相应的改进。

Linux, uclinux 都支持ROMFS文件系统。

除ROMFS外,其它常用的嵌入式设备的文件系统还有CRAMFS,JFFS2等,它们各有特色。

1.ROMFS文件系统的特点ROMFS是一种只读的文件系统,它使用顺序存储方式,所有数据,包括目录,链接等都按目录树的顺序存放。

相对于EXT2等较大型的文件系统而言,ROMFS非常节省空间。

通常ROMFS用在嵌入式设备中作为根文件系统,或者用于保存boot loader以便引导系统启动。

2.ROMFS文件系统的数据存储方式设计一个文件系统首先要确定它的数据存储方式。

不同的数据存储方式对文件系统占用空间,读写效率,查找速度等主要性能有极大影响。

ROMFS是一种只读的文件系统,它使用顺序存储方式,所有数据都是顺序存放的。

因此ROMFS中的数据一旦确定就无法修改,这是ROMFS只能是一种只读文件系统的原因,它的数据存储方式决定了无法对ROMFS进行写操作。

由于采用了顺序存放策略,ROMFS中每个文件的数据都能连续存放,读取过程中只需要一次寻址操作,进而就可以读入整块数据,因此ROMFS中读取数据效率很高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、什么是文件系统(Filesystem)文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。

二、主要嵌入式采用的文件系统* Linux 中,rootfs 是必不可少的。

PC 上主要实现有ramdisk 和直接挂载HD(Harddisk,硬盘) 上的根文件系统;嵌入式中一般不从HD 启动,而是从Flash 启动,最简单的方法是将rootfs load 到RAM 的RAMDisk,稍复杂的就是直接从Flash 读取的Cramfs,更复杂的是在Flash 上分区,并构建JFFS2 等文件系统。

* RAMDisk 将制作好的rootfs 压缩后写入Flash,启动的时候由Bootloader load 到RAM,解压缩,然后挂载到/。

这种方法操作简单,但是在RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源RAM。

ramdisk 就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术.* initrd 是RAMDisk 的格式,kernel 2.4 之前都是image-initrd,Kernel 2.5 引入了cpio-initrd,大大简化了Linux 的启动过程,附合Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd 作为新的格式,还没有经过广泛测试,嵌入式Linux 中主要采用的还是image-initrd。

* Cramfs 是Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从Flash 上运行,不须load 到RAM 中,因此节约了RAM。

但是Cramfs 是只读的,对于需要运行时修改的目录(如:/etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs 等可写的fs。

* SquashFS 是对Cramfs 的增强。

突破了Cramfs 的一些限制,在Flash 和RAM 的使用量方面也具有优势。

不过,据开发者介绍,在性能上可能不如Cramfs。

这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试三、建一个包含所有文件的目录1。

建一个目录rootfs 用来装文件系统2。

mkdir bin dev etc lib proc sbin tmp usr var3. ln -fs bin/busybox linuxrc(使用busybox)4. 到系统/dev 把所有的device打一个包,拷贝到dev下面(最省事的做法);或者使用mknod来自己建所需要的device,我自己用的如下:crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 consolecrw-rw-rw- 1 root root 5, 64 2006-02-24 13:12 cua0crw-rw-rw- 1 root root 63, 0 2006-02-24 13:12 dk0crw-rw-rw- 1 root root 63, 1 2006-02-24 13:12 dk1drwxr-xr-x 2 root root 4096 2006-02-24 13:12 flashbrw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 hdacrw-rw-rw- 1 root root 36, 10 2006-02-24 13:12 ipseccrw-rw-rw- 1 root root 241, 0 2006-02-24 13:12 ixNpecrw-rw-rw- 1 root root 1, 2 2006-02-24 13:12 kmemcrw-rw-rw- 1 root root 126, 0 2006-02-24 13:12 ledmanlrwxrwxrwx 1 root root 16 2007-09-19 14:08 log -> /tmp/var/log/logcrw-rw-rw- 1 root root 1, 1 2006-02-24 13:12 memcrw-rw-rw- 1 root root 90, 0 2006-02-24 13:12 mtd0brw-rw-rw- 1 root root 31, 0 2006-02-24 13:12 mtdblock0brw-rw-rw- 1 root root 31, 1 2006-02-24 13:12 mtdblock1brw-rw-rw- 1 root root 31, 2 2006-02-24 13:12 mtdblock2brw-rw-rw- 1 root root 31, 3 2006-02-24 13:12 mtdblock3brw-rw-rw- 1 root root 31, 4 2006-02-24 13:12 mtdblock4brw-rw-rw- 1 root root 31, 5 2006-02-24 13:12 mtdblock5brw-rw-rw- 1 root root 31, 6 2006-02-24 13:12 mtdblock6crw-rw-rw- 1 root root 90, 1 2006-02-24 13:12 mtdr0crw-rw-rw- 1 root root 1, 3 2006-02-24 13:12 nullcrw-rw-rw- 1 root root 108, 0 2006-02-24 13:12 pppcrw-r--r-- 1 root root 5, 2 2006-03-29 15:56 ptmxdrwxr-xr-x 2 root root 4096 2006-03-29 15:56 ptscrw-rw-rw- 1 root root 2, 0 2006-02-24 13:12 ptyp0brw-rw-rw- 1 root root 1, 0 2006-02-24 13:12 ram0crw-rw-rw- 1 root root 1, 8 2006-02-24 13:12 randomcrw-rw-rw- 1 root root 5, 0 2006-02-24 13:12 ttycrw-rw-rw- 1 root root 4, 0 2006-02-24 13:12 tty0crw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 ttyp0crw-rw-rw- 1 root root 4, 64 2006-02-24 13:12 ttyS0crw-rw-rw- 1 root root 1, 9 2006-02-24 13:12 urandomcrw-rw-rw-1 root root 1, 5 2006-02-24 13:12 zero举例:mknod console c 5 1 这样crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 console5。

将编译好的busybox拷贝到/bin下面,除了busybox外,所有其他的命令都是他的linkash chgrp clear dd echo fgrep gzip ip ls modprobe mv ping pwd sed stty tar true zcat busybox chmod cp df egrep grep hostname kill mkdir more netstat ping2file rm sh sync tftp umount cat chown date dmesg false gunzip ifconfig ln mknod mount pidof ps rmdir sleep sysinfo touch uname所有的命令你可以在busybox下面用make menuconfig来增减6。

同样/sbin下面也是busybox的linkhalt ifconfig init insmod klogd losetup lsmod mkswap modprobe reboot rmmod route swapoff swapon7。

同样/usr/bin下面也是busybox的linkbasename dirname env free id logger reset tail tr tty uptime which xargsawk cut du expr head killall mkfifo sort test traceroute uniq wc whoami yes上面几乎是最全的link,各个看官可以酌情删减,不过link也不占什么空间!8。

同样/usr/sbin下面放着所有编译完的可执行文件,具体就不多说了9。

非常重要之/lib,务必重视找到你编译环境的target目录,把需要的lib文件先用strip压縮(非target目录下的,而已编译环境提供的strip),先把最基本的libc, ld等等,必须同样做跟target/lib里面一样的link。

然后根据特定的应用加相应的lib,不要把不用的加进去,lib比较占空间。

10。

在/etc下面加上需要的配置文件,最最重要的是rcS#!/bin/shexport PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/scriptsUTC=yesmount -n -t proc proc /procmount -n -t ramfs ramfs /tmpmount -n -t devpts devpts /dev/pts# build var directories/bin/mkdir -m 0777 /tmp/var/bin/mkdir -m 0777 /var/lock/bin/mkdir -m 0777 /var/log/bin/mkdir -m 0777 /var/run/bin/mkdir -m 0777 /var/tmp#/bin/mkdir -m 0777 /tmp/etc#/bin/cp -a /usr/etc/* /etc#/bin/cp -a /usr/dev/* /dev/# loads the NPE ethernet modules into the kernel.insmod /lib/modules/2.6.13.2/intel/ixp400.ko# Firmware code for NPE Engine.cat /etc/IxNpeMicrocode.dat > /dev/ixNpeinsmod /lib/modules/2.6.13.2/intel/ixp400_eth.ko netdev_max_backlog=500 insmod /lib/modules/led.koinsmod /lib/modules/push_button.ko下面的具体应用没有再举例加上了,这个是系统init必须的。

相关文档
最新文档