linux内核配置与编译即根文件制作

来源:互联网 发布:淘宝会员怎么取消 编辑:程序博客网 时间:2024/06/07 03:37

       Linux内核配置与编译及根文件的制作

   嵌入式系统文件的构成

   

    

一:  配置

首先是配置原因:当我们拿到一个内核时由于硬件和软件的要求有很多的功能是我们不要的。所以要进行内核的配置  说白了就是选出需要的  去掉不要的!

配制方法: 有两种配置方法 

① make config  是基于文本模式的交互式配置

② make menuconfig  是基于文本模式的菜单配置 

       以上是给x86平台配置内核。在嵌入式linux arm 内核配置时需要加一个条件 

  make menuconfig  ARCH=arm     其中ARCH=arm表示是在给arm平台配置内核文件!

下面主要说说make menuconfig  ARCH=arm配置方法;

  内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件,Linux内核提供了一系列可供参考的内核配置文件,位于Arch/$cpu/configs    所以我们第一步是要载入你需要的内核: 

当输入make menuconfig 时会出现下面的菜单:

一直在线面到光标亮的地方进入

 

 

 

 

进入之后出现下面的界面 在里面输入你要的内核然后点击

  

ok(在输入内核名时要注意路径); 之后就进入了你需要的内核的菜单中  下图:

 

然后根据自己的需求进行选择 (注 按table键是选择 *M表示选中  是编译成.o文件   表示编译成内核模块。左右键是下面的三个选择键)。

之后保存退出吗,内核配置完成

二: 编译

 ① 一般情况下在配置之前我们都要清除原有配置与中间文件 以防止编译出错  即执行命令 

x86: make distclean

arm:  make distclean

便可清除!然后再进行配置

② 开始编译内核:

   给x86平台编译内核:make bzImage

   给arm平台编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

   之后会一直编译一会  以下是部分截图

 

现在我们已经编译通过但还不能下载到开发板中  因为还有个根文件系统没有完成;

三:根文件系统制作:

  ①  在你的某一个目录下创建一个rootfs文件夹  这个文件夹是将来用于给arm平台提供的根文件  接着再在此目录下创建其他文件夹  具体操作如下:

 

#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

② 创建设备文件

   #cd rootfs/dev

   #mknod -m 666 console c 5 1

   #mknod -m 666 null c 1 3

③ 加入你的配置文件

 #tar etc.tar.gz  (这是你的配置)

#cp etc/* /root/etc/ -rf

④ 添加内核模块

 #cd /linux cd到你之前配置内核的地方)

#make modules ARCH=arm CROSS_COMPILE=arm-linux-

#make modules_install ARCH=arm INSTALL_MOD_PATH=/rootfs

⑤ 编译安装busybox 

  BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。

     1.配置busybox

     #make menuconfig 

    a  Busybox Settings ->build Options->

选中 “Build busybox as a static binary静态链接

      Cross Compiler prefix (arm-linux-)

    b Installation Options->

     选中 “Dont use /usr选中该项可以避免busybox 被安装到宿主系统的

/usr目录下,破坏宿主系统

    c  Busybox Installation Prefix (/xxx/rootfs)

该选项表明编译后的busybox的安装位置

 

⑥ 编译 安装 busybox

    #make

    #make install

⑦  使用Initramfs的文件系统

    1. #cd …/rootfs/

       #ln –s ./bin/busybox init

2. 配置Linux内核,支持initramfs

  

 

 

 

 

3. 编译内核  (make uImage ARCH=arm CROSS_COMPILE=arm-linux-

4. setenv bootargs noinitrd console=ttySAC0,115200(这是在开发板上串口上操作的) 

5. 使用NFS文件系统:

①配置内核

 

使光标处不被选中

 

选中光标处,

③ 编译内核

④配置nfs

 a /etc/exports/文档中输入根文件路径

 b 打开nfs /etc/init.d/nfs restart

⑤ 在开发板串口界面配置相关参数

  setenv bootargs noinitrd 

  console=ttySAC0,115200 init=/init 

  root=/dev/nfs rw 

  nfsroot=192.168.1.3虚拟机linux IP地址:/home/S5-

  driver/lesson9/rootfs(根文件路径),proto=tcp,nfsvers=3 

  ip=192.168.1.6(开发板ip:192.168.1.3(虚拟机ip:192.168.1.1:25

  5.255.255.0::eth0:off

(注: 红色的是需要修改的);

 ⑥将uImag下载到开发板上运行;

注: 以上生成的文件如果是用tftp下载到开发板 则必须将此文件复制到tftp指定的文件夹 比如我的是在tftpboot文件夹中:

0 0