四、内核和根文件系统

1、内核的概念

Linux的内核就是Linux内部比较核心的一段代码,他是用来管理计算机的,主要包含:内存、进程、设备、文件系统、网络;内核将硬件与用户隔离开来,防止用户直接操作操作底层硬件;

2、Linux3.5内核编译与配置

步骤:

1)将内核的压缩包拷贝到虚拟机里

2)解压压缩包(是Linux3.5内核)

tar xvf linux-3.5-20141114.tar

3)进入到解压后的目录

linux内核支持的版本有很多,不光支持ARM架构,还支持mips x86

我们现在想让他编译ARM架构对应的东西,就需要修改Makefile 的196 和 197行将

ARCH            ?= arm    #架构

CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)#交叉编译工具

改成

4)配置其他东西

安装图形化界面软件

1:执行

sudo apt-cache search ncurses

sudo apt-get install libncurses5-dev

2:调出来这个图形化的界面的命令(终端不要放大的过大  不然会报错)

make menuconfig   

会生成一个.config文件

3:内核配置

由于内核配置选项较多,我们直接使用友善之臂提供的.config文件

我们将tiny4412_linux_defconfig拷贝到我们生成的.config文件里

5)去掉内核的保护机制(必须要去掉)

进到可视化界面

System Type  --->

[ ] Support TrustZone-enabled Trusted Execution Environment

保存退出

6)修改文件

文件的路径   kernel/timeconst.pl

在文件的373行   if (!defined(@val)) 改成  if (!(@val))

7)编译内核

make -j5 && make zImage -j5

8)内核的烧写

要想烧写内核到开发板,首先我们要知道生成的镜像文件zlmage文件的位置

查阅相关文件得知:linux-3.5/arch/arm/boot/

要烧录的位置是:sd卡的第一个分区的第1057扇区

烧写的命令:dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb seek=1057

注意:

当我们将zlmage烧录完成之后,给开发板上电,uboot会自动的引导内核启动,uboot上电后会执行一条指令:

bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 400000;bootm 40008000 41000000

命令含义:读取内核到内存里的400080000位置处,然后再跳到40008000处执行内核。

3、根文件系统

1)根文件系统概念

根文件系统就是管理各种各样的文件的系统(Linux下一切皆文件)

真正的操作系统,他是由内核+文件系统构成的。

2)根文件系统制作

一般来说要想制作一个根文件系统需要首先生成三个文件夹

bin:一般用来存放可ARM架构的执行程序

lib:内核所需的库文件

include:内核所需的头文件

这三个文件夹也是比较重要的文件夹

3)busybox的使用

        1)解压busybox的压缩包

        tar xvf busybox-1.21.1.tar.bz2

        2)进入到busybox目录执行

        make menuconfig

        3)配置交叉编译工具

        Busybox Settings  --->

                Build Options  --->

                        (arm-linux-) Cross Compiler prefix

        4)配置共享库

        Busybox Settings  --->

                Build Options  --->

                         [*] Build shared libbusybox

        5)配置busybox的安装路径

        生成的文件系统存放的位置

        Busybox Settings  --->

                Installation Options ("make install" behavior)  --->

                (/home/lym/work/rootfs) BusyBox instasllation prefix

        6)添加模块相关的命令支持

                Linux Module Utilities  --->

        7)编译并安装

        make && make install

        这个命令执行完成之后  就会在指定的位置生成三个文件夹

        8)将交叉编译工具的库复制到文件系统里

        在根文件系统目录下执行

        cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ ./ -rap

        9)创建其他的目录

        在根文件系统目录下执行

        mkdir dev etc/init.d home proc sys root opt tmp var -p

        10)创建控制台和垃圾桶设备文件

                sudo mknod dev/console c 5 1

                sudo mknod dev/null c 1 3

        11)新建etc目录下的fstab文件

                vim etc/fstab

                添加如下内容

                # device mount-point type options dump fsck order

                proc /proc proc defaults 0 0

                tmpfs /tmp tmpfs defaults 0 0

                sysfs /sys sysfs defaults 0 0

                tmpfs /dev tmpfs defaults 0 0

        12)新建etc下的inittab文件

                vim etc/inittab

                添加如下内容

                ::sysinit:/etc/init.d/rcS

                console::askfirst:-/bin/sh

                ::ctrlaltdel:/sbin/reboot

                ::shutdown:/bin/umount -a -r

        13)新建etc/init.d/rcS

                vim etc/init.d/rcS

                添加如下内容

                #!/bin/sh

                mount -a

                mkdir /dev/pts

                mount -t devpts devpts /dev/pts

                echo /sbin/mdev > /proc/sys/kernel/hotplug

                mdev -s

                /bin/hostname XYD

                给rcS添加上可执行权限

                chmod +x etc/init.d/rcS

        14)新建profile文件

                vim etc/profile

                添加如下内容

                USER="`id -un`"

                LOGNAME=$USER

                PS1='[\u@\h \W]# '

                PATH=$PATH

                HOSTNAME=`/bin/hostname`

                export USER LOGNAME PS1 PATH

        15)添加group和passwd

                cp /etc/group /etc/passwd ./etc/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值