詳解 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
十一、 進去後等會出現如下圖
十二、 :
十三、
按下tab鍵選中「skip」按回車,等下進入另一個界面
點擊next然後進入語言選擇,我們選擇english 如果選其他,有可能安裝後使用很卡。
在點擊next,進入選擇鍵盤的類型,我這裡選擇u.s.english,在點擊next
出現下圖
選擇yes,進入網路設置,可以輸入網關,DNS等,或者以後再設置也行。點擊NEXT
進入時區選擇,我們選擇上海的。點擊NEXT,進入設置根賬戶的密碼設置。我們輸入123456
點擊next出現如下對話框
選擇yes,進入硬碟配置方式選擇,我們選擇create custom layout 點擊next進入磁碟分區設置。選中free,點擊new,出現如下圖。
點擊Mount Point選擇掛載點為 「/」選擇File system type 為etx3 在size欄中輸入5000,給他分配5000M的空間,點擊OK,在次點擊new分配另一個分區。選擇File system type 為swap(這個是交換分區,是系統運行是用來存放臨時文件的,選擇這個就不用選擇Mount Point了) 在size欄中輸入1024,給他分配1G的大小。點擊OK,如果還有空間的話可以在分配其他分區。現在我們點擊next,出現如下圖:
點擊write changes to disk 在點擊next。出現如下圖:
我們把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
回車。就會從網上下載並安裝了。如果出現提示錯誤找不到網路地址,說明網路不通,這時可通過ping www.baidu.com看看能不能ping通外網。
三、現在開發環境需要的伺服器。Tftp 、nfs、samba和ssh(遠程登錄用的)都安裝好了。現在開始配置伺服器。
===================================================
配置網路
一、 先配置網路。讓他能夠和主機相互ping通其實上面安裝TFTP的時候也要這麼做才能上網的。那怎麼配置網路呢?
二、 首先選擇橋接方式。
三、 禁止兩個虛擬網卡。
四、 配置windows的ip和linux的ip在同一個網段到但IP地址不能相同,也就是最後的那個數不同,網關和DNS和子網掩碼都相同。這樣應該就能ping通了。主要linux在配置好後在激活網卡時要先點擊不激活(那個紅色的)再點擊激活。在重新啟動linux
配置TFTP伺服器(用來把內核uImage映像下載到開發板的內存執行)
打開終端,vi /etc/xinetd.d/tftp回車打開tftp配置文件。在裡面輸入如下內容:
/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
[root@localhost ~]# cd /etc/samba /*進入samba伺服器配置文件所在的目錄*/[root@localhost samba]# mv smb.conf smb.confback /*備份samba伺服器的配置文件*/[root@localhost samba]#touch smb.conf /*重新建立samba伺服器的配置文件*/[root@localhost samba]#vi smb.conf/*用VI編輯器編輯smb.conf*/
在smb.conf/中寫入如下內容
[global] workgroup = Linuxsambanetbios name = Linuxsambaname
server string = Linux Samba Server security = share [linuxsamba] path = /opt/linuxsamba writeable = yes browseable = yes guest ok = yes 註解: [global]這段是全局配置,是必段寫的。其中有如下的幾行;workgroup 就是Windows中顯示的工作組;在這裡我設置的是LinuxSir
netbios name 就是在Windows中顯示出來的計算機名; server string 就是Samba伺服器說明,可以自己來定義;這個不是什麼重要的; security 這是驗證和登錄方式,這裡我們用了share ;驗證方式有好多種,這是其中一種;另外一種常用的是user的驗證方式;如果用share呢,就是不用設置用戶和密碼了; [linuxsir] 這個在Windows中顯示出來是共享的目錄; path = 可以設置要共享的目錄放在哪裡; writeable 是否可寫,這裡我設置為可寫; browseable 是否可以瀏覽,可以; guest ok 匿名用戶以guest身份是登錄; 第二步:建立相應目錄並授權; [root@localhost ~]# mkdir -p /opt/linuxsamba [root@localhost ~]# id nobody uid=99(nobody) gid=99(nobody) groups=99(nobody) [root@localhost ~]# chown -R nobody:nobody /opt/linuxsir 注釋:關於授權nobody,我們先用id命令查看了nobody用戶的信息,發現他的用戶組也是nobody,我們要以這個為準。有些系統nobody用戶組並非是nobody ; 第三步:重新啟動smbd和nmbd伺服器; [root@localhost ~]# service smb restart第四步:查看smbd進程,確認Samba 伺服器是否運行起來了; [root@localhost ~]# pgrep smbd 13564 13568 第五步:訪問Samba 伺服器的共享; 在Linux 中您可以用下面的命令來訪問; [root@localhost ~]# smbclient -L //LinuxsambanamePassword: 註:直接按回車 在Windows中,您可以用下面的辦法來訪問; //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 回車,看看那個網卡的物理地址(上一台電腦的)和你現在電腦的網卡的物理地址是不是一樣,不一樣就改過來。
n
推薦閱讀:
※ARM與中方合資並由中方控股是一招妙棋
※ZYNQ有兩個CPU?(三)——SGI非同步通信
※如何評價 AMD 的第一個 ARM 平台?
※ARM攢機指南-基礎篇
※透過華為Kirin 970 看 ARM G72還是TSMC 10nm注水?