树莓派俱乐部 树莓派俱乐部
  • 首页
  • 树莓派
  • OpenWrt
  • Python
  • Linux
  • 注册
    登录
现在登录。
  • 首页
  • 树莓派
  • OpenWrt
  • Python
  • Linux
首页 Linux 如何构建树莓派64位系统(3)编译初始化根目录(非必要)

如何构建树莓派64位系统(3)编译初始化根目录(非必要)

chainsx 3年 前

先说说这个初始化根目录的工作原理吧。我们在内存中划分出一块16m的ramdisk作为初始化的根目录,这样在扩容真正的根文件系统时就没有挂载根文件系统,真正的根文件系统在扩容时就并非在线扩容,这样确保了在扩容时根文件系统的数据安全性。

为什么非必要呢,因为这是一般企业级(不要误会,此企业非彼企业)在使用sd卡启动的开发板系统时的解决方案,但是对于树莓派玩家如果频繁更换系统的根本没必要,也因为是企业级方案,我们也没有太多精力去完整实现,所以基于noobs的启动方式来实现,对于有需要的树莓派玩家可以仔细琢磨。

我们先编译buildroot

从github上克隆源码

git clone --depth=1 -b master https://github.com/buildroot/buildroot

现在地master分区其实是2020.02.x 分支,后期可能需要手动换成2020.02.x 分支。

然后获取配置文件,可以从github此系统的开源页面上找到,下面附文件

配置文件
下载

将文件放在buildroot命令下更名为.config

cd buildroot && wget -O .config https://github.com/chainsx/cxcore/raw/master/files/config

然后编译

make

花费时间会很久,和编译openwrt一样,还要先编译交叉编译工具链。

编译完成后在buildroot/output/images/rootfs.tar

cd .. && mkdir initroot
cp buildroot/output/images/rootfs.tar initroot

之后别忘了把buildroot文件夹删了,占用空间太大了

rm -rf ../buildroot

当然了,我这里提供了编译好的文件。

initroot
下载

如果你需要使用我编译好的

cd initroot && wget https://github.com/chainsx/cxcore/raw/master/files/rootfs.tar.gz
gunzip rootfs.tar.gz

然后解压

tar -xvf rootfs.tar && rm rootfs.tar

接下来我们在etc/init.d下创建开机扩容脚本,

nano etc/init.d/S99flash

脚本内容如下

#!/bin/sh
BLKDEV=/dev/mmcblk0
ROOTPART_SEQ=3
dialog --title INIT-SYSTEM --infobox "Initing System, Please Wait A Moment....." 20 60
parted -s $BLKDEV -- resizepart $ROOTPART_SEQ 100%
resize.f2fs $BLKDEV"p"$ROOTPART_SEQ
cd /boot
rm *.dtb >> /dev/null
rm BUILD-DATA >> /dev/null
rm -rf defaults >> /dev/null
rm -rf overlays >> /dev/null
rm recover* >> /dev/null
rm RECOVERY_FILES_DO_NOT_EDIT >> /dev/null
rm riscos-boot.bin >> /dev/null
mv EFI-BOOT/* . >> /dev/null
rmdir EFI-BOOT >> /dev/null
sync
sleep 5
reboot

添加可执行权限

chmod +x initroot/etc/init.d/S99flash

然后编辑fstab

nano etc/fstab

内容如下

# <file system>	<mount pt>	<type>		<options>	<dump>	<pass>
/dev/root	/		squashfs	rw,noauto	0	1
/dev/mmcblk0p1	/boot		vfat		defaults	0	0
proc		/proc		proc		defaults	0	0
devpts		/dev/pts	devpts		defaults,gid=5,mode=620,ptmxmode=0666	0	0
tmpfs		/dev/shm	tmpfs		mode=0777	0	0
tmpfs		/tmp		tmpfs		mode=1777	0	0
tmpfs		/run		tmpfs		mode=0755,nosuid,nodev	0	0
sysfs		/sys		sysfs		defaults	0	0

然后制作初始化根目录为squashfs的镜像

cd ..
mksquashfs initroot recovery.rfs

删除无用文件

rm -rf initroot

前面提到过,我们需要基于noobs的启动方式,然后下载noobs lite。

noobs lite 3.2
下载
mkdir noobs
wget https://mirrors.tuna.tsinghua.edu.cn/raspbian-images/NOOBS_lite/images/NOOBS_lite-2019-07-12/NOOBS_lite_v3_2.zip

解压noobs并删掉noobs的核心----recovery.rfs

unzip NOOBS_lite_v3_2.zip
rm *txt
rm NOOBS_lite_v3_2.zip
rm recovery.rfs

复制我们制作的recovery.rfs到此文件夹

cp ../recovery.rfs .

更改cmdline启动命令

nano recovery.cmdline

将里面的init=/init删除

然后初始化根目录就制作完成了,后面我们将会讲到如何使用。

#64位#启动#树莓派
0
chainsx
嗷?
评论 (0)
返回
    发表评论
猜你喜欢
  • 树莓派4B安装Windows10桌面版
  • 在树莓派上使用RaspAP开启热点
  • 树莓派3B Windows 10桌面版安装GPU驱动
  • 树莓派3B安装Windows10桌面版
chainsx
嗷?
23
文章
16
评论
323
获赞
文章聚合
CentOS 8 时间同步和如何关闭防火墙
4年 前
如何在 Raspberry Pi 上安装 Git
3年 前
将您的树莓派4超频至2.0GHz
4年 前
自定义树莓派分辨率
4年 前
树莓派64位启动过程概述
4年 前
  • 首页
Copyright © 2018-2023 树莓派俱乐部. Designed by nicetheme.