常用指令與常見問題

注意事項

  • 不要將 u-boot 載入程式的延遲時間設成 0, 否則之後開機 u-boot 就會直接載入程式, 無法再修改 u-boot.

常用指令

  • 以下只列出指令 lab 中常用的幾個用法, 每個指令各自還有許多參數, 詳細可參考 references 的資料.


sudo 指令
  • 當指令配上 sudo 後, 此指令就具有 root 的權限, 常用於修改設定檔.
  • 一旦你使用 sudo, 那麼使用的環境變數, e.g. PATH, 就與原先的使用者不同, 如有設定特別的環境變數, 需格外注意.
apt-get install PACKAGE
apt-get remove PACKAGE
apt-get purge PACKAGE
apt-cache search PACKAGE
  • 在 ubuntu 系統中常用的安裝套件指令, 一般會搭配 apt-cache 搜尋確切的 PACKAGE 名稱再行安裝.
  • 一般比較常用的是 apt-get install, 但有時候會需重新安裝 PACKAGE, 因此需要將原先的 PACKAGE 移除, 這時候可使用 apt-get remove. 不過要注意的是, 有些 PACKAGE 是具有相依性的, 像是 libc6-dev, 一旦移除, 使用他的所有 packages 都會連帶被移除, 在使用上請確認這些相依性是可連帶移除的.
  • apt-get purge 也是用於移除 PACKAGE, 但會連帶將程式相關檔案一同刪除, e.g. 設定檔, remove 則否.
file BINARY
  • 用來查看編譯好的 BINARY 的格式, 一般使用 gcc 編譯的話會是 80×86, 而用 cross comipler arm-elf-gcc 編譯的則會是 ARM.
ls -l
chown -R OWNER:GROUP FILE | DIRECTORY
chmod PERMISSION FILE | DIRECTORY
  • ls -l 可查看檔案或資料夾的擁有者與權限.
  • chown 能改變其擁有者. 例如, 要將屬於 root 的檔案改成 logiclab, 則可以下 “chown -R logiclab:logiclab 檔案”, -R 代表假設修改的是資料夾, 則資料夾的檔案全部都會被改成該擁有者.
  • chmod 能改變檔案或資料夾的權限, 大多用於非執行檔要加上可執行的權限, e.g. “chmod +x 檔案” or “chmod 755 檔案”.
ps aux
  • ps aux 會將目前在這台系統上所有正在跑的 process 秀出來 (有點類似 windows 的工作管理員).
  • 通常會搭配 grep 指令來查詢某個程式是否正在執行, 例如 lab2 中的 tftpd-hpa, 可鍵入 “ps aux | grep tftpd-hpa”, 成功的話應該會看到兩個 process 正在跑 (其中一個是本身 grep 這支程式的 process).
/etc/init.d/networking restart
  • 可重新載入網路設定. (修改完 /etc/network/interfaces 請記得重新載入)
ifconfig
  • 用於查看目前機器上可使用的網路卡與相關IP位址設置, 執行指令後, 比較重要的是 inet addr 與 Mask 這兩個資訊, inet addr 代表你目前這張網卡設定的 IP address, Mask 則代表網路子遮罩 (netmask).
  • 如何設定 IP 與 netmask 可參閱 Lab1 與 Lab2 的投影片.
  • 如果只想觀看某張網路卡可鍵入 “ifconfig ethX”, 如要關閉某張網卡可鍵入 “ifconfig ethX down”, 開啟的話則是 ifconfig ethX up.
dhclient
dhclient3
  • 可重新獲取 dhcp 的網路配置 (202 實驗室目前是以 dhcp 設定), 當網路線重新連接時可使用.
  • dhclient 與 dhclient3 指令是一樣的, 說穿了 dhclient 只是 dhclient3 的一個 link, 執行哪個都可以.
ping IP
  • 用於測試網路是否正確設定, e.g. “ping 192.168.0.100”, 也可粗略測試自身網路卡是否正常, e.g. “ping 127.0.0.1”, 其中 127.0.0.1 代表自身這台機器.

常見問題

  • Question 1: 使用 minicom 連線時為繁體中文介面, 修改 /dev/ttyS0 時在畫面上無法正確顯示
  • Answer: 使用英文語系連線即可, 鍵入 “LANG=en_US minicom”

  • Question 2: 嵌入式板子開機時, 不小心誤觸按鍵進入 uboot 怎麼辦
  • Answer: 按下板子上的 reset 鍵, 或是在 uboot shell 鍵入 “reset” 指令重開機

  • Question 3: 更換回 logiclab 對外網路線時, 使用 ifconfig 發現網路卡沒有正確的 IP
  • Answer: dhcp 需重新配置, 鍵入 “sudo dhclient3”

  • Question 4: 找不到 tftp 指令
  • Answer: lab 中使用到的 tftp 指令是位於 target system 上, 也就是說 tftp 是在板子上執行的, ubuntu (host system) 則是執行 tftp 的 server (tftpd-hpa)

  • Question 5: tftp server 無法啟動 (tftpd-hpa)
  • Answer: 可嘗試一步一步找尋問題, 先透過 “apt-get remove” 移除掉舊的, 再以 “apt-get install” 安裝看是否能正常啟動

  • Question 6: 在板子上鍵入 “tftp …” 指令後出現 tftp timeout
  • Answer: 可檢查:
    • 網路是否正常設定, ping, ifconfig 是否都有正確的輸出
    • tftp server 是否有正常啟動? 可透過 Q5 排除問題 (大多數都是這個問題)

  • Question 7: 找不到 arm-elf-gcc, arm-elf-ranlib, arm-unknown-linux-gnu-gcc, arm-unknown-linux-gnu-gdb, 等自行安裝的 cross-tool 或是使用 cross-compiler 編譯出來的 binary 為 80×86 版本
  • Answer: 請先確認你的環境變數 PATH 是否有 cross-tool 安裝的路徑, 還有一點需特別注意, 由於使用 sudo 與非 sudo 執行指令是使用不同的環境變數設定檔, 所以當你鍵入 “sudo make” 與 “make” 會是不一樣的環境變數, 有可能就會找不到當初設定好的路徑. 最好的方式就是除非必要, 否則不要使用 sudo (通常是用於修改設定檔)

  • Question 8: 使用 gdbserver 遠端 debug 時, 在 gdb 環境中鍵入 “target remote IP:PORT” 會出現 timeout
  • Answer: 目前測試為板子的問題, 可詢問 TA 更換板子 (目前已知可能板子有問題的組別有: 3, 8, 9, 11, 13)

  • Question 9: 在 u-boot 輸入指令時出現 unknown command 訊息
  • Answer: u-boot 在接收指令有時會出現這種怪異的錯誤訊息, 確認指令無誤後重新輸入指令即可

  • Question 10: 在 u-boot 啟動時按鍵盤但 u-boot 還是停不下來
  • Answer: 會發生這個問題的原因可能是 rs232 的線有問題, 可詢問 TA 更換線材

  • Question 11: 在 Windows 環境下透過 tftp 傳時一直出現 'T' 的訊息
  • Answer: 該訊息代表傳輸 delay, 傳輸可能是被防火牆檔掉, 可以將防火牆關掉或開啟 udp 69 埠

  • Question 12: 修改網路設定重開機後, 進入 ubuntu 異常緩慢, 會跳出 do not receive a reply…
  • Answer: 這代表你不小心把 loopback 裝置刪除了, 鍵入 “sudo vim /etc/network/interfaces”, 把下面兩行設定加回去並重啟網路, 加入完後可用 ifconfig 檢查
auto lo
iface lo inet loopback

References

courses/100_2/csl_common_ins_errors.txt · 上一次變更: 2012/09/10 16:21 由 crilit
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0