外部存储设备 rootfs 挂载
根文件系统除了可以使用在内部的 eMMC 中的,还可以使用外部存储设备的根文件系统,如 SD 卡,U 盘等。以下是以 SD 卡为例,在 Firefly-RK3399 设备上实现挂载外部存储设备的根文件系统。
在 SD 卡上建立分区
在 PC 机上插入 SD 卡,用 <span class="pre">gdisk</span> 工具分出一个装载根文件系统的分区:
sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help):
-------------------------------------------------------------------
Command (? for help): p
Disk /dev/sdb: 15278080 sectors, 7.3 GiB
Model: CARD-READER
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 5801AE61-92ED-42FB-A144-E522E8E15827
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15278046
Partitions will be aligned on 2048-sector boundaries
Total free space is 15278013 sectors (7.3 GiB)
Number Start (sector) End (sector) Size Code Name
-------------------------------------------------------------------
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-15278046, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-15278046, default = 15278046) or {+-}size{KMGTP}: +3G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
-------------------------------------------------------------------
Command (? for help): i
Using 1
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: 6278AF5D-BC6B-4213-BBF6-47D333B5CB53
First sector: 2048 (at 1024.0 KiB)
Last sector: 6293503 (at 3.0 GiB)
Partition size: 6291456 sectors (3.0 GiB)
Attribute flags: 0000000000000000
Partition name: 'Linux filesystem'
-------------------------------------------------------------------
Command (? for help): wq
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
把新创建的分区进行格式化。
sudo mkfs.ext4 /dev/sdb1
格式化完成后,使用 <span class="pre">dd</span> 命令,将制作好的根文件系统烧写到 SD 卡刚新建的分区中。
# 用户请根据实际情况填写根文件系统镜像的路径和 SD 卡对应分区设备名
dd conv=fsync,notrunc if=/rootfs_path/rootfs.img of=/dev/sdb1
挂载 SD 卡根文件系统
首先要修改设备树文件,打开对应的 dts 文件,在根节点下重写 <span class="pre">chosen</span> 节点下的 <span class="pre">bootargs</span> 参数的 <span class="pre">root</span> 值为写入了根文件系统的 SD 卡分区的 unique GUID:
chosen {
bootargs = "earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 console=ttyFIQ0 rw root=PARTUUID=6278AF5D-BC6B rootfstype=ext4 rootwait";
};
修改完成后编译并烧录至设备中。
SD 卡的根文件系统烧录完成后,插入设备的 TF 卡槽中,开机即可进入到 SD 的根文件系统中。
注意事项:
在操作前请注意备份 U 盘或者 SD 卡内的重要文件,避免丢失;
操作时请确认自己的 SD 卡对应的设备名;
dts 文件中 <span class="pre">root</span> 参数的值使用的是 unique GUID,记下前12位即可。用户也可以根据 <span class="pre">gdisk</span> 的帮助信息自行修改这个值。
原作者:DMCF
|