找回密码
 立即注册

QQ登录

只需一步,快速开始

铁威马网络网络存储

[教程分享] 通过U盘启动MyCloud

[复制链接]
简单说明下 WD MyCloud 的启动流程.
SPI Flash 上 bareloader 访问 硬盘分区 7 读取启动控制命令:
见文件 packages/barebox-2011.06.0/scripts/sataenv2/boot_k1m1
  1. #!/bin/sh
  2. sata
  3. satapart 0x3008000 5 0x5000
  4. sata stop
  5. # This is customized for each environment variable script
  6. bootargs="$bootargs root=/dev/md0 raid=autodetect"
  7. bootm /dev/mem.uImage
复制代码

上述命令中 satapart 0x3008000 5 0x5000 是读取 linux 内核.
bootargs 是传送给内核的启动命令.
bootm 是启动 linux 内核.

当 linux 内核启动到最后, 会根据 root= 参数来挂载相应的分区作为系统"盘", 然后继续启动.
默认 /dev/md0 是 WD MyCloud 内置硬盘上分区1/2组装的 RAID1.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1云币 +8 金条 +8 碎银 +8 收起 理由
爆疯语 + 8 + 8 + 8 新手第一次技术贴,发发发~ !

查看全部评分

使用道具 举报 回复
下面就需要更新 bareloader 的启动控制命令.
直接修改 root=/dev/md0 为 root=/dev/sdb1 依旧会无法启动 USB 启动盘,因为当内核挂载启动盘的时候, U 盘还没有准备好,
需要添加 rootdelay=5 ,就是延时 5 s 再挂载.
  1. #!/bin/sh
  2. sata
  3. satapart 0x3008000 5 0x5000
  4. sata stop
  5. # This is customized for each environment variable script
  6. bootargs="$bootargs root=/dev/sdb1 raid=autodetect rootdelay=5"
  7. bootm /dev/mem.uImage
复制代码
然后在目录 packages/barebox-2011.06.0/scripts/sataenv2 下执行
  1. ./makeit.sh
复制代码

生成 启动控制命令 的文件 k1m1.env
使用道具 举报 回复 支持 0 反对 1
本帖最后由 sxzzsf 于 2015-3-27 20:41 编辑

因此通过修改 root= 参数可以控制 Linux 启动.

在 Linux 将 U 盘(假设 /dev/sdg)分区:
  1. parted /dev/sdg mklabel gpt
  2. parted /dev/sdg mkpart primary 1 -1
复制代码


格式化 U 盘.
  1. mkfs.ext3 /dev/sdg1
复制代码

使用道具 举报 回复 支持 反对
假设使用 WD 提供的最新的 FW (http://download.wdc.com/nas/sq-040103-421-20150217.deb.zip)
解压缩
  1. unzip sq-040103-421-20150217.deb.zip
复制代码

继续解压缩
  1. ar x sq-040103-421-20150217.deb
复制代码

依旧解压缩
  1. tar xf data.tar.lzma
复制代码

创建挂载点:
  1. mkdir /tmp/orig
  2. mkdir /tmp/sdg1
复制代码

挂载
  1. mount -o loop,ro CacheVolume/upgrade/rootfs.img /tmp/orig/
  2. mount /dev/sdg1 /tmp/sdg1/
  3. cd /tmp/sdg1/
  4. rsync -Pav /tmp/orig/ .
  5. cd -
  6. umount /tmp/sdg1
  7. umount /tmp/orig
复制代码

这样 USB 系统"盘"就做好了.
使用道具 举报 回复 支持 反对
注意: 以下命令在 MyCloud 上操作, 如果误操作可能会导致 MyCloud 变"砖".
将 U 盘接到 MyCloud 上 并通过 SSH 登陆 MyCloud 上,
  1. mount /dev/sdb1 /mnt
复制代码

做些读写等, 确认 U 盘是否能正常工作.
如果 U 盘能正常工作, 将 刚才生成的 k1m1.env 文件写到分区 7 上.
  1. dd if=k1m1.env of=/dev/sda7
复制代码

同时将 U 盘系统上的 kernel 写到分区 5 上.
  1. dd if=/mnt/boot/uImage of=/dev/sda5
复制代码

重启 MyCloud 就可以.

附件是做好的 启动文件 可以直接写到分区 7 上.
使用道具 举报 回复 支持 反对
我想知道这么做的意义何在?
使用道具 举报 回复 支持 反对
助攻升级注册会员,应该可以整合到一个帖子内了,防灌水机制,造成不便,请见谅!

有配图就更好了~
这个U盘启动是不是可以这么理解,系统外挂,这样子,硬盘就是存粹的存储~~ 如果是这样,也很有意义的!
使用道具 举报 回复 支持 反对
这个存在的意义是
1. 系统变砖了,重新制作 U 盘系统就能救回了。
2. 系统安装到 U 盘上,设置硬盘定时停转才更有意义。因为默认的系统装在硬盘上,系统会不时的访问硬盘的。
使用道具 举报 回复 支持 反对
本帖最后由 yhny 于 2015-4-23 23:52 编辑

见文件 packages/barebox-2011.06.0/scripts/sataenv2/boot_k1m1

这个怎么进去?
使用道具 举报 回复 支持 反对
sxzzsf 发表于 2015-3-27 17:20
注意: 以下命令在 MyCloud 上操作, 如果误操作可能会导致 MyCloud 变"砖".
将 U 盘接到 MyCloud 上 并通过 ...

如果通过U盘启动,可否完全格式化硬盘et4,把硬盘当个数据盘挂到u盘系统下?
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群