2013年12月9日 星期一

新編譯網樂通核心VirtualBox 映像檔-Cent OS 6.4 with STLinux 2.4

2014.07.06 增加加入.vbox 時,找不到 DVD Image 的解決方法。

開始用 GitHub 管理修改的 Kernel 原始碼後,
為了讓程式碼可以隨時跟上最新修改,
把 Cross Compile 用的環境也做了大修改,

清掉許多不需要的STLinux套件,
再更新到最新版 STLinux 2.4 套件,
整個映像檔(內含解開的 kernel source)只有約 2GB,
壓縮後約450MB。
http://sync.hamicloud.net/_oops/rexct/mha

找不到 DVD Image 的解決方法:
以文字編輯軟體開啟解壓縮出的 CentOS_64\CentOS_64.vbox ,
將 <DVDImages> 與 </DVDImages> 之間(15行到22行)的 <Image .... > 刪除。

奇怪,之前在Windows下測試時好好的。

環境:

Cent OS 6.4
STLinux 2.4 (2013/12/08)

預設模擬 4 CPU ,
SSH port 對應到Host 的 127.0.0.1 port: 21522
用來以 SSH 控制和 sftp 傳檔案。
縮簡virtualbox 映像檔需要的 zerofree 在 /usr/sbin/zerofree

使用方法:

user ID:sh4twbox
密碼:sh4twbox
sudo 不須輸入密碼。
 root密碼:sh4twbox
在 /home/sh4twbox 執行
$ ./start.sh
會出現功能選單。

Script 同樣是以 GitHub 來管理,
https://github.com/rexct/script2compile_nextvod
檔案全放在 /home/sh4twbox/script2compile_nextvod
包含編 kernel 時用到的 .config 檔案 kernel.config

在 /home/sh4twbox 下有個連結檔 start.sh,
連結到 /home/sh4twbox/script2compile_nextvod/start.sh。

功能選單內容:


1. Update script file
更新 script2compile_nextvod 內的 script,
以後就只透過GitHub來新增 script 功能和修改系統。

2. Compile kernel
執行小修改的make_kernel.sh  ,
和之前相較,
多了自動取得CPU數目,
及編譯參數:CFLAGS="-m4a -pipe -O3 -ffast-math"
同樣一直按 Enter  就會自動編好 vmlinux.ub 、modules 和複製 Headers 。
 
3. Update kernel source code from github 
目前預設從 https://github.com/rexct/kernel-pdk7105 更新。

4.~5. 目前未完成

6. Clean code
會執行 script2compile_nextvod/clean.sh,
(1) Clean kernel source:
會清除 compiler 所產生的所有檔案。
(2) Clean Kernel source:
除了清除 compiler 產生的檔案,
還會清除 .config,
準備上傳到 GitHub 。

7. Git Tool
方便用在上傳變更到 GitHub 的項目。

內含的 kernel source code 和 .config 特別的功能:

1. reset button 作為 platform device,可用於從 suspend 喚醒。
2. LED 作為 platform device,可用不同的 LED Trigger。
3. 驅動內建音效從 AV端子輸出。 

內建音效如同之前最底部的推測,
原本 Sound Card 中的 STx7105 項目無法編譯,
加入了兩個 fdma 的 firmware 後可以編譯,
就能驅動內建音效輸出。

清理 STlinux 套件是先
# stmyum erase stlinux24-sh4-*
 
但是相依性會連以下三個也移除 
stlinux24-cross-sh4-g++                    i386   4.3.4-63     installed  24 M
stlinux24-cross-sh4-gcc                    i386   4.3.4-63     installed  31 M
stlinux24-cross-sh4-protoize               i386   4.3.4-63     installed 336 k

所以在更新到最新版後,
把上面三個手動安裝就可以恢復編譯 kernel 的環境。

另外原本有配置 1GB 的 swap 分割區,
用以下方式調整 LVM 分割區大小:
查看目前狀態 
# lvdisplay 
/dev/mapper/VolGroup-lv_swap 和 /dev/VolGroup/lv_swap 是指同一個邏輯分割
卸載 /etc/fstab 中列出的所有 swap 分割區
# swapoff -a 
縮到最小允許的4MB,沒這個分割會無法開機 
# lvresize --size 4M /dev/VolGroup/lv_swap
全部寫入 0,才能用 vboxmanage 縮小映像檔大小
# dd if=/dev/zero of=/dev/mapper/VolGroup-lv_swap bs=1M
重建 swap 分割區資料
# mkswap /dev/mapper/VolGroup-lv_swap

手動掛載 swap
# swapon /dev/mapper/VolGroup-lv_swap
顯示目前 swap 狀態
# swapon -s
 
查看目前未配置容量 
# vgdisplay 
擴大 root 分割大小 1020MB
# lvresize --size +1020M /dev/VolGroup/lv_root
擴大 ext檔案系統到整個分割大小
# resize2fs /dev/VolGroup/lv_root
 
另外就如之前測試的,
更新到 STLinux 2.4 最新版套件後,
編譯時間會變長,
Kernel 在PHP 的 Benchmark 測試也會變慢一點。
 
 

16 則留言:

  1. 您提供的這個Cross Compiler環境很好,
    但有個問題,可以請您用「匯出應用裝置」把它匯出成ovf檔案嗎?
    因為整個目錄,其實沒辦法直接匯入到VirtualBox當中。

    回覆刪除
    回覆
    1. 可以直接加入到VitrualBox中。
      請在VirtualBox 主視窗選單列選「機器(M)/加入(A) Ctrl+A」
      選擇解壓縮出的資料夾中的.vbox檔案就可以直接加入。
      這個方法有在 Linux版本和 Windows 版本上測試過。

      沒包成ovf的原因是從網路上下載後,
      解壓縮出ovf還要再另外匯入成虛擬機器映像檔,
      需要將近多一倍的使用空間。

      如果有什麼地方無法直接加入映像檔的麻煩請再通知我。

      刪除
    2. 作者已經移除這則留言。

      刪除
    3. 可以參考在 網樂通改機俱樂部 有人是用p910nd作印表機伺服器
      https://www.facebook.com/groups/477359555618518/permalink/626626180691854/
      在俱樂部內搜尋印表機還有其他相關討論。

      刪除
    4. .vbox 沒辦法加進去,virtualbox說沒有對應的 iso
      不過新增一個機器直接掛上硬碟開PAE就可以了,也不需要弄.vbox

      刪除
    5. 我家的印表機是HP的事務機,
      HP在Linux上是透過HPLIP來列印和掃描,
      HPLIP是depend在cups和sane......
      HPLIP的tool是python開發的.......
      因此無法簡單的用p910nd來解決。

      另外,針對kernel中USB Printer部份,
      先前是我手誤直接在kernel目錄下make menuconfig,
      造成sh4 config錯亂,
      問題已經排除,所以我將回覆刪除了!
      還是感謝版主的回覆。

      刪除
    6. 如果有出現需要iso可能是我在使用CentOS rescue CD 縮小映像檔時忘了移除了,
      我之後再檢查看看是不是這個情況,
      應該也不影響載入才是。

      刪除
  2. 您好,您提供的這個Cross Compiler環境我利用過年研究了,
    目前正在順利使用中,
    除了CentOS我不習慣外(我習慣操作Debian/Ubuntu系列),
    開發環境相當不錯,開發起來相當的方便。
    你能夠整理提供這樣的開發環境,非常感謝!

    回覆刪除
  3. 另外,之後我想在我的blog上po網樂通開發相關的文章,
    其中針對Cross Compiler的環境,我想直接引用你這一篇,
    是否方便提供給我引用?
    我會使用的blog是:
    http://ycfu.blog.mypc.tw/

    回覆刪除
    回覆
    1. 非常高興寫的文章對你有幫助,
      歡迎引用有需要的文章,
      只要在參考資料或引用來源加上連結就可以了。

      刪除
  4. 請問要怎樣才能用 pietty ssh到 VirtualBox 因為我在 VirtualBox 內打ifconfig都抓不到網卡 只有lo介面 沒有eth0

    回覆刪除
    回覆
    1. 請問在啟動虛擬機器後的視窗功能表列中 裝置/Network 中有看到 Connect Network Adapter 嗎?
      點上方的 網路設定 ,
      介面卡1 中是否有勾 啟用網路卡? 附加到 試試看選 NET。

      刪除
    2. 我有啟用網路卡
      我下了這指令dmesg | grep -in eth有卡到eth0介面的網卡
      408:e1000 0000:00:03:0: eth0: (PCI:33MHz:32-bit)
      409:e1000 0000:00:03:0: eth0: Intel(R) Pro/1000 Network Connection

      但下了ifconfig看不到eth0介面

      刪除
  5. 請問這得如何手動安裝?
    stlinux24-cross-sh4-g++ i386 4.3.4-63 installed 24 M
    stlinux24-cross-sh4-gcc i386 4.3.4-63 installed 31 M
    stlinux24-cross-sh4-protoize i386 4.3.4-63 installed 336 k

    回覆刪除
    回覆
    1. 安裝套件使用 stmyum install
      不是以 root 登入,前面要加上 sudo 。
      stmyum使用方法和yum一樣,
      可以參考 http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php#yumclient_yum 下的 安裝/升級功能:yum [install|update] 軟體

      請問是要將所有 STLinux 套件升級成目前最新版本嗎?

      刪除
  6. 作者已經移除這則留言。

    回覆刪除