【内核】在Linux内核中添加对jffs2的支持

海思最新出了一款超低内存的芯片HI3518EV201(内存只有32M)

在开发过程中对内核的裁剪考验相当大,当然海思也提供了参考的裁剪方案《hi3518ev20x_mini_config.txt》。

但是不能完全按照海思提供的裁剪方案来玩,因为该内核不支持USB、不支持frame buf、不支持以太网及nfs、不支持进程间通信等。

其中不支持进程间通信是指将内核配置 General setup中的System V IPC选项去掉;System V IPC共有三种类型:System V消息队列、System V 信号量、System V 共享内存区。即是不支持消息队列、信号量和共享内存三种进程间通信方式。

1.修改Makefile,在首行位置添加以下两行:

ARCH=arm

CROSS_COMPILE=arm-hisiv300-linux-

在make menuconfig 后在File systems  ---> 中看到:

a.该内核只支持ext4文件系统

b.[ ] Miscellaneous filesystems  --->选项压根就没有勾选上,及时勾选上进去也看不到jffs2的选项

2.在Miscellaneous filesystems  --->选项中添加jffs2选项卡:

Device Drivers  --->

  <*> Memory Technology Device (MTD) support  --->(这个选项一选上后,File systems  ---> 中的Miscellaneous filesystems  --->就会变成必选项了) 保存

3.去掉对ext4文件系统的支持,添加对jffs2和squashfs文件系统的支持

去掉:

File systems  --->

   < > The Extended 4 (ext4) filesystem

添加:

File systems  --->

  -*- Miscellaneous filesystems  --->

     <*>   Journalling Flash File System v2 (JFFS2) support

    和<*>   SquashFS 4.0 - Squashed file system support

4.编译一遍 make uImage,然后将zImage烧到板子上go 0x81000000, /etc/init.d/S00devs脚本中有两句

mount -t squashfs /dev/mtdblock2 /mnt/app
mount -t jffs2 /dev/mtdblock3 /mnt/app_ext/

发现以下错误:

mount: mounting /dev/mtdblock2 on /mnt/app failed: No such device or address
mount: mounting /dev/mtdblock3 on /mnt/app_ext/ failed: No such device

5.解决mount 出错:

Device Drivers --->
  <*> Memory Technology Device (MTD) support --->
    [*] Command line partition table parsing

6.再编译一遍 make uImage,然后将zImage烧到板子上go 0x81000000,因为squashfs文件系统默认是ZLIB压缩算法的,而我们使用的是压缩率最高的XZ算法,因此会发现以下错误:

SQUASHFS error: Filesystem uses "xz" compression. This is not supported
mount: mounting /dev/mtdblock2 on /mnt/app failed: Invalid argument

7.解决xz压缩算法出错:

File systems --->
  -*- Miscellaneous filesystems --->
    <*> Journalling Flash File System v2 (JFFS2) support 下面的
    [*] Include support for ZLIB compressed file systems(去掉勾选)
    [*] Include support for XZ compressed file systems (加上勾选)

8.跑起来后,boot.sh脚本中对jffs2文件系统进行操作时,发现以下错误,因为加密算法类型0x07没有打到内核中:

jffs2: compression type 0x07 not available
jffs2: Error: jffs2_decompress returned -5

9.解决xz压缩算法出错:

File systems ---> 
  -*- Miscellaneous filesystems ---> 
    [*]     Advanced compression options for JFFS2 下面的
    [*]       JFFS2 LZO compression support  (加上勾选)

10.ok了,接下来就是遇到一些简单的错误,不再做详细阐述。

时间: 2024-10-10 23:44:36

【内核】在Linux内核中添加对jffs2的支持的相关文章

CentOS6.5 下在Nginx中添加SSL证书以支持HTTPS协议访问

参考文献: 1. NginxV1.8.0安装与配置 2. CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问 3. nginx配置ssl证书的方法 4.nginx强制使用https访问(http跳转到https) 5.nginx ssl 107 (net::ERR_SSL_PROTOCOL_ERROR) 无法与服务器建立安全连接 解决方法 配置过程如下: 我的nginx是 yum 安装 具体安装过程参考:[转]CENTOS 6.5 配置YUM安装NGINX+服务器负载均衡 一.安

安卓驱动开发(四)----安卓内核与linux内核的安装配置

安卓中的源代码包括安卓系统中的应用程序的源代码,SDK带的各种工具的源代码,NDK的源代码以及HAL源代码. 安卓源代码可以全部下载,也可以下载一部分.之后要对安卓的源代码进行编译,在编译后,会在安卓源代码根目录下生成一个out目录,所有编译的目标文件都在这个目录中,在out目录中有两个直接子目录,分别是host和target.前者表示在主机(x86)生成的工具,后者表示目标机(模认为ARMv5)运行的内容.在target中,包含两个直接子目录,分别是common和product.common包

《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁

20135311傅冬菁 分析Linux内核创建一个新进程的过程 一.学习内容 进程控制块——PCB  task_struct数据结构 PCB task_struct中包含: 进程状态.进程打开的文件.进程优先级信息 操作系统管理的三个功能: 1.进程管理 2.内存管理 3.文件系统 Linux进程的状态: 进程状态分析: long state是进程的运行状态,-1是未执行,0是执行中,大于0则是暂停: *stack 是建立一个内核堆栈: flags 是定义了每个进程的标识符: list_head

linux内核---嵌入式linux内核的五个子系统

转自:https://blog.csdn.net/qq_27522735/article/details/63251168 Linux内核主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)5个子系统组成,如图1所示. 图1 Linux内核的组成部分与关系 1.进程调度 进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中"微观串行,宏观并行"地执行.进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为

Linux/Ubuntu中添加删除新用户

操作环境:Ubuntu Server 14.04,系统上仅有一个用户root 1. adduser 命令添加新用户 #adduser username 注意adduser与useradd命令的区别,useradd是Linux系统中二进制可执行程序工具,adduser是封装了useradd之后的可执行脚本.因此adduser比useradd功能更加强大和智能,adduser在创建用户同时进行创建用户主目录等其他相关工作. 2.赋予新建用户管理员权限 只需要将用户加入sudo用户组中就可以赋予用户管

控制台应用程序中添加对MFC的支持

在windows控制台应用程序中,肯能会想使用一些MFC中的类,如CStringArray等,通过下面两步简单的设置可以添加对MFC的支持: 1.右击工程名 -> References 选择 All Configuration ->Configuration Properties ->General->Use of MFC ->Use MFC in a Shared DLL 2.在stdafx.h头文件中添加一下内容: #define _ATL_CSTRING_EXPLICI

linux BSP中添加新驱动

开发工作中,经常需要添加一些新的驱动,但是有时候不想自己写Makefile,或者是驱动需要编译到内核里,那我们该如何才能把驱动加到BSP里面,只需按照原来的编译步骤就能得到想要的ko文件,或者直接编译到uImage呢?一个新驱动添加大概需要以下三个步骤: 一,编写你的驱动文件,就是new_driver.c,并将其放到你想放的目录下,比如drivers/misc/ . 二,修改drivers/misc/Makefile,其格式,打开便知,如下: 1 obj-$(CONFIG_PLAT_NOMADI

[内核同步]Linux内核同步机制之completion

转自:http://blog.csdn.net/bullbat/article/details/7401688 内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束.这个活动可能是,创建一个新的内核线程或者新的用户空间进程.对一个已有进程的某个请求,或者某种类型的硬件动作,等等.在这种情况下,我们可以使用信号量来同步这两个任务.然而,内核中提供了另外一种机制——completion接口.Completion是一种轻量级的机制,他允许一个线程告诉另一个线程某个工作已经完成

如何往linux 系统中添加帮助文档

第三方提供的库函数或者自己提供给别人的接口里,为了便于使用通常会提供帮助文档.那么该如何把把这些文档添加到linux 操作系统当中去,使得可以通过man 查看呢?下面以libaio的帮助文档为例,进进行实例说明. 在添加帮助文档到系统之前,可以看到man无法找到libaio相关函数的帮助文档: [[email protected] man]# man io_prep_pwrite No manual entry for io_fsync 为此,可以参考下面的命令进行添加: step 1. 下载得