系统移植
linux系统移植分为四块
1、环境搭建
2、BootLoader移植
3、linux内核的移植
4、根文件系统移植
为了移植部署需要完成以下准备工作
一、安装tftp服务
介绍:tftp服务是基于TCP/IP简单文本传输协议
作用:在系统移植中用于通过网络的方式下载文件到开发板
具体操作步骤如下(前提Ubuntu必须可以上网)
1、安装命令
sudo apt-get install tftpd-hpa tftp-hpa
2、在家目录下创建tftpboot文件夹
cd ~
mkdir tftpboot
chmod 777 tftpboot
注,tftpboot文件夹的作用:
将需要下载的文件,放到tftpboot目录下,
当使用tftp命令下载时,tftp命令会自动的到ubuntu的
tftpboot目录下找对应的要下载的文件。
3、修改tftp的环境变量
打开tftp的配置文件:
sudo vi /etc/default/tftpd-hpa
修改配置文件中的内容,修改为以下:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" # tftp服务
TFTP_DIRECTORY="/var/lib/tftpboot" # 指定自己的tftpboot的路径
TFTP_ADDRESS=":69" # 端口号默认为69
TFTP_OPTIONS="--secure" # 权限相关参数
4、重启tftp服务
sudo service tftpd-hpa restart
二、安装nfs服务
作用:开发板通过nfs服务远程从ubuntu系统中挂载文件系统
1、安装nfs服务
sudo apt-get install nfs-kernel-server
2、配置nfs服务的环境变量
打开 sudo vi /etc/exports
在最后一行添加一下内容:
/home/hqyj/nfs/rootfs/ *(rw,sync,no_subtree_check,no_root_squash)
内容解释:
/home/hqyj/nfs/rootfs/:网络文件系统所在的路径
*:所有的用户
rw:可读可写权限
sync:同步
no_subtree_check:不检查子目录的权限
no_root_squash:非root用户具有相同的权限
3、创建根文件系统的路径
在家目录下创建nfs文件夹,并修改权限最大
cd ~
mkdir nfs
chmod 777 nfs
4、如果有根文件系统的压缩包放在nfs目录下并进行解压(如果没有后面会讲到制作)
三、编译uboot(BootLoader)
1、获取u-boot源码
2、u-boot版本的选择
3、移植的准备工作
4、移植u-boot源码
5、分析make <board_name>_config命令执行过程详解
6、制作windows下的win_ubootpak.bin
7、将制作好的ubootpak.bin烧写到EMMC中,进行测试
四、编译内核uImage
1、内核的配置和编译
2、自己添加图形化界面菜单选项
3、弄懂Makefile .config Kconfig 三个文件之间的关系
4、了解内核启动过程中主要干了那些事?
5、模块化加载驱动的命令
insmod rmmod lsmod mknod
五、编译根文件系统
1、移植根文件系统的工具 —> busybox
2、如何获取busybox
3、根文件系统中目录的介绍
4、使用busybox工具制作根文件系统
5、完善根文件系统
6、生成ramdisk.img的镜像文件
至此就完成了uboot镜像,内核(uImage)镜像和根文件系统(ramdisk.img)镜像的制作
拿到这三个镜像文件之后就可以进行系统移植了
六、系统移植具体的部署方式分为两种:
开发阶段系统的部署
uboot镜像(ubootpak.bin) : 下载到flash/SD
linux内核镜像(uImage) : 通过tftp下载
根文件系统(rootfs) : 通过nfs挂载
特点:下载调试方便,适合做开发
产品阶段系统的部署
uboot镜像(ubootpak.bin) : 下载到flash/SD
linux内核镜像(uImage) : 下载到flash/SD
根文件系统镜像(ramdisk.img) : 下载到flash/SD
特点:独立性强,不用依赖于Ubuntu,适合产品阶段