
第 1 章 嵌入式Linux开发介绍 1.1 安装前准备3 m! c2 w% d9 l4 E6 X2 }0 [/ h- Y 华清远见开发环境是基于Ubuntu 18.04 LTS 64-bit操作系统搭建的,使用VMware Player免费版作为虚拟机工具软件。用作Linux的编译与开发。所以建议开发主机硬件配置越高越好,配置越高则开发效率则越高。 ![]() # I7 f2 C* q: T+ t% Z7 ]" R4 s. D 第 2 章 VMware Player安装& p0 ~1 @8 ~1 K, t; R3 T; k1 B8 l % M/ u6 e/ Y! t/ p9 O( H 2.1 VMware Player介绍 VMware Workstation Player中文版是一款官方免费版的精简虚拟机软件,用户无需重启电脑即可在同一台机上运行一个或多个操作系统。凭借其免费策略、简单易用的界面、流畅的性能、小巧的体积以及对多种不同操作系统的兼容性,VMware Workstation Player 已成为很多人首选的虚拟机软件!, g& k2 n X( i5 O/ u VMware Workstation Player虚拟机可完美支持Windows 10/8.1/Win7/Vista/XP/2000等全系列微软操作系统以及Ubuntu、Red Hat Enterprise Linux、CentOS、Fedora、Deepin、Debian、Mint等Linux系统。而且现在也已支持DirectX 10.1和OpenGL 3.3的3D加速特性,可在虚拟机中轻松运行AutoCAD或SOLIDWORKS等要求严苛的3D应用,甚至在一些主流配置的电脑上还可流畅运行部分大型3D 游戏,性能相当不错。/ i0 x) J8 e) {* m8 @ 9 t8 L# o+ x$ \. ~+ S7 P6 \ 2.2 VMware安装 / F; _& a: C6 P 1) 运行资料光盘【华清远见-FS_MP1A开发资料\01-工具软件】目录下的VMware-player-15.1.0-13591040.exe安装程序。 $ k( W( M I) | ![]() 2) 【VMware Player安装程序初始化】. H5 l8 K. r, |3 A& ]1 I 0 h" Y' V2 e- Y) S' m& S( a; y ![]() 6 v6 X( T. M; m 3) 【VMware Player安装向导】 ![]() 4) 【VMware Player许可协议】 ; w% z) f) y- e, l, p% T3 g ![]() & o$ I0 U, H3 R1 x! [/ k( ~ 5) 【更改安装路径】 $ s) v) C5 ], Q9 S4 s ![]() 3 F% _& v1 J5 [9 C; s0 { 6) 【选择是否检查更新,加入用户体验改进计划】 + V% z7 I% w3 W# w! M8 Z ![]() 0 O; P# b! J0 f8 z 7) 【创建快捷方式】 ! f: |+ `4 E& ]6 c! P2 w3 N* x) x/ [ ![]() 4 }# [0 [& b: X9 e7 K 8) 【确认安装】. P/ T; P% { r) _( V3 f0 [. D 5 n) A- u' Q7 U0 i% O5 \+ E5 Q ![]() * P' W; Z9 Y4 s: P 9) 【正在安装】 9 ?( L. ]7 m4 A9 T ![]() $ o+ S" c3 i6 l0 f/ E7 k: v1 r 10) 【安装完成】 ![]() , F5 i# ~) }2 y/ z3 B V 11) 【启动界面】 ![]() 第 3 章 Ubuntu操作系统 3.1 发行版Linux介绍 ! Q2 k, V3 o2 z0 ~! @ Linux发行版(英语:Linux distribution,也被叫做GNU/Linux发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面。有些发行版考虑到容量大小而没有预装X Window,而使用更加轻量级的软件,如:busybox,UClibc或dietlibc。现在有超过300个Linux发行版(Linux发行版列表)。大部分都正处于活跃的开发中,不断地改进。 由于大多数软件包是自由软件和开源软件,所以Linux发行版的形式多种多样——从功能齐全的桌面系统以及服务器系统到小型系统(通常在嵌入式设备,或者启动软盘)。除了一些定制软件(如安装和配置工具),发行版通常只是将特定的应用软件安装在一堆函数库和内核上,以满足特定用户的需求。 " z. e$ [, m- w: D 这些发行版可以分为商业发行版,比如Ubuntu(Canonical公司)、Fedora(Red Hat)、openSUSE(Novell)和Mandriva Linux;和社区发行版,它们由自由软件社区提供支持,如Debian和Gentoo。, c1 e0 W, _7 n- { 3.2 Ubuntu下载 Ubuntu18.04官方标准安装文件可以通过ubuntu官方链接,也可以使用【华清远见-FS_MP1A开发资料\01-工具软件】目录下的ubuntu-18.04.4-desktop-amd64.iso安装文件进行安装。; ^# t; l4 f2 a, B0 F% ? ![]() 打开链接后点击“64-bit PC (AMD64) desktop image”,切换至新网页并自动开始下载,下载完成后镜像文件为:ubuntu-18.04.4-desktop-amd64.iso 3.3 Ubuntu安装3 C. j3 \7 F* c' E, v# v! W4 r 打开Vmware Player:1 z% C8 M" w! t1 N/ ^( S4 v; |1 g5 ` " R9 u% [0 ?. M7 B' U3 w ![]() 点击 “创建新虚拟机”,弹出安装向导: 4 P1 Y' H8 D6 g" u ![]() 1 h1 S& m5 h& \4 ]# L4 e4 D6 m 点击“浏览”按钮在弹出的浏览ISO镜像窗口中找到下载好的Ubuntu镜像文件,并点击“打开”按钮:' G7 L( O5 P2 a K# t" W x- j / m0 P8 W3 d3 p4 Z ![]() & {3 F+ \) v2 Q) U1 O 选择好镜像后,如果镜像无误的话会显示识别到的系统版本" ^' M& ^8 l0 U 8 y, L( B d4 t$ Y# Y; b1 t: Z ![]() 9 d: X' G$ n6 `- S2 q- ^" U; }7 } 点击“下一步”继续安装: ![]() & M6 |; ?/ {; Y7 V 点击填写用户信息并点击“下一步”继续安装,用户信息会作为安装后Ubuntu的管理员用户信息,华清远见开发环境Ubuntu管理员用户名为“linux”,密码为“1”: : |% h$ p/ l4 O ![]() 选择Ubuntu安装路径,点击“浏览”,在弹出窗口中找到虚拟机安装的硬盘盘符,点击“新建文件夹”创建虚拟机安装文件夹,创建好文件夹后选择文件夹并点击确认,确认安装路径,最后点击“下一步”继续安装:5 i8 J' a/ H9 m7 T z5 ~! L4 N ![]() : i1 x" f, ?- Q, B( m 执行硬盘容量,根据开发使用情况,推荐磁盘大小不小于“80GB”,选择“将虚拟磁盘拆分成多个文件”方便后期虚拟机移动,最后点击“下一步”继续安装: ( w" h" `" b/ E; D' K3 r9 h3 Z ![]() 虚拟机创建完成:自定义硬件按钮可以自定义可以定制虚拟机配置,本章节使用默认配置即可,后期如需调整根据需求适当调整,勾选 “创建后开启此虚拟机”点击“完成”按钮完成虚拟机的创建并开始安装Ubuntu。 ![]() 虚拟机启动后直接进入Ubuntu 简易安装界面,这个过程需要一些时间。 ![]() / C9 ~' q2 G! u( H+ o" r ![]() n/ H$ n2 F" s3 o4 \; E 安装完成后系统自动启动。. J x6 I0 n! B/ h8 j' }3 h4 u 7 b: T/ D0 g2 Z0 Z ![]() ; {( N' Q& S5 ~" p5 h 3.4 配置虚拟机 现在Ubuntu 18.04操作系统已经安装完成了,但是为了后续开发方便还需要对系统进行进一步的配置与修改。 3.4.1 网络连接修改' _; e" A6 n" I, n# ^ Ubuntu系统安装成功之后,默认网络配置为NAT模式,为了后续方便Ubuntu与主机进行网络通信需要修改为桥接模式。 * [ [7 t' h. N' U& L5 K 在系统关闭的状态下,点击“编辑虚拟机设置”将网络适配器改为桥接模式。* k9 `4 p' b; u6 p% M# h1 t! O ![]() 3.4.2 安装VMware Tools8 y; `* F' | l2 r# C7 [ 1) 选择VMware菜单栏下的“虚拟机”选项卡下的“安装 VMware Tools”选项。' q# ?) @4 v- Q) M" }' m: B2 k : Q0 K. ~8 F" y2 L; g9 b5 @ ![]() 9 M- j8 U/ s X2 B- X 2) 在安装好的ubuntu18.04系统中可看到“VMware Tools”DVD光盘。 ![]() 3) 打开光盘可以看到如下文件。$ \- E: _' X# T8 D4 s3 o , o1 A) E$ b2 ~4 A8 p5 z$ R ![]() 4) 将VMwareTools-10.3.10-12406962.tar.gz压缩包复制到左侧的Downloads文件夹中。 % C+ a: J' z& h5 d% Q8 U6 N ![]() 5) 选中该文件右键选择“Extract Here”选项,进行解压。" f l' Y/ r( l( @ ![]() ) }. ?' F6 P% i( B 6) 解压完成后会生成一个文件夹。7 J/ ^, Q! `0 o * q+ g8 B9 r$ Q/ M( O* r ![]() 1 k. W9 s6 Q+ t$ L5 z+ T 7) 进入VMwareTools-10.3.10-12406962/vmware-tools-distrlib文件夹。 - i. j: R @ I# _7 ^ ![]() 8) 在该文件夹空白处右键,选择“Open in Terminal”选项,打开一个终端。 ![]() ( X2 a V M1 \' Y) z1 r ![]() 9) 执行vmware-install.pl脚本。
输入密码1后看到如下界面 ![]() 输入yes之后的选项全部默认“回车键”。 / F6 ]6 j; S. ] g 10) 安装完成默认如下图所示。( h7 U7 r! u# G( B- P$ Q" h $ G m# I6 A" K6 I% f- V ![]() . o$ M: j2 S7 q$ S9 t 11) 重启系统。
3.4.3 启用共享文件夹& E' z8 o6 t2 J, a2 d 在启用共享文件夹前请确保VMwareTools已经正确安装。5 j- [& }! [9 M! y. o' c' J% S' \ 为了便于后续Ubuntu与主机直接的文件传输可以启用虚拟机的共享文件夹将主机上的一个文件夹挂载到Ubuntu系统中。 在主机上任意位置建立一个用于共享文件的文件夹。(这里以G:\liunx_share为例) ' [# F o$ _5 V1 F6 o 点击“编辑虚拟机设置”找到“选项”下的共享文件夹。! @5 o: K) m' H. T% h- ^ ( g7 o" e9 R1 \9 A6 D V: l2 a; N ![]() 选择界面右侧的“总是启用”选项后添加一个共享文件夹。 ![]() 添加完成后如下界面中选中“启用此共享”后点击”完成“ 1 t( k1 M; K% L) w ![]() 点击完成后就可以看到刚刚添加的文件夹路径了。 ) h9 y: e8 k0 `9 H8 y ![]() 开启虚拟机之后在/mnt/hgfs就可以看到共享的文件夹了。2 m8 ^+ x. o3 d7 r; L1 o 3 j" K0 G+ f" y& J$ J' N" L1 a 3.4.4 常用工具安装 : y2 d* V! c2 S7 v2 d; P$ H" ~1 K 1) net-tools安装 从ubuntu18.04版本开始,在系统中默认不支持ifconfig命令进行网络状态查看。需要安装net-tools方可使用。: t! @ \* N) C
![]() 6 x" {6 o: N+ y o; h# X& I 2) vim安装- o7 g7 }, u. I 系统安装完成后自带的文本编辑器是vi编辑器,这里推荐使用vim编辑器进行文本编辑。+ R+ _' W9 i; \* U5 R. s! a* B
![]() 3 j2 Q, l- S8 y9 J" E 为了后续开发方便可以为vim安装一些辅助插件。将【华清远见-FS_MP1A开发资料\01-工具软件】目录下的jeffy-vim-read.tar.gz压缩包导入到虚拟机中。5 {0 N$ w, o4 `& E( H 解压缩3 d# K D9 y$ l! \% |9 @, d: t
解压成功后会得到jeffy-vim-read文件夹,进入该文件夹下进行插件安装。 Z* X# X7 e( I. ^9 |" r
![]() + Q) x/ D( |: t U1 T/ |5 q 选择y ![]() 选择y,之后出现如下界面。 " v+ E+ p5 n* T" W( a ![]() / Q+ j2 ^2 N& E4 J2 B 安装完成出现如下提示。) O/ p! B( B* ~8 F D1 B$ M! k b' p% D7 \ r6 z' G ![]() 安装ctags
3) openssh安装
3.4.5 安装TFTP服务器7 ]+ c8 n4 E8 i1 w
在根目录下建立tftp工作目录! f: _, m6 D( |& K* l+ X
修改tftpboot文件夹权限% B8 n3 }3 T* B8 k# w3 [5 Z- ^
将TFTP_DIRECTORY="/var/lib/tftpboot"修改为TFTP_DIRECTORY="/tftpboot" : |3 @1 H1 Q# x# z( B( M+ i" S ![]() 重启tftp服务
3.4.6 安装NFS服务器$ D- x* S7 [ m" Y0 K! B
安装 NFS服务器端* l7 M: M7 Z# C/ ]2 u/ L3 k
安装 NFS客户端6 B3 Y2 P5 m* g% h% |$ E
建立NFS共享目录
添加共享目录6 J9 y7 I& q v0 P. s: q5 Y7 b
若需要把 “/source/rootfs” 目录设置为NFS共享目录,在该文件末尾添加下面的一行:# e ^2 ~7 p1 R4 n2 [
![]() 0 Q! P' T8 S; B' @" f. m g 使能NFS V2版本( F$ W1 J$ W6 v% h
在文件的最后添加下面的配置$ y3 O+ s$ E/ `# R* U" T& [
![]() 重启NFS. w& G, U! @) d" R
3.5 Linux开发工具安装
第 4 章 Ubuntu初体验 4.1 磁盘分区表相关操作 4.1.1 MBR分区和GPT分区5 d9 h! ~) k" ?$ p9 w5 `1 j# d1 { 全新硬盘未初始化之前,必须对齐进行分区,硬盘分区初始化的格式包括MBR和GPT两种。" k4 A: \' P/ o6 }- c) C! R " z8 l; }7 p# \5 b MBR分区 MBR的全称是Master Boot Record(主引导记录),MBR早在1983年IBM PC DOS 2.0中就已经提出。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。 MBR最大支持2.2TB磁盘,它无法处理大于2.2TB容量的磁盘。MBR只支持最多4个主分区,如果想要更多分区,则需要创建 “扩展分区”,并在其中创建逻辑分区。 ) q; e/ ?3 i5 J% J# ^- | GPT分区 GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,它的推出是和UEFI BIOS相辅相成的,鉴于MBR的磁盘容量和分区数量已经不能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB的分区。 在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。, W, g/ `' `5 _ 5 {& ^5 @$ C3 Z. Q 4.1.2 linux下磁盘文件节点名# _% R* a4 Z. ?5 [ - J" d0 F6 X4 _3 F7 u# c 基本上,linux下所有实体外部存储设备的文件名都被命名成 /dev/sd[a-p]的格式,第一个存储设备的文件名为/dev/sda。而分区的文件名若以第一个存储设备为例,则为/dev/sda[1-128]。除了实体磁盘之外,虚拟机的磁盘通常为/dev/vd[a-p]的格式。 若有使用到软件磁盘阵列的话,那还有/dev/md[0-128]的磁盘文件名。9 X9 K: {" f$ w6 F 4.1.3 MBR创建分区及格式化 如果我们拿到的是一个没有任何分区的外部存储器,则需要我们对其建立分区。这里以在虚拟机中的ubuntu操作系统为例来创建一个新的分区。/ R/ |2 R0 n! c1 `/ ?0 H 首先需要用到TF读卡器,虚拟机识别到SD读卡器。. S c( j+ L' G 2 u/ t% F5 e2 A& Y ![]() 右键点击图标选择“连接(断开与主机的连接)” 1 f M8 ?/ Z P% t- U ![]() & s: o: X; x/ D6 y y 查看生成的设备节点,笔者SD卡在Ubuntu系统中的设备节点是/dev/sdc,这里提供一种方式查看设备节点,首先输入ls /dev/sd*【代表匹配所有符合sd的选项】,sd最后的设备为sdc。. p( b$ J+ h& W4 _2 c3 _0 _! Q6 ? ![]() 4 Z0 A& O) h. M x 这里可以看到一共有3个外部存储设备被接入该系统,这里的/dev/sdc为刚刚插入的TF卡设备。/dev/sdc1则表示sdc上的第一个分区。如果tf卡中没有任何分区则不会显示此节点。# Y& J$ X8 U+ U( T5 R: a, X ( C! [& |" V" E- C# ^( @+ n ![]() , z- x/ {1 l0 F! Q 接下来我们新建一共分区并将其格式化为FAT32格式, 这里以/dev/sdc为例。
![]() 输入“p”查看当前分区。# z' Z6 ^, o9 k% @+ B) X & }; h& b" ]; N! |' n9 _ ![]() 如果这里看到的是如下现象,说明已经存在一个分区则可以跳过此步骤。# J, k* Z! B# v5 B, \ ![]() 如果没有看到有相关分区,则输入“n”创建一个分区。) F) O& R! ]" K+ N! Q$ t0 Q6 b+ f4 p 7 x5 B/ \( l, o# [6 G ![]() 选择“p”默认选项创建主分区。 [! `9 a# @4 L7 \5 [ ![]() ( J3 ^! w" D$ Q; K, ~# d 分区号选择默认“1”* x! B9 Q; s) f; J+ p' @8 I ![]() ) R) t- p; e6 Q( u 起始扇区选择默认“2048”* x/ a- r* k. [# f ! J8 k9 W: R) S! a, @1 {- Q0 b ![]() 8 |: w# ^; p0 o1 z Q& D 结束扇区直接回车默认即可。 ![]() # q$ V0 u, y1 t4 J \7 J8 F* Z 再次输入“p”查看分区 $ X- ^4 F5 g+ ^" c, K" S0 O ![]() 之后输入“w”保存分区 6 O( A; P6 z ?3 I& b8 d7 g ![]() 对刚刚创建的分区进行格式化。
![]() 6 ^5 L* u- x# r S; @: ~6 ^' x 此时可以点击虚拟机的USB图标断开与ubuntu的连接,使TF卡接入PC。 ![]() ! K' F% Q" L! g! F7 R 在资源管理器中可以看到,TF已经被正确识别。" @& Y$ v1 @9 P$ g8 q4 H q! z! @ ![]() 4.1.4 将GPT分区转换为MBR分区: n2 x% {# i+ G) _0 z$ r5 n" s 当我们制作开发板sdcard系统卡之后,整个sdcard会被设置为GPT分区,并且此时TF卡不能被PC机正常识别,如果想要在PC上正常使用TF卡。则需要将TF卡重新格式化成FAT32格式。(此操作会丢失TF卡中所有的数据)。4 t1 D% f/ R6 O- G3 u 在ubuntu系统下使用7 |$ @5 N+ ], L( i
![]() 之后就可以参照【MBR创建分区及格式化】小节进行建立分区和格式化。 ———————————————— 版权声明:左月先生/ T6 N+ a3 U! h2 C9 w $ j" B* s; R8 E% ^! i |
基于STM32MP1和STM32MP2在嵌入式Linux平台上部署有效的安全保护机制
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
STM32MP1 WiFi连接
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习笔记之optee 如何加载CORTEX-M核和使能校验
《STM32MPU安全启动》学习笔记之TF-A BL2校验optee和uboot的流程以及如何使能
《STM32MPU 安全启动》课程学习心得+开启一扇通往嵌入式系统安全领域深处的大门。
《STM32MPU安全启动》 课程学习心得