轉(zhuǎn)自:http://www./forum/viewthread.php?tid=1202434&extra=page%3D1&page=1 機(jī)器參數(shù)就不介紹了,冷門(mén)的CPU。本來(lái)首發(fā)小白論壇,結(jié)果被屏蔽了……
Pogoplug Pro根本不會(huì)因?yàn)樗C(jī)而變磚!除非你的硬件損壞。 但是錯(cuò)誤的操作可能會(huì)導(dǎo)致NAND的原生系統(tǒng)不能啟動(dòng),只能通過(guò)做啟動(dòng)硬盤(pán)來(lái)進(jìn)行NAND修復(fù)。
文件共享如下:百度盤(pán) initrd文件說(shuō)明: 1.支持多個(gè)rootfs文件啟動(dòng),也就是initrd會(huì)搜索/dev/sdx1文件目錄,檢查是否存在boot.from.here的啟動(dòng)標(biāo)志文件,如果有該標(biāo)志,initrd將會(huì)強(qiáng)制加載該設(shè)備為根目錄(如存在多個(gè)標(biāo)記,sdb1優(yōu)先于sda1……以此類(lèi)推),如果該根目錄系統(tǒng)存在問(wèn)題,則系統(tǒng)將可能啟動(dòng)失敗。 debian 7 rootfs文件說(shuō)明: 1.燈光信號(hào)被改變,橘色燈光被設(shè)置為內(nèi)置SATA硬盤(pán)讀寫(xiě)指示燈;板載藍(lán)色燈變?yōu)殚W燈,綠色燈亮度被調(diào)低并且啟動(dòng)后會(huì)常亮; 2.通過(guò)pogoplug的blparam工具自動(dòng)檢查nand設(shè)備里面記錄的mac地址并自動(dòng)設(shè)置,如果nand設(shè)備的uboot參數(shù)里面的mac信息等出現(xiàn)錯(cuò)誤,可能無(wú)法正常啟動(dòng)設(shè)備,需要自行調(diào)整和配置etc/network/pre-up.d目錄的下的文件。磁盤(pán)鏡像文件說(shuō)明: 1.磁盤(pán)鏡像文件可以用winhex恢復(fù),系統(tǒng)是用于256M內(nèi)存的版本,rootfs分區(qū)占用4G大小。
stage1和uboot相關(guān)文件應(yīng)用于nand和sata設(shè)備存在不一致,文件名中存在s(sata)和n(nand)用于區(qū)分。
默認(rèn)用戶(hù)名和密碼均為:root
如下操作中,涉及各種.warpped文件名和/dev/sdX設(shè)備名需要你針對(duì)你本機(jī)的具體情形進(jìn)行修改和調(diào)整。 應(yīng)用于NAND和硬盤(pán)設(shè)備的stage1和uboot文件不通用,請(qǐng)自行根據(jù)情況選擇。
【如下各個(gè)動(dòng)作均為分離,請(qǐng)自行根據(jù)情形進(jìn)行組合使用】
創(chuàng)建一個(gè)可啟動(dòng)的SATA硬盤(pán)設(shè)備: 【分區(qū)命令使用parted,如機(jī)器linux環(huán)境未安裝,請(qǐng)先安裝parted包?!?/font>
- 1.清空前32M,使其為空白;
dd if=/dev/zero of=/dev/sdX bs=1M count=32 - 2.設(shè)置系統(tǒng)分區(qū)格式表類(lèi)型;
parted /dev/sdX mklabel msdos [這是一個(gè)設(shè)置分區(qū)格式表為msdos格式的命令,也可以分區(qū)格式為gpt] - 3.劃分第一個(gè)分區(qū),用于linux的根目錄系統(tǒng),第一個(gè)分區(qū)前需要保留32M未分區(qū)的空間,用于保存系統(tǒng)的stage1、uboot和kernel等核心數(shù)據(jù);
parted /dev/sdX mkpart primary 33554432B 8623489023B [這個(gè)命令劃分第一個(gè)分區(qū)從32M開(kāi)始,第一個(gè)分區(qū)大小為8G,想要分區(qū)為其他大小,請(qǐng)自行計(jì)算,上述命令最后兩個(gè)參數(shù)分別為起始點(diǎn)和結(jié)束點(diǎn)] - 4.格式化第一個(gè)分區(qū),使其為linux根目錄分區(qū),系統(tǒng)分區(qū)格式可以為ext2或者ext3;
mkfs.ext3 /dev/sdX1 [本命令將分區(qū)格式化為ext3格式] - 5.【可選】將硬盤(pán)剩余空間分為第二個(gè)數(shù)據(jù)分區(qū)并格式化;
parted /dev/sdX mkpart primary 8623489024B 100% mkfs.ext3 /dev/sdX2 - 6.接下來(lái)需要做的過(guò)程:
- 1.寫(xiě)入硬盤(pán)可啟動(dòng)標(biāo)志的隱藏扇區(qū)數(shù)據(jù);
- 2.寫(xiě)入stage1到硬盤(pán);
- 3.寫(xiě)入uboot到硬盤(pán);
- 4.寫(xiě)入uboot環(huán)境參數(shù)到硬盤(pán);
- 5.寫(xiě)入kernel到硬盤(pán);
- 6.寫(xiě)入initd到硬盤(pán);
- 7.解壓rootfs到硬盤(pán)的第一個(gè)分區(qū);
寫(xiě)入硬盤(pán)可啟動(dòng)標(biāo)志數(shù)據(jù)到隱藏扇區(qū):
- Pogoplug優(yōu)先會(huì)從SATA硬盤(pán)啟動(dòng)并載入硬盤(pán)中的stage1數(shù)據(jù),但是需要硬盤(pán)內(nèi)包含一個(gè)特殊標(biāo)記數(shù)據(jù)。如下命令就是寫(xiě)入這些標(biāo)志數(shù)據(jù)到硬盤(pán)上。
- 如果需要備份原始數(shù)據(jù),請(qǐng)執(zhí)行:
dd if=/dev/sdX of=bootrom.bak bs=1 count=444 - 寫(xiě)入命令:
dd if=bootrom.warpped of=/dev/sdX sync
可啟動(dòng)SATA硬盤(pán)前32M數(shù)據(jù)結(jié)構(gòu)(基于官方修改,制作非官方系統(tǒng)啟動(dòng)盤(pán),參考Iomega HMNHDCE設(shè)置):
- 起始扇區(qū) 尺寸 內(nèi)容
- 0 444 Bootable flag
- 0 445-512 Legacy MBR
- 1 1536 GPT Partition table
- 34 8736 Stage-1 Bootloader
- 154 103552 U-Boot[位置依賴(lài)于stage1里面設(shè)置]
- 558 8192 U-Boot environment[位置依賴(lài)于uboot參數(shù)設(shè)置]
- 1290 2189216 uImage kernel[位置依賴(lài)于uboot環(huán)境參數(shù)設(shè)置]
- 16674 2787216 uImage initrd[位置依賴(lài)于uboot環(huán)境參數(shù)設(shè)置]
- 57088 4640 Stage-1 Bootloader (2nd copy)
- 57208 103568 U-Boot (2nd copy)
- 58344 2189216 uImage kernel (2nd copy)
復(fù)制代碼
寫(xiě)入stage1到硬盤(pán)中:
- dd if=stage1.wrapped of=/dev/sdX seek=34 bs=512
- sync
復(fù)制代碼 寫(xiě)入uboot到硬盤(pán)中:
- dd if=u-boot.wrapped of=/dev/sdX seek=154 bs=512
- dd if=u-boot.wrapped of=/dev/sdX seek=57208 bs=512
- sync
復(fù)制代碼
寫(xiě)入uboot環(huán)境參數(shù)到硬盤(pán)中:
- dd if=u-bootenv.warpped of=/dev/sdX seek=558 bs=512
- sync
復(fù)制代碼
寫(xiě)入kernel到硬盤(pán)中:
- dd if=uImage.warpped of=/dev/sdX seek=1290 bs=512
- dd if=uImage.warpped of=/dev/sdX seek=58344 bs=512
- sync
復(fù)制代碼 寫(xiě)入Initrd到硬盤(pán)中:
- dd if=initrd.wrapped of=/dev/sdX seek=16674 bs=512
- sync
復(fù)制代碼
解壓一個(gè)rootfs文件到硬盤(pán)的第一個(gè)分區(qū)中:
- 首先創(chuàng)建掛載硬盤(pán)的目錄:
mkdir /tmp/disk1 - 掛載硬盤(pán)第一個(gè)分區(qū)到目錄:
mount /dev/sdX1 /tmp/disk1 - 解壓rootfs文件到這個(gè)目錄:
tar -C /tmp/disk1 -xvf /path/rootfs.gz #[壓縮的rootfs的路徑和文件名] sync
NAND設(shè)備mtd1中的數(shù)據(jù)結(jié)構(gòu):
- 起始點(diǎn) 長(zhǎng)度 內(nèi)容
- 0x00000000 0x00020000(128K)* encoded stage1 loader
- 0x00020000 0x00020000(128K)* encoded backup of stage1 loader
- 0x00040000 0x00020000(128K)* uboot copy 1
- 0x00060000 0x00020000(128K) uboot spare copy (unused)
- 0x00080000 0x00020000(128K) uboot spare copy (unused)
- 0x000a0000 0x00020000(128K)** boot environment
- 0x000c0000 0x00020000(128K)** spare boot env block (if first is bad)
- 0x000e0000 0x00020000(128K)** spare boot env block (If second is bad)
- 0x00100000 0x00020000(128K)* uboot copy 2
- 0x00120000 0x00020000(128K) uboot spare copy (unused)
- 0x00140000 0x00020000(128K) uboot spare copy (unused)
- 0x00160000 0x00020000(128K) ???/empty/garbage/unused
- 0x00180000 0x00020000(128K) ???/empty/garbage/unused
- 0x001a0000 0x00020000(128K) ???/empty/garbage/unused
- 0x001c0000 0x00020000(128K) ???/empty/garbage/unused
- 0x001e0000 0x00020000(128K) ???/empty/garbage/unused
- 0x00200000 0x00300000(3M) CE uImage copy 1 【kernel數(shù)據(jù)區(qū)】
- 0x00500000 0x00300000(3M) alarm uImage copy 1 【可替換為initramfs文件數(shù)據(jù)區(qū)】
- 0x00800000 0x00300000(3M) CE uImage copy 2 【kernel數(shù)據(jù)區(qū),備份】
- 0x00b00000 0x00300000(3M) alarm uImage copy 2 【可替換為initramfs文件數(shù)據(jù)區(qū),備份】
復(fù)制代碼
備份NAND的stage1: nanddump -n -l 0x20000 -f stage1.encoded.01 /dev/mtd1 nanddump -n -s 0x20000 -l 0x20000 -f stage1.encoded.02 /dev/mtd1
備份NAND的mtd中的各項(xiàng)數(shù)據(jù):
- nanddump -n -s 0x20000 -l 0x20000 -f stage1.encoded.02 /dev/mtd1
復(fù)制代碼 請(qǐng)根據(jù)NAND設(shè)備mtd1設(shè)備數(shù)據(jù)表結(jié)構(gòu),自行修改上述命令中的-s【起始點(diǎn)參數(shù)】-l【長(zhǎng)度參數(shù)】-f【備份文件名】
寫(xiě)入stage1到NAND中:
- flash_erase /dev/mtd1 0x00 2
- nandbd -s stage1.wrapped /dev/mtd1
復(fù)制代碼 [請(qǐng)不要用nandbd寫(xiě)入uboot和kernel數(shù)據(jù),否則將出現(xiàn)異常]
寫(xiě)入已編碼的stage1到NAND中【驗(yàn)證中】:
- flash_erase /dev/mtd1 0x00 2
- nandwrite -p -s 0x00000 /dev/mtd1 stage1.endoced
- nandwrite -p -s 0x20000 /dev/mtd1 stage1.endoced
復(fù)制代碼
寫(xiě)入uboot到NAND中: flash_erase /dev/mtd1 0x40000 3 flash_erase /dev/mtd1 0x100000 3 nandwrite -p -s 0x40000 /dev/mtd1 u-boot.wrapped nandwrite -p -s 0x100000 /dev/mtd1 u-boot.wrapped
寫(xiě)入kernel、uboot、initd數(shù)據(jù)到NAND中:
- 根據(jù)NAND設(shè)備數(shù)據(jù)結(jié)構(gòu),首先擦除對(duì)應(yīng)數(shù)據(jù):
flash_erase /dev/mtd1 0x40000 3 【請(qǐng)自行修改最后的兩個(gè)參數(shù),第一個(gè)參數(shù)為起始點(diǎn),第二個(gè)參數(shù)為塊數(shù)量,一個(gè)塊大小為128K,1M為8個(gè)數(shù)據(jù)塊】 【如果需要寫(xiě)入kernel和inited,一般用3M的數(shù)據(jù)空間,數(shù)據(jù)塊數(shù)量為24】 - 寫(xiě)入相應(yīng)文件:
nandwrite -p -s 0x200000 /dev/mtd1 uImage.wrapped 【請(qǐng)自行修改最后兩個(gè)參數(shù),第一個(gè)參數(shù)為起始點(diǎn),第二個(gè)參數(shù)為需要寫(xiě)入的文件名】
NAND里面的uboot啟動(dòng)參數(shù)說(shuō)明:
- NAND里面的啟動(dòng)參數(shù),可以通過(guò)uboot的命令行環(huán)境進(jìn)行修改和保存,在linux環(huán)境下,可以通過(guò)官方工具blparam進(jìn)行修改;
- 官方工具修改uboot參數(shù)命令行示例:
blparam bootcmd="run boot_nand" - 官方工具刪除一個(gè)多余的uboot參數(shù)命令行示例:
blparam bootcmd
官方uboot默認(rèn)參數(shù)列表:
- bootcmd=run boot_nand
- bootdelay=2
- baudrate=115200
- autoload=n
- netmask=255.255.0.0
- bootfile="uImage"
- kernflmode=s
- load_nand=nboot 60500000 0 200000
- load_nand2=nboot 60500000 0 800000
- boot=bootm 60500000
- boot_nand=run load_nand boot || run load_nand2 boot
- stdin=serial
- stdout=serial
- stderr=serial
- bootargs=root=ubi0:rootfs ubi.mtd=2,512 rootfstype=ubifs console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x30,0xe0,0x00,0x00,0x01 mem=128M poweroutage=yes
- ethaddr=00:25:31:XX:XX:XX【你自己機(jī)器的mac地址】
- cesvcid=XXXXXXXXXXXX【每一臺(tái)機(jī)器不一樣的序列號(hào)】
- ceboardver=PPROHD1
- serverip=192.168.1.20
- ipaddr=192.168.1.122
復(fù)制代碼
有關(guān)啟動(dòng)過(guò)程的說(shuō)明: 本機(jī)的Linux啟動(dòng)過(guò)程為:
- 1.stage1
- 2.u-boot[stage2]
- 3.kernel
- 4.initrd[非必須過(guò)程,通過(guò)調(diào)整uboot參數(shù)確定是不是載入]
- 5.rootfs
修改NAND里面的uboot參數(shù),載入Initrd:【需首先寫(xiě)入initrd到NAND中】 參考修改NAND的uboot參數(shù),自行修改或添加參數(shù):
- load_rd=nboot 60800000 0 500000 #【參數(shù)50000為寫(xiě)入的initrd文件位置】
- boot=bootm 60500000 60800000
- boot_nand=run load_nand load_rd boot || run load_nand2 load_rd boot
復(fù)制代碼
有關(guān)多系統(tǒng)啟動(dòng)說(shuō)明:
- 1.系統(tǒng)優(yōu)先嘗試從SATA設(shè)備啟動(dòng),SATA設(shè)備必須具備前文所述內(nèi)容;
- 2.不管系統(tǒng)是從NAND設(shè)備啟動(dòng),還是SATA設(shè)備啟動(dòng),均可以先載入initrd,initrd可以預(yù)先讀取系統(tǒng)已掛載的USB存儲(chǔ)設(shè)備,可以將rootfs調(diào)整為usb設(shè)備,也就是可以實(shí)現(xiàn)自己制作多個(gè)不同系統(tǒng)的usb rootfs設(shè)備,然后插入那個(gè)usb系統(tǒng)就啟動(dòng)那個(gè)usb系統(tǒng)。
- 3.將發(fā)布的initrd文件將優(yōu)先從最后一個(gè)可啟動(dòng)的usb設(shè)備載入usb rootfs。前置條件為usb設(shè)備根目錄中存在【boot.from.here】標(biāo)記文件。
有關(guān)可啟動(dòng)USB設(shè)備【支持U盤(pán),USB讀卡器等等設(shè)備】的制作:
- 1.將USB設(shè)備第一個(gè)分區(qū)格式化為ext3格式;
- 2.將完整的rootfs文件,包括與kernel配套的modules文件等等解壓到USB設(shè)備的第一個(gè)分區(qū)中;
- 3.設(shè)立啟動(dòng)標(biāo)記文件【boot.from.here】;
touch /[pathtousbroot]/boot.from.here
Debian下面安裝webmin的命令:
- echo "deb http://download./download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list
- echo "deb http://webmin.mirror./repository sarge contrib" >> /etc/apt/sources.list.d/webmin.list
- cd /root
- wget http://www./jcameron-key.asc
- apt-key add jcameron-key.asc
- apt-get update
- apt-get install webmin
復(fù)制代碼
|