這裡整理並記錄幾件 BBB/BBG(W) 開機後(可能)要做的事,剛拿到其它的 Embedded Linux 開發板要做的事情也蠻雷同的,或許本文也可以作為參考。
2. 登入並修改/新增帳號密碼
3. 將新增帳號加入 sudoers
4. 資訊查看類
- 如果您覺得還有任何值得一做的事,麻煩請告訴我,我會繼續補充在本文之中。
- 這裡也有一份我自己整理較常用的 Linux 指令彙整
目錄
1. 遠端/本地登入2. 登入並修改/新增帳號密碼
3. 將新增帳號加入 sudoers
4. 資訊查看類
- 看 pre-built image, kernel, node, npm, gcc, make 等版本
- 看記憶體用量
- 看磁碟用量/分割區資訊
- 看 ip
6. 系統更新
7. 變更系統時間(時區設定)
8. 變更 hostname
- BBB 與 BBG(W) 兩者在硬體介面上最大的差異是,BBG 將 HDMI 給拿掉,BBGW 又將 Ethernet 介面再拿掉。對 BBG(W) 而言,沒辦法在本地接上螢幕/鍵鼠登入。
- 若使用 BBGW,第一次開機後可以先將 BBGW 的對外網路連結設成你家的 WiFi Router,官網有提供使用手機來設定 BBGW 連外網的方法。(或把 PC 無線網路接到 BBGW,瀏覽器會跳出設定視窗)
- BBB/BBG(W) 的 ip 以及遠端登入說明
- 192.168.7.2
- USB 模擬,將 BBB 插上電腦 USB 後,你就可以透過這個 ip 或 beaglebone.local 遠端登入進入。可以在作業系統透過一些設定,讓 BBB 的對外連線是透過共享你的電腦(host)的網路
- 以瀏覽器進入 http://192.168.7.2 可看到 Bone101 說明頁面
- 192.168.8.1
- BBGW 才有,這是 BBGW 的 Soft AP,你電腦的無線網路可以接到這台 AP,然後以此 ip 登入 BBGW
- xxx.xxx.xxx.xxx
- BBB/BBG 透過乙太網路或 BGGW 透過 WiFi 上網,你家的 Router 配發給它的 ip,例如 192.168.1.18、10.1.1.27 (ifconfig 看 eth0 或 wlan0)
- 可以用 ssh root@beaglebone.local 登入
- 若 host name beaglebone.local 不能用,你需要安裝 windows 的 Bonjour Print Services,或者直接直接用 IP 來 ssh 進去吧!
- BBB/BBG(W) 預設系統內建有 Clould9 IDE,可用瀏覽器登入
- 登入後,IDE 最下方也有 terminal 可以使用 (以 root 登入)
- 網址:<BBB_ip>:3000
- 範例:192.168.7.2:3000 或 192.168.1.18:3000
- 本地端登入 - 接上螢幕、鍵鼠
- 本地端登入 - 使用實體 UART 登入 BBB/BBG(W)
- 接法請見下圖
- UART 設定:115200/8N1 (Handshake None)
- 要接觸到 bootloader,就要用此方式連接 BBB (其他登入方式都已經是開機完後的事了)
- 以 ssh root 登入
- host:~$ ssh root@xxx.xxx.xxx.xxx (ip 如 192.168.7.2, 192.168.1.18 等,見第 1 節說明)
- 以預設帳號 debian 登入
- host:~$ ssh debain@xxx.xxx.xxx.xxx (密碼是 temppwd)
- 變更密碼
- bbb:~# passwd (依指示鍵入新密碼)
- 新增帳戶 (以 root 登入進行新增)
- bbb:~# adduser simen (依指示鍵入資料,主要是輸入密碼,其他可 Enter 跳過)
- 以新建帳號登入試試 (請將 simen 換成你自己的帳戶名稱)
- host:~$ ssh simen@xxx.xxx.xxx.xxx
3. 將新增帳號加入 sudoers
- 新的帳號沒有超級使用者權限,也無法使用 sudo 執行受限指令。你可以把新的帳戶加入 sudoers
- 先以 root 登入
- 執行 visudo
- bbb:~# visudo (接著會進入 vi 編輯器)
- 在檔案內新增以下內容 (紅色處。新增完後 Ctrl + o 存檔離開)
- #includedir /etc/sudoers.d
%admin ALL=(ALL) ALL
debian ALL=NOPASSWD: ALL
simen ALL=NOPASSWD: ALL
4. 資訊查看類
- Pre-built image 版本 (以下 2 種皆可)
- bbb:~# cat /etc/dogtag
- bbb:~# cat /ID.txt
- BeagleBoard.org Debian Image 2016-05-27
- Linux kernel 版本 (以下 2 種皆可)
- bbb:~# uname -a
- Linux beaglebone 4.4.9-ti-r25 #1 SMP Thu May 5 23:08:13 UTC 2016 armv7l GNU/Linux
- bbb:~# cat /proc/version
- Linux version 4.4.9-ti-r25 (root@b3-jetson-tk1-2gb) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Thu May 5 23:08:13 UTC 2016
- 看 node 與 npm 版本
- bbb:~# node -v
- v0.12.13
- bbb:~# npm --version
- 3.8.2
- 看 gcc 與 make 版本
- bbb:~# gcc --version
- gcc (Debian 4.9.2-10) 4.9.2... (略)
- bbb:~# gcc -v
- Using built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapperTarget: arm-linux-gnueabihf... (略)gcc version 4.9.2 (Debian 4.9.2-10)
- bbb:~# make --version
- GNU Make 4.0
Built for arm-unknown-linux-gnueabihf
... (略) - 看記憶體用量
- bbb:~# free
- 使用 Debain 內建指令 connmanctl
- bbb:~# connmanctl scan wifi
- bbb:~# connmanctl services
- bbb:~# connmanctl services wifi_xxx_managed_psk
- bbb:~# cat << EOF > /var/lib/connman/<SSID>-psk.config
[service_wifi_xxx_managed_psk]
Type = wifi
Name = <SSID>
Passphrase = <passphrase>
EOF - bbb:~# connmanctl connect wifi_xxx_managed_psk
- 使用 wicd-curses (圖形化選單介面, 若無此工具要先安裝, 建議用上面的 connmanctl 就好)
- bbb:~$ wicd-curses
- 有點難說明,但用起來不會很難,請參考下圖(由左至右),或 google 一下用法
- 先 update 再 upgrade
- bbb:~$ sudo apt-get update
- bbb:~$ sudo apt-get upgrade
- 注意:更新完之後,WiFi 設定若跑掉,請從 192.168.7.2 登入後,再 connmanctl 一次
- 查看系統時間
- bbb:~$ date
- 設定時區,以下兩種方式都可以 (若一個不行,就試試另外一個吧!)
- bbb:~$ sudo dpkg-reconfigure tzdata ( 設定選: "Asia/Taipei" )
- bbb:~$ sudo timedatectl set-timezone Asia/Taipei
- 若系統時間不對,安裝 ntp 網路對時
- bbb:~$ sudo apt-get install ntp
- 裝完後應該用 date 指令查看一下,時間應該就對了
- 預設的 hostname 為 beaglebone
- bbb:~# cat /etc/hostname
- 方式 1
- bbb:~# echo 'your-hostname' > /etc/hostname
- 若不是用 root,需要 sudo 開新 shell 來執行
- bbb:~$ sudo sh -c "echo 'your-hostname' > /etc/hostname"
- 方式 2 (編輯 /etc/hosts 檔)
- bbb:~# vi /etc/hosts
- 進去後編輯 127.0.0.1 beaglebone 那一行,把 beaglebone 字樣換成你想要的hostname 即可
- 改完重開機後登入,原本 console 提示字符會:
- 從 simen@beaglebone:~$ 變為 simen@your_hostname:~$
- 可登入你家的 WiFi Router 看一下區網中裝置連線的資訊,應該也會發現變更
9. 試試原生編譯
- 準備一支 hello.c,內容如下
- #include <stdio.h>
int main()
{
printf("Hello World! BBGW!\n");
return 0;
} - 編譯 (以下你要用 make 或 gcc 都可以)
- bbb:~$ make hello
- bbb:~$ gcc hello.c -o hello
- 查看編好的 hello 執行檔
- bbb:~$ file hello
- hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=(略), not stripped
- 執行看看
- bbb:~$ ./hello
- Hello World! BBGW!
- 在 Host PC 安裝交叉工具鏈
- host:~$ sudo apt-get install gcc-arm-linux-gnueabihf make
- 準備一支 cross-hello.c,內容同第 9 節的 hello.c
- 編譯
- host:~$ make CC=arm-linux-gnueabihf-gcc CFLAGS="-Wall -O2" cross-hello
- host:~$ file cross-hello
- hello-cross: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, (略), not stripped
- 使用 scp 複製到 BBB/BBG(W) 後執行看看 (這裡用 ssh 遠端執行,或遠端登入再過去執行亦可)
- host:~$ scp cross-hello debian@192.168.1.18:~/
- host:~$ ssh debian@192.168.1.18 ./cross-hello
**************************************
[2016/8/14] 謝謝 Dennis Kuo 在 EE 狂想曲粉絲專頁跟讀者們的分享:
以下不是第一次開機就要做的事,但是要紮實掌握每片嵌入式系統板可能需要會的地方。
以下不是第一次開機就要做的事,但是要紮實掌握每片嵌入式系統板可能需要會的地方。
- 懂得如何燒錄 bootloader(e.g. uboot),甚至更早啟動主晶片(MCU/CPU)獨有的initial loader code,也就是整個板子上面如果外掛 Flash/ROM 是空的沒放 Linux 或損毀,甚至處理晶片內建的 Flash/ROM 啟動程式壞了,都要能夠知道用哪些工具處理及救援。
- 最早空板時,網路還不通時該怎麼針對系統晶片下指令或填 register,以及上傳bootloader/kernel/file system? 是使用 Uart 還是 i2c 去溝通?這些可能每種板子作法大同小異,但是可能還是需要知道。
- 對了,如果板子要連外上 Internet 或透過 smtp server 發送 email 等等,要再多注意 DNS的設定,還有 gateway 設定,就要看整個網路架構規劃如何。