Linux系统移植到SD卡关键操作总结

Linux系统移植到SD卡关键操作总结

一、准备移植材料(核心组件及作用)

组件作用常见形式/来源
Uboot(引导程序)硬件初始化(如DDR、SD卡控制器)、加载内核到内存、传递启动参数给内核。需针对目标芯片(如ARM、RISC-V)和板卡编译,来源:厂商SDK、Uboot官方仓库(需适配板卡)。
内核镜像操作系统核心,负责进程管理、内存管理、外设驱动等。编译后生成zImage(压缩内核)或uImage(Uboot专用格式),来源:Linux内核官方仓库(需配置目标芯片驱动)。
设备树文件(.dtb)以二进制形式描述硬件细节(如CPU、外设地址、中断号),让内核适配不同板卡(无需重新编译内核)。由设备树源文件(.dts)编译生成,需与目标板卡硬件完全匹配(如外设型号、引脚定义)。
根文件系统包含用户空间的所有资源:可执行程序(如shls)、库(如glibc)、配置文件(如/etc)、目录结构(如/bin/home)。可通过busybox手动构建、buildroot/yocto自动生成,或使用厂商提供的最小根文件系统(需保证兼容性)。

二、SD卡分区与格式化

1. 识别SD卡设备节点

通过lsblkfdisk -l确认设备节点(如/dev/sdb),务必确认,避免误操作其他硬盘

2. 分区(推荐方案)

使用fdiskparted工具分区,常见分区方案:

  • 分区1(boot分区):存放Uboot、内核、设备树,格式为FAT32,大小建议50-100MB。
  • 分区2(rootfs分区):存放根文件系统,格式为ext4(或ext3),大小根据需求设置。

示例(fdisk操作):

fdisk /dev/sdb  # 进入分区工具
# 输入n创建新分区(分区1:起始扇区2048,大小+100M;分区2:起始扇区默认,大小剩余全部)
# 输入t修改分区1类型为“W95 FAT32 (LBA)”(代码0c)
# 输入w保存分区表

3. 格式化分区

mkfs.vfat -F 32 /dev/sdb1  # 格式化boot分区为FAT32
mkfs.ext4 /dev/sdb2        # 格式化rootfs分区为ext4

三、编译材料并写入SD卡

1. 编译各组件

  • Uboot编译:指定交叉编译工具链,加载目标板卡配置,编译生成u-boot.bin
    例:make CROSS_COMPILE=arm-linux-gnueabihf- -j4
  • 内核编译:配置内核(make menuconfig),编译生成内核镜像(zImage)和设备树(xxx.dtb)。
  • 根文件系统制作:通过buildroot/yocto自动生成,或手动构建(确保目录结构完整、文件权限正确)。

2. 写入SD卡

  • Uboot写入dd if=u-boot.bin of=/dev/sdb bs=512 seek=1 conv=fsync
  • boot分区文件复制:挂载boot分区(mount /dev/sdb1 /mnt/boot),复制内核镜像和设备树。
  • 根文件系统写入:挂载rootfs分区(mount /dev/sdb2 /mnt/root),解压根文件系统到该分区(如tar -xvf rootfs.tar -C /mnt/root)。

四、从SD卡启动验证与优化

1. 启动参数配置

Uboot中通过bootargs传递根文件系统位置给内核,例:

setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rw init=/sbin/init'

2. 启动脚本设置

配置Uboot启动命令(bootcmd),例:

setenv bootcmd 'mmc dev 0; fatload mmc 0:1 0x80800000 zImage; fatload mmc 0:1 0x83000000 xxx.dtb; bootz 0x80800000 - 0x83000000'

3. 验证

将SD卡插入目标板卡,设置启动方式为“SD卡启动”,上电后通过串口观察启动日志,确认启动成功(最终进入#命令行)。

五、从SD卡迁移到eMMC(可选)

  1. 从SD卡启动系统,确认eMMC被内核识别(如/dev/mmcblk1)。
  2. 对eMMC分区(同SD卡分区方案)。
  3. 复制数据:
    • Uboot:dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=512 seek=1 conv=fsync
    • boot分区:cp -r /boot/* /mnt/emmc_boot
    • rootfs分区:rsync -av / /mnt/emmc_root 或镜像复制
  4. 重启板卡,设置启动方式为“eMMC启动”,验证系统正常运行。

关键注意事项

  1. 工具链匹配:交叉编译工具链需与目标架构一致。
  2. 设备树正确性:必须准确描述硬件,否则内核无法识别外设。
  3. 根文件系统完整性:缺少关键文件会导致程序无法运行。
  4. SD卡兼容性:建议使用Class 10及以上的高速SD卡。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值