嵌入式实训 Day3 Linux内核编译与服务器配置
【1】uboot烧写原理
SD卡制作启动盘:
cd sdfuse_q
./mkuboot.sh /dev/sdb SD卡的设备文件名 /dev 保存设备节点(文件名)
./sd_fusing_exynos4x12.sh /dev/sdb u-boot-fs4412.bin
1 | echo "$2 fusing..." |
if(inputfile)–输入文件—u-boot-fs4412.bin(2010)
of(outputfile)–输出文件— /dev/sdb
dd 将输入文件的内容复制给输出文件(复制的同时进行了格式转换)
本质:将uboot镜像固化到SD卡,SD卡成为启动盘
Linux文件类型:
b (block 块设备文件) 具体表示是一种设备
c (char 字符设备文件) 具体表示是一种设备
d (目录)
- (普通文件) .txt .dat
l (链接文件)
s (套接字文件)
p (管道文件)
【2】重启网卡
sudo /etc/init.d/networking restart
【3】Linux内核配置编译
1)Makefile
198 ARCH ?= arm 默认X86
199 CROSS_COMPILE ?= arm-none-linux-gnueabi- 申明交叉编译工具链的前缀
2)导入默认配置
确保Linux内核镜像可以运行在当前产品中,支持当前的SOC
make exynos_defconfig
描述的是与SOC有关的代码对应的选项
cp arch/arm/configs/exynos_defconfig .config
.config 配置文件通知Makefile在编译内核镜像的时候,用来确定编译哪些文件
由顶层目录下的Makefile,调用子目录的中的Makefile协同完成源码的编译
.config保存的都是选项,每一个选项都会对应源码中的一个文件或者多个文件
3)make menuconfig 图形界面的选配
对上一步的完善,用户可以自定义选择选项,选项被选择,该选项所对应的文件被编译到内核镜像中‘
选项未选中,该选项所对应的文件肯定不会被编译到内核镜像中
4)make uImage 编译内核镜像
5)make dtbs 编译设备树文件
【4】tftp服务器
tftp远程传输协议
服务器端配置: sudo vi /etc/default/tftpd-hpa
3 TFTP_USERNAME=”tftp”
4 TFTP_DIRECTORY=”/tftpboot” 传输目录
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
5 TFTP_ADDRESS=”0.0.0.0:69”
6 TFTP_OPTIONS=”-c -s -l”
启动服务器:
sudo service tftpd-hpa restart
【5】配置nfs服务器
配置server端:
1 | sudo vi /etc/exports |
rootfs 开发板需要访问的文件系统
启动nfs服务器:
1 | sudo /etc/init.d/nfs-kernel-server restart |
【6】bootloader
bootloader的操作的方式:自启动、交互
setenv 设置新的环境变量
saveenv 保存设置的环境变量
printenv 显示保存的环境变量
serverip 主机IP
ipaddr 目标机
bootcmd bootcmd 自启动命令(当uboot自启动时,默认操作该命令后的所有指令)
tftp addr uImage/exynos4412-fs4412.dtb 传输指令
bootm addr 启动地址上的镜像
bootargs uboot不执行该命令,uboot将该命令在启动内核之后,传递给内核,
内核会读取检验该命令,进而完成对文件系统的访问
【7】网卡驱动
1)设备树(网卡的信息)
设备树功能:描述硬件信息,内核在启动时,会解析设备树文件,将设备树中保存的硬件信息读取,保存
内核中的驱动可以通过读取的硬件信息,进而完成对硬件设备的控制
Linux3.0提供设备树的机制(结合数据结构中的树为思想)
设备树本质是文本文件,Linux内核中把该文件抽象为树型结构
1 | /{ |
2)make menuconfig图形界面
选配选项 [*]
1 | [*] Networking support ---> |