zoukankan      html  css  js  c++  java
  • 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍

    b.开发板可以pc,linux 三者可以互相ping通

    c.配置好nfs服务器:同样在嵌入式的童年中有介绍

    一.嵌入式linux内核的制作(这里使用的国嵌提供的linux-ok6410内核,附带内核配置文件config-file)

    a.进入内核目录清除原有配置和中间文件:

    make clean

    b.配置内核:

    arm平台:make menuconfig ARCH=arm

    将内核配置文件拷贝到内核目录中config-file
    查看cpu是否对应:system type->arm system type(samsung s3c64xx):对的,保存,退出

    c.编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-(这里需要mkimage工具,将该工具(mkimage在uboot的tools目录中,将它放到交叉编译工具链中/bin 中))             cp uImage ./tftpboot

    tftp uImage 0xc0008000 (将uImage下载到开发板)

    bootm 0xc0008000(启动内核)这里启动会失败,因为还没有挂载根文件系统。

    二.根文件系统制作

    1.   mkdir rootfs (创建根文件系统主目录)

    cd rootfs

    2.创建常见子目录

    mkdir bin dev etc lib proc sbin sys usr mnt tmp var

    mkdir usr/bin usr/lib usr/sbin lib/modules

    3.向目录中添加一些必备的设备文件

    cd rootfs/dev

    mknod -m 666 console c 5 1

    mknod -m 666 null c 1 3

    4.加入配置文件

    tar zxvf etc.gar.gz

    cp etc/* rootfs/etc/ -rf

    三.编译安装内核模块并添加到rootfs中

    make modules ARCH=arm CROSS_COMPILE=arm-linux-

    make modules_install ARCH=arm INSTALL_MOD_PATH=/XXX/rootfs

    cd rootfs/lib/modules/2.6.35-embedsky/kelnel/drivers/scsi   我们能看到一些.ko文件.

     四.配置busybox(精通嵌入式中有提供可以使用的,一些常用的shell指令)

    1.   tar zxvf busybox....tar.gz

    cd busybox ...

    2.  make menuconfig ARCHarm CROSS_COMPILE=arm-linux-

    Busybox setting--->

    build Options--->

    选中“build busybox as a static binary”,静态链接。


    3.  在同一页面--->Cross compiler prefix(arm-linux-).


    4.  installation Options-->
    选中“Don not use/usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统。......
    Busybox Installation Prefix(/xxx/rootfs)

    该选项表明编译后的busybox的安装位置。
    路径要指对,否则会安装失败(在Don not use/usr同一页面)。

    安装busybox :make install

    cd rootfs/bin
    发现有很多的命令
    根文件系统的制作完成

    五.挂载嵌入式文件系统

    initramfs挂载根文件系统:

    cd rootfs

    ls

    ln -s ./bin/busybox init 创建软连接 :在当前目录下为./bin/busybox 创建软连接init

    make menuconfig ARCH=arm

    general setup->initial ram filesystem and ram disk勾上->
    在该项的下一项填上根文件系统的目录。/home/kerne-lesson/rootfs
    make uImage ARCH=arm CROSS_COMPILE=arm-linux-
    cp arch/arm/boot/uImage  /tftpboot 

    环境变量设置
    setenv bootargs noinitrd console=ttySAC0,115200

    包含两个部分:文件系统,内核-》uImage 

    ----------------------------------------------------------------------

    nfs挂载根文件系统:

    cd linux-ok6410
    1. make menuconfig ARCH=arm
    general setup->initial ram filesystem and ram disk取消-》
    file system->network file system->root file system on nfs勾上
    退出配置,进行内核编译

    2.make uImage ................
    3.启动参数的配置:
    setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs(表示使用nfs作为根文件系统)rw nfsroot=192.168.1.104(之前配置好的nfs服务器的地址):/home/lesson-kernel/rootfs ip=192.168.1.102(开发板ip):192.168.1.104:192.168.1.1:255.255.255.0:(中间为主机名):eth0(将ip地址赋值给eth0这个网卡):off(关闭动态ip获取)。
    /etc/init.d/nfs restart
    tftp c0008000 uImage
    bootm c0008000

    这样嵌入式linux系统就构建好了。

  • 相关阅读:
    Oracle在Linux下使用异步IO(aio)配置
    慢慢聊Linux AIO
    ssh批量登录并执行命令(python实现)
    Reverse Linked List II
    Reverse Linked List
    Excel Sheet Column Title
    Summary Ranges
    面试题1:实现大数加减乘除四则运算
    Multiply Strings
    Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/defen/p/4732803.html
Copyright © 2011-2022 走看看