打算直接將 debian 裝到網樂通裏面記憶卡第四個分區(/dev/sda4).
分成幾個步驟:
- 從 console 改由 /bin/sh 開機(或是已經改機連入 telnet)
- 確定網樂通可以連到 internet
- 替換 busybox, 讓他可以支援 ar 指令
- 安裝 debootstrap
- 安裝 debian
分別敘述如下:
2.確定網樂通可以連到 internet
我的接法比較複雜,筆記型電腦(簡稱NB), 網樂通簡稱(nextvod):
nextvod, 設固定ip
- console 線連到 NB 的 USB port
- ethernet cable 線連到 NB 的 ethernet 插槽
- 設定固定 ip , 以 192.168.137.2 為例
- /sbin/ifconfig eth0 192.168.137.2 netmask 255.255.255.0 up
- /sbin/route add default gw 192.168.137.1
- 設定 /etc/resolv.conf
- nameserver 168.95.1.1
- nameserver 8.8.8.8
- /usr/sbin/udhcpc &
- ip addr add 192.168.137.1/24 broadcast + dev eth0
- ip link set eth0 up
- echo 1 > /proc/sys/net/ipv4/ip_forward
- iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
- iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
- iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
此時應該在 nextvod 可以用 ping www.twpda.com 看到 ip
3. 替換 busybox, 讓他可以支援 ar 指令
在網樂通裡抓取我編譯好的busybox v1.20.2,並設定好 ar symbolic link:
- gzip -d busybox.sh4.1.20.2.gz
- chmod +x busybox.sh4.1.20.2
- mv busybox.sh4.1.20.2 /bin
- ln -s /bin/busybox.sh4.1.20.2 /usr/bin/ar
4. 安裝 debootstrap 所需環境
- cd /tmp
- wget http://ftp.tw.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.26+squeeze1_all.deb
- ar x debootstrap_1.0.26+squeeze1_all.deb
- tar -C/ -xzf data.tar.gz
只安裝 debootstrap 還需要 perl 或是 pkgdetail, 此處放上 pkgdetail 安裝方式
- 在cross-compile環境先編好 pkgdetails.c,下載我編好的附件放到網樂通裏
- tar -C/ -xzf pkgdetails.sh4.tgz
- 如果沒裝會有下列訊息: E: No pkgdetails available; either install perl, or build pkgdetails.c from source
另一種方法,使用別人編譯好的 cdeboostrap 失敗, 一執行就產生 kernel too old 訊息
- wget http://debian.nctu.edu.tw/debian-ports/pool-sh4/main/c/cdebootstrap/cdebootstrap-static_0.5.9_sh4.deb
- /usr/bin/cdebootstrap-static --arch=sh4 squeeze /mnt/sda4/ http://www.si-linux.co.jp/pub/debian-sh/squeeze-sh4/
5. 安裝 debian
一步到位安裝方式(失敗):
- mkdir -p /mnt/sda4 ; mount /dev/sda4 /mnt/sda4 # 此處假設安裝到 /dev/sda4
- 以下指令試過 t=squeeze 因為 kernel 版本不匹配無法 chroot
- t=lenny ; debootstrap --arch=sh4 $t /mnt/sda4/ http://www.si-linux.co.jp/pub/debian-sh/$t-sh4/
分兩階段安裝方式(失敗,參考: Keung Liang 文件):
- 先在 PC 端準備好 stage1(試過直接用 ArchLinux 的 debootstrap, 但是缺乏舊版lenny的pgpkey,無法安裝,改由之前製作的 chroot stlinux 2.3 環境製作),指令如下:
- sudo dpkg --install debootstrap_1.0.26+squeeze1_all.deb
- sudo debootstrap --arch=sh4 --foreign --include aptitude,vim,openssh-server,gcc,python lenny /opt/rootfs/ http://www.si-linux.co.jp/pub/debian-sh/lenny-sh4/
- cd /opt/rootfs ; sudo tar cJf ../debian_sh4_lenny_stage1.txz
- 將檔案傳到網樂通
- 在網樂通裏面進行第2步安裝
- cd /mnt/sda4 ; tar xf debian_sh4_lenny_stage1.txz
- chroot .
- mount proc /proc -t proc
- mkdir -p /dev/pts
- mount devpts /dev/pts -t devpts
- mount sysfs /sys -t sysfs
- /debootstrap/debootstrap --second-stage
不管哪種方法,都在這行失敗
I: Unpacking whiptail...
W: Failure while installing base packages. This will be re-attempted up to five times.
檢查 /debootstrap/debootstrap.log
忽略後,繼續設定
apt-get install localepurge # 設定 en, en_US.UTF-8, zh, zh_TW.UTF-8
支援 NTFS:
不過這個 debian repository 已經很舊了,沒有什麼套件.
dpkg: regarding .../rsyslog_3.18.6-4_sh4.deb containing rsyslog:
rsyslog conflicts with linux-kernel-log-daemon
klogd provides linux-kernel-log-daemon and is present and installed.
dpkg: error processing /var/cache/apt/archives/ rsyslog_3.18.6-4_sh4.deb (--unpack):
conflicting packages - not installing rsyslog
忽略後,繼續設定
cd
/sbin
mv
start-stop-daemon start-stop-daemon.FAKE
mv
start-stop-daemon.REAL start-stop-daemon
編輯 /etc/apt/sources.list
deb
http://www.si-linux.co.jp/pub/debian-sh/lenny-sh4/ lenny main contrib
non-free
#deb
http://ftp.debian-ports.org/debian sid main
deb-src
http://ftp.debian.org/debian/ lenny main contrib non-free
更新套件(lenny 已經被debian 官方宣告停止支援,所以會有些失敗訊息)
apt-get
update
dpkg
--configure -a
locale語言顯示中文:
aptitude
install locales
dpkg-reconfigure
locales # 設定 glibc 支援語系
勾選 en_US.UTF-8, zh_TW.big5, zh_TW.UTF-8
Default
locale for the system environment: en_US.UTF-8(預設也可選zh_TW.UTF-8)
檢查 locale
-a
刪去多餘的語系檔案
刪去多餘的語系檔案
apt-get install localepurge # 設定 en, en_US.UTF-8, zh, zh_TW.UTF-8
localepurge
apt-get clean # 刪除套件安裝檔
ntpdate校正時間:
apt-get
install ntpdate
ntpdate
time.stdtime.gov.tw
設定開機自動對時(在未chroot 環境):
vi
/etc/init.d/rcSBB
/usr/sbin/chroot
/mnt/usb/rootfs /bin/sh -c "/usr/sbin/ntpdate
time.stdtime.gov.tw"
顯示台灣時區(差8小時校正):
cp
/mnt/usb/rootfs/usr/share/zoneinfo/Asia/Taipei /etc/localtime
cp
/mnt/usb/rootfs/usr/share/zoneinfo/Asia/Taipei
/mnt/usb/rootfs/etc/localtime
insmod
/root/modules/fuse.ko
/bin/sh4-linux-ntfs-3g
-o iocharset=utf8 /dev/sdb1/root/Downloads
不過這個 debian repository 已經很舊了,沒有什麼套件.
沒有留言:
張貼留言