拷贝Linux文件系统

背景
操作步骤,分为三步:
一、使用rsync工具拷贝根文件系统
二、制作ext4的根文件系统
三、烧写测试

拷贝Linux文件系统

背景

一般的Linux发行版ubuntu和Debian,除了u-boot和kernel可以从源码构建,根文件系统是一个编译好
的img文件。当我们在Linux安装好自己程序的运行或者开发环境,想把板子的系统移植到其他板子,就
需要把板子的文件系统拷贝下来,重新打包为一个整包镜像或者根文件系统镜像(rootfs.img),烧录到其
他板子

操作步骤,分为三步:

一、使用rsync工具拷贝根文件系统

准备工作:
1、开发板插上网线,板子和电脑处于同一个网段,并能连接到外网
2、通过USB转TTL串口设备连接板子的debug串口,进入板子系统(比如使用xshell工具,串口波特率
为115200),执行一下操作
开始拷贝:
1、准备一台Ubuntu系统的实体机或虚拟机作为PC端
2、在开发板的 UBUNTU 系统上面安装软件 openssh 的服务端 openssh-server:
通过ifconfig获取以太网的ip

root@linaro-alip:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.199 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::ee8d:ec48:ff2:78b5 prefixlen 64 scopeid 0x20<link>
ether 3e:8a:6d:b3:2c:d7 txqueuelen 1000 (Ethernet)
RX packets 6484 bytes 468943 (457.9 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 231 bytes 39905 (38.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 27

3、修改开发板 root 登录权限:
4、在 sshd_config 中修改 PermitRootLogin 选项如下,用以确保 root 登录权限足够

5、.重启开发板或者重启 ssh 服务
6、PC 端安装 openssh 客户端 openssh-client
7、PC 端安装 rsync
8、PC 新建目录 ubuntu_make 并进入并创建Ubuntu目录 :
9、同步数据:

sudo apt-get update #密码为rpdzkj
sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config
/etc/init.d/ssh restart
sudo apt-get install openssh-client
sudo apt-get install rsync
mkdir ubuntu_make
cd ubuntu_make
mkdir ubuntu
sudo rsync -avx root@<开发板 IP>:/ ubuntu/

二、制作ext4的根文件系统

1、同步完成后,PC 进入 ubuntu 文件夹下面增加脚本文件 etc/onlyone.sh
onlyone.sh 内容为:
2、.PC 端 ubuntu 文件夹下更改该文件权限:
3、.返回上级目录(make_ubuntu),并制作一个make_ubuntu.sh 到当前文件夹:
make_ubuntu.sh的内容如下

cd unbuntu
sudo vim etc/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
sudo chmod 777 etc/onlyone.sh
cd ..
vim 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 == "ubuntucore"
-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权限
4、运行 make_unbuntu.sh 制作 ubuntu 固件:
5、或制作 ubuntu_core:(只有你本来的文件系统是Ubuntu_core才需要这步)
脚本运行完成,在ubuntu-rootfs 目录下生成 ubuntu_core、ubuntu 固件

三、烧写测试

1、做好的img镜像重新命名为rootfs.img,可以将其分区烧写,验证该文件系统是OK的再打包为整包镜
像来批量烧写
2、下载网盘SDK下的Linux源码,解压到PC端的一个空白目录
3、将上述 linux-rootfs.img/linux-rootfs-core.img 命名为ubuntu.img,替换源码ubuntu目录下的相同
文件(没有ubuntu目录就建立一个)
,返回源码根目录,运行编译脚本生成整包固件:

sudo chmod 777 make_ubuntu.sh
sudo ./make_ubuntu.sh ubuntu
sudo ./make_ubuntu.sh ubuntu_core
rpdzkj@ubuntu:~/debug/ubuntu_make/ubuntu$ ls
linux-rootfs-core.img linux-rootfs.umg
rpdzkj@ubuntu:~/debug/ubuntu_make/ubuntu$
rpdzkj@rpdzkj:~/first/linux/px30-linux$ ./build.sh init #第一次编译要选择板型和系统,
这里以rp-px30为例子
processing option: init
============You're building on Linux===========
Please choose BoardConfig
1. BoardConfig_rp_px30_buildroot
2. BoardConfig_rp_px30_ubuntu
3. BoardConfig_rp_px30_ubuntu_core
4. BoardConfig_rp_px30_debian
5. BoardConfig_nano_px30_buildroot
6. BoardConfig_nano_px30_ubuntu
7. BoardConfig_nano_px30_ubuntu_core
8. BoardConfig_nano_px30_debian
编译完成后,即可在 rockdev/下生成 update-*.img
9. BoardConfig_dr4_px30_buildroot
10. BoardConfig_dr4_px30_ubuntu
11. BoardConfig_dr4_px30_ubuntu_core
12. BoardConfig_dr4_px30_debian
Please input num:
rpdzkj@rpdzkj:~/first/linux/px30-linux$ ./build.sh #先整包编译一遍,也就是先编译uboot
和kernel,如果你不 是第一次编译,
这一步可以不执行
rpdzkj@rpdzkj:~/first/linux/px30-linux$ ./build.sh firmware
rpdzkj@rpdzkj:~/first/linux/px30-linux$ ./build.sh updateimg

rp官方提供的打包开发版文件系统的方式相关推荐

  1. 打包开发板根文件系统,并制作成img镜像

    打包开发板根文件系统,并制作成img镜像. 打包根文件系统,并制作成img镜像. 整体操作一共三步: 一.将开发板的整个根文件系统的文件,通过ssh拷贝到PC系统(Ubuntu): 二.将此拷贝的全部 ...

  2. rk3128 通过自带buildroot打包开发板根文件系统,重做自己的img镜像

    对rk3128要生成自己的qt镜像文件 据说这样才方便大批量的烧录 打包分析 根据九鼎里面带有的编译脚本,把自定义的uboot,kernel,rootfs进行替换,用他的脚本就能打包了 他自己也是这样 ...

  3. MIUI12查看Android版本,MIUI12新功能与支持机型一览 开发版内测申请教程

    4月27日下午的小米10青春版发布会上,小米首先带来了全新的MIUI12,新的系统对Android进行了全方位的优化,和上一版MIUI11相比,在UI设计和细节功能等各个方面都有了明显的提升.根据发布 ...

  4. 小程序问题记录 | 使用官方提供的云数据库存储md格式的文件,前台解析遇到的坑!!!!

    官方提供了云开发方案,真的是省心,又省钱.(非广告☹️) 可坑死我了... 由于我要在前台展示类似于blog格式的文章,markdown作为源数据.起初是在本地封装module的方案,来提供md数据源 ...

  5. Qt程序打包发布方法(使用官方提供的windeployqt工具)

    Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方开发环 ...

  6. 血泪踩坑:没有官方开发版MIUI如何给手机刷机?

    一.背景概述 了解到公司晚上9点打卡有30块钱补贴,准备研究一下手机上的位置穿越.找了几个工具都需要系统的root权限,然后准备刷机,因为之前有刷过安卓平板的经历,最后玩的太嗨变砖的经历,准备这次谨慎 ...

  7. Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方

    Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方开发环 ...

  8. 从源码中编译安装gmt官方开发版(优先体验最新功能)

    gmt: generic mapping tools是一个通用绘图工具,绘制曲线图和地形图.世界地图或者区域地图方面表现极其优秀!这是地球科学领域享有盛名的绘图工具,其安装有两种方式: (1)从官方发 ...

  9. 开发版速达-提供在线帐套配置功能

    为了让不同的用户选择不同的帐套,开发版速达提供了在线帐套配置功能:(该配置功能与速达程序无法兼容) 一.请在服务端程序中启用在线配置功能: 勾选启用在线帐套配置,至此程序已经支持在线帐套配置功能: 二 ...

最新文章

  1. OpenCV 【十八】图像平滑处理/腐蚀与膨胀(Eroding and Dilating)/开闭运算,形态梯度,顶帽,黑帽运算
  2. python提示keyerror 13372,Python 学习笔记之—— Pandas 库
  3. Android开发之使用SharedPreferences实现QQ登陆的选项框记忆功能(源代码分享)
  4. 卷积神经网络中的各种池化操作
  5. python绘制条形图-Python数据分析条形图的各种绘制方式
  6. 等价类划分方法的应用
  7. redis 内存溢出_Redis为何这么快数据存储角度
  8. 复旦大学邱锡鹏教授团队:Transformer最新综述
  9. 笔记本高分屏字体模糊_笔记本win8系统设置1920*1080高分屏后字体模糊的解决方法...
  10. html之四种方法导入css...
  11. [leetcode]174. 地下城游戏
  12. Python2安装说明
  13. java中包定义_java中包的定义与使用
  14. linux命令we,Linux 命令执行过程
  15. lol最强最高输出的adc_lol最强adc大盘点 lol大后期胜率最高的adc除了薇恩还有谁...
  16. 腾讯新出了一款音乐app,它能代替QQ音乐吗?
  17. 菜鸟教程:零基础HTML入门
  18. PlayStation@4功能介绍及测试应用
  19. FlowJo For Mac(流式细胞分析器工具)
  20. win FlashFxp与ubuntu vsftpd共享文件

热门文章

  1. 优化算法-3:RMSProp算法和Adam算法
  2. HTTPS代理的工作原理
  3. Godot Engine:Blender模型导入Godot自动生成的场景结构
  4. 乌班图linux命令,乌班图Ubuntu常用命令及用法详解
  5. 网络虚拟化(SDN,NFV..)和企业骨干网的演化
  6. moon服务器 zerotier_使用ZeroTier组建虚拟内网/如何搭建MOON转发服务器
  7. linux sed f,Linux Sed 命令详解
  8. 子曾经曰过,不是想要轻言放弃,只是已经没有坚持下去的理由
  9. Android逆向之去除APK中的广告
  10. matlab计算不同时间步长,Matlab ODE求解器中的时间步长计算