2013/09/15

sh4twbox 0.9.2 網樂通萬用改機救援碟

[2014/03/19 修訂]
sh4twbox 0.9.2 安裝救援碟
  1. 快速安裝 uboot(含256M RAM) 及 sh4twbox 合成一片, 並採用 ext4 格式加速安裝過程
  2. 可使用 ext4 格式選擇安裝之 rootfs (eg. sh4twbox,arch,debian,fedora,nextpbx,nextnas,other)
  3. 簡易救援(即使內建的 USB DOM 全毀也是可以重建使用)
  4. 多重開機
  5. 內建簡易套件管理軟體 shpkg
  6. 可自行編譯程式,操作範例,若仍有程式需要裝舊版0.6.2的操作範例

1.安裝方式

1.1 安裝前準備: (安裝後原網樂通功能消失, 請自行備份)

  • 一般使用者:
    •  RESET用的迴紋針、網路線先連上寬頻分享器及網樂通, 拔除網樂通電源
    • USB 碟,根目錄先不要放其他檔案(第一個磁區為DOS,且容量小於(不含)2GB)
  • 開發測試者: 除錯用的TTL2USB console 線連到網樂通內部同時開啟 PC 端 putty log 功能

1.2 更換 UBOOT 為UBOOTWPDA

更換為UBOOTWPDA,使用UBOOTWPDA可以自訂開機參數,這個動作只要做一次(曾裝過者不需再裝),它相當於以往的256M升級版。
  1. 下載 sh4twbox-<版號>.7z, 可用 7-zip 解壓縮並複製到 USB 碟(提醒熟 Linux 的朋友必須是FAT16/FAT32分割區, 而不是 Linux 專用的 ext3 分割區也不可以是 NTFS分割區,看不懂這些術語的朋友就忽略這段,直接使用即可)
  2. 插入USB,按住 RESET, 插上電源
  3. 等待閃燈三下後放開 RESET (console log),
  4. 算30秒應該會出現藍燈,拔掉電源線 (過程中會看到藍燈一閃一閃,代表使用 SMIT UBOOT 更新 UBOOT)
安裝完之後可以將 iptvubootupdate.bin 更名,可以節省開機時間。(不更名或刪除的話,UBOOTWPDA會自動判斷相同版本,略去不升級),UBOOTWPDA判斷 RESET 只有開機的一瞬間,以後若需要外部USB優先開機也只要按一下子就好。

1.3 使用 sh4twbox 安裝系統或救援

sh4twbox 0.9 版以後的安裝片全部載入記憶體,因此開機(變藍燈)後可拔掉USB。
  1. 選擇作業系統(如 fedora/debian/wonderbox)附檔名為 .tgz 或 .txz 放進剛才的 USB 碟, 建議下載最迷你的 sh4twbox-<版號>.txz,(注意不是 .7z) ,如果USB目錄裏同時有多個 *.t?z 檔, 會自動安裝最後一個。另外也可以稍候在選單輸入下載網址安裝。
  2. 插入USB,拔電源,插網路線,按住 RESET,插上電源
  3. 紅燈代表外部USB開機中,就可放開 RESET鍵,大約40秒開機完成變成藍燈
  4. 下列方式選擇一種就可以得知網樂通 IP
    1. ping sh4twbox
    2. 使用寬頻分享器指定網樂通的 MAC 分配固定 IP
    3. 查看寬頻分享器內部資訊得知分配給網樂通的 IP
    4. 自己的機器設定 192.168.168.1, ping 192.168.168.168
    5. 使用 ip scan 類程式掃描區域網路
  5. 知道 IP 後,使用 telnet 連線進網樂通,建議使用 pietty/putty 並且設定 session log 但記得要設定為 telnet port
  6. 帳號 root, 密碼 twpda打兩次

1.4 手動安裝方式

登入後畫面如下
Escape character is '^]'.

sh4twbox login: root
Password: 
Enter 'sh4twbox' for install/recover sh4twbox.
22:48:26[0]root@sh4twbox / # sh4twbox  <- 輸入後出現選單

Disk /dev/sda: 2021 MB, 2021654528 bytes  <- 由這些特徵判斷出 sda1 是安裝碟
201 heads, 19 sectors/track, 1033 cylinders
Units = cylinders of 3819 * 512 = 1955328 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1               1        1034     1973248   b Win95 FAT32

Disk /dev/sdb: 8027 MB, 8027897856 bytes <- 由8GB 判斷出 sdb 是目標碟
247 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sdb1               1           5       38254   6 FAT16
/dev/sdb2               6         135      995410  83 Linux
... 略
==============
Hostname:sh4twbox
Uptime  : 20:38:32 up 29 min,  1 users,  load average: 0.00, 0.00, 0.00
Free Mem:219 MB
IP Addr :192.168.0.11 192.168.168.168
boot from  <- 必須是空的代表外部 USB 正確開機並全部載入記憶體
last command:
root     pts/0        192.168.0.1:3369 Sun Oct 27 20:38   still logged in
==============

=== sh4twbox v0.9.2 MENU === <- 回報問題時記得要說明版本
  1) Back to Shell (default)
  2) Set Time (Sun Oct 27 20:38:32 CST 2013)
  9) Reboot
  p2) format first two partitions and install sh4twbox or other OS
  p1) Replace one partition and install sh4twbox or other OS
  h) show more choice options
============ Please Enter Number:

一般使用者安裝方式(將第一、二個分割區刪除重建為 sh4twbox 系統)
  1. p2 使用內定選項 (前題是分割區最少有2個分割區,不然可能失敗)
    1. target disk device(default:sdb) : sdb 目標碟不要填錯
    2. source file put on device or none (default:/dev/sda1) : /dev/sda1 來源分割區
    3. source file or download URL (default:auto) : 直接按Enter 即可
  2. 如果要安裝別的作業系統,建議先使用 fdisk 第2個分割區放大再做這個動作,此時前面 p2 的選項可以如下:
    1. source file put on device or none (default:/dev/sda1) : none 不需從USB copy
    2. source file or download URL (default:auto) : http://example.com/xxx.txz
  3. 安裝過程會將 LED 先切換成紅燈,裝好會再切回藍燈,如果中間有錯誤,沒有切回藍燈,請使用 gist 附上執行紀錄回報錯誤
  4. 拔掉 USB
  5. 選 9) reboot 或拔插插頭
進階使用者安裝方式(使用 p1 不格式化的選項安裝到一個分割區)
  1. 建議先使用 fdisk 分割好分割區,選 p2 安裝基本 partition
  2. 自行 format 或使用 sh4twbox 的選單 6) format 格式化 USB DOM
  3. 將 kernel 放到 FAT16/32 或是 ext3 partition(因為 UBOOTWPDA 不支援從ext4讀取 kernel)
  4. 編寫 uboot.sh,注意長度要限制在988 bytes 以下,uboot.sh 可以放在 FAT16/32 或是 ext3 (但不能放 ext4)
  5. 再使用 p1 安裝其他作業系統或是你自行備份的 root file system
  6. 別的作業系統的 /etc/rc.local 可能需要手動編一下將 ledctl.sh blue 加上去設定開機藍燈
  7. 拔掉 USB
  8. 選 9) reboot

1.5 sh4twbox 開機簡易操作

開機時會亮紫燈代表內部USB開機中,等待亮藍燈完成(視作業系統大小, sh4twbox約40秒),接著就可以用 telnet 連進去。
成功連線後輸入 sh4twbox,應該是以下字樣代表由 USB DOM 開機
boot from /dev/sda2 ext4

sh4twbox 可以使用新版 shpkg 安裝 STLinux 2.4 套件,以下簡易操作示範安裝編譯器編譯 C/C++ 程式:
shpkg -Sy
shpkg -S kernel-module shpkg-st sh4twbox-hello
cd /sh4twbox-hello
make
可參考 sh4twbox 使用手冊.

1.6 備份裝好的系統

假設你被 Windows 訓練的有良好的習慣,裝好整個系統就 Ghost 起來,下一次重裝就快了,sh4twbox 的安裝片就相當於給網樂通用的 Ghost (不過為了鼓勵學 linux, 還是用打命令)

以下使用範例假設如下:
/dev/sda1 FAT16/FAT32 放著 vmlinux.ub 及  uboot.sh
/dev/sda2 ext4 放著你編好的作業系統
/dev/sda3 ext3 你原本舊的網樂通空間

備份方式
  1. 壓住 RESET 鍵,使用外接開機片開機,開機後連進去使用 sh4twbox 確認是外部開機
  2. mount /dev/sda2 /mnt/sda2
  3. mount /dev/sda3 /mnt/sda3
  4. tar -C /mnt/sda2 tar -cpf /mnt/sda3/backup.tar # 打包成一個檔
  5. xz /mnt/sda3/backup.tar  # 壓縮這個步驟如果可以移到 PC 做會快最少10倍
  6. 產生的 backup.tar.xz 可以更名為 backup.txz 這樣就可以被 sh4twbox 安裝碟安裝了
  7. umount /dev/sda2 ; umount /dev/sda3
回存方式
  1. 壓住 RESET 鍵,使用外接開機片開機,開機後連進去使用 sh4twbox 確認是外部開機
  2. 使用 sh4twbox 的 p1 模式, 其中的 source device 輸入 /dev/sda3
  3. 當然,也可以將 backup.txz 放到區域網路上建一個 http server 讓 sh4twbox 讀取

1.7 安裝其他作業系統方式

以 debian 為例, 安裝方式參看 1.4, 看是想使用 p2 或是 p1 模式皆可,其中要填下載網址 http://forum.cse.yzu.edu.tw/wheezy-sh4/download/target.tgz ,這會下載到你打算安裝的目錄,並更名為 src.tgz (等確定可以開機完成就可以刪掉檔案)
也許目前的 debian target.tgz 仍維持原版網樂通格式,並未使用 sh4twbox 支援的 txz 格式,因此裝好後不會出現藍燈,此時可以在裝好之前先用 vi 將 /etc/rc.local 編好,然後再 reboot。大致上程序可參考動畫

使用其他作業系統和 sh4twbox 差異如下:
  1. 別的作業系統安裝及開機時間應該都是 sh4twbox 的幾倍請耐心等候。
  2. 找網樂通 ip 的方式,因為每個作業系統設定不同, 所以大概只有 ip scan 的方式是比較確定可用的,其他包括靜態 IP 及 ping hostname 方式就要參考原作業系統安裝說明
  3. 進網樂通的帳號密碼也請參考原作業系統安裝說明
  4. 雖然開機成功但是燈號維持紫燈(可能是 /etc/rc.local 邏輯沒有啟動到 led 燈號,或是該作業系統 kernel 不支援切換燈號)

2. 多重開機 uboot.sh 設定範例

# 此處的紅字 2 可以改成別的分割區,可放置不同作業系統
setenv bootargs 'console=ttyAS0,115200 rootdelay=0 root=/dev/sda2 rootfstype=ext4 rw rootflags=data=journal nwhwconf=device:eth0,hwaddr:10:08:E2:12:06:BD phyaddr:0,watchdog:5000 mem=256M bigphysarea=2048'
setenv bootcmd 'usbcfg 0; usb start; usb info; usb part; fatload usb 0:1 80000000 vmlinux.ub; bootm 80000000'

注意: 若該作業系統的 kernel 並不支援 ext4 file system, 請手動安裝到 ext3 的 file system. 並調整 uboot.sh 內容移除 rootfstype=ext4字樣 (sh4twbox 0.9 版後會裝到 ext4 的分割區, 造成無法開機)

3. 自訂txz 安裝檔(開發者適用)

  1. 將設定好可以開機的 root file system 加上 /boot 目錄, 裏面放 vmlinux.ub, uboot.sh,如果不設定sh4twbox的p2選項會自動使用 sh4twbox 的預設開機核心.
  2. 將整個 rootfs 壓縮成 (eg. tar -C /tmp/rootfs -cJf myos-<version>-<release>.txz . )
  3. 開機後設定成藍燈, 參考 sh4twbox 安裝完的系統, /etc/rc.local, 使用 /usr/bin/ledctl.sh blue 設定
  4. 如果要分享你設定好的 rootfs (限 txz 格式), 請通知站長

4. 已知問題

  1. Q: 網樂通一直紅燈
    A: 可能是自動 fdisk rescan partition table 問題, 試著再重開機一次. 如果裝的不是 sh4twbox也可能不是問題,試著直接連進去,可能是該作業系統打包者沒有適當的調整,其實還是可以用的,另外有時候是 USB 碟格式不合問題,換一支也許就可以。(如果你懂 linux fdisk, 網樂通的 UBOOT 目前只支援 512 byte 為單位的 usb 碟開機)
  2. Q: 網樂通一直紫燈
    A: 可能是燒錄 UBOOTWPDA 失敗,需使用console線檢視,或拆下 Flash 重新燒錄
  3. Q: 可以整個內部 USB 分割成一個 partition 嗎?
    A: 可。但不建議,若只使用一個 partition,只能分割成 ext3 格式,這種格式的缺點是忽然中斷電源時,可能會有存入不完整的現象,ext4改進了這些問題並提升效能。第一個 partition 設定成 FAT16/32 還有個好處,可以加速載入 kernel 的速度
  4. Q: 安裝過程出現訊息 mkfs.ext4: No such device or address while trying to determine filesystem size
    A: 可能是 fdisk 做完之後必須重開機,此時重新開機再做看看,不行的話先手動fdisk 做好兩個 partition。
  5. Q: 燒錄舊版的 sh4twbox 安裝碟如何恢復為原本的 USB 碟
    A: 在 Linux 下可以用 fdisk 搭配 sh4twbox 提供的選單。在 windows 下可以使用中文工具英文工具
  6. Q: sh4twbox 使用的 uboottwpda 如何恢復原本的 uboot
    A: 參看網頁(恢復原版uboot方式一節)
  7. Q: sh4twbox 安裝片無法安裝 xxx 作業系統
    A: 參閱「多重開機 uboot.sh 設定範例」一節,可能是該作業系統的 kernel 不支援 ext4 file system, 只要重新手動安裝到 ext3 file system 及調整 uboot.sh 即可
  8. Q: uboot 執行 fatls 可以看到檔案, 但 fatload 失敗
    A: 將該 DOS 分割區(FAT16 or FAT32)容量減少(曾試過 2GB 不行,改成 1GB 就OK)

5. 修訂歷史

  • 2013/10/30 sh4twbox 0.9.2 release
    • 自動判定使用 p2 或 p1 選項時指定的安裝碟
    • 修正使用 p2 選項,沒有安裝預設 sh4twbox kernel 問題(路徑打錯)
    • 更新 shpkg-st 版本,修正 shpkg -Ql 未顯示檔案問題
    • 預設 sh4twbox 核心恢復為之前簡易修正usb順序問題版
  • 2013/10/29 sh4twbox 0.9.1 release
    • 修正使用 p2 選項,沒有安裝 sh4twbox kernel 問題
  • 2013/10/27 sh4twbox 0.9 release
    • 更新 kernel 放棄修正 usb sda/sdb 錯亂問題(因為仍有未知不能解決情況)
    • 採用載入記憶體方式應該不再有無法連線問題
  • 2013/10/26 sh4twbox 0.8.1 release
    • 更新 kernel 再一次修正 usb sda/sdb 錯亂問題
    • 更新 shpkg 提升 shpkg 運作速度
  • 2013/10/25 sh4twbox 0.8 release
    • sh4twbox 安裝時自動刪去 rc.local 最後一行 exit 0
    • 放入 shpkg
  • 2013/10/21 sh4twbox 0.7.3 release
    • wget 抓檔不暫存直接解壓縮以節省目標分割區空間
    • 修正輸入參數指定 srcdev 為 none 時不會 unmount disk.
  • 2013/10/20 sh4twbox 0.7.2 release
    • 支援使用 target.tgz 格式安裝( 內容以 /mnt_system 開始)
    • 增加 debian 安裝範例
  • 2013/10/19 sh4twbox 0.7.1 release
    • 加強 fdisk 指令防呆(但仍有可能會出問題,所以乾脆取消全自動)
    • 使用 STLinux 2.4 dosfstool 取代 busybox 以免 FAT16/32 partition 有誤
  • 2013/10/06 sh4twbox 0.7 release

沒有留言: