ubuntu网络配置25
I
nternet  Communication
互联网+
通信
引言:
随着嵌入式硬件性能的不断提升,采用arm64架构的处理器已逐步可以满足Linux 发行版的基本运行需求。部分Linux 发行版如Ubuntu,也提供了arm64版本的系统,本文详细描述了在海思的Hi3559AV100处理器运行Ubuntu 系统的适配过程。在嵌入式平台中使用Ubuntu,可以利用Ubuntu 成熟的软件包管理功能及丰富的软件包资源,提升系统配置的灵活性,满足更多应用场景的需求。
一、硬件平台
本文使用基于Hi3559AV100的开发板作为硬件平台进行Ubuntu 系统适配。Hi3559AV100是海思公司推出的专业的相机SOC,使用先进低功耗工艺和架构设计,集成了双核A73和双核A53的大小核架构[1]。A73和A53均为arm64架构的处理器核心,可支持arm64架构的Ubuntu 系统运行。
Hi3559AV100开发板主要包括以下硬件资源:1. Hi3559AV100处理器一片;2. 4GB 容量DDR4内存;3. 8GB 容量eMMC 存储;4. 1个RS232调试串口;5. 1 个RJ45 网络接口。
二、Ubuntu 系统
Ubuntu Linux 基于Debian Linux 的unstable 版本发展而来,使用了debian 系列的deb 格式软件包及apt 软件包管理工具。Ubuntu 的出现提升了Linux 发行版的易用性,造就了庞大的用户体及活跃的社区,目前在桌面领域及服务器领域份额已成为Linux 发行版的领头羊,在云计算等领域也提供了相应的解决方案并得到了广泛应用。随着ARM 生态的不断发展,arm64架构的CPU 在性能上已经可以胜任Ubuntu 发行版的运行需求,目前许多arm64架构的处理器厂商都已经为其开发板提供了官方的Ubuntu 的适配,例如,Xilinx 公司的Ultrascale+开发板以及著名的树莓派平台均为开发者提供了预装的Ubuntu 系统。Ubuntu 也提供了其各主要版本的arm64系统下载链接。arm64架构下,Ubuntu 仅提供其根文件系统,Linux 内核由用
Hi3559处理器Ubuntu 系统适配
李博(1988.06-),男,汉族,陕西铜川,硕士研究生,工程师,研究方向:Linux 操作系统。
【摘要】    本文介绍了海思Hi3559AV100处理器运行Ubuntu Linux 系统的适配过程,适配过程可分为内核适配,根文件系统适配,系统固化三个步骤。在Hi3559AV100平台中适配Ubuntu 系统,可以利用Ubuntu 成熟的软件生态提升系统配置的灵活性,满足更多应用场景的需求。【关键词】    Ubuntu Linux    Linux 内核    根文件系统
户针对其具体处理器及板级进行适配。本文描述针对Hi3559AV100处理器适配arm64版本的Ubuntu16.04系统。
三、适配过程
海思官方提供Hi3559AV100开发SDK,其中包含适配Hi3559AV100开发板的u-boot、Linux 内核、根文件系统及开发用的软件框架和实例程序。SDK 中,Linux 内核的默认配置可支持SDK 中的根文件系统,但无法支持Ubuntu 系统的运行,因此需要修改内核配置,编译,生成支持Ubuntu 的内核镜像。得到可支持Ubuntu 系统启动的内核镜像后,可进一步修改根文件系统,满足使用需求,并生成固化用的文件系统镜像,并最终固化至开发板,完成适配过程。
(一)环境准备
适配前需搭建如图1所示的开发环境,开发主机环境为一台安装Ubuntu 系统的PC 机,按照文档[2]安装SDK 并搭建了完整的开发环境,建立了有效的tftp 服务器及NFS 服务器环境。从Ubuntu 下载链接下载的Ubuntu16.04系统的arm64版本压缩包解压至开发主机环境的NFS
路径下。开发板和开发主机通过以
太网和串口连接,在开发调试阶段,开发板上运行Linux 内核存储在开发主机端的tftp 目录中,通过网络文件系统NFS 挂载存储于开发主机端NFS 目录中的Ubuntu 系统。
图 1
(二)内核适配
26
I
nternet  Communication
互联网+通信
通过实际测试,SDK 安装完成后,其内核版本为4.9,默认的配置不支持Ubuntu 系统的启动,需修改内核配置,在Linux 内核源码路径下输入如下命令打开Linux 内核配置操作界面:
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
在调试阶段,Ubuntu 系统部署在了开发机中,Hi3559开发板需通过NFS 挂载根文件系统,默认的内核配置不支持根文件系统的NFS 的方式挂载,因此首先配置内核的网络部分和文件系统部分,开启内核对根文件系统的NFS 的方式挂载的支持,如图2、图3所示。
图2
图3
SDK 中根文件系统中设置了基本的设备节点,确保了启动时/dev 路径下具备基本的设备节点。Ubuntu 使用udev 机制,因而Ubuntu 中/dev 路径默认为空,为保证系统启动时具备基本的设备节点,需配置内核中的/dev/tmpfs 选项,使得内核启动后自行创建基本的/dev 下的设备节点,如图4所示。
图4
Linux 系统中,根文件系统挂载后,内核在根文件系统中寻并执行init 程序,开启系统的初始化,SDK 提供的根文件系统使用的是Sysvinit,而Ubuntu 使用了功能更为强大的systemd,systemd 需要使用内核的cgroups 机制,因此需配置内核中cgroups 相关选项,如图5,图6所示。
图5
图6
配置完成后,保存配置并退出,使用如下命令编译Linux 内核:
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- uImage
编译完成后就生成了内核文件uImage,Hi3559平台下,要获得可从u-boot 引导启动的Linux 内核文件,还需使用SDK 中的arm-trusted-firmware 工具生成ATF+Kernel 的镜像文件fip.bin,该镜像文件fip.bin 可被Hi3559的u-boot 正确启动。
编译内核后还需编译内核模块并安装至NFS 路径下的Ubuntu 文件系统中:
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- modules
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux-  \
INSTALL_MOD_PATH=/nfs/ubuntu  modules_install 编译内核后还需编译内核模块并安装后,NFS 路径中的Ubuntu 系统可正确被内核启动挂载,由于内核模块安装时自动设置了依赖关系,因此启动后内核模块将你被系统自动加载。
(三)根文件系统适 配
目标机通过NFS 网络文件系统挂载运行Ubuntu 系统,由于Ubuntu 系统功能众多,较为庞大,因此本文采用Ubuntu 提供的最小化的base [3]系统作为Hi3559AV100适配Ubuntu 的基础根文件系统。Ubuntu base 仅提供了最小化的系统能力 ,其他功能可通过联网安装获取,因此需在开发环境中对Ubuntu 根文件系统进行基础设置,通过拷贝开发环境主机Ubuntu 中的配置文件来更换NFS 中Ubuntu 系统的软件源配置,用户名密码配置等,随后即可启动系统。在系统正常启动后,使用软件包管理工具apt 安装所需的软件满足实际使用需求,如net-tools,kmod 等,如需编译器可安装gcc,g++等。
在开发板上启动配置好的内核,通过NFS 挂载Ubuntu 系统,步骤如下:
1.启动开发板,在u-boot 出现shell 提示符时在串口终端输入任意按键,打断默认启动,修改启动参数如下:
s e t e n v  b o o t a r g s  “m e m =2048M console=ttyAMA0,115200 noinitrd root=/dev/nfs rw \
nfsroot=192.168.0.100:/nfs/ubuntu,proto=tcp,nfsvers=3,nolock \
ip=192.168.0.120:192.168.0.100:192.168.0.1:255.255
I nternet  Communication
互联网+通信
.255.0 \
b l k d e v p a r t s=m m
c b l k0:1M(u-b o o t. bin),15M(kernel),7000M(rootfs)”
setenv bootcmd ”tftp 41000000 fip.bin;bootm 41000000”
按照上述命令设置bootargs参数,可配置内核启动时以NFS的方式挂载根文件系统,根文件系统位于ip地址为192.168.0.100的主机的/nfs/ubuntu路径下,并指定了开发板的ip地址为192.168.0.120。设置blkdevparts的目的在于告诉内核开发板的emmc芯片分区按照1M,15M,7000M划分为3个分区。
2.在u-boot的shell中输入boot命令,u-boot将根据配置先从tftp加载fip.bin文件至内存的0x4100000地址,随后从0x41000000地址启动Linux内核。
3. Linux内核启动后将按照bootargs的设置,挂载NFS中的Ubuntu根文件系统,挂载成功后,Ubuntu 中的systemd启动,初始化系统,当出现登陆提示符时,代表Ubuntu启动完成。
Ubuntu系统启动完成后,可以使用先前配置的用户名及密码登录系统,并使用apt工具安装需要的软件包,并进行相应的系统功能测试,系统功能可满足需求则根文件系统适配完成。
(四)系统固化
系统固化指将内核镜像及Ubuntu根文件系统部署至开发板的emmc芯片内,可以脱离开发环境的tftp+NFS启动系统的过程。
存放在开发环境主机中NFS路径下的Ubuntu根文件系统,可在主机端使用Linux中的tar工具进行打包,随后烧写至eMMC 分区中。烧写固化流程如下:
1.启动开发板,在u-boot出现提示符时在串口终端输入,打断默认启动,随后在u-boot的shell中执行如下命令:
mw.b 0x42000000 0xff 0xf00000
tftp 0x42000000 fip.bin
mmc write 0 0x42000000 0x800 0x7800
将Linux内核镜像文件下载至0x42000000,并烧写如emmc中。
2.固化文件系统,在烧写内核完成后,通过烧入的内核镜像文件启动,此时仍需挂载NFS,设置参数如下:
s e t e n v b o o t a r g s“m e m=2048M console=ttyAMA0,115200 noinitrd root=/dev/nfs rw \ nfsroot=192.168.0.100:/nfs/ubuntu,proto=tcp,nfsvers= 3,nolock \
ip=192.168.0.120:192.168.0.100:192.168.0.1:255.255.255.0 \
b l k d e v p a r t s=m m
c b l k0:1M(u-b o o t. bin),15M(kernel),7000M(rootfs)”
setenv bootcmd ”mmc read 0 41000000; bootm 41000000”
随后输入boot启动系统。系统启动后先格式化emmc的第三分区:
<4  /dev/mmcblk01p3
格式化后挂载该分区至/mnt路径:
mount /dev/mmcblk01p3 /mnt
随后将使用tar命令打包的Ubuntu系统解压至/ mnt路径
tar xvf ubuntu.tar -C /mnt
解压完成后,使用sync命令,确保文件写入emmc中,至此根文件系统烧写部署完成,可重启开发板,设置启动参数。
3.设置启动参数。重启开发板,在u-boot出现shell提示符时在串口终端输入任意按键,打断默认启动,修改启动参数如下:
setenv bootargs “mem=2048M console=ttyAMA0, 115200 noinitrd root=/dev/mmcblk01p3 \
r o o t f s t y p e=e x t4r w i p=192.168.0.120 blkdevparts=mmcblk0:1M(u-boot.bin),15M(kernel), \ 7000M(rootfs)”
setenv bootcmd ”mmc read 0 41000000; bootm 41000000”
随后输入saveenv保存设置,至此系统固化完成,重新启动开发板后,将自动从emmc中加载Linux内核镜像,并启动emmc中的Ubuntu系统。与传统嵌入式Linux难以灵活扩展功能不同,Linux发行版系统以软件源的方式提供了丰富的软件生态,系统启动并登陆后,可以使用apt工具依据实际需求,安装需要的软件组件,支持丰富的应用场景。
四、结束语
本文指出了Linux发行版Ubuntu应用于嵌入式环境的方法,并在Hi3559开发板进行了验证。随着嵌入式硬件平台性能的不断提升,Linux发行版作为使用广泛,便于扩展定制的基础系统平台必将更加广泛的应用与嵌入式场景,为嵌入式开发者提供更好的系统通用性、灵活性,更适用于未来物联网行业的开发及部署,提升应用的开发效率,缩短研发周期,使嵌入式产品更具竞争力。
作者单位:李博    刘作龙    钱军琪    吕民强    蒲骏伟 中国航空工业集团公司西安航空计算技术研究所
参  考  文  献
[1] Hi3559A/C V100用户指南
[2] Hi3559A/C V100开发环境用户指南
[3] wiki.ubuntu/Base
27

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。