前言
rock3a
编译的镜像,烧录到128GB
的SD
卡中,根文件系统就只有3.5GB
大小,放个内核源码都不够用了,于是直接在内核下fdisk
跟resize2fs
进行扩容,结果重启后,根文件系统无法起来,对比正常的SD
卡启动打印,发现了有一行Waiting for root device PARTUUID=614e0000-00...
的打印。
根据关键字符串搜索,发现在rockchip-bsp/build/extlinux/rk3568.conf
中,追加了uuid
到cmdline
的操作
在uboot
启动过程中也可以看到
大概猜到可能是rootfs
的分区的guid
因为扩容后改变的问题,下面则正式演示一下如何正确扩容的过程。
过程
我们128GB
的SD
卡,此时还没扩容前,进入uboot
,输入part list mmc 1
,记录此时rootfs
分区的guid
为614e0000-0000-4b53-8000-1d28000054a9
然后进入内核,先输入fdisk -l
查看我们的SD
卡是哪个dev
节点,如图中所示为/dev/mmcblk1
然后fdisk
工具扩容,具体内容就不阐述了,按照下面截图来即可
fdisk
扩容完成后,用下列命令,修复下rootfs
分区(注意是rootfs
分区,不是整个SD
卡)
resize2fs /dev/mmcblk1p2
此时df -h
跟lsblk
查看,都可以看到内核下已经是扩容成功了
不过如果这个时候重启,根文件系统是起不来的,还需要在uboot
下重写下rootfs
分区的guid
。
这时候断电进入uboot
,输入part list mmc 1
,可以看到rootfs
分区此刻是异常的,分区名不见了,guid
也发生改变
根据官方的分区分布
输入以下命令
setenv uuid_rootfs 614e0000-0000-4b53-8000-1d28000054a9
setenv uuid_boot f88ea47f-8b2b-4fe6-a5aa-47d93bb2eea3
env set testpart name=boot,start=16MB,size=512MB,bootable,uuid=${uuid_boot}
setenv testpart "$testpart;name=rootfs,size=-,type=linux,uuid=$uuid_rootfs"
gpt write mmc 1 $testpart
这时候重启即可恢复正常
其他
有空可以研究下gpt
,可以参考build/mk-image.sh
参考链接
FEATURED TAGS
Ubuntu
markdown
stm32
OSDK
飞控
串口
Jscope
C
C++
bin
J-Flash
字符串
指针数组
malloc
vscode
svg
png
github
python
CMake
CMakeLists
Linux
拷贝构造函数
GIF
录屏
docker
操作系统
make
Makefile
文件操作
DSP
CCS
SQL
MySQL
shell
bochs
计算机网络
win10
SMTP
Socket
iOS
uxplay
投屏
证书错误
apt
nodesource
ELF
Typora
图床
fossil
sql
git
SecureCRT
windows
cygwin
blog
alsa
alsa-utils
alsa-lib
音频
USB
链接文件
内存
mmap
tcpdump
交叉编译
网络
防火墙
crontab
bond
Linux性能
udev
linux
pcie
wsl2
MMIO
wsl
qemu
raspi4
gdb
ssh
tun
tap
ifconfig
打印
gmac
phy
vim
组播
rock3a
win11
usb
sd
ubuntu
iptables
netfilter
wifi
veth
ipv6
wireshark
radvd
dhcpv6
dhcpv4
网络命名空间
br虚拟网卡
NDP
emmc
存储
raspi4b
baremental
jtag
buildroot
rootfs
ext4
调试
uboot
dropbear
raspi
ebpf
uart
baremetal
kernel
bringup
libbpf
arm64
fit
gzip
压缩
initcall_debug
bootargs
I2C