• 嵌入式Linux内核,文件系统的制作


    嵌入式Linux系统由 Linux内核 + 根文件系统 两部分组成

    一个完整的嵌入式Linux系统组成:bootloader + boot parameters + kernel + root filesystem
    嵌入式Linux系统使用的是Linux内核,制作方法基本和X86平台的Linux内核一致,下面介绍制作运行于mini6410开发板的内核和根文件系统。
     
    嵌入式Linux内核的制作:
    1,到www.kernel.org下载源代码,解压,进入内核源代码目录。
     
    2,清除原有的配置与中间文件
    x86: make distclean
    arm: make distclean
     
    3,配置内核:
    x86: make menuconfig ARCH=i386
    arm: make menuconfig ARCH=arm//配置完毕在内核源代码目录生成.config文件,建议参考arch/arm/configs/s3c6400_defconfig .config、
     
    4,编译内核:
    x86: make bzImage
    arm: make uImage ARCH=arm CROSS_COMPILE=arm-linux-//编译成功在arch/arm/boot/目录下产生zImage内核映像
     
    5,使用tftp下载到开发板运行即可
     
     
     
    根文件系统的制作:
     
    根文件系统是Linux启动时使用的第一个文件系统,就像PC机上的文件目录
     
    6,创建根文件系统的目录(目录名随便取)
    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
     
    7,创建设备文件
    cd dev/
    mknod -m 666 console c 5 1
    mknod -m 666 null c 1 3
     
    8,安装/etc(随便拷贝点/etc/目录下的文件到该etc目录下)
     tar etc.tar.gz -C /XXX/rootfs
     
    9,编译内核模块
    cd Linux 2.6.29//进入Linux内核目录
    make modules ARCH=arm CORSS_COMPILE=arm-linux-
     
    10,安装内核模块(把编译好的内核模块拷贝到创建的这个文件系统)
    make modules_install ARCH=arm INSTALL_MOD_PATH=/***/rootfs//生成rootfs/lib/modules/2.6.29.4-FriendlyARM
     
     
    busybox的配置-编译-安装:
     
    11,配置busybox(Linux下面是用的一整套的命令和工具的集合)
    解压busybox,进入busybox根目录
    make menuconfig
     
    选择需要使用的工具
     
    进入 busybox settings->build option->
    选中 “build busybox as a static binary”,静态链接
    更改Cross Compiler prefix 为(arm-linux-)
     
    进入installation option->
    选中“do not use /usr”,可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
    更改busybox installation prefix位置为(/xxx/rootfs)
     
    12,编译,安装busybox(把相关的命令/文件拷贝到这个正在创建的文件系统)
    在busybox根目录下
    make ARCH=arm CROSS_COMPILE=arm-linux-/*等...........等*/
    make install//执行的是busybox这个可执行文件/*rootfs/bin/目录下多了好多文件*/
     
    13,至此根文件系统制作完成
     
     
     
    由根文件系统制作ramdisk
     
     
    14,需要一个软件genext2fs,为制作ramdisk的工具,
    安装方法:
    解压genext2fs
    #cd genext2fs
    #./configure
    #make
    #make install
     
    15,利用genext2fs制作ramdisk
    #genext2fs -b 8192 -d /***/rootfs ramdisk//根文件系统的所有内容变成了ramdisk=8192=8MB
    gzip -9 -f ramdisk//对ramdisk进行压缩,将此压缩文件放到开发板即可作为根文件系统启动起来
    开发板可运行的文件系统:
    NFS文件系统:文件系统在PC机上,开放给开发板运行
    ramdisk文件系统:下载到开发板的内存中运行
     
    Linux支持的文件系统:
    ext2,ext3,vfat,jffs,romfs,nfs,这些不同的文件系统由虚拟文件系统VFS统一管理
     
    嵌入式Linux支持的文件系统:
    jffs2,yaffs,cramfs,ramdisk,ramfs
    jffs2:用于NorFlash上,可读写,支持数据压缩
    yaffs2:用于NandFlash上,不支持数据压缩,可读写
    cramfs:既可以用于NorFlash上,又可以用于NandFlash上,只读,支持数据压缩
    ramdisk:用一部分固定大小的内存作为分区来使用,并非是一个实际的文件系统,方便内核启动
    NFS:文件系统在PC机上,通过网络共享
  • 相关阅读:
    PyTorch中view的用法
    pytorch lstm crf 代码理解 重点
    Pytorch Bi-LSTM + CRF 代码详解
    pytorch入坑一 | Tensor及其基本操作
    error C2440:“类型转换":无法从“void (__thiscall Play1::* )(int *)”转换为“cocos2d::SEL_CallFucN
    一行命令搞定VS2012无法安装cocos2d-x-2.1.4及创建跨平台项目(二)
    VS2012无法安装cocos2d-x-2.1.4 解决方法及VS2012新建coco2d-x项目(一)
    更换VS2012序列号的方法
    【iOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GameCenter 指南(实现仿官方的成就提示)、游戏接入OpenFeint指南;
    Xcode快照——管理应用程序版本
  • 原文地址:https://www.cnblogs.com/ljf181275034/p/2491183.html
Copyright © 2020-2023  润新知