当前位置:文档之家› 基于AT91SAM9261EK的嵌入式Linux移植_基于UBI根文件系统

基于AT91SAM9261EK的嵌入式Linux移植_基于UBI根文件系统

基于AT91SAM9261EK的嵌入式Linux移植_基于UBI根文件系统
基于AT91SAM9261EK的嵌入式Linux移植_基于UBI根文件系统

嵌入式Linux根文件系统制作

实训项目四-嵌入四Linux系统根文件系统制作一. 项目实施目的 了解 UP-CUP2440 型实验平台Linux 系统下根文件系统结构 掌握根文件系统的搭建过程 掌握busybox、mkcramfs等工具的使用方法 二. 项目主要任务 使用busybox生成文件系统中的命令部分,使用mkcramfs工具制作CRAMFS 格式的根文件系统。 分析根文件系统etc目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程 三. 基本概念 1.文件系统基本概念 Linux的一个最重要特点就是它支持许多不同的文件系统。这使Linux非常灵活,能够与许多其他的操作系统共存。Linux支持的常见的文件系统有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。随着时间的推移, Linux支持的文件系统数还会增加。Linux是通过把系统支持的各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。该树形层次结构把文件系统表示成一个整个的独立实体。无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。该个目录被称为装配目录或装配点。在文件系统卸载时,装配目录中原有的文件才会显露出来。在Linux 文件系统中,文件用i节点来表示、目录只是包含有一组目录条目列表的简单文件,而设备可以通过特殊文件上的I/O 请求被访问。 2.常见的嵌入式文件系统 嵌入式Linux系统一般没有大容量的磁盘,多使用flash存储器,所以多采用基于Flash(NOR和NAND)的文件系统或者RAM内存的文件系统。 (1)Flash根据结构不同分为 NOR Flash和NAND Flash。基于flash的文件系统主要有: jffs2:RedHat基于jffs开发的文件系统。

【最新文档】移植法案例word版本 (5页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 移植法案例 篇一:发明创造技巧——移植法.doc 龙源期刊网 .cn 发明创造技巧——移植法 作者:银月 来源:《发明与创新(学生版)》201X年第06期 把大家已经知道的原理,已有的物品或方法等,移植运用(来自:WwW. : 移植法案例 )到自己的发明上,得到一项新的发明,这种方法叫做移植法。这种技术 性移植是发明创造的一条重要途径。下面例举两个利用了移植法的小发明; 充气太阳灶 太阳能对人们极有吸引力,但目前的太阳灶造价高,工艺复杂,又笨重(50千 克左右),调节也麻烦,野外工作和旅游时携带不方便。发明者在调查研究的基 础上,明确了主攻方向:简化太阳灶的制作工艺,减轻重量,减少材料消耗, 降低成本,获取最大的功率。他们首先把两片圆形塑料薄膜边缘粘结,充气后 就膨胀成一个抛物面,再在反光面上贴上真空镀铝涤纶不干胶片。用打气筒向 内打气,改变里面气体压强,随着打气的多少,上面一层透明膜向上凸起,反 光面向下凹,可以达到自动会聚反射光线的目的。这种“无基板充气太阳灶” 只有4千克重,拆装方便,便于携带。 该发明实际上是多种移植的结果:发明者把充气玩具的技术,日常商品商标的 不干胶贴片,凸透镜似的抛物面结构,移植到新的太阳灶上来,把光学、流体 力学的原理等知识,移植到太阳灶的设计上,从而成功地完成了小发明。 蜡烛灯 蜡烛是人们常用的一种照明工具,但烛焰怕风,烛体不易固定,亮度不能控制。怎样改进这些缺点呢?湖北监利中学的柳国弘同学先考虑固定烛体与防风,他将蜡烛插在一个铁筒中,罩上一个玻璃罩。他联想到卡口式灯泡的固定方式,并 借用到蜡烛灯上,安了个弹簧以使烛焰保持在灯罩的最佳中心位置。

arm-linux下usb转串口移植手册

arm-linux下usb转串口移植手册: 讲述在嵌入式平台上,移植usb转串口的步骤: 1、配置Kernel 2、文件系统配置等。 Kernel:在配置内核时:加入usb转串口的支持、加入usb转串口器件的支持。 不同厂家的usb转串口工具需要的驱动可能不一样。 Device Drivers ---> USB support ---> --- USB port drivers USB Serial Converter support ---> <*> USB Serial Converter support [*] USB Serial Console device support [*] USB Generic Serial drivert < > USB AIRcable Bluetooth Dongle Driver (EXPERIMENTAL) <*> USB FTDI Single Port Serial Driver (EXPERIMENTAL) 本次实验才用的是FTDI的usb转串口工具 在配置Kernel时,还可以加入对其他厂家的驱动支持。 文件系统: 1、在/dev目录下建立设备文件/dev/ttyUSB0 mknod /dev/ttyUSB0 c 188 0 2、在运行/sbin/getty登陆命令之前要先设置好:usb转串口对应端口的波特率、停止位等。int usb_to_serial_init(viod) { iUSBTORS232 = open( "/dev/ttyUSB0", O_RDWR); if (iUSBTORS232 iRS232 < 0) { printf("Can't open device dev/ttyUSB00"); return -1; } set_speed(iUSBTORS232 iRS232,BAUDRA TE); set_Parity(iUSBTORS232 iRS232,8,1,'n'); close(iRS232); } 3、在/etc/inittab 加入如下命令。同时用consel和usb转串口工具登陆。 # Example of how to put a getty on a serial line (for a terminal) ::respawn:/sbin/getty -L ttyS0 115200 vt100 ::respawn:/sbin/getty -L ttyUSB0 115200 vt100

i.MX6UL -- Linux系统移植过程详解(最新的长期支持版本)

i.MX6UL -- Linux系统移植过程详解(最新的长期支持版本) ?开发平台:i.MX 6UL ?最新系统: u-boot2015.04 + Linux4.1.15_1.2.0 ?交叉编译工具:dchip-linaro-toolchain.tar.bz2 源码下载地址: U-Boot: (选择rel_imx_4.1.15_1.2.0_ga.tar.bz2) https://www.doczj.com/doc/07959166.html,/git/cgit.cgi/imx/uboot-imx.git/ Kernel: (选择rel_imx_4.1.15_1.2.0_ga.tar.bz2) https://www.doczj.com/doc/07959166.html,/git/cgit.cgi/imx/linux-2.6-imx.git/ 源码移植过程: 1、将linux内核及uBoot源码拷贝到Ubuntu12.04系统中的dchip_imx6ul目录下; 2、使用tar命令分别将uboot和kernel解压到dchip_imx6ul目录下; 3、解压后进入uboot目录下,新建文件make_dchip_imx6ul_uboot201504.sh,且文件内容如下: ################################################################### # Build U-Boot.2015.04 For D518--i.MX6UL By FRESXC # ################################################################### #!/bin/bash export ARCH=arm export CROSS_COMPILE=/dchip-linaro-toolchain/bin/arm-none-linux-gnueabi - make mrproper # means CLEAN make mx6ul_14x14_evk_defconfig make2>&1|tee built_dchip_imx6ul_uboot201504.out 4进入kernel目录下,新建文件make_dchip_imx6ul_linux4115120.sh,且文件内容如下: ###################################################################

busybox详解制作根文件系统

详解制作根文件系统 单击,返回主页,查看更多内容 一、FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。 该标准规定了根目录下各个子目录的名称及其存放的内容: 制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括: ?编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 ?利用交叉编译工具链,构建/lib目录 ?手工构建/etc目录 ?手工构建最简化的/dev目录 ?创建其它空目录 ?配置系统自动生成/proc目录 ?利用udev构建完整的/dev目录 ?制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。 二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。 1、从https://www.doczj.com/doc/07959166.html,/下载busybox-1.7.0.tar.bz2 2、tar xjvf busybox-1.7.0.tar.bz2解包 3、修改Makefile文件 175 ARCH ?= arm 176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox busybox配置主要分两部分。 第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:

MMS&WAP移植文档

MMS&WAP移植报告 本次在6219平台上移植的是移软的MMS&WAP。在正式开始移植之前我们先确定了移植移软的MMS&WAP所要求的硬件和软件资源,进行了可行性分析、需求分析,然后进入设计阶段,最后是测试阶段,整个过程严格的按照软件工程的迭代模型来执行。 第一步,创建TASK 在custom_config.h里面定义TASK ID ----INDX_CUSTCMS,这里创建的task数不能大于16,定义三个模块附属于这个TASK,三个模块分别为MOD_CMSMMS、MOD_CMSWAP、MOD_CMSMAP(用户定义的模块数也不能大于16)。 在custom_config.c里面 完成task到模块id的映射,并实现创建task的函数,给定任务优先级212。const comptask_info_struct custom_comp_config_tbl[ MAX_CUSTOM_TASKS ] = { /* INDX_CUSTOM1 */ {"CUST1", "CUST1 Q", 210, 1024, 10, 0, #ifdef CUSTOM1_EXIST custom1_create, KAL_FALSE}, #else NULL, KAL_FALSE}, #endif /* INDX_CUSTOM2 */ {"CUST2", "CUST2 Q", 211, 1024, 10, 0, #ifdef CUSTOM2_EXIST custom2_create, KAL_FALSE}, #else NULL, KAL_FALSE}, #endif //Jo++ 05-05-16 added the Index_CustCMS /* INDX_CUSTCMS */ {"CUSTCMS", "CUSTCMS Q", 212, 1024, 30, 100, #ifdef CUSTCMS_EXIST //Jo++ 需事先定义 customCMS_create, KAL_FALSE}, #else NULL, KAL_FALSE}, #endif //Jo-- }; 第二步,修改makefile,在原mtk工程中添加进去wap mms模块。

成功移植OpenSSH到ARM Linux开发板

成功移植OpenSSH到ARM Linux开发板 概述 如果是用到一些没有SSH的开发板,对于部分的应用开发来说,会受到影响,比如使用ARM DS-5进行RSE远程管理操作时,就会出现错误。下面就具体如何进行OPENSSH移植进行详细介绍。 步骤 1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包。 openssh ?本地下载:openssh-6.6p1.tar.gz(1.22 MB, 下载次数: 2470) ?官网下载:https://www.doczj.com/doc/07959166.html,/portable.html openssl ?本地下载:openssl-1.0.1h.tar.gz(4.27 MB, 下载次数: 2647) ?官方下载:https://www.doczj.com/doc/07959166.html,/source zlib ?本地下载:zlib-1.2.8.tar.gz(557.71 KB, 下载次数: 3499) ?官方下载:https://www.doczj.com/doc/07959166.html,/ 2.部署工作目录创建用户主目录下创建工作目录: 3.解压并编译

注意:openssh不需要make install 4.操作目标板 b)从PC机上将以下文件拷贝到目标板Linux系统中 PC机 /home/gary/work/openssh-6.6p1/ 目录下的 ?scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan 共8个文件拷

贝到目标板 /usr/local/bin ? moduli ssh_config sshd_config 共3个文件拷贝到目标板 /usr/local/etc ? sftp-server ssh-keysign 共2个文件拷贝到目标板 /usr/libexec c )生成Key 文件 将生成的 ssh_host_*_key 这4个文件copy 到目标板的 /usr/local/etc/ 目录下。其中 ssh_host_ed25519_key 是SSH 第二版协议用到的key ,放到开发板之后,要 d )修改目标板passwd 文件。 5.测试 如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否可以用 ps 命令查看sshd 是否在工作 如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接! OK !不出意外的话可以成功,

嵌入式Linux系统移植试题

嵌入式Linux系统移植试题(时间:1个半小时) 一、选择题(每题2分,共50分,包括单选和多选,多选、少选均不得分) 1.嵌入式linux系统软件部分一般包括() [A] bootloader[B] linux内核[C] 根文件系统[D]用户应用程序 2.一般情况下,在搭建嵌入式linux开发环境时主机需要安装的软件有() [A] 串口通信软件[B] tftp服务器[C] nfs服务器[D]usb 3.下列选项中符合gcc的编译流程的是( ) [A] 预处理->编译->汇编->连接[B] 预处理->汇编->编译->连接[C] 编译->预处 理->汇编->连接[D预处理->连接->汇编->编译 4.gcc使用下列哪个选项可以查看编译的详细过程() [A] -o[B] -v [C] -E [D] -g 5.下列二进制工具哪个是丢弃目标文件的全部或者特定符号,减少文件体积的() [A] size[B] as [C ] nm [D ] strip 6.下列二进制工具哪个是用来反汇编的() [A] nm[B] objdump [C ] objcopy [D ] string 7.下列二进制工具哪个是用来进行目标格式转换的() [A] nm[B] objdump [C ] objcopy [D ] string 8.下列二进制工具哪个是用来把程序地址转换为文件名和行号的() [A] nm[B] objdump [C ] objcopy [D ] addr2line 9.下列二进制工具哪个是用来将目标文件生成静态库的() [A] ar[B]nm [C ] objcopy [D ] objdump 10.FS2410开发板如果从nand flash启动,启动后()访问到nor flash;如果从nor flash 启动,启动后()访问nand flash。 [A] 可以[B] 不可以 11.SMDK2410开发平台上,linux要求bootloader将内核参数存储在什么位置() [A] 0x30008000 [B] 0x30000100 [C ] 0x30004000 [D ] 0x33f80000 12.SMDK2410开发平台上,linux要求bootloader将平台号保存在() [A] r0[B] r1 [C ] r2 [D ] r3 13.SMDK2410开发平台上,linux要求bootloader在运行内核前,让系统进入何种模式() [A] user[B] svc [C ] system 14.u-boot所支持的命令中,哪个是来设置环境变量的() [A] setenv [B] mm [C ] mtest [D ] bootm 15.u-boot支持的命令中,哪个是擦除nor flash的命令() [A] nand erase[B] protect [C ] erase [D ] cp 16.在内核配置时,哪个关键词是来包含下一级Kconfig( ) [A] menu endmenu[B] source [C ] choice endchoice [D ]depends on 17.内核启动过程中,如果终端出现”Error:a”错误,可能出现的原因是()

实验四 ramdisk 根文件系统的制作

实验四ramdisk根文件系统的制作 一.实验目的 1.熟悉根文件系统组织结构; 2.定制、编译ramdisk根文件系统。 二.实验设备 1.硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机; 2.软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。 三.实验内容 利用6.3 中的已经完成的文件系统,生成一个根文件系统镜像。 四.实验原理 ramdisk是内核初始化的时候用到的一个临时文件系统,是一个最小的linuxrootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,做为启动引导驱动,包含如下目录: bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin 目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tty*,/dev/console,/dev/men……(位于/dev目录中);sh,ls等工具必要的运行库:glibc。1.制作ramdisk根文件系统映像 1)单击菜单应用程序->附件->终端打开终端,设置环境变量: $ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh $ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh 2)执行命令切换到ramdisk实验目录下: $cd $SIMPLEDIR/6.4-ramdisk 3)运行脚本文件: $ sudosh ramdisk-install.sh shell 脚本命令说明: #!/bin/bash # # ramdisk-install.sh - Make ramdiskfilesystem. # # Copyright (C) 2002-2007

eMwin 移植 文档飞利浦 恩智浦

uC/GUI(emWin)的应用与移植 当你开始使用emWin进行编程时,通常遵循以下的步骤: 第1步:配置emWin 第一步通常是通过修改头文件LCDConf.h来配置emWin。LCDConf.h中的宏定义描述了LCD显示部分硬件特性;根据你的具体情况修改这些宏定义(例如显示屏的长、宽,每像素点用几位表示,LCD控制器的类型等参数)。 第2步:定义LCD的底层驱动函数 底层函数包括对LCD(控制器)的初始化函数,LCD显示缓冲区的读写函数等,完成对LCD显示硬件的直接操作。 对于映射在系统存储器上的LCD,对显示缓冲区的操作仅需要在LCDConf.h中进行定义就可以了。但对于采用I/O端口/缓冲区操作的LCD,就必须定义相应的接口函数了。 第3步:编译,链接和测试例子代码 emWin对于单任务和多任务环境下的应用都提供了例子代码。在编程之前,对这些例子代码进行编译、链接和测试,使你能够初步了解这些代码的使用。 第4步:修改例子程序 对例子代码作少量的修改。逐步添加一些额外的指令,例如显示不同大小的文字,显示多行等等,从而进一步理解代码的应用。 第5步:emWin的多任务应用,加入到你的操作系统中 如果你的系统有可能多个任务同时对显示进行操作,这时就要用到GUITask.C文件中的GUI_MAXTASK 和GUI_OS宏。 第6步:采用emWin编写你自己的应用 到这一步你应该对怎样使用emWin有一个清楚的了解了。考虑如何采用emWin提供的函数来构建你的应用,并通过阅读手册来获得各函数更详细的功能和使用上的信息。 emWin的移植 移植是指对emWin进行配置和修改,使它能够在你的目标系统上运行。参考第3.4节中的第一步和第二步,移植工作主要是针对配置头文件中的宏定义进行修改。 这些宏包括: 1. LCD宏,定义了显示的尺寸和一些可选择的特性(例如镜像,等等)

ARMLinux移植基本概念

ARM的嵌入式Linux移植体验之基本概念 日前,笔者作为某嵌入式ARM(硬件)/Linux(软件)系统的项目负责人,带领项目组成员进行了下述工作: (1)基于ARM920T内核S3C2410A CPU的电路板设计; (2)ARM处理下底层软件平台搭建: a.Bootloader的移植; b.嵌入式Linux操作系统内核的移植; c.嵌入式Linux操作系统根文件系统的创建; d.电路板上外设Linux驱动程序的编写。 本文将真实地再现本项目开发过程中作者的心得,以便与广大读者共勉。第一章将简单地介绍本ARM开发板的硬件设计,第二章分析Bootloader的移植方法,第三章叙述嵌入式mizi Linux的移植及文件系统的构建方法,第四章讲解外设的驱动程序设计,第五章给出一个已构建好的软硬件平台上应用开发的实例。 如果您有嵌入式系统的开发基础,您将非常容易领会本文讲解地内容。即便是您从来没有嵌入式系统的开发经历,本文读起来也不会生涩。您可以通过如下email与作者联系:21cnbao@https://www.doczj.com/doc/07959166.html,。 2.ARM体系结构 作为一种RISC体系结构的微处理器,ARM微处理器具有RISC体系结构的典型特征。还具有如下增强特点:

(l)在每条数据处理指令当中,都控制算术逻辑单元(ALU)和移位器,以使ALU和移位器获得最大的利用率; (2)自动递增和自动递减的寻址模式,以优化程序中的循环; (3)同时Load和Store多条指令,以增加数据吞吐量; (4)所有指令都条件执行,以增大执行吞吐量。 ARM体系结构的字长为32位,它们都支持Byte(8位)、Halfword(16位)和Word(32位)3种数据类型。 ARM处理器支持7种处理器模式,如下表: 大部分应用程序都在User模式下运行。当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,也不能改变模式,否则就会导致一次异常。对系统资源的使用由操作系统来控制。 User模式之外的其它几种模式也称为特权模式,它们可以完全访问系统资源,可以自由地改变模式。其中的FIQ、IRQ、supervisor、Abort和undefined 5种模式也被称为异常模

实验八 构建根文件系统

实验八构建根文件系统 一、实验目的 1、了解嵌入式Linux文件系统的作用和类型; 2、了解jffs2文件系统的优点和在嵌入式系统中的应用; 3、理解文件系统的挂载过程; 4、使用BusyBox制作一个根文件系统。 二、实验环境 预装redhat9.0(内核版本2.4.x)的pc机一台,XScale嵌入式实验箱一台(已构建嵌入式Linux系统),以太网线一根,交叉编译工具链,BusyBox软件包。 三、实验步骤 1、解压BusyBox软件包; 2、使用make menuconfig来配置BusyBox,修改交叉编译器前缀; Build Option [*] Build BusyBox as a static binary(no shared library) [*]Do you want to build BusyBox with a Cross ompile /usr/local/hybus-linux-R1.1/bin/arm-linux- Installation Option [*]Don't’t use /use Coreutils [*]ls

[*]cp [*]reboot [*]echo [*]mkdir [*]rm Editors [*]vi Login Utilities [*]getty 3、交叉编译BusyBox; make make install 4、建立BusyBox顶层目录结构 mkdir etc dev proc tmp lib var sys 5、在dev目录下创建必要的设备节点 (ram0,console,null,zero); mknod mdblock b 31 3 mknod console c 5 1 mknod null c 1 3 mknod zero c 1 5 cp –dpR /dev /_install/dev (假设busybox的安装目录为/_install)

嵌入式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] strip 4.下列二进制工具哪个是用来反汇编的(B) [A] nm[B] objdump [C] objcopy [D] string 5.下列二进制工具哪个是用来进行目标格式转换的(C ) [A] nm[B] objdump [C] objcopy [D] string 6.下列二进制工具哪个是用来把程序地址转换为文件名和行号的(D) [A] nm[B] objdump [C] objcopy [D] addr2line 7.FS4412开发平台上,uImage被解压到什么地址(B) [A] 0x40000000 [B] 0x40008000 [C] 0x41000000 [D] 0x43e00000 8.编译Linux内核设备树文件使用什么命令(D) [A] make dtbi[B] make tags [C] make dtb [D] make dtbs 9.linux要求bootloader在运行内核前,让系统进入何种模式(B) [A] user[B] svc [C] system 10.u-boot的命令中存放自启动命令的环境变量是(D) [A] ipaddr [B] bootargs [C] bootm [D] bootcmd 11.u-boot的命令中,设置环境变量的命令是(A) [A] setenv [B] printenv [C] tftp [D] bootm 12.u-boot中存放内核启动参数的环境变量是(C)

基于busybox的根文件系统制作

龙源期刊网 https://www.doczj.com/doc/07959166.html, 基于busybox的根文件系统制作 作者:李飞,武金虎,石颖博 来源:《电脑知识与技术》2010年第17期 摘要:Busybox是构建嵌入式Linux文件系统的必备软件,它是所有文件和设备节点的起始点,是决定系统能否正常启动的关键。通过busybox-1.1.3为例,进行配置、编译、安装等过程,从而形成简单的根文件系统映像文件,为以后嵌入式Linux系统的移植打下了良好的开端。 关键词:Busybox;嵌入式Linux;Linux操作系统;根文件系统;cramfs 文件系统 中国分类号:TP316.81文献标识码:A文章编号:1009-3044(2010)17-4655-02 Making Root File System Based on Busybox LI Fei, WU Jin-hu, SHI Ying-bo (College of Computer Science and Information, Guizhou University, Guiyang 550025, China) Abstract: Busybox is an essentiaL software to buiLd an embedded Linux fiLe system. It is the starting node point of aLL the fiLes and devices and the key whether the system can have a normaL start. Taking busybox-1.1.3 for exampLe, making a simpLe root image system fiLe by configuration compiLation and instaLLation Lays a good foundation for migration of the embedded Linux system. Key words: busybox; embedded linux; Linux OS; root file system; cramfs file system 1 根文件系统结构 根文件系统是所有文件和设备节点的起始点,包括系统所必须的各种工具软件、库文件、 脚本、配置文件等一系列的文件。一个基本的Linux根文件系统包含有以下的目录:dev、proc、bin、etc、usr、Lib、temp、var、usr等等目录。其中dev是设备文件节点目录,proc是挂载proc文件系统所用的目录,bin目录下面包含了系统的基本命令,etc目录是系统启动脚本所在的目录,Lib是系统默认的动态链接库目录,usr是用户目录,temp是临时目录,用来保存临时文 件,var目录包含系统运行时要改变的数据。以上都是根文件系统所必须的目录 2 Busybox简介 熟练嵌入式Linux的朋友对busybox一定不会陌生,它是标准Linux工具的一个单个可执行实现,被形象的称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的UNIX工具和命令 结合到一个单独的可执行程序中。虽然busybox中的这些工具相对于GNU常用工具功能有所

嵌入式 linux 根文件系统 rootfs

一、什么是文件系统(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 devetc lib procsbintmpusrvar 3. ln -fs bin/busyboxlinuxrc(使用busybox)

白桦的移植技术-最新文档资料

白桦的移植技术 随着现代城市对景观环境的不断提高,大树移植以其优化城市绿地结构,改善城市绿地景观等特点逐渐被采用。白桦枝叶扶疏,姿态优美,尤其是树干修直,洁白雅致,十分引人注目,是园林绿化的优选树种。这几年,我们在移植白桦的过程时总结了以下几个技术要点。 、前期准备 1)掌握白桦特性、生态习性及苗木地、种植地的土壤等 环境因素。 2)准备好必须的机械设施(如吊车,运输车等)、人力 及辅助材料,运输路线,并制定合理的起运栽植方案。 3)号苗及苗木处理:选择生长强健,无病虫害的、符合 绿化设要求的苗木,预先进行疏枝及修剪,修剪时剪口必须平滑,截面尽量缩小,修剪2 公分以上的枝条,剪口应涂沫防腐剂(涂白调和漆或石灰乳)。 4)白桦栽植穴的处理:如白桦树穴除考虑土坨大小外, 还要预留出人工坑内作业空间,树穴基部土壤保持水平。新换的土,一定要将虚土夯实并用水下沉,以防止土壤不平白桦放入后发生倾斜。 二、起运栽植 1、时间

栽植白桦的时间根据北方的气候条件选在3 月20日到4 月 10 日。此时白桦还在休眠,树液尚未流动。白桦移植应做到随 2、起苗 这次移栽的白桦树胸径在距地面一米三处达到20 厘米左右,按着技术规定,根系要保证不小于胸径的10-12 倍,这次我们起的树坨直径是2 米,土坨的高度为直径的0.6 倍。土坨要完好、平整。土坨形似苹果,底部不超过土坨直径的三分之一。起挖前以白桦树干为中心,按规定尺寸划出圆圈,在圈外挖60-80 厘米的操作沟,至规定深度,挖时先去表土,见表土为准,再行下挖,挖时遇粗根必须用锯锯断再削平,不得硬铲,以免造成散 坨。修坨,用铣将所留土坨修成上大下小呈截头圆锥型的土球。 收底,土球底部不应留的过大,一般为土球直径的1/3 左右。土球修成圆形之后,立即用预先湿润的草包将土球围住,并用湿润的草绳横腰绕, 7-10 圈,捆紧。将围腰草绳捆好后就开始包扎土球,一般需要2-3 人同时操作。用草绳包土球时,将双股草绳的一头系在树干基部,然后从土球上部往下绕过土球底部,从土球的对面再绕上去,将草绳每隔5-8 绕1 圈,这样从上绕到下,再从下绕到上,反复缠绕,就能将整个土球包住。拉草绳的人每拉一次草绳就用小木锤顺着草绳前进的方向锤好土球肩部的草绳,使草绳紧紧套住底部。土球包好以后,将草绳拴绕在树干的根基处,并在土球腰部密集绕捆草绳 10-14 圈,在腰箍上打成

Linux C语言 socket编程 聊天室 可移植到arm开发板

sockets聊天室 1.1介绍 包括一个客户端和一个服务器。可实现多人聊天和两人一对一单独聊天。 1.2开发环境和工具 Linux gcc 1.3程序设计 服务器: 1. 声明一个client结构体,包含用户自己的socket描述符mid,自己的用户名name以及 与自己聊天对象的Socket描述符fid(默认是-1,即公共聊天室)。并定义一个结构体数组。 2. 服务器新建一个socket设置默认的ip为自动获取,调用bind()函数绑定服务器socket 与ip。 3. 开启listen()监听客户端的连接请求。 4. 在while循环里,用accept()等待连接,连接成功后,把accept()返回的socket描述 符存入client结构体数组中。 5. 每成功新建一个连接,就创建一个对应的子线程,接收并转发消息。 6. 定义void rec_snd(int n)这个函数,用于接收和转发消息。可选择公共聊天室和私聊, 私聊需要正确输入对方的名字。连接建立以后就可以发送消息。当接收的消息为bye 时,断开当前连接,如果是一对一私聊,一方断开另一方自动转入公共聊天室。 客户端: 1.新建一个socket,并与ip,端口进行绑定。 2.调用connect连接服务器。连接成功后新建一个线程用于发送消息, 主线程在while中调用read()接收服务器消息。 3.Snd()函数用于向服务器发送消息。 4._select()函数用于选择功能。 1.4应用演示 服务器端成功开启等待连接:

当有客户端连接时,会显示ip端口,socket标识符信息。客户端成功连接上服务器时会收到提示输入用户名: 输入姓名后会提示选择功能:

在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统 一、实验目标: 在硬盘上建立一个根文件系统,硬盘镜像文件的名称为:hdc-0.11.new.img 二、实验环境: 1、Vmware workation, bochs虚拟机,ultraedit编辑环境 2、用到的四个重要的镜像文件:bootimage-0.11-hd,hdc-0.1.img,并将他们放到 mylinux0.11文件夹中。 3、实验环境:redhat linux 三、实验理论依据: 1、Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括以下一些子目录和文件: etc/ 目录主要含有一些系统配置文件; dev/ 含有设备特殊文件,用于使用文件操作语句操作设备; bin/ 存放系统执行程序。例如sh、mkfs、fdisk等; usr/ 存放库函数、手册和其它一些文件; usr/bin 存放用户常用的普通命令; var/ 用于存放系统运行时可变的数据或者是日志等信息。 存放文件系统的设备就是文件系统设备。Linux 0.11内核所支持的文件系统是MINIX 1.0文件系统。 2、inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬 盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode 值最快的找到相对应的文件。每一个文件开头都是一个inode。 做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。

根文件系统制作

Linux根文件系统的制作 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 注:对于我们应用开发来说,购买开发板的时候,厂家会提供好现成的根文件系统和BootLoader等,如果需要,我们可以改变其中的命令而无需从头开始制作一个新的根文件系统。不过这儿的制作过程可以让我们更深一点理解Linux的文件系统。 2.主要的根文件系统 * 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。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试。 3.Ramdisk制作 RAMDisk的制作方法如下:

相关主题
文本预览
相关文档 最新文档