打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Pogoplug Pro HD 折腾参考
userphoto

2013.07.20

关注
转自:http://www.hi-pda.com/forum/viewthread.php?tid=1202434&extra=page%3D1&page=1
机器参数就不介绍了,冷门的CPU。本来首发小白论坛,结果被屏蔽了……
Pogoplug Pro根本不会因为刷机而变砖!除非你的硬件损坏。
但是错误的操作可能会导致NAND的原生系统不能启动,只能通过做启动硬盘来进行NAND修复。
文件共享如下:百度盘
initrd文件说明:
1.支持多个rootfs文件启动,也就是initrd会搜索/dev/sdx1文件目录,检查是否存在boot.from.here的启动标志文件,如果有该标志,initrd将会强制加载该设备为根目录(如存在多个标记,sdb1优先于sda1……以此类推),如果该根目录系统存在问题,则系统将可能启动失败。
debian 7 rootfs文件说明:
1.灯光信号被改变,橘色灯光被设置为内置SATA硬盘读写指示灯;板载蓝色灯变为闪灯,绿色灯亮度被调低并且启动后会常亮;
2.通过pogoplug的blparam工具自动检查nand设备里面记录的mac地址并自动设置,如果nand设备的uboot参数里面的mac信息等出现错误,可能无法正常启动设备,需要自行调整和配置etc/network/pre-up.d目录的下的文件。磁盘镜像文件说明:
1.磁盘镜像文件可以用winhex恢复,系统是用于256M内存的版本,rootfs分区占用4G大小。
stage1和uboot相关文件应用于nand和sata设备存在不一致,文件名中存在s(sata)和n(nand)用于区分。
默认用户名和密码均为:root
如下操作中,涉及各种.warpped文件名和/dev/sdX设备名需要你针对你本机的具体情形进行修改和调整。
应用于NAND和硬盘设备的stage1和uboot文件不通用,请自行根据情况选择。
【如下各个动作均为分离,请自行根据情形进行组合使用】
创建一个可启动的SATA硬盘设备:
【分区命令使用parted,如机器linux环境未安装,请先安装parted包。】
1.清空前32M,使其为空白;
dd if=/dev/zero of=/dev/sdX bs=1M count=32
2.设置系统分区格式表类型;
parted /dev/sdX mklabel msdos
[这是一个设置分区格式表为msdos格式的命令,也可以分区格式为gpt]
3.划分第一个分区,用于linux的根目录系统,第一个分区前需要保留32M未分区的空间,用于保存系统的stage1、uboot和kernel等核心数据;
parted /dev/sdX mkpart primary 33554432B 8623489023B
[这个命令划分第一个分区从32M开始,第一个分区大小为8G,想要分区为其他大小,请自行计算,上述命令最后两个参数分别为起始点和结束点]
4.格式化第一个分区,使其为linux根目录分区,系统分区格式可以为ext2或者ext3;
mkfs.ext3 /dev/sdX1
[本命令将分区格式化为ext3格式]
5.【可选】将硬盘剩余空间分为第二个数据分区并格式化;
parted /dev/sdX mkpart primary 8623489024B 100%
mkfs.ext3 /dev/sdX2
6.接下来需要做的过程:
1.写入硬盘可启动标志的隐藏扇区数据;
2.写入stage1到硬盘;
3.写入uboot到硬盘;
4.写入uboot环境参数到硬盘;
5.写入kernel到硬盘;
6.写入initd到硬盘;
7.解压rootfs到硬盘的第一个分区;
写入硬盘可启动标志数据到隐藏扇区:
Pogoplug优先会从SATA硬盘启动并载入硬盘中的stage1数据,但是需要硬盘内包含一个特殊标记数据。如下命令就是写入这些标志数据到硬盘上。
如果需要备份原始数据,请执行:
dd if=/dev/sdX of=bootrom.bak bs=1 count=444
写入命令:
dd if=bootrom.warpped of=/dev/sdX
sync
可启动SATA硬盘前32M数据结构(基于官方修改,制作非官方系统启动盘,参考Iomega HMNHDCE设置):
起始扇区        尺寸        内容
0        444        Bootable flag
0        445-512        Legacy MBR
1        1536        GPT Partition table
34        8736        Stage-1 Bootloader
154        103552        U-Boot[位置依赖于stage1里面设置]
558        8192        U-Boot environment[位置依赖于uboot参数设置]
1290        2189216        uImage kernel[位置依赖于uboot环境参数设置]
16674        2787216        uImage initrd[位置依赖于uboot环境参数设置]
57088        4640        Stage-1 Bootloader (2nd copy)
57208        103568        U-Boot (2nd copy)
58344        2189216        uImage kernel (2nd copy)
复制代码
写入stage1到硬盘中:
dd if=stage1.wrapped of=/dev/sdX seek=34 bs=512
sync
复制代码
写入uboot到硬盘中:
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
复制代码
写入uboot环境参数到硬盘中:
dd if=u-bootenv.warpped of=/dev/sdX seek=558 bs=512
sync
复制代码
写入kernel到硬盘中:
dd if=uImage.warpped of=/dev/sdX seek=1290 bs=512
dd if=uImage.warpped of=/dev/sdX seek=58344 bs=512
sync
复制代码
写入Initrd到硬盘中:
dd if=initrd.wrapped of=/dev/sdX seek=16674 bs=512
sync
复制代码
解压一个rootfs文件到硬盘的第一个分区中:
首先创建挂载硬盘的目录:
mkdir /tmp/disk1
挂载硬盘第一个分区到目录:
mount /dev/sdX1 /tmp/disk1
解压rootfs文件到这个目录:
tar -C /tmp/disk1 -xvf /path/rootfs.gz #[压缩的rootfs的路径和文件名]
sync
NAND设备mtd1中的数据结构:
起始点         长度         内容
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数据区】
0x00500000 0x00300000(3M) alarm uImage copy 1        【可替换为initramfs文件数据区】
0x00800000 0x00300000(3M) CE uImage copy 2        【kernel数据区,备份】
0x00b00000 0x00300000(3M) alarm uImage copy 2        【可替换为initramfs文件数据区,备份】
复制代码
备份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中的各项数据:
nanddump -n -s 0x20000 -l 0x20000 -f stage1.encoded.02 /dev/mtd1
复制代码
请根据NAND设备mtd1设备数据表结构,自行修改上述命令中的-s【起始点参数】-l【长度参数】-f【备份文件名】
写入stage1到NAND中:
flash_erase /dev/mtd1 0x00 2
nandbd -s stage1.wrapped /dev/mtd1
复制代码
[请不要用nandbd写入uboot和kernel数据,否则将出现异常]
写入已编码的stage1到NAND中【验证中】:
flash_erase /dev/mtd1 0x00 2
nandwrite -p -s 0x00000 /dev/mtd1 stage1.endoced
nandwrite -p -s 0x20000 /dev/mtd1 stage1.endoced
复制代码
写入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
写入kernel、uboot、initd数据到NAND中:
根据NAND设备数据结构,首先擦除对应数据:
flash_erase /dev/mtd1 0x40000 3
【请自行修改最后的两个参数,第一个参数为起始点,第二个参数为块数量,一个块大小为128K,1M为8个数据块】
【如果需要写入kernel和inited,一般用3M的数据空间,数据块数量为24】
写入相应文件:
nandwrite -p -s 0x200000 /dev/mtd1 uImage.wrapped
【请自行修改最后两个参数,第一个参数为起始点,第二个参数为需要写入的文件名】
NAND里面的uboot启动参数说明:
NAND里面的启动参数,可以通过uboot的命令行环境进行修改和保存,在linux环境下,可以通过官方工具blparam进行修改;
官方工具修改uboot参数命令行示例:
blparam bootcmd="run boot_nand"
官方工具删除一个多余的uboot参数命令行示例:
blparam bootcmd
官方uboot默认参数列表:
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【你自己机器的mac地址】
cesvcid=XXXXXXXXXXXX【每一台机器不一样的序列号】
ceboardver=PPROHD1
serverip=192.168.1.20
ipaddr=192.168.1.122
复制代码
有关启动过程的说明:
本机的Linux启动过程为:
1.stage1
2.u-boot[stage2]
3.kernel
4.initrd[非必须过程,通过调整uboot参数确定是不是载入]
5.rootfs
修改NAND里面的uboot参数,载入Initrd:【需首先写入initrd到NAND中】
参考修改NAND的uboot参数,自行修改或添加参数:
load_rd=nboot 60800000 0 500000  #【参数50000为写入的initrd文件位置】
boot=bootm 60500000 60800000
boot_nand=run load_nand load_rd boot || run load_nand2 load_rd boot
复制代码
有关多系统启动说明:
1.系统优先尝试从SATA设备启动,SATA设备必须具备前文所述内容;
2.不管系统是从NAND设备启动,还是SATA设备启动,均可以先载入initrd,initrd可以预先读取系统已挂载的USB存储设备,可以将rootfs调整为usb设备,也就是可以实现自己制作多个不同系统的usb rootfs设备,然后插入那个usb系统就启动那个usb系统。
3.将发布的initrd文件将优先从最后一个可启动的usb设备载入usb rootfs。前置条件为usb设备根目录中存在【boot.from.here】标记文件。
有关可启动USB设备【支持U盘,USB读卡器等等设备】的制作:
1.将USB设备第一个分区格式化为ext3格式;
2.将完整的rootfs文件,包括与kernel配套的modules文件等等解压到USB设备的第一个分区中;
3.设立启动标记文件【boot.from.here】;
touch /[pathtousbroot]/boot.from.here
Debian下面安装webmin的命令:
echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list
echo "deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" >> /etc/apt/sources.list.d/webmin.list
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
apt-get update
apt-get install webmin
复制代码
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
Linux学习笔记:磁盘分区
嵌入式Linux中基于MTD的文件系统的结构框架图
ubifs & mtd
linux系统之磁盘分区
怎样在 Linux 系统中恢复已删除文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服