EDA365电子工程师网
标题: 详解 ARM Linux启动过程分析 [打印本页]
作者: dilidili 时间: 2017-11-11 10:00
标题: 详解 ARM Linux启动过程分析
要做ARM linux的开发就必须搭建开发环境,那么需要什么样的开发环境才能比较方便我们的开发和调试呢?我这里搭好了开发环境,把这些环境是那些,及怎么去搭建一一为大家做了过程步骤。
我搭的开发环境主机是windows系统,虚拟机是linux(fedora 9版本的)我要完成的开发环境是主机(windows)和虚拟机的linux通过samba服务器共享linux的/opt/filesystem(filesystem是已经做好的文件系统,他安装在linux文件系统的/opt目录下面,他可以被开发板的linux内核通过网络挂载。)这样windows可以访问filesystem、虚拟机的linux和开发板的linux也可以访问,这样开发就方便多了,可以在windows下对代码用Source Insight进行编辑,在虚拟机的linux用arm-linux-gcc编译,然后直接就可以在开发板的控制台下运行你的代码了。
好。下面我们先来安装fedora 9。
安装fedora 9:
一、 打开虚拟机软件
二、 建立新虚拟机
三、 点击下一步、再点击下一步
四、 选择linux单选项
五、 写虚拟机linux的名字和安装的路径
六、 选择第一项“use bridged networking“选项
七、 给虚拟机分配硬盘大小 我这里选择8G
八、 点击完成.这样就新建了个虚拟机,双击memory 可以调整虚拟机的内存大小,根 据你电脑的配置给他分配一个合理的内存大小。内存分配太小了就无法今晚图形界面安装或者根本不能安装。
九、 双击CD-ROM 选择use iso image(如果你是把fedora9的iso映像copy到了电脑上)然后选择browse选择fedora 9存放的路径
十、 点击start this virtual maching 也就是打开电源开始安装linux
十一、 进去后等会出现如下图
十二、 :
十三、 file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE0F2.tmp.jpg
按下tab键选中“skip”按回车,等下进入另一个界面
file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE0F3.tmp.jpg
点击next然后进入语言选择,我们选择english 如果选其他,有可能安装后使用很卡。
在点击next,进入选择键盘的类型,我这里选择u.s.english,在点击next
出现下图
file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE0F4.tmp.jpg
选择yes,进入网络设置,可以输入网关,DNS等,或者以后再设置也行。点击NEXT
进入时区选择,我们选择上海的。点击NEXT,进入设置根账户的密码设置。我们输入123456
点击next出现如下对话框
file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE104.tmp.jpg
选择yes,进入硬盘配置方式选择,我们选择create custom layout 点击next进入磁盘分区设置。选中free,点击new,出现如下图。
file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE105.tmp.jpg
点击Mount Point选择挂载点为 “/”选择File system type 为etx3 在size栏中输入5000,给他分配5000M的空间,点击OK,在次点击new分配另一个分区。选择File system type 为swap(这个是交换分区,是系统运行是用来存放临时文件的,选择这个就不用选择Mount Point了) 在size栏中输入1024,给他分配1G的大小。点击OK,如果还有空间的话可以在分配其他分区。现在我们点击next,出现如下图:file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE106.tmp.jpg
点击write changes to disk 在点击next。出现如下图:
file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE107.tmp.jpg
我们把office and productivity选择取消掉,因为我们开发没必要要这种office软件,可提高系统运行效率。要选择software decelopent 并在下面选择Customize now,进行自己定制安装软件。点击next,这里我选择development tools和fedora packager和KDE software development和FTP server和network server 和server configuration tools。然后点击next
开始进行安装。安装完之后重新启动虚拟机的linux,可以一直下一步,可以不配置用户,以后可以用root用户登录。出现警告就点yes 最后进入系统,输入root和密码即可。
好了虚拟机linux我们已经装好了。默认情况下已经安装好了ssh服务和samba服务和nfs服务有时TFTP没安装。信盈达嵌入式物联网智能硬件企鹅意义气呜呜吧久零就易这时我们就要从网上下载安装了。
二、安装TFTP 服务器。
进入linux系统。设置网络保证能上网后打开终端输入 yum install xinetd tftp tftp-server
三、现在开发环境需要的服务器。Tftp 、nfs、samba和ssh(远程登录用的)都安装好了。现在开始配置服务器。
===================================================
配置网络
一、 先配置网络。让他能够和主机相互ping通其实上面安装TFTP的时候也要这么做才能上网的。那怎么配置网络呢?
二、 首先选择桥接方式。
三、 禁止两个虚拟网卡。
四、 配置windows的ip和linux的ip在同一个网段到但IP地址不能相同,也就是最后的那个数不同,网关和DNS和子网掩码都相同。这样应该就能ping通了。主要linux在配置好后在激活网卡时要先点击不激活(那个红色的)再点击激活。在重新启动linux
配置TFTP服务器(用来把内核uImage映像下载到开发板的内存执行)
打开终端,vi /etc/xinetd.d/tftp回车打开tftp配置文件。在里面输入如下内容:
file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsE118.tmp.jpg
/home/work/tftpboot就是tftp服务器的下载目录。可随你更改。输入完后保存退出。
在使用前最好修改/home/work/tftpboot的权限,在终端输入chmod 777 /home/work/tftpboot回车。重新启动TFTP服务器。、service xinetd restart
===================================================
配置NFS服务器(用来挂载虚拟机linux上面的网络网络文件系统)
在终端输入vi /etc/exports,输入如下内容:
/opt/filesystem * (subtree_check, rw, no_root_squash,async)保存退出
重启nfs service nfs restart 主意:修改目录后除了重启NFS还要在/etc目录下执行exports –rv
配置samba服务器(用来windows和linux共享文件)
配置samba让windows和linux共享文件
在配置samba前先设置好主机和虚拟机的IP:虚拟机IP,和主机的IP设置在同一个网段(也就是192.168.xx.**)xx的地方要一样,但是**的地方不能一样,还有子掩码和主机的一样(如:255.255.255.0)》》》》虚拟机的DNS和网关及主机的的DNS和网关都是相同的,并和主机在同一网段(如:192.168.0.2)》》》》关闭虚拟机的防火墙(/etc/rc.d/init.d/iptables stop)》》》》关闭主机的防火墙(控制面板的windows防火墙,选择关闭)》》》》
虚拟机选择桥接,虚拟网卡1和8,可以关闭,这时主机和虚拟机应该可以相互PING通了。接着就可以进行下面的配置了。
修改虚拟机DNF的方法:在终端输入vi /etc/resolv.conf 在文件里写入DNF就可以了然后保存(按ESC 输入:输入wq 回车就行了)。
配置IP:在终端输入 redhat-config-network,在里面设置保存就行了。然后重新启动网络:在终端输入service network restart
查看IP是否设置好了:在终端输入ifconfig
查看DNS cat /etc/resolv.conf
===================================================
好了,下面就开始配置samba服务器吧:
第一步: 更改smb.conf ' m! i: K4 n. x
, e7 N' D# O6 I; \+ k/ a[root@localhost ~]# cd /etc/samba /*进入samba服务器配置文件所在的目录*/
3 @; R9 N$ X6 W9 x[root@localhost samba]# mv smb.conf smb.confback /*备份samba服务器的配置文件*/! c; M# C2 P9 K& V7 Y; ~
7 i- H: y* v- E- i% \[root@localhost samba]#touch smb.conf /*重新建立samba服务器的配置文件*/
[root@localhost samba]#vi smb.conf/*用VI编辑器编辑smb.conf*/
在smb.conf/中写入如下内容 & [+ E: r$ ?7 `
[global]
1 ~" `' m& x+ Y, z, _workgroup = Linuxsamba
/ x- c/ U9 {% c8 \& Pnetbios name = Linuxsambaname
) f, i A E- U5 C- g, F# ]+ Pserver string = Linux Samba Server
& B* s+ O( X3 z' Dsecurity = share
4 x0 }% p5 g3 s+ j7 X[linuxsamba] / k& m, N$ G4 m% [8 F
path = /opt/linuxsamba
. e1 `# R# ?, i! i: g0 Z9 r6 v: qwriteable = yes
/ M ^' r1 [9 R7 q# ^! ibrowseable = yes ?' I# W# g5 Q$ c" [1 a( h& ]
guest ok = yes 6 T8 I% y: k6 [- R
注解: - q) D+ k1 x a) Q
[global]这段是全局配置,是必段写的。其中有如下的几行; ; U7 T+ u" O+ g; s* O6 r, Q' U
workgroup 就是Windows中显示的工作组;在这里我设置的是LinuxSir
7 O( E: M% O/ u) c7 Q) qnetbios name 就是在Windows中显示出来的计算机名; 7 I) {* _8 P+ M/ j! V4 e
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的; $ [! y3 o& Q; y! S9 O9 U+ ^
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了; # @9 O( g& S3 k. L& l
[linuxsir] 这个在Windows中显示出来是共享的目录;
) v. o2 e5 l& Ipath = 可以设置要共享的目录放在哪里; - W7 z8 J( m( D9 j4 U" s$ o
writeable 是否可写,这里我设置为可写;
6 ^5 i1 A: z6 x- T3 d; dbrowseable 是否可以浏览,可以; 2 Y! r' f9 ?3 |+ X: R- C9 G
guest ok 匿名用户以guest身份是登录;
% F% {3 R0 M3 r; j* q第二步:建立相应目录并授权; 0 k/ T; ^$ \. s* E, _! W T) e* B9 e
[root@localhost ~]# mkdir -p /opt/linuxsamba
z6 A& D! V. V$ b[root@localhost ~]# id nobody ! m/ Y1 H) `. w0 v6 J( a
uid=99(nobody) gid=99(nobody) groups=99(nobody)
. {3 ?. F* v% W( `0 W3 ][root@localhost ~]# chown -R nobody:nobody /opt/linuxsir / [3 E# M4 \, X9 A; E' ~' ~$ n. [+ _
注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ;
: P. a; R( I" ~0 ^0 N7 t第三步:重新启动smbd和nmbd服务器;
+ j* }/ C& I$ h1 m- {. l[root@localhost ~]# service smb restart
+ q, L5 D: |' R0 o3 e! m第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
# T/ C( ~7 a! I1 X" V/ A# h, O; H[root@localhost ~]# pgrep smbd
# @: `& o7 v+ u9 K5 ^13564 ' l5 T- w9 W, |' P# p4 x
13568
5 i. X# g7 |& D$ Q第五步:访问Samba 服务器的共享; * j3 V: k" {0 U: [$ T# |
在Linux 中您可以用下面的命令来访问; * }8 n; z$ s/ }8 @2 w; O
[root@localhost ~]# smbclient -L //Linuxsambaname# x) e9 D5 H- U; V3 T: L
Password: 注:直接按回车
0 ~) B2 J p4 |在Windows中,您可以用下面的办法来访问;
+ s1 R6 e' ~2 u; N. \8 X//Linuxsambaname/
或者在windows里面
\\ IP 的形式就可以访问了。 我们在开发ARM的时候需要修改代码和在linux下编译,比如移植U-BOOT,我们可以把u-boot解压在共享目录linuxsamba下面,在windows下用source insight编辑修改代码,保存后再到linux下编译uboot。
好的现在所有的服务器都配置好了,如果没出上面意外就可以正常使用了。假设我设置linux和windows的共享目录是linux文件系统下面的/opt目录里的filesystem目录这个filesystem其实就是做好了的文件系统。他可以被开发板的linux用挂载网络文件系统的方式去挂载他,把他当做开发板自己的文件系统使用。这样linux可以操作filesystem里的所有内容,windows也能操作filesystem了的所有内容,开发板挂载他之后也能操作filesystem里的所有内容。并且是三者是同步的。这样在windows下用Source Insigh等工具编辑好代码后,进入虚拟机的liunx进行编译然后转到开发板控制台下进行运行。这里为了方便还有一个远程登录的软件Putty用他通过ssh协议登录虚拟机的linux进行操作虚拟机。用他的串口功能进行开发板的linux控制
主意:
1、使用前要把所有服务都启动了。Tftp nfs samba sshd
使用一下命令:
先启动网络:
Service network start
再启动服务器:
Service nfs start
Service smb start
Service sshd start
Service xinetd start
2、如果你的电脑的没有接上网线或网络断开了,是ping不通的。
3、如果发现windows无法对samba服务器的共享目录进行写操作,那么要设置共享目录的权限为777,还是不行的话,就把selinux关掉。方法是在终端输入 vi /etc/selinux/condig回车。把中间那个变量SELINUX= xxx xxx改为disabled 然后重新启动linux系统。
4、假如把一个虚拟机上的linux从一台电脑拷贝到另一台电脑去运行,fedora9会出现网卡无法启动的情况,要把/etc/udev/rules.d/70-persistent-net.rules这个文件删除掉。最好把他重命名为其他名字(方便以后恢复),这样他就不受这个文件影响了,还有在终端下输入ifconfig 回车,看看那个网卡的物理地址(上一台电脑的)和你现在电脑的网卡的物理地址是不是一样,不一样就改过来。
$ M7 d7 ?6 T. |
作者: duzz 时间: 2017-11-14 17:24
good,好东西!!!
作者: Thinking_he 时间: 2017-11-29 14:24
好东西!感谢楼主!
作者: tanghui1987510 时间: 2018-1-3 19:02
好东西
作者: kewin_wang 时间: 2018-1-16 09:09
:D:D
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) |
Powered by Discuz! X3.2 |