Difference between revisions of "How to make your own SD-bootable ROM/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(制作量产用的文件系统 (以s5p4418为例))
(制作量产用的文件系统 (以s5p4418为例))
Line 3: Line 3:
 
==制作量产用的文件系统 (以s5p4418为例)==
 
==制作量产用的文件系统 (以s5p4418为例)==
 
===烧写系统到emmc,按你的项目要求配置系统===
 
===烧写系统到emmc,按你的项目要求配置系统===
a1) 用 s5p4418-eflasher-friendlycore 做一张 tf 卡<br />
+
* 用 s5p4418-eflasher-friendlycore 做一张 tf 卡<br />
a2) 用 tf 卡启动,进入烧写预览界面,选中 Disable overlay filesystem,  然后正常烧写系统到 emmc<br />
+
* 用 tf 卡启动,进入烧写预览界面,选中 Disable overlay filesystem,  然后正常烧写系统到 emmc<br />
a3)    拨出 tf 卡,用 emmc 启动到 friendlycore<br />
+
拨出 tf 卡,用 emmc 启动到 friendlycore<br />
a4)    正常安装你想要的软件,配置系统<br />
+
* 正常安装你想要的软件,配置系统<br />
 
===从emmc中把文件系统备份出来===
 
===从emmc中把文件系统备份出来===
b0)  准备一个 u盘,格式化分区为 ext4 格式<br />
+
* 准备一个 u盘,格式化分区为 ext4 格式<br />
b1)  再次用 tf 卡启动系统,并拨入u盘<br />
+
* 再次用 tf 卡启动系统,并拨入u盘<br />
b2)  用电脑上用 ssh 登录: ssh root@192.168.1.231  , 密码是 fa<br />
+
* 用电脑上用 ssh 登录: ssh root@192.168.1.231  , 密码是 fa<br />
b2)  用以下命令挂载 emmc 的 rootfs 分区到 /mnt/rootfs目录:
+
* 用以下命令挂载 emmc 的 rootfs 分区到 /mnt/rootfs目录:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
mkdir /mnt/rootfs
 
mkdir /mnt/rootfs
 
mount /dev/mmcblk1p2 /mnt/rootfs
 
mount /dev/mmcblk1p2 /mnt/rootfs
 
</syntaxhighlight>
 
</syntaxhighlight>
b3)  挂载 u盘下到 /mnt/udisk (如何没有挂载), 然后创建 /mnt/udisk/rootfs 目录
+
* 挂载 u盘下到 /mnt/udisk (如何没有挂载), 然后创建 /mnt/udisk/rootfs 目录
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
mount /dev/sdb1 /mnt/udisk
 
mount /dev/sdb1 /mnt/udisk
Line 23: Line 23:
 
注:有时 u盘的设备名是 /dev/sda1已经自动挂载到 /mnt/udisk 目录<br />
 
注:有时 u盘的设备名是 /dev/sda1已经自动挂载到 /mnt/udisk 目录<br />
 
<br />
 
<br />
b4) 安装 rsync 工具
+
* 安装 rsync 工具
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
wget http://112.124.9.243/cn-apt-source.sh
 
wget http://112.124.9.243/cn-apt-source.sh
Line 31: Line 31:
 
apt-get -y install rsync
 
apt-get -y install rsync
 
</syntaxhighlight>
 
</syntaxhighlight>
b4)  将 emmc 的 rootfs 分区文件拷贝到 u盘,忽略掉特殊文件:
+
* 将 emmc 的 rootfs 分区文件拷贝到 u盘,忽略掉特殊文件:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/swapfile"} /mnt/rootfs/* /mnt/udisk/rootfs
 
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/swapfile"} /mnt/rootfs/* /mnt/udisk/rootfs
 
</syntaxhighlight>
 
</syntaxhighlight>
 
===用备份出来的文件系统,重新制作用于量产的固件===
 
===用备份出来的文件系统,重新制作用于量产的固件===
c0) 将 u盘拷到ubuntu电脑上,挂载u盘到 /media/udisk<br />
+
* 将 u盘拷到ubuntu电脑上,挂载u盘到 /media/udisk<br />
c1) 用 sd-fuse_s5p4418 重新制作 rootfs.img:
+
* 用 sd-fuse_s5p4418 重新制作 rootfs.img:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
 
git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git

Revision as of 11:38, 27 December 2019

English

1 制作量产用的文件系统 (以s5p4418为例)

1.1 烧写系统到emmc,按你的项目要求配置系统

  • 用 s5p4418-eflasher-friendlycore 做一张 tf 卡
  • 用 tf 卡启动,进入烧写预览界面,选中 Disable overlay filesystem, 然后正常烧写系统到 emmc
  • 拨出 tf 卡,用 emmc 启动到 friendlycore
  • 正常安装你想要的软件,配置系统

1.2 从emmc中把文件系统备份出来

  • 准备一个 u盘,格式化分区为 ext4 格式
  • 再次用 tf 卡启动系统,并拨入u盘
  • 用电脑上用 ssh 登录: ssh root@192.168.1.231 , 密码是 fa
  • 用以下命令挂载 emmc 的 rootfs 分区到 /mnt/rootfs目录:
mkdir /mnt/rootfs
mount /dev/mmcblk1p2 /mnt/rootfs
  • 挂载 u盘下到 /mnt/udisk (如何没有挂载), 然后创建 /mnt/udisk/rootfs 目录
mount /dev/sdb1 /mnt/udisk
mkdir /mnt/udisk/rootfs

注:有时 u盘的设备名是 /dev/sda1已经自动挂载到 /mnt/udisk 目录

  • 安装 rsync 工具
wget http://112.124.9.243/cn-apt-source.sh
chmod 755 cn-apt-source.sh
./cn-apt-source.sh
apt-get update
apt-get -y install rsync
  • 将 emmc 的 rootfs 分区文件拷贝到 u盘,忽略掉特殊文件:
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/swapfile"} /mnt/rootfs/* /mnt/udisk/rootfs

1.3 用备份出来的文件系统,重新制作用于量产的固件

  • 将 u盘拷到ubuntu电脑上,挂载u盘到 /media/udisk
  • 用 sd-fuse_s5p4418 重新制作 rootfs.img:
git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
cd sd-fuse_s5p4418
./build-rootfs-img.sh /media/udisk/rootfs friendlycore
./mk-emmc-image.sh friendlycore

现在,你可以将生成的img用于量产了。

2 制作RK3399平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_rk3399

3 制作S5P4418平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418

Example:

mkdir test
cd test
git clone https://github.com/friendlyarm/sd-fuse_s5p4418
cd sd-fuse_s5p4418/
tar xzf /mnt/dvd/S5P4418/images-for-eflasher/friendlycore-images.tgz
tar xzf  /mnt/dvd/S5P4418/images-for-eflasher/emmc-flasher-images.tgz
tar xzf /mnt/dvd/S5P4418/rootfs/rootfs-friendlycore-20190718.tgz 
sed "s/\${BOARD}/XXYYZZ/g" friendlycore/rootfs/etc/rc.local -i
./build-rootfs-img.sh friendlycore/rootfs friendlycore/rootfs.img 
./mk-emmc-image.sh friendlycore
dd if=out/s5p4418-eflasher-friendlycore-20190730.img of=/dev/sdX bs=32M


上例中两个关键的命令:
./build-rootfs-img.sh friendlycore/rootfs friendlycore/rootfs.img
将 friendlycore/rootfs 目录制作成 rootfs.img

./mk-emmc-image.sh friendlycore
将friendlycore目录下的系统制作为 eflaher固件,会生成 out/s5p4418-eflasher-friendlycore-20190730.img,直接 dd 到卡里即可

4 制作S5P6818平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p6818

5 制作H3 平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h3

6 制作H5 平台的系统映像

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h5