BeagleBone Black Industrial系統更新設置一貼通


前言

原創文章,轉載引用務必注明鏈接。水平有限,歡迎指正。

本文使用markdown寫成,為獲得更好的閱讀體驗,推薦訪問我的博客原文:

http://www.omoikane.cn/2016/09/15/bbb_debian/

系統環境:Windows 7 Home Pentium x64|Deepin Linux 15.2 x64;Debian On BBB Industrial

預裝系統介紹

相信之前用過BeagleBone Black的都記得預裝的Ångström Linux系統,官方主頁一度停止更新,opkg軟件倉庫也不再維護,不過經MOP小弟提醒發現其github項目主頁依然活躍,向這些默默努力的人致敬!但是BeagleBoard官方提供的鏡像還停留在2013年6月20日的版本,現在4G版BBB都是使用Debian。我們來看一看官方預裝的系統情況,使用一根MicroUSB線(這個接口已經相對不多見了)與電腦連接后,下載安裝驅動后,打開SSH客戶端(Kitty或Xshell等),主機地址填192.168.7.2或beaglebone.local,用戶名root,密碼為空(另一個默認賬戶是debian:temppwd)。輸入以下命令:

lsb_release -a
cat /proc/version
uname -a
df -Th
netstat -lnp

可以看到當前系統版本為Debian 7.9 Wheezy,在wandboard (飛思卡爾 imx6q四核SoC)上編譯,內核版本3.8.13,預裝apache2 Web服務器,rdp遠程桌面服務器,udhcpd DHCP服務器。

​ 我們打開官方系統更新頁面,可以看到目前最新的是發布於2016年5月13日的Debian 8.5 Jessie MicroSD卡鏡像(然而下載鏈接寫的8.4),要求至少4G存儲空間(eMMC或者SD),另外官方提供了燒錄到板載eMMC存儲的方法。

FAQ:

  • 如何從MicroSD卡啟動

    BBB默認從板載eMMC啟動,按住USB接口旁邊的USER/BOOT按鈕(S2)然后開機即可從MicroSD啟動

  • 我不需要圖形界面,默認系統占用空間過大

    除了官方包含LXQT的Debian鏡像,訪問這里可以看到更多選擇,其中console版就是僅包含核心功能的鏡像,但是沒有USB Gadget驅動(無法模擬串口、以太網卡和存儲設備),沒有預裝Apache2,X11,xrdp等。

  • 除了Debian還有那些系統可用

  • 串口調試功能如何使用

    官網wiki介紹見此

  • BBB上有沒有類似樹莓派的RPi.GPIO,wringPi這種操控GPIO的庫

    有,BoneScript Library,另外也能使用upm。

  • 通過 USB Gadget 驅動BBB的USB接口實現哪些功能

    • 模擬以太網接口:192.168.7.2,劫持局域網dns解析后使用beaglebone.local也能訪問
    • 模擬Mass Storage (MSG):在宿主機中顯示BEAGLEBONE的磁盤
    • 模擬串口:可以查看串口輸出,但是因為是模擬的,所以開關機信息和uboot無法查看調試
  • 有沒有比較全的文檔wiki

    看這里——elinux.org

  • 插上MicroSD卡后重啟會從哪啟動?

    會從上次啟動的設備啟動

更新板載系統

所需硬件:

  • MicroSD卡一張,4G以上大小
  • BeagleBone Black Industrial
  • MicroUSB數據線
  • MicroSD 讀卡器(能讀MicroSD的設備如手機等也可以)

所需軟件(以Windows為例):

  • 最新官方Debian系統鏡像——下載地址
  • 解壓縮軟件——7-zip、WinRAR等,用於解壓下載來的img.xz壓縮文件中的系統鏡像
  • Win32 Disk Imager —— 下載地址,用於燒錄系統文件至MicroSD卡

燒錄系統(MicroSD+eMMC):

插上MicroSD卡,打開Win32 Disk Imager,選擇解壓出來的bone-debian-8.4-lxqt-4gb-armhf-2016-05-13-4gb.img文件,選擇正確的寫入設備(MicroSD卡),點擊Write等待片刻即可。

燒錄完成,將MicroSD卡插入BBB卡槽,按住USER/BOOT按鈕后開機,即可從SD存儲啟動。

當然,我們的最終目的是升級eMMC的板載系統,具體方法官網也有講到

To turn these images into eMMC flasher images, edit the /boot/uEnv.txt file on the Linux partition on the microSD card and remove the '#' on the line with 'cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh'. Enabling this will cause booting the microSD card to flash the eMMC. Images are no longer provided here for this to avoid people accidentally overwriting their eMMC flash.

燒錄好系統到MicroSD卡后,編輯/boot/uEnv.txt文件,取消注釋cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh,從而開啟自動燒錄到eMMC的功能腳本。之所以不再提供單獨的eMMC鏡像是為了防止有些人大腦不清楚的時候誤操作覆蓋掉eMMC里面的系統文件(怎么感覺是官方自己這么干過得到的血的教訓。。。)

注意!

  1. MicroSD卡燒錄完系統后,因為是Linux文件系統,Windows下不可見。另外/boot/uEnv.txt文件也無從修改(即使我知道你可以,但是仍然不建議在Windows下修改Linux文件系統文件),這時我們可以先啟動BBB Industrial,登錄之后插上MicroSD卡,進行修改。如果你不會的話,跟我一起學寫shell:
lsblk |grep -q mmcblk1 && mkdir /media/sd && mount /dev/mmcblk1p1 /media/sd && sed -i 's/#cmdline=init/cmdline=init/g' /media/sd/boot/uEnv.txt && umount /media/sd && poweroff || echo please insert ur sdcard properly!

別看命令這么長,其實shell編程邏輯比較簡單,|表示上一個命令的輸出作為下一個命令的輸入,&&表示上一命令執行成功則執行此命令,||表示上一命令失敗則執行此命令。

所以上述命令的意思是查看當前存儲設備——查找是否有sd卡插入——有則創建/media/sd目錄並掛載——修改uEnv.txt文件,取消注釋——卸載sd卡,關機(&& poweroff,方便燒錄,可選)——如果沒有檢測到會提醒你正確插入sd卡。sed命令的用法看這里

  1. 選擇燒錄到eMMC時,按住S2開機,隨后以太網接口旁邊四個LED全亮即可松開,隨后進入流水燈模式代表正在燒錄
  2. 燒錄到eMMC的過程可能會持續45分鍾,當燒錄完畢時,以太網接口旁邊的四個燈會全亮(不閃爍),此時關閉電源,拔掉MicroSD卡,重啟即會從eMMC新的鏡像啟動。
  3. 想從MicroSD卡啟動的話記得重新注釋那一行(行首加個#

好的,趁着等待的這會兒,我去吃飯了~

吃完飯繼續更新

咦,這和劇本寫得不一樣啊導演!四個燈全滅而不是全亮,不管了,拔掉MicroSD卡重啟看看,當然這時如果有串口調試模塊就好了。等了好一會兒,宿主機顯示出BEAGLEBONE磁盤,SSH和虛擬串口都可以使用了。我們再看看新系統:

可以看到,更新后的系統是Debian Jessie 8.4(官網騙人啊),使用英偉達 (Nvidia,造顯卡那個) jetson tk1開發板編譯,內核版本4.4.9,默認沒有安裝rdp遠程桌面服務。可用空間218M什么鬼。。。

3000:Cloud9

1880:Node-RED

更多信息可以使用以下命令:

cat /proc/cpuinfo # 查看CPU信息
dmesg | grep scheduler # 支持的系統I/O調度
cat /sys/block/mmcblk0/queue/scheduler # 當前所使用的I/O調度算法
cat /proc/driver/rtc # 板載RTC信息
cat /sys/power/state # 支持的電源管理模式

系統初始設置

更改時區

timedatectl set-timezone Asia/Shanghai

更改時間

timedatectl set-time "yyyy-MM-dd hh:mm:ss"

注意年月日之間使用短橫杠-連接。然而運行改命令會提示Failed to set time: Automatic time synchronization is enabled,由於設置了自動更新時間無法手動更改,后面也發現連上網重啟之后會獲得正確的時間。

關於硬件時鍾和系統時鍾可以看我之前寫的文章《吃我一記咸魚突刺——使用板載RTC定時開機》

使用無線網絡

BBB可以使用有線網或無線網,我這里掏出之前買的Edimax無線網卡,使用的是經典RT3070芯片。

通過以下命令可以看到無線網卡已經被識別:

lsusb
iwconfig
lsmod
iw list # 該命令可以看到無線網卡支持的模式,比如monitor,AP,Station等,后續會講 

一般修改/etc/network/interfaces文件(低版本內核修改此文件僅支持wep加密)、wireless_tools或者使用wpa_suppliant可以連接網絡。然而interfaces文件里有這么一句:# WiFi use: -> connmanctl,正好netstat -lnp里面也有connmanctl的身影,看名字應該是個網絡連接管理軟件。

connmanctl是啥

connmanctl --help看了一下使用介紹,發現功能挺多啊。

ConnMan是一個專為嵌入式設備和快速解析設計的命令行網絡管理程序,支持諸多模塊,而且內置dhcp(IP地址分配)和ntp(網絡授時)功能。

使用方法可以看這些:

簡單來說,[technologies]理解為網卡interfaces,[services]理解為可連接的網絡:

connmanctl
> enable wifi # 啟用無線網卡
> scan wifi # 掃描無線網絡
> services # 列舉掃描到的無線網絡
> services wifi_*_psk # [optional] 查看某個無線網絡的具體信息
> agent on # [ptional] 無密碼的可以不需要這句
> connect wifi_*_psk # 不是SSID,二是后面對應的wifi_*,根據自己情況修改此時會要求你輸入網絡密碼
> state # 成功連接狀態為ready,已連上網是online
> help # 顯示幫助文件
> exit # 退出

成功連接后,會在/var/lib/connman目錄下生成配置文件,而且下次開機就會自動連接了

【無線網絡掃描結果】*——favorite;A——autoconnect;O——online。connect后面的參數是wifi_開頭的而不是你的無線網名稱。managed代表AP模式 (非Ad-Hoc),psk為加密方式。開放網絡是none,此時不需要agent on。

注意:

  • 隨便掏出來的Edimax估計壞了,先后出現過各種奇怪問題,包括:
    • connect時顯示Error /net/connman/service/[the ssid]: Method "Connect" with signature "" on interface "net.connman.Service" doesn't exist——更新:需要關閉tether模式才行
    • 連接成功后只能獲取到254.169這種無效IP地址
    • ifconfig手動為wlan0設置IP地址仍然不能聯網
  • 於是我又掏出來一個小米隨身wifi (使用mt7601u芯片,包括360、小度等都使用該芯片),還好新版Linux 內核已經包含該芯片驅動,可以直接使用。具體可以參考我之前寫的關於USB無線網卡選擇的文章,這回正常了,很順利。
  • connmanctl 還有一個tether命令,需要無線網卡支持ap模式,可惜mt7601u不支持,僅支持station,monitor模式,rt3070倒是支持,connmanctl tether wifi on之后可以搜索到一個名為BeagleBone-146C的無線網。更新:tether和station模式不能同時打開。
  • 更多用法可以使用 connmanctl help或者查看上面所說的文檔

網線直連共享上網

這種主要針對沒有路由器,沒有開箱即用的無線網卡,手頭只有一根網線的情況。

新入手一塊板子,沒有路由器,沒有顯示器,也沒用串口調試模塊,手頭僅有一根網線,眼前一抹黑,怎么辦?

繼續參考我之前寫的文章《網線直連控制Guitar (增強版)》,你可以學到直連線和交叉線;Windows上搭建DHCP服務器,tftp協議相關的知識。

這樣BBB Industrial也可以通過宿主機來上網更新了。當然如果你有路由器直接插上網線就可以,多簡單。

更新系統(內核、軟件)

更換軟件源為tsinghua (清華大學),也可以使用ustc (中國科學技術大學,但是最近不穩定),常用的阿里源不包括Debian armhf架構就不列出來了。

sed -i 's/httpredir.debian.org/mirrors4.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

是不是發現sed命令很好用!

# 更新系統
apt-get update && apt-get upgrade

推薦你去看看/etc/apt/sources.list文件,值得一看。因為升級時速度過慢,可以改upm,node.js的更新地址,或者使用代理(connman就支持設置代理)。此外內核的更新沒有Raspberry Pi使用rpi-update那么方便了。

再次運行lsb_release -a命令可以看到已經升級為最新的Debian Jessie 8.5了。另外不推薦冒然執行 apt-get dist-upgrade升級系統,原因我也講過,upgrade遇到依賴沖突時會保持原樣,dist-upgrade會強行升級依賴而往往無法做到滿足所有依賴,例如軟件A需要庫1.1版本,軟件B需要庫2.4版本,后者會升級為庫2.4並導致軟件A無法使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM