整体操作一共三步:
一、将Rk3288的整个根文件系统的文件,通过ssh拷贝到PC系统(Ubuntu);
二、将此拷贝的全部文件,加载到虚拟光盘中,制作成img文件;
三、将img文件,再烧回RK3288开发板,进行测试。
工具:
1、RK3288上的Ubuntu系统需要安装:ssh、rsync;
2、PC电脑(虚拟机)上安装:ssh、rsync;
1、给开发板接好显示器、鼠标键盘/putty等连接工具,启动开发板。登陆ubuntu用户,如果连sudo工具都没有,就直接切换到root用户来操作:
如该root账户没有设置密码,Ubuntu设置root密码,后面导出文件时需要超管密码:
su root
2、配置网络,为了网络稳定和节省时间,我插得网线(保证虚拟机中能ping通开发板即可)。
3、更新软件列表
sudo apt-get update
4、vim /etc/ssh/sshd_config 修改ssh配置文件,便于外界访问。(导出本地所有文件)
Ubuntu环境下SSH服务安装、SSH远程登录以及SSH数据传输(如该没有安装ssh)
sudo vim /etc/ssh/sshd_config
找到PermitRootLogin这项,设置为yes,如图:
/etc/init.d/ssh restart
经过这此修改后就可以远程登陆root帐户了,可以通过ssh工具验证
要确保,外界可以通过ssh 登录root账户,只有这样才能将本地所有文件导出。(无法ssh登录,需进行ssh的安装和启动)
5、 先在PC主机(自己电脑为Ubuntu)上创建一个目录,用来同步保存开发板上的文件系统:
mkdir UbuntuSystem
rsync -avx [email protected]:/ UbuntuSystem
**执行上面代码前确保开发板上安装了rsync,开发板执行以下命令可安装rsync
sudo apt-get install rsync
上边的IP要根据开发板实际情况修改,信息由ifconfig得到。
命令执行完后,UbuntuSystem里就保存着和开发板系统上一样的文件系统内容了
1、制作镜像了,用dd工具创建镜像文件:
dd if=/dev/zero of=linuxroot.img bs=1M count=2048
格式化镜像文件
sudo mkfs.ext4 linuxroot.img
//sudo mkfs.ext4 -F -L linuxroot linuxroot.img
挂载镜像并往里面拷入修改后的文件系统:
mkdir rootfs
sudo mount linux-rootfs.img rootfs/
sudo cp -rfp UbuntuSystem/* rootfs/
/**
* sudo mount -o loop linux-rootfs/jdk8/linux-rootfs.img rootfs/ // 挂载已有镜像
*
*e2fsck -f linux-rootfs.img // 检查镜像
*
* resize2fs linux-rootfs.img 4096M // 增大img镜像至4G
*
* resize2fs -M linux-rootfs.img // 把镜像缩到最小
*
* resize2fs -PM linux-rootfs.img // 在修改的过程显示进度(大写的,P)
*
* resize -p linux-rootfs.img // 显示镜像里真正的文件大小(小写的,p)
*
*
*/
缷载镜像:
sudo umount rootfs
此时发现根目录已经有linuxroot.img镜像文件
**
这样linuxroot.img里就已经有刚才制作的根目录内容了,但linuxroot.img文件大小却是定义的分区大小,不是文件系统的实际大小,所以还要经过一些处理才能发布。
检查并修复linuxroot.img镜像的文件系统,不熟悉的朋友可以通过网络了解此工具:
e2fsck -p -f linux-rootfs.img
减小linuxroot.img镜像文件的大小:
resize2fs -M linux-rootfs.img
下来就可以用来烧录了。
三、img烧录到设备froot分区
1、开发板链接Windows电脑,并打开AndroidTools烧录工具,让开发板进入Loading模式;
2、选择rootfs 分区,并选择前面制作的根文件系统ubuntu.img,进行烧录;
3、烧录进度100% 后,开发板会自动重启,进入新系统。