根文件系统移植
- 格式:doc
- 大小:1.39 MB
- 文档页数:21
UBI文件系统的移植作者:piaozhiye86@首次做UBIFS的移植,不足之处欢迎批评指正。
2010-7-15自从linux2.6.27以后的内核版本都支持UBI文件系统了,新版本的uboot已经支持UBIFS了。
软件平台VMwareFedora-10使用源码:linux-2.6.30.4.tar.bz2u-boot-2010.06-rc1.tar.bz2硬件环境mini2440—64M NAND关于uboot的移植可以参考《嵌入式Linux之我行》中uboot的移植,那里写得比较详细。
我也是参考了其中的文章。
1、uboot的UBI的移植关于uboot的UBI的移植几乎没有说明介绍,移植首先要保证你的flash驱动能够跑起来,我是在nand flash 上跑的UBI。
刚开始的时候我也没有什么头绪,只能够从uboot的readme开始查找一些蛛丝马迹。
- MTD Support (mtdparts command, UBI support)CONFIG_MTD_DEVICEAdds the MTD device infrastructure from the Linux kernel.Needed for mtdparts command support.CONFIG_MTD_PARTITIONSAdds the MTD partitioning infrastructure from the Linuxkernel. Needed for UBI support.因此呢,要UBI支持首先得要MTD支持,因此在配置文件中要添加以上两项的定义。
要移植UBI还要添加:#define CONFIG_CMD_UBIFS#define CONFIG_CMD_UBI总的关于UBI的部分是以下几个宏/****MTD Support (mtdparts command, UBI support)****/#if 1#define CONFIG_MTD_DEVICE 1#define CONFIG_MTD_PARTITIONS 1#define CONFIG_CMD_MTDPARTS#define CONFIG_CMD_UBIFS#define CONFIG_CMD_UBI#define CONFIG_LZO 1#define CONFIG_RBTREE 1#endif同时呢要给NAND建立个默认的分区。
根文件系统的移植1.下载busybox-1.13.4.tar.bz2网址:/2.解压busybox-1.13.4.tar.bz2到桌面[root@localhost Desktop]# tar-xjvf busybox-1.13.4.tar.bz2-C./[root@localhost Desktop]# cd busybox-1.13.4[root@localhost busybox-1.13.4]#3.编辑Makefile文件[root@localhost busybox-1.13.4]# gedit Makefile将CROSS_COMPILE ?=改为CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-将ARCH ?= $(SUBARCH)改为ARCH ?= arm4.进行默认配置[root@localhost busybox-1.13.4]# make defconfig //恢复默认配置5.对配置信息进行修改[root@localhost busybox-1.13.4]# make menuconfigHOSTLD scripts/kconfig/mconfHOSTCC scripts/kconfig/lxdialog/checklist.oHOSTCC scripts/kconfig/lxdialog/inputbox.oHOSTCC scripts/kconfig/lxdialog/lxdialog.oHOSTCC scripts/kconfig/lxdialog/menubox.oHOSTCC scripts/kconfig/lxdialog/msgbox.oHOSTCC scripts/kconfig/lxdialog/textbox.oHOSTCC scripts/kconfig/lxdialog/util.oHOSTCC scripts/kconfig/lxdialog/yesno.oHOSTLD scripts/kconfig/lxdialog/lxdialogscripts/kconfig/mconf Config.in在弹出的TUI界面中进行如下配置:检查Miscellaneous Utilities--->taskset 是否去除同时设置如下:Busybox Settings --->Build Options --->[*]Build BusyBox as a static binry (no shared libs) //选用静态连接[*]Build with Large File Support (for accessing files > 2 GB)(/usr/local/arm/3.4.1/bin/arm-linux-) Cross Compiler prefixInstallation Options --->[*] Don't use /usr(./_install) BusyBox installation prefix //安装路径Busybox Library Tuning --->(6) Minimum password length(2) MD5: Trade Bytes for Speed[*] Faster /proc scanning code (+100 bytes)[ ] Support for /etc/networks[*] Command line editing(1024) Maximum length of input[*] vi-style line editing commands(15) History size[*] History saving[*] Tab completion[*] Username completion[*] Fancy shell prompts //Setting this option allows for prompts to use things like \w and// \$ and escape codes.[ ] Give more precise messages when copy fails (cp, mv etc)(4) Copy buffer size, in kilobytes[ ] Use clock_gettime(CLOCK_MONOTONIC) syscall[*] Use ioctl names rather than hex values in error messages[*] Support infiniband HW设置完毕后,保存、退出。
嵌入式Linux中CramFS根文件系统的移植实现刘俊霞;盛文婷【摘要】首先研究了嵌入式Linux系统以及CramFS文件系统的移植,然后分析了嵌入式Linux系统及CramFS文件系统的特性,其次,详细说明了移植最小Linux系统的制作过程,最后,对制作出来的Linux系统镜像进行测试.最终的测试结果显示,系统移植成功且能够实现Linux系统的基本命令.【期刊名称】《数字技术与应用》【年(卷),期】2016(000)005【总页数】2页(P59-60)【关键词】Linux;CramFS;isoLinux【作者】刘俊霞;盛文婷【作者单位】新疆工程学院电气与信息工程系新疆乌鲁木齐 830023;新疆农业大学科学技术学院新疆乌鲁木齐 830091【正文语种】中文【中图分类】TP316.81随着电子产业的不断发展,基于ARM技术的系统设计和开发平台越来越多地在控制类、消费类、通信类等电子产品中广泛应用。
从软件角度上看,构建基于ARM 技术的Linux系统要涉及到引导加载程序、Linux内核、文件系统、用户应用程序几部分的设计。
由于存储空间有限,如何有效地使用有限的存储空间是嵌入式开发者必须考虑的,合适的文件系统格式是解决这一问题的关键所在。
CramFS是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩。
它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。
CramFS文件系统的基本组成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、链接库、图形界面程序和用户应用程序,文件系统是紧跟Linux内核放置,由内核加载,主要存放用户应用程序和配置信息。
在嵌入式的环境之下,内存和外存资源都需要节约使用。
嵌入式Linux中CramFS根文件系统的移植实现在嵌入式Linux系统开发中,根文件系统是一个重要的组成部分。
而CramFS是一种专门针对嵌入式系统应用的文件系统格式,其最大的优势是占用空间小,是一种压缩方式的文件系统,可大幅度减小系统的存储容量,因此在嵌入式系统开发中经常使用。
本文将介绍嵌入式Linux中CramFS根文件系统的移植实现。
一、CramFS的特点CramFS是Linux下的一种轻量级只读文件系统,以一种特殊的方式进行压缩,并且数据文件被强制以固定大小的块存储。
与其他文件系统不同,CramFS在挂载时不需要解压缩,因为它已经被预先压缩了。
CramFS还具有以下特点:(1)支持文件系统压缩,可大幅度降低系统存储空间占用。
(2)只读的文件系统,可以保证文件系统的完整性和安全性。
(3)支持嵌入式系统的启动和挂载。
二、CramFS根文件系统移植实现在嵌入式系统开发中,CramFS根文件系统的移植实现步骤如下:1、准备文件系统首先需要构建CramFS文件系统。
可以在Linux环境下创建CramFS文件系统,也可以将现有的文件系统转换为CramFS 格式。
构建好CramFS文件系统后,需要将其打包成initramfs 格式。
2、配置内核将打包好的initramfs文件放到内核源码根目录下,并在内核配置文件中进行相关配置:```CONFIG_INITRAMFS_SOURCE="<path>/initramfs.cramfs" CONFIG_RD_GZIP=yCONFIG_RD_XZ=yCONFIG_RD_LZMA=yCONFIG_RD_BZIP2=y```其中,INITRAMFS_SOURCE是initramfs所在的路径。
3、编译内核对内核进行编译,生成内核和相关驱动。
4、烧录将生成的内核和相关驱动烧录到目标设备中,然后重启设备。
三、总结CramFS是一种专门针对嵌入式系统应用的文件系统格式,它具有压缩率高、只读文件系统、支持启动和挂载等优点。
linux系统移植常用文件夹路径在Linux系统中,有许多常用的文件夹路径,它们扮演着不同的角色,为用户提供了便利和管理文件的方式。
下面我将为您介绍一些常见的文件夹路径。
1. / :根目录根目录是整个Linux文件系统的起点,所有其他文件和文件夹都位于根目录之下。
它类似于Windows系统中的C盘。
2. /home :用户主目录每个用户都有一个主目录,该目录位于/home下,以用户名命名。
例如,用户Alice的主目录路径为/home/Alice。
在主目录下,用户可以存储个人文件和配置。
3. /etc :系统配置文件系统配置文件存放在/etc目录下,这些文件包含了操作系统的配置和设置信息,如网络配置、用户账户信息等。
4. /var :可变数据/var目录用于存放经常变化的文件,如日志文件、临时文件等。
例如,网络日志文件存放在/var/log下。
5. /tmp :临时文件夹/tmp目录用于存放临时文件,这些文件在重启后会被删除。
它通常用于存放临时下载文件、解压缩文件等。
6. /usr :用户程序/usr目录用于存放用户安装的软件和应用程序。
其中,/usr/bin存放可执行文件,/usr/lib存放库文件,/usr/share存放共享数据等。
7. /bin :基本系统命令/bin目录包含了一些基本的系统命令,这些命令在系统启动时就可以使用。
例如,ls、cp、rm等命令都位于/bin目录下。
8. /sbin :系统管理命令/sbin目录包含了一些系统管理命令,这些命令通常只有管理员才有权限使用。
例如,ifconfig、shutdown等命令都位于/sbin目录下。
9. /opt :可选软件包/opt目录用于存放可选的软件包,这些软件包通常是第三方提供的,不属于操作系统的核心组件。
10. /boot :启动文件/boot目录包含了启动系统所需的文件,如内核文件、引导程序等。
这些文件在系统启动时被加载。
11. /dev :设备文件/dev目录包含了系统中的设备文件,如硬盘、光驱、键盘等。
操作系统移植在当今的科技世界中,操作系统移植是一项至关重要的技术活动。
它就像是给计算机系统进行一场“大搬家”,把一个操作系统从一种硬件平台或环境迁移到另一种不同的硬件平台或环境中,让其能够在新的“家”里正常运行。
要理解操作系统移植,我们先得清楚什么是操作系统。
操作系统就像是计算机的大管家,负责管理计算机的各种资源,比如内存、处理器、输入输出设备等,同时还为应用程序提供一个稳定、高效的运行环境。
常见的操作系统有 Windows、Linux、Android 等等。
那为什么要进行操作系统移植呢?原因有很多。
首先,随着技术的不断发展,新的硬件平台不断涌现。
比如,当一家公司研发出了一款性能更强大、功耗更低的芯片,为了让现有的操作系统能够在这个新芯片上运行,就需要进行移植。
其次,有时候出于特定的应用需求,需要把操作系统从一种设备移植到另一种设备上。
比如,将原本在个人电脑上运行的操作系统移植到智能手机或平板电脑上。
操作系统移植可不是一件简单的事情,它是一个复杂而具有挑战性的过程。
在移植之前,需要对目标硬件平台进行深入的了解。
这包括了解其处理器架构、内存管理方式、中断处理机制、总线结构等等。
只有清楚地掌握了这些硬件特性,才能为后续的移植工作打下坚实的基础。
然后就是对操作系统本身的分析和修改。
操作系统通常由内核、驱动程序、系统服务等多个部分组成。
在移植过程中,可能需要对内核进行调整,以适应新的硬件环境。
比如,修改内存分配算法、优化任务调度策略等。
对于驱动程序,往往需要重新编写或修改,以使其能够与目标硬件进行正确的交互。
系统服务也可能需要进行相应的调整,以确保其在新平台上的正常运行。
在实际的移植工作中,还需要解决一系列的兼容性问题。
不同的硬件平台可能具有不同的指令集、寄存器设置、存储布局等。
这就需要在移植过程中进行相应的转换和适配,以确保操作系统能够正确地执行指令、访问内存和处理数据。
另外,测试也是操作系统移植中不可或缺的环节。
毕业设计说明书基于ARM的嵌入式数字图像处理系统设计学生姓名:张占龙学号: 0905034314学院:信息与通信工程学院专业:测控技术与仪器指导教师:张志杰2013年 6月摘要简述了数字图像处理的应用以及一些基本原理。
使用S3C2440处理器芯片,linux内核来构建一个简易的嵌入式图像处理系统。
该系统使用u-boot作为启动引导程序来引导linux内核以及加载跟文件系统,其中linux内核与跟文件系统均采用菜单配置方式来进行相应配置。
应用界面使用QT制作,系统主要实现了一些简单的图像处理功能,比如灰度话、增强、边缘检测等。
整个程序是基于C++编写的,因此有些图像变换的算法可能并不是最优化的,但基本可以满足要求。
在此基础上还会对系统进行不断地完善。
关键词:linnux 嵌入式图像处理边缘检测AbstractThis paper expounds the application of digital image processing and some basic principles. The use of S3C2440 processor chip, the Linux kernel to construct a simple embedded image processing system. The system uses u-boot as the bootloader to boot the Linux kernel and loaded with file system, Linux kernel and file system are used to menu configuration to make corresponding configuration. The application interface is made using QT, system is mainly to achieve some simple image processing functions, such as gray, enhancement, edge detection. The whole procedure is prepared based on the C++, so some image transform algorithm may not be optimal, but it can meet the basic requirements. On this basis, but also on the system constantly improve.Keywords:linux embedded system image processing edge detection目录第一章绪论 (1)1.1 数字图像处理概述 (1)1.2 数字图像处理现状分析 (5)1.3 本文章节简介 (8)第二章图像处理理论 (8)2.1 图像信息的基本知识 (8)2.1.1 视觉研究与图像处理的关系 (8)2.1.2 图像数字化 (10)2.1.3 图像的噪声分析 (10)2.1.4 图像质量评价 (11)2.1.5 彩色图像基本知识 (11)2.2 图像变换 (13)2.2.1 离散傅里叶变换 (13)2.2.2 离散沃尔什-哈达玛变换(DWT-DHT) (20)2.2.3 离散余弦变换(DCT) (21)2.2.4 离散图像变换的一般表达式 (23)2.3 图像压缩编码 (24)2.3.1 图像编码的基本概念 (24)2.4 图像增强和复原 (24)2.4.1 灰度变换 (24)2.4.2 图像的同态增晰 (26)2.4.3 图像的锐化 (27)2.5 图像分割 (27)2.5.1 简单边缘检测算子 (27)2.6 图像描述和图像识别 (28)第三章需求分析 (28)3.1 系统需求分析 (28)3.2 可行性分析 (28)3.3 系统功能分析 (29)第四章概要设计 (29)4.1 图像采集 (30)4.2 图像存储 (31)4.3 图像处理(image processing) (31)4.4 图像显示 (32)4.5 网络通讯 (32)第五章详细设计 (32)5.1 Linux嵌入式系统的构建 (33)5.1.1 启动引导程序的移植 (33)5.1.2 Linux内核移植 (33)5.1.3 根文件系统的移植 (34)5.2 图像处理功能的实现 (34)5.2.1 彩色图像的灰度化 (34)5.2.2 灰度图的直方图均衡化增强 (35)5.2.3 图像二值化 (35)5.2.4 边缘检测 (36)第六章调试与维护 (36)附录 A (37)参考文献 (43)致谢 (44)第一章绪论1.1 数字图像处理概述数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
Yaffs2文件系统移植到mini2440现在大部分开发板都可以支持yaffs2 文件系统,它是专门针对嵌入式设备,特别是使用nand flash作为存储器的嵌入式设备而创建的一种文件系统,早先的yaffs仅支持小页(512byte/page)的nand flash,使用yaffs2 就可以支持大页的nand flash。
所谓的根文件系统,就是创建各个目录,并且在里面创建各种文件,比如在/bin,/sbin/目录下存放各种可执行的程序,在/etc目录下存放配置文件,在/lib目录下存放库文件,下面就开始文件系统的移植。
一、准备工作1.Yaffs2源代码的获取在bbb:///node/346可以下载到最新的yaffs2 源代码,如果使用git工具,在命令行输入:就可以下载到yaffs2的源代码,到当前目录下。
2.下载Busybox-1.13.3可以从bbb:///downloads/下载Busybox-1.13.3。
3.下载Yaffs2的整理工具可以到友善之臂的网站下载,mkyaffs2image.tgz,其中解压出来有两个可执行的文件,一个是针对小页的,一个是针对NandFlash大页的,其名字为mkyaffs2image-128M,一开始在这里犯了错误,我的NandFlash是128MB的,可以按照网上用的是mkyaffs2image文件,所以老是出来假坏块的提示,仔细一分析,NandFlash不可能一下子出来这么多的坏块,而且我用他们公司提供的根文件系统却没有任何的问题,所以问题处在了整理Yaffs2的工具上面。
因为这两种大小NandFlash的ECC校验是不一样的,也就是spare区的大小是不一样的,造成了ECC校验出错。
4.链接库整理根文件系统时,要使用到链接库,这里直接使用友善之臂根文件系统中的链接库。
从网站下载root_qtopia.tgz。
使用lib目录下的链接库。
5.给内核打上YAffs2补丁然后进入yaffs2源代码目录执行:#cd yaffs2#./patch-ker.sh c /opt/mini2440/linux-2.6.33.3此时进入linux-2.6.32.2/fs目录,可以看到已经多了一个yaffs2目录。
实验五根文件系统移植实验目的:通过本次实验,使大家学会根文件系统移植的具体步骤,并对根文件系统有更近一步的感官认识。
让同学理解由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。
实验硬件条件:1、实验PC机一台,TINY6410开发板一台2、电源线,串口线,数据线。
实验软件条件:1、VMware Workstation,2、Ubuntu10.043、mktools-20110720.tar.gz4、busybox-1.13.3-mini2440.tgz,5、SecureCRT以及dnw烧写工具实验步骤:一、实验步骤1.进入rootfs目录,查看压缩文件,具体操作指令如下:2.发现有两个压缩文件夹,分别进行解压:3.tar xvzf busybox-1.13.3-mini2440.tgz,4.tar xvzf mktools-20110720.tar.gz,解压完成后,5.查看文件夹#ls二、实验步骤1.修改架构,编译器#cd busybox-1.13.3/2.进入后查看#ls3.#gedit Makefile4.修改 164行 CROSS_COMPILE ?=arm-linux-5.修改190行 ARCH ?= arm6.保存后,退出!三、实验步骤1.修改配置 #make menuconfig2.若出现如下提示3.需调整到最大化。
4.把Busybox Settings-----→>Build Option------→>Build BusyBox as astatic binary (no shared libs) 选择上,其他的默认即可。
然后一直退出,保存即可5.接着执行 make接着执行 make install6.最终生成的文件在_install 中#cd _install#ls存在这四个文件,即编译成功。
四、实验步骤1、编写脚本文件,生成文件系统基本框架。
mkdir /home/tom/source/rootfs/arm-rootfs cd /home/tom/source/rootfs/arm-rootfs2、#gedit mkrootfs.sh将如下内容复制到mkrootfs.sh中#!/bin/shecho "------Create rootfs directons start...--------" mkdir rootfscd rootfsecho "--------Create root,dev....----------"mkdir root dev etc boot tmp var sys proc lib usr mnt home mkdir etc/init.d etc/rc.d etc/sysconfigmkdir usr/sbin usr/bin usr/lib usr/modulesecho "make node indev/console dev/null"mknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp mkdir var/lib var/lock var/run var/tmpchmod 1777 tmpchmod 1777 var/tmpecho "-------make direction done---------"保存并退出3、修改mkrootfs.sh权限。
password for tom:123456然后执行 #./mkrootfs.sh,会生成rootfs文件。
#cd rootfs看到上述文件框架已经做好。
接着将busybox生成四个文件(_install下)4、拷贝到/home/tom/source/rootfs/arm-rootfs/rootfs目录下。
选择Merge All全部替换五、实验步骤1、添加文件系统的配置信息和启动项进入etc目录#cd etc(rootfs下的etc文件)#cd sysonfig#gedit HOSTNAMES-601(内容随意输入,这里只为了规范)保存并退出!2、增加如下文件:从主机根目录/etc中复制group,passwd,shadow到/home/tom/source/rootfs/arm-rootfs/rootfs/etc具体步骤如下:cp /etc/grouphome/tom/source/rootfs/arm-rootfs/rootfs/etc/cp /etc/passwdhome/tom/source/rootfs/arm-rootfs/rootfs/etc/sudo cp /etc/shadowhome/tom/source/rootfs/arm-rootfs/rootfs/etc/密码:123456注:也可手动拖拽;复制后etc文件内容如下:3、 #gedit profile复制如下内容:#Ash profile#vim:syntax=sh#No core file by defaults#ulimit -S -c 0>/dev/null 2>&1 USER="id -un"LOGNAME=$USERPS1='[\u@\h=W]#'PATH=$PATHHOSTNAME='/bin/hostname' export USER LOGNAME PS1 PATH4、 #gedit inttab复制如下内容:#etc/inittab::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a –r5、#gedit fstab复制如下内容:#device mount-point type option dump fsck order proc /proc proc defaults 0 0none /tmp ramfs defaults 0 0sysfs /sys sysfs defaults 0 0mdev /dev ramfs defaults 0 0接下来进入etc/init.d文件6、 #gedit rcS复制如下内容:#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevelecho "----------munt all----------------"mount -aecho /sbin/mdev>/proc/sys/kernel/hotplugmdev -secho "****************Studying ARM*********************" echo "Kernel version:linux-2.6.38"echo "Student"echo "Date:2012.12.10"echo "***********************************************"/bin/hostname -F /etc/sysconfig/HOSTNAME 并修改权限#sudo chmod 777 rcS设置设备节点:进入rootfs下的dev文件#sudo mknod –m 600 console c 5 1#sudo mknod –m 600 null c 1 3然后退到上级目录#cd ..解除dev文件下所有文件权限:Sudo chmod 777 dev –R到这里,恭喜你,文件系统基本搭建起来了。
六、实验步骤编译:我要把文件系统编译成为ubi文件系统格式将/home/tom/source/rootfs/usr/sbin下的mkubimage和mkubimage-slc文件拷贝到/home/tom/source/rootfs/arm-rootfs下接下来#sudo ./mkubimage-slc rootfs rootfs.ubi 并解除rootfs.ubi权限#sudo chmod 777 rootfs.ubi到这里实验就全部结束,生成的根文件系统rootfs.ubi在/home/tom/source/rootfs/arm-rootfs下,可用DNW将其烧到开发板上进行测试。
实验结果:在本次试验中我们涉及到的知识很多,理解起来比较难,老师讲的很详细但有些地方还不是很理解,本次试验我们是做根文件系统的移植,通过多个命令的执行和修改最后搭建起了文件系统,在这个过程中我们遇到了很多问题,主要是没有对根文件系统移植有很好的理解,还好在老师的帮助下完成了,我学到了很多知识,对以后的学习很有帮助。