2013/01/07

學習製作網樂通的檔案系統(rootfs)

這篇寫的太好了, 所以打算重新學習一下, 嘗試使用busybox mdev 建立 devices
開發系統OS: STLinux 2.3 on Debian 6.0.6 on ArchLinux
  • sh4-linux-gcc-4.2.4
目標系統(壹電視網樂通機上盒):
製作方式:
  1. 編譯 busybox
  2. 編譯 kernel
  3. 準備 rootfs、dev檔案 及 STLinux 以編譯好的工具:  參考: mk_minifs.sh
    1. 可調整 EXE 變數增加STlinux 已編譯套件(bash ntpdate ssh ssh-keygen sshd)
  4. 準備設定檔(可參考/opt/STM/STLinux-2.3/devkit/sh4/target/)
    1. etc/inittab # 設定執行 etc/init.d/rcS 及 console 登入
    2. etc/init.d/rcS # 主要啟動 script, 設定包含 network, ntpdate, telnetd,syslogd,...
    3. etc/resolv.conf # 如果不使用動態ip,在這個檔設定 dns
    4. root/run_a18.sh # 空檔, 相容於 NextVOD 的 loader.exe
    5. etc/passwd, etc/shadow # 允許 ssh/telnet 設定密碼
    6. etc/sysctl.conf # 允許 bridge ip forward 功能
    7. etc/default/ntpdate # 設定 ntp time servers
    8. etc/rc.local # 如果有自己要設定的啟動設定,建議放在這裡
    9. etc/profile # 自訂 shell prompt
問題及可能解(有錯還請指正):
  1. 問:不知道console 設備編號怎麼看 drivers/serial/clps711x.c,sn_console.c
    1. 解:似乎不用特別設,推測可能是 u-boot 已經轉成 console 再交給vmlinux.ub
  2. 問: can't open /dev/ttyAS0: No such file or directory
    1. 解: inittab 的 ttyAS0 改成 console
  3. 問:telnetd -l /bin/sh 沒有執行  /etc/profile
    1. 解: 改用需要輸入密碼的 telnetd
  4. 問:ntpdate Error : Servname not supported for ai_socktype
    1. 解: 設定 /etc/services
  5. 問:ping www.twpda.com 無法解議成 ip #  讓 busybox 可使用 udhcpc
    1. 解: 設定 etc/nsswitch.conf usr/share/udhcpc/default.script 及 lib/libnss*
  6. 問:etc/init.d/sshd start, Missing privilege separation directory
    1. 解: 缺少 /var//empty 目錄
  7. 問:who, last 失效
    1. 解: 啟動 telnetd 前 touch /var/log/wtmp
  8. 問:找出檔案整體套件所需的檔案
    1. 解: rpm -qf /opt/STM/STLinux-2.3/devkit/sh4/target/etc/passwd
  9. 問:telnetd root password 無法認證
    1. 解: /etc/passwd 的 root 欄位第二攔打 x
  10. 問:telnetd 如何限制連進的 telnet 次數
    1. 解:  echo pts/0 > /etc/securetty  即限制只有一個可以連線
  11. 問:syslogd 沒有產生訊息
    1. 解: 啟動前設定目錄 /var/log/
  12. 問:無法使用telnetd
    1. mknod of dev/null & dev/console

沒有留言: