1、什么是内核
内核是一个抽象的东西,是一个运行的程序,管理整个操作系统的程序,好比操作系统的大脑!
2、内核的五大功能
管理进程、管理内存、管理文件、管理设备、管理网络
3、Linux的内核的重要文件夹
* arch 架构
arm
* block 块--内存/存储
* net 网络相关文件夹
* Documentation 说明文档
* drivers:
内核带的驱动有一大堆!
带的驱动90%不是你用的
* fs
内核支持文件系统文件夹
* include
头文件
* tiny4412_android_defconfig
tiny4412_linux_defconfig
tiny4412_ubuntu_defconfig
4、移植配置编译开发板提供的内核
由于内核不仅仅支持某一款开发板,所以想要移植使用内核首先需要配置内核
内核源码很大无法去通过源码修改配置,内核继承了一个配置界面,通过图形化界面配置,此配置界面必须安装一个插件
1.apt-cache search ncurses
2.apt-get install libncurses5-dev
配置界面进入的方法为:
make menuconfig
5、配置内核
1、make meanconfig 生成 .config
2、将友善之臂配置好的tiny4412_linux_defconfig内核复制到.config里面
3、友善之臂有内核安全保护机制,需要去掉
System Type --->
[ ] Support TrustZone-enabled Trusted Execution Environment
4、把 kernel/timeconst.pl的第373行的defined 去掉开始编译
5、完成内核配置
6、根文件系统的制作
根文件系统就是Linux的文件管理系统,主要在系统中存储和管理文件,依赖内核而存在。
根文件系统分为以下部分:
*系统命令可执行二进制文件
*系统头文件
*各种依赖库
*系统内部的一些关键性文件
*其它
7、嵌入式中制作根文件系统的两种方法
1.Busybox
2.Buildroot
8、busybox配置的步骤
Busybox是一个专门的根文件系统生成的软件,针对于常用的指令集合、一些标准的头文件、常用的Linux自带库。
1: 解压 busybox-1.21.1
tar -xvf busybox压缩包
2: 进入解压目录
3: 进入 make menuconfig
图形配置界面
3.1: 设置共享库
Busybox Settings --->
Build Options --->
[*] Build shared libbusybox
3.2:设置交叉编译工具
Busybox Settings --->
Build Options --->
(arm-linux-) Cross Compiler prefix
3.3:设置busybox安装路径
Busybox Settings --->
Installation Options ("make install" behavior) --->
(/root/206code) BusyBox installation prefix
3.4:添加后续驱动专用命令
à Linux Module Utilities
[ ] Simplified modutils
[*] insmod
[*] insmod
[*] rmmod
[*] lsmod
[*] Pretty output
[*] modprobe
[*] Blacklist support
[*] depmod
4:编译配置好的busybox
make -j4 && make install -j4
Busybox生成文件分析
三个文件夹 bin sbin usr
里面全是二进制ARM可执行文件
9、完善根文件系统
1: 复制交叉编译工具的动态库
cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ ./ -rap
2: 添加其他的空 文件夹
mkdir dev etc/init.d home proc sys root opt tmp var -p
3: 完善 dev 设备文件夹
*该文件存放的是 设备文件!
*有两个设备文件需要你手动创建
垃圾桶文件 -- null
控制台文件 -- console
mknod dev/console c 5 1
mknod dev/null c 1 3
4:完善etc下的文件(最容易犯错的地方)
4.1:完善 fstab 文件
gedit 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
4.2:完善 inittab
gedit inittab
往里面写入以下内容:
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
4.3:完善 init.d/rcS
gedit ./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 FW
给文件执行权限
chmod +x ./init.d/rcS
4.4:profile 完善
gedit profile
填入以下内容
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
4.5: 添加 group 和 passwd
cp /etc/group /etc/passwd ./