#11 2012-07-11 22:34:50
Re: [Vistor NAS-34] 安裝Arch Linux ARM
以內建U-Boot 1.1.1 (Jul 21 2007 - 13:08:28) Marvell version: 1.10.8來說, 運用的指令是操作NOR, 非NAND.
>> flinfo
Bank # 1: SAMSUNG SAMSUNG_ID_K8D6316UBM (8 Mbit)
Size: 8 MB,Bus Width: 1, device Width: 2.
Flash base: 0xff800000,Number of Sectors: 135 Type: BOTTOM.
Sector Start Addresses:
00000000 00002000 00004000 00006000 00008000
...
007b0000 007c0000 007d0000 007e0000 007f0000
Bank # 2: missing or unknown FLASH type
在U-Boot下操作, 相關說明比較晦澀難懂. 例如:
upflash- update whole flash image
upkernel- update kernel image
upramdisk- update ramdisk
這些我還搞不太清楚. 若搞掛了, 沒找出JTAG接腳, 就比較麻煩. 所以才使用mtd-utils作測試.
備份的MTD, 可上傳到TFTP server, 由U-Boot下指令載入, 進入原廠韌體WebUI. 也可以解開, 檢視檔案.
離線
#12 2012-07-20 10:46:37
Re: [Vistor NAS-34] 安裝Arch Linux ARM
因Arch Linux ARM釋出的核心與核心模組不適用於Orion, 以下簡述由ABS製作NAS-34的核心與核心模組套件.
1. 建立編譯環境, 修改編譯參數.
2. clone PKGBUILDs, 取core/linux
$ git clone git://github.com/archlinuxarm/PKGBUILDs.git PKGBUILDs
$ cp PKGBUILDs/core/linux/* ~/ABS/PKGBUILDs/core/linux/
3. 修改PKGBUILD, 改由學術網路下載核心原始碼. 暫停建立完整套件.
$ cd ~/ABS/PKGBUILDs/core/linux/
$ nano PKGBUILD
source=("ftp://ftp.twaren.net/Unix/Kernel/linux/kernel/v3.x/linux-${_basekernel}.tar.bz2"
"ftp://ftp.twaren.net/Unix/Kernel/linux/kernel/v3.x/patch-${pkgver}.bz2"
...
make menuconfig
...
msg "Stopping build"
return 1
4. 自動下載核心原始碼. mach-types更新後, MD5錯誤.
$ makepkg -s
...
==> Validating source files with md5sums...
...
mach-types ... FAILED
...
==> ERROR: One or more files did not pass the validity check!
5. 計算mach-types MD5值, 修改PKGBUILD
$ md5sum mach-types
$ nano PKGBUILD
md5sums=(
覆寫mach-types MD5值
6. 自動修正核心原始碼. 進入menuconfig, 挑選需要的選項後, 存檔. 停止建立套件.
$ makepkg -s
==> Retrieving Sources...
...
==> Validating source files with md5sums...
...
==> Extracting Sources...
...
==> Starting build()...
patching file Documentation/HOWTO
patching file Documentation/development-process/5.Posting
...
==> Stopping build
==> ERROR: A failure occurred in build().
Aborting...
7. 建立NAS-34的核心config
$ cd src/linux-3.1/
$ make menuconfig
8. 挑選需要的選項後, 存檔為config, 覆寫Kirkwood的config.
7. 修正後的核心原始碼, 可複製到x86作交叉編譯.
8. 覆寫Kirkwood的config, 重新計算MD5值.
9. 註銷暫停, 準備建立套件.
$ nano PKGBUILD
md5sums=(
覆寫config MD5值
...
#make menuconfig
...
#msg "Stopping build"
#return 1
10. 建立套件.
$ makepkg
備註:
1. 在NAS-34上編譯, 需要漫長等待.
2. 可使用screen或console下達指令後, 離線編譯.
3. 建立的套件為.xz壓縮檔, 使用pacman -U安裝或解壓縮安裝.
寫入NOR後, 重新開機:
_ _ _ _
| \ | | | | (_)
| \| | ___| |_ _ __ ___ _ __ ___ __
| . ` |/ _ \ __| '__/ _ \| '_ \| \ \/ /
| |\ | __/ |_| | | (_) | | | | |> <
|_| \_|\___|\__|_| \___/|_| |_|_/_/\_\
_ _ ____ _
| | | | | __ ) ___ ___ | |_
| | | |___| _ \ / _ \ / _ \| __|
| |_| |___| |_) | (_) | (_) | |_
\___/ |____/ \___/ \___/ \__|
** LOADER **
** MARVELL BOARD: NTX-88F5182-NH233 LE
U-Boot 1.1.1 (Jul 21 2007 - 13:08:28) Marvell version: 1.10.8
DRAM CS[0] base 0x00000000 size 128MB
DRAM Total size 128MB
mv_flash.c: [8192kB@ff800000]
Protect flash from 0xFFF90000 ~ 0xFFFFFFFF
Flash: 8 MB
Addresses 20M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (20M - 16M): Done
Soc: 88F5182 A2
CPU: ARM926 (Rev 0) running @ 500Mhz
Orion 1 streaming disabled
SysClock = 166Mhz , TClock = 166Mhz
USB 0: host mode
USB 1: host mode
PCI 0: PCI Express Root Complex Interface
PCI 1: Conventional PCI, speed = 33000000
Net: egiga0 [PRIME]
Using 88E1118 phy
Marvell Serial ATA Adapter
Intergrated Sata device found
Device 0: OK
Model: ST380811AS Firm: 3.AAE Ser#: 5PS1W259
Type: Hard Disk
Supports 48-bit addressing
Capacity: 76319.0 MB = 74.5 GB (156301488 x 512)
hit any key to switch tftp boot.
Hit any key to stop autoboot: 0
bootcmd:[run myRAID]
Hit any key to stop autoboot: 0
src base_address=00000000, size = d
src address=FF800000
dest address=00800000
count =00260000
src base_address=00000000, size = d
src address=FFA60000
dest address=00B00000
count =00220000
## Booting image at 00800000 ...
Image Name: Linux-3.1.10-12-Orion
Created: 2012-07-20 17:48:59 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2361032 Bytes = 2.3 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
OK
## Loading Ramdisk Image at 00b00000 ...
Image Name: Linux-3.1.10-12-Orion Raid0
Created: 2012-07-20 9:59:46 UTC
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 2114909 Bytes = 2 MB
Load Address: 00b00000
Entry Point: 00b00000
Verifying Checksum ... OK
## Transferring control to Linux (at address 00008000) ...
Starting kernel ...
arg:console=ttyS0,115200 root=/dev/md0 rootfstype=ext4
Uncompressing Linux... done, booting the kernel.
:: running early hook [udev]
:: running hook [udev]
:: Triggering uevents...
:: performing fsck on '/dev/md0'
/dev/md0: clean, 36424/19521536 files, 1420811/78084096 blocks
:: mounting '/dev/md0' on real root
:: running cleanup hook [udev]
INIT: version 2.88 booting
> Arch Linux ARM
> http://www.archlinuxarm.org
------------------------------
:: Adjusting system time and setting kernel timezone [DONE]
:: Starting UDev Daemon [DONE]
:: Triggering UDev uevents [DONE]
:: Loading User-specified Modules [DONE]
:: Waiting for UDev uevents to be processed [DONE]
:: Configuring Virtual Consoles [DONE]
:: Bringing up loopback interface [DONE]
:: Unlocking encrypted volumes [DONE]
:: Checking Filesystems [DONE]
:: Remounting Root and API filesystems [DONE]
:: Mounting Local Filesystems [DONE]
:: Activating Swap [DONE]
:: Configuring Time Zone [DONE]
:: Initializing Random Seed [DONE]
:: Removing Leftover Files [DONE]
:: Setting Hostname: NAS-34 [DONE]
:: Saving dmesg Log [DONE]
INIT: Entering runlevel: 3
:: Starting Syslog-NG [DONE]
:: Starting Network [DONE]
:: Starting OpenNTPD [DONE]
:: Mounting Network Filesystems [DONE]
:: Starting crond daemon [DONE]
:: Starting Secure Shell Daemon [DONE]
Arch Linux 3.1.10-12-Orion (ttyS0)
NAS-34 login:
console訊息變得精簡, 由dmesg查閱其他訊息.
最後修改: hippo (2012-08-22 14:12:29)
離線
#13 2012-07-23 01:44:43
Re: [Vistor NAS-34] 安裝Arch Linux ARM
五體投地 第一次看到這種改法!!!!!
話說 保持rootfs and kernel 在原來8mb nor 內精簡有合何建議嗎?
離線
#14 2012-07-23 11:00:01
Re: [Vistor NAS-34] 安裝Arch Linux ARM
如果要繼續使用原廠的核心與rootfs, 受限於8MB flash. 若要安裝Optware, 只得指向硬碟空間. 如同想像PC的C:只有8MB, 要安裝其他應用程式, 只好裝在D:. 好處是, 不需硬碟, 就有OS.
若硬要喬入8MB內, 除了OS, 還需要應用程式. 應用程式要由原始碼編譯. 編譯應用程式前, 可能得先編譯其他函式庫. 編譯所需的函式庫, 可能還得先編譯其他相關的程式. 環環相扣, 惡夢連連. 而且8MB能塞入幾套應用程式呢?
如果一定要在8MB內跑OS, 最簡便應該是改用OpenWrt, 而且有現成套件可用, 省去編譯的困擾. 同樣, 不需硬碟, 就有OS.
觀察最早使用的久森MZK-NAS01SG與威聯通TS-109 Pro, MZK-NAS01SG無硬碟可進入WebUI, TS-109 Pro不行. 那時心中就已埋下疑點. 日後再由迷你筋斗雲的啟發, 原來Linux OS也可以搞入flash. 所以在華碩NAS-M25胡亂測試後, 再將Arch Linux ARM套用於NAS-34.
當然, 每個人的學習歷程不同, 需求也不同. 如果要在原廠韌體內打轉, 應可改良其WebUI. 如果不在意WebUI, 套用自己喜愛的Linux OS, 也是不錯的選擇.
離線
#15 2012-07-29 04:58:26
Re: [Vistor NAS-34] 安裝Arch Linux ARM
http://code.google.com/p/alt-f/
H大要不要考慮這... 8MB 裝了精簡功能 但還是有基本gui
http://code.google.com/p/alt-f/wiki/HowToBuild
我該改什麼以讓nas-34也可用 dns323 sources code? 有在編譯openwrt for orion 不過套個luci總覺得礙手礙腳
最後修改: thx (2012-07-29 05:00:08)
離線
#16 2012-07-29 13:31:45
Re: [Vistor NAS-34] 安裝Arch Linux ARM
謝謝您提供的資訊.
Alt-F使用uClibc, ipkg等, 與一般嵌入式設備方法相同, 是很精簡. 參考Software, 就一般NAS的需求了. 額外的Packages, 一樣得安裝在硬碟.
uClibc的BuildRoot, 印象中只玩過一次, 起因來自OpenWrt, 目的是建立Toolchain. 後來理解Tomato Toolchain後, 就沒繼續玩. Alt-F也是使用BuildRoot建立, 剛試了一下, 有錯誤產生, 還得研究看看.
以Linux tree來說, 可修改arch/arm/mach-orion5x/dns323-setup.c來套用NAS-34的硬體, 就如這篇所說. Alt-F的kernel-dns323-setup.patch, 就是修改核心v2.6.32.1的dns323-setup.c原始碼. 所以參考HowToBuild, ./mkprepare.sh成功後, 就得修改dns323-setup.c符合NAS-34硬體配置, 再make O=$BLDDIR menuconfig, 往下執行, 得到zImage, rootfs.arm.ext2. 有了核心與rootfs後, 核心加工為uImage, 放在TFTP server; rootfs放在NFS server. 進入U-Boot下指令, 就可進入Alt-F. 然後再測試WebUI與相關套件. 測試都OK後, 再搞入flash內.
流程大概是這樣, 大同小異. 核心是開始的關鍵, 比較頭痛就是了.
離線
#17 2012-08-22 23:45:58
Re: [Vistor NAS-34] 安裝Arch Linux ARM
依ALARM 3.1.10-13-ARCH config作修改, 使用CodeSourcery arm-2012.03-57交叉編譯, 產生的uImage, uInitrd, kmod已上傳Google.
1. 下載ALARM armv5te rootfs, 解壓縮到NFS.
2. 下載kmod, 解壓縮到rootfs的/usr/lib/modules/3.1.10-13-Orion/目錄.
3. 下載uImage, uInitrd, 置於TFTP.
4. 參閱這篇, 載入核心, 進入ALARM.
5. 使用depmod, 重建核心模組相依性.
6. 更新套件庫, 安裝硬碟分割, 格式化等必要套件. 大容量硬碟, 建議使用GPT處理. 若採用非ext格式, 例如:XFS, 自行載入相關核心模組.
7. 製作磁碟陣列或LVM, 自行參考相關文章. 亦可在PC上製作.
8. 磁碟陣列製作完成後, 下載解壓縮rootfs, kmod到對應分割區與目錄.
9. 參考這篇, 製作initrd. 視需要轉uInitrd.
10. initrd取出, 置於TFTP. 重新載入, 測試磁碟陣列.
11. 若一切無誤, 自行考慮是否覆寫原廠韌體. 修改U-Boot相關設定值後, 由flash載入核心.
12. 使用CodeSourcery編譯的核心與核心模組, 若覺得尚有相容性的疑慮, 參考這篇, 自行編譯.
13. 目前核心尚未解決GPIO等問題.
最後修改: hippo (2012-08-27 12:43:00)
離線
相關討論主題
主題 | 回覆 | 點閱 | 最後發表 |
---|---|---|---|
0 | 8380 | 2013-04-28 21:51:47 作者 hippo | |
|
24 | 86166 | 2013-04-24 13:25:44 作者 hannahmo |
[Vistor NAS-34] 請問要如何才能修改FLASH ROM上的資料 作者 halhalhsu
|
2 | 11429 | 2013-01-09 00:41:44 作者 halhalhsu |
[TonidoPlug2] Arch Linux ARM 測試 作者 hippo
|
1 | 13636 | 2012-08-07 22:15:59 作者 hippo |
|
80 | 275306 | 2011-06-03 22:35:44 作者 amingo |