CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 45487|回复: 31

劲爆教程----Cubietruck备份nand上的系统并且创建自己的livesuit...

[复制链接]
发表于 2014-1-18 23:11:51 | 显示全部楼层 |阅读模式
本帖最后由 myoldman 于 2014-1-26 09:52 编辑


准备工作:

host操作系统:Ubuntu 12.04 LTS 64位
解包打包工具:imgrepacker
下载地址:http://dl.xda-developers.com/attachdl/b5cefe233b006dbe3a87ce2f05398f31/52d62724/1/7/4/0/4/0/1/imgRePacker_204.zip
分区表更新工具:
git clone  https://github.com/npeacock/a31sdk-tools.git
基础nand img:官方lubuntu-server
下载地址:http://dl.cubieboard.org/software/a20-cubietruck/lubuntu/ct-lubuntu-nand-v1.01/ct-lubuntu-server/lubuntu-server-nand.img.gz
基础sdcard img:也是基于官方的


以下是步骤
1.解包官方img
./imgrepacker lubuntu-server-nand.img
得到如下文件列表
boot0_nand.bin
-rw-rw-r-- 1 liuhong liuhong 24576 1月 15 15:53 boot0_nand.bin
-rw-rw-r-- 1 liuhong liuhong 24576 1月 15 15:53 boot0_sdcard.fex
-rw-rw-r-- 1 liuhong liuhong 425984 1月 15 15:53 boot1_nand.fex
-rw-rw-r-- 1 liuhong liuhong 294912 1月 15 15:53 boot1_sdcard.fex
-rw-rw-r-- 1 liuhong liuhong 10839040 1月 17 11:52 bootloader.fex
-rw-r--r-- 1 liuhong liuhong 16384 1月 16 22:59 dlinfo.fex
-rw-rw-r-- 1 liuhong liuhong 5122 1月 15 15:59 image.cfg
drwxrwxr-x 2 liuhong liuhong 4096 1月 15 23:23 _img.files
drwxrwxr-x 2 liuhong liuhong 4096 1月 16 17:48 _iso
-rw-rw-r-- 1 liuhong liuhong 1470103552 1月 17 11:53 rootfs.fex
-rw-rw-r-- 1 liuhong liuhong 512 1月 15 15:53 split_xxxx.fex
-rw-r--r-- 1 liuhong liuhong 65536 1月 16 23:00 sunxi_mbr.fex
-rw-rw-r-- 1 liuhong liuhong 53470 1月 15 23:24 sys_config.fex
-rw-rw-r-- 1 liuhong liuhong 302 1月 16 22:41 sys_partition.fex
-rw-r--r-- 1 root root 4 1月 17 11:53 Vbootloader.fex
-rw-r--r-- 1 root root 4 1月 17 11:53 Vrootfs.fex
drwxrwxr-x 3 liuhong liuhong 4096 1月 15 15:53 work

2.备份nand上运行的rootfs,并且制作
用sd卡启动cubietruck后于u运行如下命令

sudo mount /dev/nandb /mnt
sudo tar zxvf rootfs.tar.gz -C /mnt ./

这边rootfs.tar.gz就是已经打包好的正在运行的文件系统。

把rootfs.tar.gz下载到主机ubuntu上运行如下命令重新打包img
sudo ./mk_ext4_rootfs.sh rootfs.tar.gz rootfs.fex
cp rootfs.fex lubuntu-server-nand.img.dump/_iso/rootfs.fex.iso
cp rootfs.fex lubuntu-server-nand.img.dump/rootfs.fex
rm rootfs.fex -f
./imgrepacker lubuntu-server-nand.img.dump
这里会生成一个新的lubuntu-server-nand.img文件,该文件可以用livesuit烧写到板子中。
mk_ext4_rootfs.sh参考附件脚本。


3.修改img中的默认script.bin,uImage, uEnv.txt等

运行如下命令mount bootloader
sudo mount -t vfat lubuntu-server-nand.img.dump/_iso/bootloader.fex.iso  /mnt
这里请注意,不要直接在/mnt中修改uEnv.txt文件,需要在其他地方修改完后,sudo cp uEnv.txt /mnt拷贝覆盖
完成修改后执行如下命令保存bootloader.fex.iso
sudo umount /mnt

这里还要注意一个问题,如果有修改script.bin
lubuntu-server-nand.img.dump/sys_config.fex也必须修改,否则会出现无法启动的问题。

重新打包系统
./imgrepacker lubuntu-server-nand.img.dump

4.mbr文件更新
mbr重新生成工具必须用一下这个工具

步骤如下
首先修改lubuntu-server-nand.img.dump/sys_partition.fex中的文件这里主要是要修成resize后nand只有2g的问题。
修改结果如下
[partition]
name = rootfs
size = 14778368
downloadfile = "rootfs.fex"
verify = 1
把rootfs的size改成14778368就可以了。

编辑结束后 a31sdk-tools/pack/pctools/linux/mod_update/script
a31sdk-tools/pack/pctools/linux/mod_update/script lubuntu-server-nand.img.dump/sys_partition.fex
重新生成sys_partition.bin
a31sdk-tools/pack/pctools/linux/mod_update/update_mbr lubuntu-server-nand.img.dump/sys_partition.fex
这里会重新生成dlinfo.fex和sunxi_mbr.fex
最后再用
./imgrepacker lubuntu-server-nand.img.dump打包,这样img刷入以后nand就直接有8g了。

以上只是简单说明,中间操作过程有啥请跟贴,我会一一解答。



mk_ext4_rootfs.tar.gz

620 Bytes, 下载次数: 92, 下载积分: 金钱 -1

下载完,请解压。

评分

参与人数 4威望 +16 金钱 +16 贡献 +16 收起 理由
jerryli + 1 + 1 + 1 很给力! 好东西
搞IT的小鸟 + 5 + 5 + 5 赞一个!
newcb3user + 5 + 5 + 5 很给力!
cubieplayer + 5 + 5 + 5 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-1-20 14:36:30 | 显示全部楼层
那个附件下载的金钱怎么取消呀~~我拿了也没用哦,能取消么。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-20 17:39:42 | 显示全部楼层
TARGET=$PWD"/target_tmp"

cleanup() {
        sudo umount $TARGET || true
        sudo sudo rm -rf $TARGET
}

die() {
        echo "$*" >&2
        cleanup
        exit 1
}
set -e

make_rootfs()
{
        echo "Make rootfs"
        local rootfs=$(readlink -f "$1")
        local output=$(readlink -f "$2")
        local fsizeinbytes=$(gzip -lq "$rootfs" | awk -F" " '{print $2}')
        local fsizeMB=$(expr $fsizeinbytes / 1024 / 1024 + 200)
        local d= x=
        local rootfs_copied=

        echo "Make linux.ext4 (size="$fsizeMB")"
        mkdir -p $TARGET
        rm -f linux.ext4
        dd if=/dev/zero of=linux.ext4 bs=1M count="$fsizeMB"
        mkfs.ext4 linux.ext4
        sudo umount $TARGET || true
        sudo mount linux.ext4 $TARGET -o loop=/dev/loop0

        cd $TARGET
        echo "Unpacking $rootfs"
        sudo tar xzpf $rootfs || die "Unable to extract rootfs"

        rootfs_copied=1

        [ -n "$rootfs_copied" ] || die "Unsupported rootfs"

        cd - > /dev/null

        mv linux.ext4 $output
}

[ $# -eq 2 ] || die "Usage: $0 [rootfs.tar.gz] [output]"

make_rootfs "$1" "$2"
cleanup

脚本直接贴上来了,请各位自己保存后运行。
回复 支持 反对

使用道具 举报

发表于 2014-1-26 09:47:00 | 显示全部楼层
mark
好东西
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-26 09:51:10 | 显示全部楼层
这里还要注意一个问题,如果有修改script.bin
lubuntu-server-nand.img.dump/sys_config.fex也必须修改,否则会出现无法启动的问题。
以上谢谢~~
回复 支持 反对

使用道具 举报

发表于 2014-2-9 14:13:40 | 显示全部楼层
这个帖子太好了。多谢楼主
回复 支持 反对

使用道具 举报

发表于 2014-2-20 09:29:53 | 显示全部楼层
你好,楼主,真是有用的好帖子,我在按步骤执行的时候在重新打包系统的那个步骤遇到问题:

                Verification counted for "/bootloader.fex"
        "/Vbootloader.fex"        injected
                Swithed to modified old method
        "/rootfs.fex"        Can't open file "lubuntu-desktop-nand.img.dump//rootfs.fex"
       
        ==========================[ STOP  ]==========================
不知道为什么文件的路径名称后面多出来了一个反斜杠呢,我的系统是ubuntu11.10
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-21 12:52:59 | 显示全部楼层
newcb3user 发表于 2014-2-20 09:29
你好,楼主,真是有用的好帖子,我在按步骤执行的时候在重新打包系统的那个步骤遇到问题:

                Verification ...

这里多一个斜杠应该没有关系,你看看rootfs.fex这个文件是不是存在
回复 支持 反对

使用道具 举报

发表于 2014-3-2 17:46:58 | 显示全部楼层

sudo ./mk_ext4_rootfs.sh testfs.tar.gz rootfs.fex
Make rootfs
Make linux.ext4 (size=259)
259+0 records in
259+0 records out
271581184 bytes (272 MB) copied, 0.129525 s, 2.1 GB/s
mke2fs 1.42 (29-Nov-2011)
linux.ext4 is not a block special device.
Proceed anyway? (y,n) y
Discarding device blocks: done                           
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
66528 inodes, 265216 blocks
13260 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
33 block groups
8192 blocks per group, 8192 fragments per group
2016 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185

Allocating group tables: done                           
Writing inode tables: done                           
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

umount: /work/chird/target_tmp: not mounted
mount: stolen loop=/dev/loop0

##并没有生成rootfs.fex,怎么回事,楼主?谢谢!
回复 支持 反对

使用道具 举报

发表于 2014-3-2 17:52:22 | 显示全部楼层
2.备份nand上运行的rootfs,并且制作
用sd卡启动cubietruck后于u运行如下命令

sudo mount /dev/nandb /mnt
sudo tar zxvf rootfs.tar.gz -C /mnt ./  

最后一个命令行应该是:
sudo tar zcvf rootfs.tar.gz -C /mnt ./  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-4-19 17:35 , Processed in 0.028033 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部