rk3288 ubuntu系统备份的两种方法之二
文章目录
1.1 用AndroidTool_Release工具把原始的update.img镜像解包;
解包成功如下图:
解包之后的文件:
1.2 使用PC备份已经装配好的rk3288板子里的rootfs.img;
a) 准备工作:
Ø 开发板插上网线,板子和电脑处于同一个网段,并能连接到外网;
Ø 通过USB转TTL串口设备连接板子的debug串口,进入板子系统(比如使用xshell工具,串口波特率为115200)。
b) 开始拷贝:
Ø 准备一台Ubuntu系统的实体机或虚拟机作为PC端
Ø 在开发板的 UBUNTU 系统上面安装软件 openssh 的服务端 openssh-server:
Ø 修改开发板 root 登录权限:
Ø 在 sshd_config 中修改 PermitRootLogin 选项如下,用以确保 root 登录权限足够
Ø 重启开发板或者重启 ssh 服务
Ø PC 端安装 openssh 客户端 openssh-client
Ø PC 端安装 rsync
Ø PC 新建目录 ubuntu_make 并进入并创建Ubuntu目录 :
Ø 同步数据
Ø 同步完成后,PC 进入 ubuntu 文件夹下面增加脚本文件 etc/onlyone.sh
onlyone.sh 内容为:
#!/bin/sh
read line < /proc/cmdline
for arg in $line; do
if [ "5" -le "$(expr length $arg)" ]; then
if [ "root=" = "$(expr substr $arg 1 5)" ]; then
{
*debug_arg=$(expr $arg : 'root=\(.\*\)')
resize2fs $debug_arg
}
fi
fi
done
Ø PC 端 ubuntu 文件夹下更改该文件权限:
Ø 返回上级目录(make_ubuntu),并制作一个make_ubuntu.sh 到当前文件夹:
make_ubuntu.sh的内容如下:
#!/bin/bash
#ubuntu(ubuntu-core) build already annotation
#not Often compiled .......too slow and need root
MAKE_THEARD=`cat /proc/cpuinfo| grep "processor"| wc -l`RESULT="ubuntu-rootfs"
function creat_result_dir()
{
if [ ! -d $RESULT ];
then
{
mkdir Image-rk3288-ubuntu
}
fi
}
function ubuntu_core_build()
{
dd if=/dev/zero of=linux-rootfs-core.img bs=1M count=1000
sudo mkfs.ext4 -F -L linuxroot linux-rootfs-core.img
if [ ! -d mount ];
then
{
mkdir mount
}
fi
sudo mount linux-rootfs-core.img mount
sudo cp -a ubuntu_core/* mount
sudo umount mount
e2fsck -p -f linux-rootfs-core.img
resize2fs -M linux-rootfs-core.img
rm -rf mount
mv linux-rootfs-core.img $RESULT
}
function ubuntu_build()
{
dd if=/dev/zero of=linux-rootfs.img bs=1M count=5000
sudo mkfs.ext4 -F -L linuxroot linux-rootfs.img
if [ ! -d mount ];
then
{
mkdir mount
}
fi
sudo mount linux-rootfs.img mount
sudo cp -a ubuntu/* mount
sudo umount mount
e2fsck -p -f linux-rootfs.img
resize2fs -M linux-rootfs.img
rm -rf mount
mv linux-rootfs.img $RESULT
}
function ubuntu_clean()
{
rm $RESULT/linux-rootfs.img
}
function ubuntu_core_clean()
{ rm $RESULT/linux-rootfs-core.img
}
function result_clean()
{
rm -rf $RESULT
}
# creat_result_dir
if [ $1 == "clean" ]
then
{
if [ ! -n $2 ]
then
{
ubuntu_core_clean
ubuntu_clean
result_clean
echo clean Img oK
}
elif [ $2 == "ubuntu" -o $2 == "ubuntu/" ]
then
{
ubuntu_clean
}
elif [ $2 == "ubuntu_core" -o $2 == "ubuntu_core/" -o $2 == "ubuntu-core" -o $2 == "ubuntu-core/" ]
then
{
ubuntu_core_clean
}
else
{
ubuntu_core_clean
ubuntu_clean
result_clean
echo clean Img oK
}
fi
}
elif [ $1 == "ubuntu_core" -o $1 == "ubuntu_core/" -o $1 == "ubuntu-core" -o $1 == "ubuntu-core/" ]
then
{
ubuntu_core_build
}
elif [ $1 == "ubuntu" -o $1 == "ubuntu/" ]
then
{
ubuntu_build
}
else
{
ubuntu_core_build
ubuntu_build
}
fi
并赋予该脚本777权限
Ø 运行 make_unbuntu.sh 制作 ubuntu 固件:
Ø 脚本运行完成,在ubuntu-rootfs 目录下生成 ubuntu_core、ubuntu 固件
1.3 将备份的rootfs.img替换AndroidTool_Release工具解包的rootfs.img;
拷贝“AndroidTool_Release\Output\Android\Image”文件夹 到“AndroidTool_Release\rockdev”文件夹
拷贝“AndroidTool_Release\Output\Android\ package-file”文件 到“AndroidTool_Release\rockdev”文件夹
拷贝“AndroidTool_Release\Output\ boot.bin”文件 到“AndroidTool_Release\rockdev”文件夹
拷贝“AndroidTool_Release\Output\ firmware.img”文件 到“AndroidTool_Release\rockdev”文件夹
1.4 用AndroidTool_Release\rockdev\rk3288-mkupdate.bat工具合成新的update.img镜像;
双击运行\rk3288-mkupdate.bat:
最终生成upgrade.img如下图所示: