嵌入式linux系统学习笔记

ARM 213浏览

嵌入式linux内核制作

1 清除原有配置文件与中间文件
 x86 make distclean
 arm make distclean
2 配置内核
  x86 make menuconfig
  arm make menuconfig ARCH=arm
3 内核编译
  x86 make bzImage
  arm make uImage ARCH=arm CROSS_COMPILE=arm-linux-

根文件系统的制作
1 创建目录和文件
 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
2 创建设备文件
 cd dev/
 mknod -m 666 console c 5 1
 mknod -m 666 null c 1 3 
 cd ..
3 安装/etc
  tar etc.tar.gz -C /xxx/rootfs
4 编译内核模块
  make modules ARCH=arm CROSS_COMPILE=arm-linux-
5 安装内核模块
  make modules_install ARCH=arm INSTALL_MOD_PATH=/XXX/rootfs、
6 配置busybox
  进入busybox目录执行
  make menuconfig
  a  进入busybox settings-->
     build options-->
        选中build busybox as a static binary (no shared libs)
        选中cross corpiler prefix(arm-linux-)
     installation options-->
        选中don't use/usr
     busybox installation prefix(/xxx/rootfs)
注明编译后的busybox的安装位置
7 编译安装
   make ARCH=arm CROSS_COMPILE=arm-linux-
   make install

嵌入式文件系统
linux支持的文件系统类型:
ext2 ext3 vfat jffs romfs nfs
虚拟文件系统VFS(virtual file system) 为各类文件系统提供一个统一的应用编

程接口

文件系统架构
                目录树                      用户层
    -----------------------------
          虚拟文件系统(vfs)                 内核层

      jffs2  yaffs   ramfs
    ------------------------------
    mtd字符设备    mtd块设备                 底层驱动
  
     mtd 设备驱动
    -------------------------------
    nor flash  nand flash  ram               硬件层

基于flash的文件系统

nor
 jffs日志闪存文件系统2(journalling flash file system v2)
 可读写、支持数据压缩的日志型文件系统

nand 
 yaffs/yaffs2(yet another flash file system)不支持数据压缩

cramfs 只读的压缩文件系统

基于ram的文件系统

ramdisk 将一部分固定大小的内存当作块设备为使用
initramfs 类似于tmpfs(产品发布阶段)
nfs(network file system) 通过网络共享文件(开发阶段)