對于剛接觸嵌入式 Linux 系統開發的同學來說,搭建開發環境是一個不小的挑戰,我看到過很多在入門邊緣的新人為了搭建一個開發環境,苦苦嘗試好幾天還不得要領的情況,因此寫下了這篇文章,希望能為大家做一些參考。
為什么要用虛擬機
首先要明確,這里的目的是搭建一套 Linux 開發環境。
其實只要你有一臺 X86 的筆記本或者臺式機,你可以像安裝 Windows 系統一樣直接在上面安裝 Ubuntu 等 Linux 操作系統的,但是很多同學身邊只有唯一的一臺筆記本或者臺式機,如果直接把上面的 Windows 操作系統替換成 Linux,對于初學者來說,在后面使用的過程中挑戰還是蠻大的 —— Linux 系統的操作風格和 Windows 系統差別還是很大的。
或許有人會說,可以裝雙系統 —— 在一臺電腦上裝兩個操作系統(Windows + Ubuntu),然后在啟動的時候選擇是進入 Windows 還是 Ubuntu。這樣做也可以,但是還是會面臨著前面的問題,當進入 Ubuntu 后,你需要在純 Linux 環境下工作,一家習慣了 Windows 的你不一定會習慣。
幸好有虛擬化這種技術 —— 它可以讓你在 Windows 電腦上通過 Vmware 之類虛擬機管理軟件直接安裝另外一個操作系統,比如 Ubuntu。這樣你在一臺電腦上就同時擁有了 Windows 和 Linux 兩種操作系統,你可以用 Windows 辦公、寫文檔,同時用 Linux 編譯代碼,多好。
當然、如果你有兩臺電腦,那事情就簡單多了,一臺裝 Windows, 另外一臺裝 Ubuntu,這樣能獲得最佳的性能。如果你只有一臺電腦的話,我建議你使用虛擬機的方式。其實不用太擔心性能不夠,我的筆記本是 Thinkpad E480(I7 8550U + 16G 內存),不開虛擬機的時候 CPU 大部分時間的占用了都很小,開了虛擬機也沒覺得卡。
在這里我們選用 Windows 上最常用的虛擬機管理軟件 —— Vmware,最新版本為 VMware Workstation Pro 15.5.0, 可以在這里 下載。
為什么選 Ubuntu
其實 Linux 操作系統(發行版)非常多,可能很多同學都能道出一兩個:Ubuntu、Debian、Fedora、Red Hat、CentOS。作為嵌入式 Linux 開發來說,Ubuntu 應該是首選。
如果做一些調研你可能會發現:目前最流行的 Android 操作系統,Google 推薦的開發環境是 Ubuntu、另外在Google 內部,他們的工程師使用的開發環境也是 Ubuntu、NXP、Rockchip 等芯片原廠的開發指導文檔里面,推薦使用的開發環境也是 Ubuntu、另外現在火熱的 AI,各種框架,也都是優先提供 Ubuntu 系統的安裝包,如果你使用 Fedora 等發行版,很可能找不到現成的安裝包,然后你得從源碼開始編譯這些框架,中間會遇到各種頭疼的庫依賴關系。我曾經玩過一個主打 AI 的開發板,上面運行的是 Fedora 系統,當時我想安裝 Caffe 這個 AI 框架,對不起,沒有現成的安裝包,只能從源碼編譯,整個編譯過程相當痛苦,后來我干脆為這塊板子移植了一個 Ubuntu 系統。
所以搭建嵌入式 Linux 開發環境,你應該選擇 Ubuntu。
如果打開 Ubuntu 的 下載頁面:Ubuntu Downloads,你會發現有很多版本可供下載:
可以看到不僅有 19.04、18.04 LTS、16.04 LTS、還有 Desktop、Server、64-bit、32-bit,那這些版本到底有什么區別,我們該選擇哪個版本呢?
這里就需要解釋一下 Ubuntu 的發布規律:Ubuntu 采用滾動開發的策略,一般一年會發布兩個大版本 —— 4 月份一個版本,10 月份一個版本,比如 2019 年 4 月份發布的就叫做 Ubuntu 19.04,2019 年 10 月份發布的叫做 Ubuntu 19.10,以此類推。同時,每隔兩年,會在當年的 4 月份發布一個 LTS 版本,比如 Ubuntu 18.04 LTS 和 Ubuntu 16.04 LTS,所謂的 LTS 就是 Long Time Support,即長期支持版本,Ubuntu 官方會對 LTS 版本提供長達數年的補丁升級和支持,而且 Ubuntu 官網說明, Ubuntu 18.04 會提供長期免費的安全更新維護支持至2023年4月, 而普通版本則不會有這種待遇。所以做開發環境的話,建議大家選 LTS 版本,我從去年開始就從 Ubuntu 16.04 切換到 Ubuntu 18.04 了,使用體驗良好。
Desktop 版本和 Server 版本有什么區別呢?簡單講,Desktop 版本是帶有圖形界面的版本,你可以像使用 Windows 系統一樣用鼠標去點擊操作,Server 版本則沒有圖形界面,基本都是通過命令行操作,對于初學者,建議使用 Desktop 版本,Ubuntu 桌面也是越來越好使用了。
64-bit、32-bit :目前大家的手上的電腦,如果不是特別特別老,應該都是 64 位的,所以請選擇 64-bit 的系統,這樣性能會更好。如果你以后做 Android 系統開發,你會發現,Google 強制要求,必須在 64-bit 的 Ubuntu 下編譯 Android。
所以,到這里你應該明白了,我們將選擇 Ubuntu 18.04 LTS , 可以點擊這里 下載 。
另外多說一句,對于這種背后有可靠的組織開發的軟件,大家要習慣去官網下載,盡量不要通過其他的第三方來鏈接下載,因為你無法保證這種第三方鏈接是否靠譜。
安裝
安裝 Vmware
直接雙擊下載下來的 VMware-workstation-full-15.5.0-14665864.exe 文件,可能會遇到下面的提示:
要求重啟系統,直接選擇 “是” 重啟系統,重啟完之后盡量等一會讓再點擊 exe 安裝文件,可能需要重啟好幾次才會成功。
后面就是一路選擇下一步,直到安裝完成。
點擊 Windows 開始 菜單,啟動 Vmware。
然后可能會提示讓輸入許可證,這個去網上搜一下,應該能找到。
安裝 Ubuntu 18.04
選擇創建新的虛擬機
在彈出的選項中選擇 典型,然后下一步。
這里也告訴大家一個經驗,一般安裝軟件,如果是第一次安裝,自己對這個軟件又不是很熟悉,盡量選擇典型配置,這樣比較容易避免出錯,踩進不必要的坑里。等后面你對這個軟件玩的比較熟悉了,再根據自己的喜好選擇自定義設置。
選擇安裝程序 iso 鏡像,即前面下載的 Ubuntu 18.04 ISO 鏡像,下載后的鏡像保存在什么位置,這里就選對應的位置。
如果這一步設置正確,會看到提示信息 已經檢測到 Ubuntu 64 位 18.04。
設置登錄用戶名和密碼
這里按照自己的喜好設置即可,不過設置完后要記清楚,后面你要用來登陸 Ubuntu 系統。
設置安裝的 Ubuntu 系統的存儲位置以及名稱
這里指的是安裝后 Ubuntu 系統的存儲位置,最好選選一個磁盤性能比較好的位置,這樣有利于提高虛擬機性能。
設置磁盤容量
為了安全起見,一般最好把系統盤和數據盤分開,即 Ubuntu 系統安裝在一個硬盤,然后再加另外一個硬盤到 Ubuntu 系統中,用來存放數據,比如你下載的程序代碼。這樣做的好處是,萬一你把 Ubuntu 系統整崩潰了,重裝 Ubuntu 系統即可,你的那些程序和數據還在另外一個獨立的盤上,不會因為你重裝系統而丟失。
這和 Windows 下面把系統裝到 C 盤,然后其他的資料放到 D、E 盤是同樣的道理。
所以這里我們可以設置一個比較小的磁盤裝 Ubuntu 系統,30G 就夠了,后面再加一個大的磁盤進去。
自定義硬件
設置內存容量
這個要根據自己物理機內存的大小酌情設置,相當于把實際的物理機內存分出來一部分給 Ubuntu 系統,如果設置的太大,Windows 系統剩下的內存就變小了,Windows 性能會變差,如果設置的太小,Ubuntu 的性能也上不去。可以留意下,平時不開虛擬機的時候,Windows 系統內存的使用情況,然后來設置。我的筆記本有 16G 內存,我平時發現 Windows 系統內存占用大概在 8G 左右,所以這里就把剩下的 8G 分給了虛擬機。
設置虛擬機 CPU 數量
我的筆記本 CPU 是 I7 8550 U,4 核心 8 線程,所以我這里就按照同樣的參數設置。
設置完成后選擇 關閉。
點擊 完成,Ubuntu 系統會自動啟動開始安裝。
如果發現報如下錯誤:
可以按照如下方法解決:
在 Windows 上右鍵 此電腦 ——》 管理 ,雙擊服務和應用程序——》服務 找到HV 主機服務,雙擊禁用
以管理員模式打開 Windows PowerShell,執行如下命令
bcdedit /set hypervisorlaunchtype off
重啟電腦生效
Ubuntu 啟動安裝
這個過程可能會需要一些時間,請耐心等待。
最終安裝成功,會自動進入登錄界面。
點擊,輸入密碼(賬號和密碼都是前面設置的,你一定要記得),然后就會進入 Ubuntu 桌面。
一路選擇 Next 到最后 Done 即可。
設置時區
你可能會發現系統時間不對,不要慌,點擊 Ubuntu 桌面右上角,會彈出設置選項。
再點擊那個像扳手一樣的圖標:
在彈出的設置界面中依次選 Detials—》Date&TIme —》Time Zone
在彈出的界面中搜索 Shanghai,關閉界面后,時間就正確了。
設置軟件源
軟件源是指定 Ubuntu 系統在更細或者下載軟件的時候,對應的服務器地址,默認設置的是從美國下載,速度比較慢,設置成國內的源,后面更新系統或者安裝軟件就會快很多。
點擊 Ubuntu 桌面右下角,然后選擇 Software&Updates 這個圖標。
在 Dowload from選項里選 other
然后在彈出的選項匡里找到china,選一個對應的服務器,我這里選的是 ustc,即中科大的源,然后點擊chose server。
返回上一級界面后,點擊 close,在彈出的對話框中選擇 reload。
在整個操作過程中,如果有彈出對話框要求輸入密碼,直接輸入你的賬戶密碼即可,這是因為有些操作需要 root 權限。
在這里再補充一點知識:Ubuntu 等 Linux 操作系統,是有著嚴格權限管理的系統,它把用戶分為普通用戶和 root 用戶,比如我們在安裝虛擬機的過程中設置的用戶名對應的用戶就是普通用戶,普通用戶的權限有著限制,比如有些設備不能訪問,有些目錄無法刪除,root 用戶和 Windows 系統中的管理員一樣,他擁有最大權限,可以在系統中做任何操作,刪除任意文件、目錄,安裝任意程序。又因為 Linux 系統是一個需要使用大量命令去操作的系統,對于 root 用戶來說,如果一個命令使用錯誤,就有可能把系統里面重要的文件甚至連系統本身都刪除,這是非常危險的。所以一個有 經驗的開發者,一般都不會默認以 root 用戶登錄系統,而是用普通用戶登錄,當它執行某項操作,權限不夠的時候,系統會自動提示它權限不夠,這時候再在對應的命令前面加 sudo 重新執行,并輸入密碼,即可。
如圖所示,我直接執行 apt install openssh-server 命令安裝 openssh-server 這個軟件,系統里面報錯,并提示 Permission denied ,這就是說沒有權限執行這條命令,因為安裝軟件時需要有 root 權限才能執行的操作,所以這里需要以 sudo 的方式執行這條命令 sudo apt install openssh-server ,然后系統會提示輸入密碼,輸入對應的密碼后,順利安裝完成。
這種操作只是讓這一條命令在執行的時候擁有 root 權限,命令執行完,我們還是以普通用戶的身份繼續執行其他的操作,這樣就最大的限度避免了錯誤操作導致災難性后果的可能。
而且在正規的企業中做開發,大家的開發都是在服務器上進行,這時候只有管理員才擁有 root 賬戶密碼,其他的開發者是不知道 root 密碼的,大家都以普通用戶的身份操作,如果遇到需要安裝軟件之類的操作,都是通過管理員進行。所以大家一定要從一開始就養成盡量以普通用戶去操作的習慣。避免 Linux 從入門到刪庫跑路這種故事的發生。
ssh 遠程登錄
ssh 是 Secure Shell 的縮寫 ,它是一種遠程登錄協議,有了它,我們可以在局域網內從一臺機器登錄到另外一臺機器上,然后通過命令在這臺其實上進行各種操作,Linux 相關的開發,大部分是以這種方式進行的。啟用 ssh 前需要在 Ubuntu 上安裝 openssh-server,安裝命令如下:
sudo apt install openssh-server
注意上圖中打箭頭的地方,命令執行完后,可能會讓你輸入密碼,另外還會有一個 Do you want to continue? [Y/n] 的提示,這里需要輸入 Y 才能繼續安裝。
大部分軟件的安裝都是這個流程。
執行 ifconfig 命令查看 Ubuntu 虛擬機的 ip 地址:
從圖中可以看到,第一次執行 ifconfig 命令的時候,提示這個命令找不到,并提示了安裝方法,直接按照提示安裝即可。這也是我們在使用 Ubuntu 系統中,遇到其他未安裝命令的類似處理方法。
安裝完成后再次執行 ifconfig 命令,可以看到 Ubuntu 系統的 ip 地址是 192.168.153.128, 這個和我們本機 Windows 系統的 IP 地址是不一樣的。
然后我們在 Windows 系統上安裝 SecureCRT 軟件,利用該軟件我們可以通過 ssh 登錄到 Ubuntu 系統中。
SecureCRT 軟件大家可以去網上自己下載,然后安裝。安裝完成后啟動。
點擊 + ,選擇 ssh2,下一步。
Hostname 填 Ubuntu 系統的 IP 地址,Username 填 Ubuntu 系統的用戶名,然后下一步,Session name 可以自己隨意取,我這里取名位 Monarch,完成。
雙擊左邊對應的會話,即啟動 ssh 連接。
第一次連接會有上面的提示,選擇 Accept & Save 即可。然后輸入 Ubuntu 的登錄密碼,即可登錄成功。
有一點需要大家注意的是,這里安裝的 Ubuntu 默認 IP 地址是動態分配的,也就是說可能會變化,如果某一天你發現 ssh 通過這個地址連接不成功了,請記得通過 Ubuntu 界面進去用 ifconfig 命令確認下 IP 地址。
也許有人有疑問:既然安裝的是 Desktop 版本,而且通過虛擬機也能很好的通過鼠標進行界面操作,為什么還需要通過 ssh 遠程登錄呢?ssh 是一個全命令行的操作界面,太難用了。
這里就牽扯到一個 Linux 的使用哲學問題:Linux/Unix 這類操作系統,最開始設計的時候就是以命令行為基礎提供操作接口,即使到現在,一直到 Android 系統出現之前,Linux 操作系統應用最多的領域是各種服務器,我們登錄的各種網站、我們的家庭路由器甚至給我們的手機傳遞信號的各種基站,它們上面跑的就是Linux 系統,而且基本不代圖形桌面。以服務器(Server)為例,它是不帶圖形界面的,即使有的小型服務器上安裝了桌面版的 Linux 系統,這個桌面一般也只有管理員在維護系統的時候才用,正常的開發用戶都是通過 ssh 登錄上去,用命令行完成自己的工作。
也許有人會覺得 Linux 命令行操作沒有圖形界面操作高效,其實這是大部分剛開始接觸 Linux 系統的人的一種錯覺:對于開發而言,尤其是涉及到很大工程的代碼的開發,比如 Linux kernel、U-Boot、Android,這種項目里面的代碼文件可能有幾十萬上百萬個,如果通過圖形界面去查找某個文件,查找某個函數的使用參考,是非常慢的,而通過 Linux 的命令行查找卻非常高效 —— 你不用記得完整的文件名、只要知道一些簡單的關鍵字,甚至文件類型,就能通過 Linux 命令行強大的模糊匹配功能,把這些文件搜出來,對于一些函數或者特定表達式的用法,搜索出來的結果帶有顏色的高亮顯示,你甚至不用知道表達式相關的關鍵字,只需要知道大概是什么格式什么樣的,你也能很快的把它通過 grep 命令搜出來。
Linux kernel、U-Boot 以及幾乎所有其他的 Linux 系統開源項目的編譯,固件打包、分析、都是通過命令行進行的。
從我平時接觸到的大量的從事 Linux 相關開發的極客來看,基本上開發能力比較強的人,命令行玩的都很溜。
就連之前一直把 Linux 作為頭號敵人的微軟,最近也開發了一個叫做 WindowsTerminal 的工具,旨在讓用戶在Windows 系統上也可以方便的進行命令行操作。可見 Linux 命令行的魅力之大。
我自己在 Windows 下面寫的各種文檔,需要用 git 進行版本管理,雖然 git 在 Windows 上有一個圖形界面,但是我用不太習慣,而且用了一個叫做 Cmder 的命令行工具,因為它給了我像 Linux 環境下一樣高效的使用體驗。
也許你還會擔心:Linux 命令行下沒有 IDE,我喜歡用 Keil、Source Insight 這樣的 IDE 來寫代碼。沒問題,后面我會告訴大家怎么通過 Samba 服務把 Linux 下面的工作目錄映射到 Windows 系統下面,這樣你就可以在 Windows 下面用你喜歡的 IDE 寫代碼了。其實 Vim 寫代碼也可以很高效的。
有一點需要說明的是:上面說的這些 Linux 命令行的優點都是針對在 Linux 下面做開發,如果是娛樂,那什么都比不上圖形界面,這一點還是 Windows 和 MacOS 強大。
VMware Tools
可能有人已經開始著急了,怎么還沒開始安裝大名鼎鼎的 VMware Tools 啊。
根據 VMware 官網的說明:VMware Tools 是用來增強虛擬機功能的,而且 Ubuntu 系統已經自帶了 Open VM Tools,VMware 官方推薦大家用 Ubuntu 自帶的這個版本,我們可以用以下命令在系統下查看下:
可以看到系統已經默認安裝了 Open VM Tools,所以我們就不用再安裝了。
根據我觀察到的現象看,安裝完 Ubuntu,只要重啟一次,系統系統就會自動安裝這個 Open VM Tools。
為虛擬機再增加一塊硬盤
前面有說到,建議大家把 Ubuntu 系統裝在獨立的盤里,現在Ubuntu 系統基本裝好了,是時候為 Ubuntu 再增加一塊硬盤來放數據了。
按照上圖所示,從左到右依次操作。
按照推薦設置,選 SCSI、然后下一步。
選擇 創建新虛擬磁盤,當然如果你是重裝系統,已經有之前使用過的現成的磁盤的話,可以選擇 使用現有的虛擬磁盤 ,這樣你原來磁盤中的數據就能夠直接用了。
這個磁盤是用來裝數據的,容量盡量設置大一點。
選擇新磁盤存放路徑,完成。
創建磁盤的過程需要時間,可能要等一會兒。
創建完成,啟動 Ubuntu。
點擊桌面左下角,打開 Utilities 選擇里面的 Disks 工具。
選擇新添加的磁盤,然后點擊那個設置按鈕,選擇 Format Partitions
Name 按照你的喜好寫。格式一般我們選 Linux 下最通用的 EXT4.
然后 Next——》Format ,格式化磁盤。
已經被格式化成 EXT4 格式了,
選擇 Edit Mount Options
這里主要設置磁盤掛載目錄,我一般把他掛載在 Home 目錄下。
點擊 Mount 選項,就會成功掛載磁盤。后面系統再次啟動的時候,會自動掛載。
通過 df-hl 命令,可以看到系統里面已經多掛載了一個 150G的磁盤。
通過 Samba 在 Ubuntu 虛擬機和 Windows 之間共享數據
我們現在已經可以在一臺電腦上同時運行 Windows 和 Ubuntu 操作系統了,那如果我需要在這兩個操作系統直接按共享數據,該怎么做呢。
這里推薦用 Samba 服務來實現。
首先在 Ubuntu 系統上安裝 Samba:
sudo apt install samba
編輯 samba 配置文件 :
sudo vim /etc/samba/smb.conf
在文件的最后加入以下內容:
其中 path 就是你 Ubuntu 上需要共享出去的目錄路徑。
執行如下命令啟動 samba 服務:
sudo service smbd restart
sudo ufw allow samba
添加 samba 賬戶:
sudo smbpasswd -a yourusername
yourusername 就是你后面進行 samba 連接的適合需要用到的登錄名,我一般設置成和 Ubuntu 系統的登錄名一樣。然后會提示你設置密碼。
在 Windows 系統上郵件 此電腦 ——》映射網絡驅動器 :
在文件夾選項中填入 Ubuntu 電腦的 IP 地址跟上 smb.conf 文件中配置的名字(就是方括號中的那個名字),完成。
然后輸入前面設置的 samba 賬戶和密碼就能連接到 到 Ubuntu 系統下的目錄中了。
可以看到我們 Windows 電腦本地就映射了出來了一個磁盤,這個磁盤和你 Ubuntu 下面的一致,你在這磁盤中對代碼文件的修改等效于在 Ubuntu 中對文件的修改。
總結
到這里 ,我們基本通過 Vmware 虛擬機構建了一個可以進行嵌入式 Linux 開發的虛擬機環境。你可以在這個環境上進行各種探索和嘗試,不用怕出錯,也不用擔心把系統弄壞,因為按照這個流程重新裝一次系統,大概也就需要一個小時左右的時間,而且對你的電腦不會有任何損害。
編輯:lyn
-
Linux
+關注
關注
87文章
11227瀏覽量
208922 -
Ubuntu
+關注
關注
5文章
560瀏覽量
29563 -
VMware
+關注
關注
1文章
293瀏覽量
21582
原文標題:在 Vmware 虛擬機上搭建 Ubuntu Linux 開發環境
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論