sh4twbox 使用手冊
網樂通變身計畫
壹、簡介
貳、安裝
參、sh4twbox OS 使用方式
一、初次使用設定
二、安裝套件
三、其他使用問題
四、進階使用
五、最小安裝套件介紹
肆、Arch Linux(完整功能Linux)
一、安裝 Arch Linux
二、安裝完初次設定
三、自行編譯套件
伍、進階Linux設定
一、設定虛擬記憶體
陸、附錄
一、版本異動說明
壹、簡介
壹電視停止營運後網樂通變成沒用的垃圾, 其實它可以改成省電的 Linux 主機, 也就是本站的 sh4twbox. 這名字是下列三個原因組成
- 網樂通內部的核心(CPU)架構稱為 sh4
- 網樂通是壹電視停止網路電視營運後給台灣的免費禮物( Taiwan 網域 .tw)
- 網樂通外型就是個盒子(box)
sh4twbox 主要有下列特色
- 記憶體多: 自編的 kernel 支援 256M 記憶體 (原始網樂通僅 128M), 編譯方式如連結
- 可用套件多:
- 安裝 Arch Linux: 以pacman套件管理,可編譯官方套件10849套、社群套件41708套
- 最小安裝: 以較陽春的 shpkg 套件管理, 支援自編套件及引入第三方編輯套件,已有現成套件9000套以上(包含已測試成功的 transmission-cli, squid, openvpn, iptraf... 等)
- 開機對時: 網樂通連上網路後, 自動設為台北時區
- 架構精簡: 僅安裝必要套件, 開機程序精簡易於理解學習, 可將自定啟動程序放在 /etc/rc.local
- Arch Linux: /etc/inittab, /etc/rc.sysinit, /etc/conf.d/, /etc/rc.d/
- 最小安裝: /etc/inittab, /etc/init.d/rcS
- 具有 system log, 易於除錯
- 已內建 加強版busybox bash ntpdate ssh ssh-keygen sshd scp tune2fs fdisk fossil 若要移除先用 shpkg 安裝再移除即可.
- 可啟動 sshd(使用較省資源的 dropbear-scp套件) 只要使用 scp 或是 winscp 即可在遠端 copy/edit 網樂通內部檔案
誠徵自願者幫忙編寫文件、測試及開發學習, 請洽 www.twpda.com
推薦:
貳、安裝
所謂最小安裝的系統只包含 kernel + busybox + 開機必要套件, 較省系統資源,安裝完之後, 建議改裝為 Arch Linux, 可使用較多 Linux 功能.
安裝前準備:(免拆機)
- 迴紋針: 用來按 RESET 孔
- USB 隨身碟: 用來配置安裝碟, 必須是 512 byte 為存取單位的.(一些舊型的隨身碟是2048bytes為存取單位, 此時網樂通的開機BIOS-U-BOOT, 無法使用它開機, 熟 Linux 使用者可以運用 fdisk -l 檢查)
- 連線程式: 用來與網樂通連線
- 以 telnet 連線較省資源(v0.4 版以後僅預裝 telnet)
- 以安全模式連到網樂通。Linux 使用 ssh; Windows 用 pietty 或 putty
- 寬頻分享器(選項): 將網樂通和PC都插在寬頻分享器可以運用寬頻分享器的DHCP簡化設定。
- 解 xz 格式壓縮軟體
- Linux: 7z x sh4twbox-<version>.7z
- Mac: The Unarchiver 或是另外裝 xz
- Windows: Windows 可以用 7-zip解
最新版 sh4twbox 0.9.2 安裝方式更簡單了,參考連結.
下載網址:http://code.google.com/p/sh4twbox/ 歡迎 mirror site, 下載完的升級檔案請以檔案 list.md5 檢查過後再使用, 以避免下載到檔案上傳中的版本
問題回報: http://code.google.com/p/sh4twbox/issues/list
臉書討論區 https://www.facebook.com/groups/477359555618518
參、sh4twbox OS 使用方式
一、初次使用設定
- 安全性設定
- passwd # 更換 root 密碼
- ping g.cn # 確認網路暢通 , 按 ctrl-c 中斷
- 若 ping 查不到 ip address, 或是 shpkg 找不到 googlecode 網站,有可能遇到域名挾持 請自行在 /etc/resolv.conf 加上
nameserver 168.95.1.1 # hinet 通常沒問題放前面
nameserver 8.8.8.8 # google dns 有可能被污染放後面 - 也可以設定固定 IP避免DHCP定期改動 /etc/resolv.conf 問題 (將 /etc/init.d/staticip.sample 編寫後改成 /etc/init.d/staticip)
- adduser <xxx> # 建立一般使用者, 平常盡量使用一般使用者登入
- chmod 755 /home/<xxx> # 修正 home directory 權限,若要更具安全性設成 700 也可(TODO)
- 關閉不需要的 services (檢查 /etc/init.d/*, 將不需要的 rename 即可)
- 例如: busybox 提供的 ftpd 不需密碼可登入,以下列指令關閉
- ps -ef | grep ftpd ; kill <pid> 停掉程式
- mv /etc/init.d/ftpd /etc/init.d/ftpd.old # 開機不啟動
- 安裝 nano 編輯器(如果會使用 vi 略過此節)
- shpkg -Sy
- shpkg -Sn nano st24/stlinux24-sh4-ncurses st24/stlinux24-sh4-ncurses-term
- shpkg -Sn st24/stlinux24-sh4-ncurses-base
- 以下指令列出 vi 代表編輯, 若不會使用 vi 編輯器可以改用 nano 替代
- 套件相關
- 系統升級, 網樂通 0.5.1~0.6.2 版, 不提供安裝碟, 只要透過以下步驟就可以將安裝碟或是已安裝系統更新
- 如果不是第一次安裝要保留目前系統設定, 可參考此篇
- shpkg -Syu sh4twbox-kernel sh4twbox-init # 更新到系統到最新套件
- 這動作有時因為google網站不穩定或是你的 DNS 設定問題會失敗, 請重新看前面 resolv.conf 設定,或隔一陣子再試, 或手動到網站抓取
- 這網址不能連是正常的 http://sh4twbox.googlecode.com/list (因為 google設定了權限管制)
- shpkg -Syy # 再強迫更新一次套件列表(因為原安裝碟沒有相依性列表)
- shpkg -E # 檢查一下是否有相依性套件可以裝
- sh4twbox # 選取選項Upgrade, (記得升級sh4twbox-init 到 0.6.2以上)
- 避免使用 shpkg -Syu 時自動升級 kernel 及系統檔案覆蓋到檔案
- rm -rf /var/lib/shpkg/local/sh4twbox-kernel*
- rm -rf /var/lib/shpkg/local/sh4twbox-init*
- sync ; reboot # 更換 kernel 及系統開機script 後重新開機
- shpkg -Q 看目前已安裝套件
- shpkg -Sl | more # 更新套件列表, 並看一下目前提供的所有套件
- 例如: 不想用 telnet 改用 ssh 較安全(dropbear 為較省資源之 sshd)
- shpkg -Ss dropbear # 發現 sh4twbox 有提供 dropbear-scp 套件
- shpkg -S dropbear-scp
- shpkg -E # 確定安裝之套件的執行檔都找的到動態連結函式庫(.so)
- /etc/init.d/dropbear start # 啟動 ssh deaman, 應該可以連進去了
- vi /etc/rc.local # 若要開機自動啟動, 將前面那行, 手動加入
- 個人化設定
- echo 主機名 > /etc/hostname # 設定主機名, 重開機(或手動打 hostname <xxx>)後生效
- vi /etc/rc.local # 自訂開機打算執行的指令
- 暫時關閉沒插開機碟時RESET閃三下會自動回存備份蓋掉 sda2模式(初學者可省略此段)
- mount /dev/sda1 /mnt/sda1
- vi /mnt/sda1/root/run_a18.sh # 將最後一行的 loader.exe 前面加上 # 註解掉
- 以後需要修復請務必插上救援碟再按閃三下模式, 不然系統會切成 sda1 開機, 目前恢復 sda2 開機的辦法只有將 sda2 打包放入 sda1 的 target.tgz
- 若不小心沒插救援碟就按閃三下模式, 請將前面 loader.exe 註解取消, 再執行救援碟安裝吧!
二、安裝套件
使用套件心法
- shpkg -St <xxx> 下載前先確定不會衝突
- shpkg -Ql <xxx> | grep bin 看有哪些執行指令
- shpkg -Ql <xxx> | grep etc 看有哪些設定檔
- shpkg -Ql <xxx> | grep doc 看有哪些文件, 本站封裝套件為省空間常省略
三、其他使用問題
Q: sh4twbox 0.5~0.6.2 如何使用 ntfs 格式 usb?
A: shpkg -S fusemodule ntfs-3g ; depmod
Q: sh4twbox 0.5~0.6.2 移除 bash 後造成 shpkg 無法運作
A: 因為移除 bash 套件會將 /bin/sh 同時移除, 而 shpkg 必須要有 bash 才能運作
ln -sf busybox /bin/sh # 先修復 sh
rpm -i /var/cache/shpkg/pkg/stlinux23-sh-bash-3.0-14.sh4.rpm # 重裝 cache 套件
四、進階使用
- 系統備份還原, 詳見網頁說明
- 系統不能開機時救援方式
- 插入救援碟,以「USB開機模式」RESET, 就可以進去調整
mount /dev/sda2 /mnt/sda2 # 在 /mnt/sda2 就是原本的開機區 - 如果真的不會手動修, 那麼就使用 sh4twbox 在選單選 install force overwrite
- 修理完成後, 拔電源, 拔USB, 插電源即可, 千萬不要再按 RESET
- 備份調整好的系統: 使用救援碟開機後選取 pack 選項即可
- 使用 shpkg -E 時, 列出之 .so 列表不一定要裝
- 若不需要該執行檔(例如distccmon-gnome)則刪除該執行檔,下次就不會檢查出來
- 若已裝有類似套件直接建立也許 .so 連結到新版也能執行
- 備份 kernel, 避免升級 kernel 失敗
- cd / ; cp vmlinux.ub.<kernel-name> vmlinux.ub.yyyymmdd
- 最重要的是根目錄的 vmlinux.ub 看它指到哪個 kernel, 就是使用哪個 kernel 開機(原廠是直接用 vmlinux.ub, sh4twbox 是以不同名字區分 kernel 名稱
- 若升級 kernel 失敗, 可用救援碟開機重新改回來即可
- 救援碟最多佔用 32MB, 所以只要保留第一個 partition 分區給救援碟用, 設定第二個分區自己使用, 以 dd 覆蓋救援碟時 skip 掉最前面的 512B 即可, 或是先備份前面的512B, 再回存
- 解開 sh4twbox 安裝碟的封裝
sh4twbox 安裝碟是包含開機磁區(partition table)的格式,只有第一個分割區有效,其他分割區可以手動刪去,自己調整成 ext3 格式方便作別的用途, 以下列指令在 linux 可解開來比較版本差異, kpartx 指令在 multipath-tools 套件
# xz -d <file>
# modprobe loop
# kpartx -a -v <file>
add map loop0p1 (254:0): 0 47103 linear /dev/loop0 1
device-mapper: resume ioctl on loop0p2 failed: Invalid argument
create/reload failed on loop0p2
add map loop0p2 (0:0): 0 4102144 linear /dev/loop0 65536
# mkdir -p /tmp/mnt
# mount /dev/mapper/loop0p1 /tmp/mnt # 對照前面 create 指令
# ls /tmp/mnt
bin linuxrc proc usr
dev lost+found root var
etc mnt sbin vmlinux.ub
home mnt_system sys vmlinux.ub.256M_swap_netfilter_bridge_cdc_ether
lib opt tmp
五、最小安裝套件介紹
此處僅列出大致分類,以 shpkg 安裝套件時其相依套件庫也必須安裝, 可查詢 wiki, 其他未描述的套件請使用者幫忙更新 wiki. 自行找出相依性套件的方法,詳見網頁說明
- 網站相關: stlinux24-sh4-thttpd, stlinux24-sh4-vsftpd
- 工具相關:
- BT下載: transmission-cli
- 編輯器: nano
- 安裝 gcc
- perl: stlinux24-sh4-microperl
- python: stlinux24-sh4-python
肆、Arch Linux(完整功能Linux)
Arch Linux 雖然使用和精簡安裝相同的 kernel 及 busybox, 但是, 所有的指令已經盡量改用 Arch Linux 指令, (例如: ps, ping,...)雖然會較占空間及CPU, 但是可以有較完整 linux.
一、安裝 Arch Linux
- 方法一、下載tgz後 放入開機碟、以 sh4twbox 0.9.2 版開機後選取 p2 或 p1 自動安裝
- 方法二、以 sh4twbox 0.9.2 版開機後選取 p2 或 p1
- source file put on device or none (default:/dev/sdb1) : none 不需從USB copy
- source file or download URL (default:auto) : 填入下載網址
- 以 putty, pietty 或 ssh 連入網樂通 (帳號: root, 密碼是本站名稱(twpda)打兩次(共10個字元))
- 修正 20130416 版本的問題
- 修正無法t:8000 : Connection timed out 問題
- vi /etc/pacman.conf # 編輯
- Server = http://sh4twbox.googlecode.com/files (#拿掉)
- # Server = http://t:8000/sh4twbox (此行刪掉, 或加 # 註解)
- 修正 pacman -Syu 時, package-query 舊版造成無法升級問題
- pacman -Rsn yaourt # 暫先移除
- pacman -Syu # 再升級
- pacman -S yaourt # 再重裝
手動安裝(此段文件暫時保留為 sh4twbox 0.5~0.6.2 使用者升級方法, 可參考 sh4twbox-hello 套件 inst_arch.sh 了解學習如何安裝配置未來自己的套件):
- 以自動安裝碟/救援碟開機, 直接用 sh4twbox 0.5.1 或 0.6.2 都可以
- rm /etc/rc.local /target.tgz # 變成救援碟
- shpkg -S hello (至少 1-11 版以上)
- 編輯 /etc/passwd 將 root 的 shell 換成 ash (避免更新 bash到 4.0 後無法開機)
- shpkg -S bash (至少 4.0 版以上)
- [選項] 以 sh4twbox 選項 format partition 將 /dev/sda2 清乾淨
- 清出最少 12.6M 空間
shpkg -R nano stlinux23-sh4-ncurses stlinux23-sh4-ncurses-base
rm /target.tgz /vmlinux.ub.256M_swap_netfilter_bridge_cdc_ether
rm /usr/lib/*.a
shpkg -R nano
vi /etc/passwd # let root use ash instead of sh
shpkg -S bash
# clean for more space
shpkg -Scc
df -h # make sure there is 12.6M at least.
shpkg -S pacman
cd /hello
./inst_arch.sh mount # 掛載內建USB
./inst_arch.sh inst # 安裝, 若中途下載失敗,可重做續傳到完成
./inst_arch.sh inst2 # 以 chroot 方式再重裝一遍 ,若中途下載失敗,可重做續傳到完成
# 這步驟可能會有locale-gen 執行時, sed 找不到的訊息, 可忽略
./inst_arch.sh inst3 # 測試啟動 sshd, 設定密碼等, 遇到 Y/N 就打 y 再按 Enter
chroot /mnt/sda2 /bin/bash # 以 chroot 測試看看
chroot /mnt/sda2 /etc/rc.d/sshd stop # 停用 sshd
./inst_arch.sh umount #卸載內建USB
sync ; halt # 寫入後將 CPU 停住
拔除 USB, 拔插頭重開機
二、安裝完初次設定
安裝好之後可參考 Arch Linux 官方網站 wiki, 建議看英文版或是大陸版其次是台灣版
https://wiki.archlinux.org/index.php/Beginners%27_Guide#Post-installation
簡述指令如 下:
- 新增使用者 useradd -m <id>
- 改密碼 passwd <id>
- 調整啟動設定(包含網路連線方式) vi /etc/rc.local, 不會用 vi 可改用 nano
- 套件管理 pacman -S <package_name>
- 服務管理 因為缺高手升級 kernel , 只能使用傳統的 sysvinit, 無法使用 systemd,概述如下
- 編輯 /etc/rc.conf
- 設定檔放 /etc/conf.d/*
- 重新啟動服務 /etc/rc.d/<server> restart
- 停止服務 /etc/rc.d/<server> stop
- 自行設定的服務 /etc/rc.local
三、自行編譯套件
動手前先必讀
伍、進階Linux設定
一、設定虛擬記憶體
一般來說盡量不要使用虛擬記憶體, 因為很有可能會拖慢整個系統速度, 若使用虛擬記憶體最好是分割partition 專用, 此處以簡單的開檔方式, 增加 500MB 為例, 指令如下,
dd if=/dev/zero bs=1M count=500 of=/swapfile \
&& mkswap /swapfile \
&& swapon /swapfile \
&& free
陸、附錄
一、版本異動說明
v0.1 2013/01/12 Release
v0.2 2013/01/14 Release
- chmod u+s /bin/busybox # 讓 su 可運作
- chmod a+rw /dev/null # 讓 scp 可運作
- /root/menu 增加 set time 功能, 將 inst() 忽略檔案已存在複寫失敗問題
v0.3 2013/01/17 Release
- 升級採用 tar 備份 etc,root 目錄方式, 不需重灌系統
- chmod a+rw /dev/null # 讓 scp 可運作
- /root/menu 將 mkdevs() 忽略檔案已存在創建失敗問題
- 更換新版 shpkg
v0.4.6 2013/01/24 Release
- 支援 9000 個以上套件(shpkg-st 130123-1)
- 原0.3的自動碟及安裝碟整合整合成一片開機碟,改成雙分割區,Windows 使用者可以調整第二分割區的設定檔是否自動安裝
- 改以 busybox telnet 連線進入, 開機程序改以 busybox sh 執行, 避免 bash/ssh 因為置換錯誤的相依性套件造成故障無法開機
- 重新調整 /etc/init.d/rcS 啟動程序, 只要 /etc/init.d/xxx 不存在就不會啟動
- 增加 dhcp, staticip, bridge 等網路選項
- 啟動 busybox 內建的 ntpd, ftpd, telnetd, crond
- 增加第二分割區fat32 的 sh4twbox 目錄可設定 staticip, rc.local, target.tgz
- 內建 nano 編輯器
- 移除 ssh, stlinux23-sh4-ntp
- 保留shpkg 安裝紀錄(shpkg -Q) 可查詢
v0.5.0 2013/01/24 Release
v0.5.1 2013/01/25 Release
- 修正 ntpd 在 dhcp 環境失效問題(sleep 10 seconds before launch)
v0.6.2 2013/01/28 Release
- 支援搜尋相依性軟體套件 (shpkg -E)
- 支援免重裝升級 (sh4twbox-init,sh4twbox-kernel)
- 支援 dropbear 自動啟動
- 修正: /dev/fuse, /etc/shells, /dev/* 屬性(/etc/mdev.conf)
- 修改提示符號, 例如: 14:13:05[0]user@host ~/abs/local/pacman $ 其中 [0]表示之前指令回傳錯誤代碼為 0 (成功)
2013/04 Arch Linux 安裝方式推出 2013/04
v 0.9.2 2013/10/30 Release
- 支援 DOM 毀損仍能安裝修復
- 使用 STLinux 2.4 為基礎套件(STLinux 2.3 原廠已經不更新)
- 使用新版 shpkg 為基礎套件管理只需 busybox 即可運作