问题描述
给嵌入式设备更新完内核后无法启动。
u-boot 中打印的错误信息
...
...
Verifying Checksum .. Bad Data CRC
...
...
Ramdisk image is corrupt or invalid
似乎是
ramdisk 镜像受损了,导致
CRC 验证失败。
问题的解决步骤
- 以 chroot 进入原系统
- 调用 bash 进入终端
- 调用 update-initramfs 更新 initramfs 文件
- 调用 mkimage 传入更新的 initramfs 文件以生成新的内核 uInitrd 镜像文件
- 将新生成的文件放置到正确位置
- 重启
具体步骤代码及说明
这里假设你的原系统分区位于
/dev/sda1 ,启动分区位于
/dev/sda12
mount -t ext4 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
chroot /mnt /bin/bash
mount -t ext4 /dev/sda2 /mnt/boot
update-initramfs -c -t -k 5.4.0-81-generic
mkimage -A arm64 -O linux -T ramdisk -C none -a 0 -e 0 -n uInitrd -d /boot/initrd.img-5.4.0-81-generic /boot/initrd.img
umount /mnt/boot
exit
umount /mnt/{proc,sys,dev}
umount /mnt
reboot
Code language: PHP (php)
完成
你的设备应可以正常启动了!
温馨提示
在更新内核时确保内核安装完全,并在重启前将缓冲写入文件系统。
Refer
相关
0 条评论