1、内核的概念
Linux的内核就是Linux内部比较核心的一段代码,他是拿来管理计算机的linux 内核 引导 文件系统linux 内核 引导 文件系统,主要包含:显存、进程、设备、文件系统、网络;内核将硬件与用户隔离开来,避免用户直接操作操作底层硬件;
2、Linux3.5内核编译与配置
步骤:
1)将内核的压缩包拷贝到虚拟机里
2)解压压缩包(是Linux3.5内核)
tarxvflinux-3.5-20141114.tar
3)步入到解压后的目录
linux内核支持的版本有好多linux修改文件名,不光支持ARM构架,还支持mipsx86
我们如今想让他编译ARM构架对应的东西,就须要更改Makefile的196和197行将
ARCH?=arm#构架
CROSS_COMPILE?=$(CONFIG_CROSS_COMPILE:"%"=%)#交叉编译工具
改成
4)配置其他东西
安装图形化界面软件
1:执行
sudoapt-cachesearchncurses
sudoapt-getinstalllibncurses5-dev
2:调下来这个图形化的界面的命令(终端不要放大的过大不然会报错)
makemenuconfig
会生成一个.config文件
3:内核配置
因为内核配置选项较多,我们直接使用友善之臂提供的.config文件
我们将tiny4412_linux_defconfig拷贝到我们生成的.config文件里
5)除去内核的保护机制(必需要去除)
进到可视化界面
SystemType--->
[]SupportTrustZone-enabledTrustedExecutionEnvironment
保存退出
6)更改文件
文件的路径kernel/timeconst.pl
在文件的373行if(!defined(@val))改成if(!(@val))
7)编译内核
make-j5&&makezImage-j5
8)内核的烧录
要想烧录内核到开发板,首先我们要晓得生成的镜像文件zlmage文件的位置
查阅相关文件获知:linux-3.5/arch/arm/boot/
要烧写的位置是:sd卡的第一个分区的第1057磁道
烧录的命令:ddiflag=dsyncoflag=dsyncif=./zImageof=/dev/sdbseek=1057
注意:
当我们将zlmage烧写完成以后,给开发板上电linux mint,uboot会手动的引导内核启动,uboot上电后会执行一条指令:
bootcmd=movireadkernel040008000;movireadrootfs0400;bootm00000
命令含意:读取内核到显存里的400080000位置处,之后再跳到40008000处执行内核。
3、根文件系统
1)根文件系统概念
根文件系统就是管理各类各样的文件的系统(Linux下一切皆文件)
真正的操作系统,他是由内核+文件系统构成的。
2)根文件系统制做
通常来说要想制做一个根文件系统须要首先生成三个文件夹
bin:通常拿来储存可ARM构架的执行程序
lib:内核所需的库文件
include:内核所需的头文件
这三个文件夹也是比较重要的文件夹
3)busybox的使用
1)解压busybox的压缩包
tarxvfbusybox-1.21.1.tar.bz2
2)步入到busybox目录执行
makemenuconfig
3)配置交叉编译工具
BusyboxSettings--->
BuildOptions--->
(arm-linux-)CrossCompilerprefix
4)配置共享库
BusyboxSettings--->
BuildOptions--->
[*]Buildsharedlibbusybox
5)配置busybox的安装路径
生成的文件系统储存的位置
BusyboxSettings--->
InstallationOptions("makeinstall"behavior)--->
(/home/lym/work/rootfs)BusyBoxinstasllationprefix
6)添加模块相关的命令支持
LinuxModuleUtilities--->
7)编译并安装
make&&makeinstall
这个命令执行完成以后还会在指定的位置生成三个文件夹
8)将交叉编译工具的库复制到文件系统里
在根文件系统目录下执行
cp/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/./-rap
9)创建其他的目录
在根文件系统目录下执行
mkdirdevetc/init.dhomeprocsysrootopttmpvar-p
10)创建控制台和垃圾桶设备文件
sudomknoddev/consolec51
sudomknoddev/nullc13
11)新建etc目录下的fstab文件
vimetc/fstab
添加如下内容
#devicemount-pointtypeoptionsdumpfsckorder
proc/procprocdefaults00
tmpfs/tmptmpfsdefaults00
sysfs/syssysfsdefaults00
tmpfs/devtmpfsdefaults00
12)新建etc下的inittab文件
vimetc/inittab
添加如下内容
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount-a-r
13)新建etc/init.d/rcS
vimetc/init.d/rcS
添加如下内容
#!/bin/sh
mount-a
mkdir/dev/pts
mount-tdevptsdevpts/dev/pts
echo/sbin/mdev>/proc/sys/kernel/hotplug
mdev-s
/bin/hostnameXYD
给rcS添加上可执行权限
chmod+xetc/init.d/rcS
14)新建profile文件
vimetc/profile
添加如下内容
USER="`id-un`"
LOGNAME=$USER
PS1='[u@hW]#'
PATH=$PATH
HOSTNAME=`/bin/hostname`
exportUSERLOGNAMEPS1PATH
15)添加group和passwd
cp/etc/group/etc/passwd./etc/