mohawk

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

记 N1 Debian 的一次有惊无险的升级 (更新日期:12Aug2025)

随着8月9日 Debian 13 Trixie 的发布,感觉家中的N1盒子(运行Armbian 12)有必要跟随升级,毕竟有新版本的软件,包括 curl 的 HTTP/3 支持、wcurl、新版的 OpenSSL 等等。

一顿操作猛如虎,期间问了一些问题,都按默认(N)保留原配置处理,一直还算顺利。然而,前期的顺利,造成了麻痹大意,忽略了一个严重错误信息:

update-initramfs: Converting to u-boot format
mkimage: Write only 11775936/14758517 bytes, probably no space left on the device

在做了清理后重启,启动失败:

apt autoremove --purge

N1的引导,主要用到了 zImage 和 uInitrd 这两个文件,而由于权限原因,以往系统内核升级会出错失败,但不影响正常运行。幸好,现系统使用的5.15.126+内核是自己编译安装的,deb 包有备份。

U盘写入 Armbian 并启动,解开5.15.126+内核deb包,将N1的 mmcblk2p1 (/boot分区所在设备)挂载到 /mnt,与解开的内核 deb 包进行文件对比,发现 zImage 文件大小一致,uInitrd 比 /mnt 的小。看起来,initramfs-tools 在写入 uInitrd 的过程中,因 /boot 写满出错跳出,文件未写全,没有象过去那样回滚到老版本,造成了系统启动失败。

用 deb 包解开的 uInitrd 替换 /mnt 内同名文件后重启,系统恢复正常。

经验教训及 Tips:

  • 大版本的系统升级,一定要密切注意所有错误信息,以免出现问题手足无措。
  • 做好N1内核的关键文件备份,至少备份 zImage 和 uInitrd。这次就用内核安装包解包恢复了写入错误的 uInitrd。
  • N1的 /boot 分区大小有限,要注意及时清理。系统恢复后,将老版 5.0.2 内核删除,腾出近 40M 空间。
  • N1没有用到 uImage,如果 /boot 内有这个文件,可以删除,能回收8.8M。
  • N1的引导,没有用到 grub。

N1盒子扩容后的相关问题及处理 (更新日期:05Sep2025)

N1的 8GB eMMC 实在捉襟见肘,几年来一直凑合着用:跑轻量 docker,用符号链接将 docker 相关目录映射至外挂硬盘解决容量不足问题。然而,长期挂载移动硬盘的稳定性、安全性(搞卫生碰掉几次)都不理想。现今,海鲜市场扩容 N1 工艺已非常成熟,全新 64G eMMC 不过2位数。于是,将一台备用 N1 递出,不日改好递回。

在用的 Armbian 是当年大毛 balbes150 的 5.77,一路升级到 Trixie,内核由 5.0.2 升级到自编译的 5.15.126。

系统迁移有2个选择:

  • 全新安装 ophub 的 Armbian 系统,最新内核,最新 Debian Trixie,更新维护及时,但,所有配置重做,包括打印机配置(我的打印机是 HP 1020 Plus,固件外置,配置很麻烦)、外链、动态域名……想想就怕。
  • 用 ophub Armbian 系统U盘启动,用 Armbian-ddbr 脚本做好系统备份,恢复到扩容后的备用 N1 上。

最后决定采用方案2。店家完成扩容后,帮刷上了降级小改的安卓固件,需要额外安装1个 APP: reboot update,装好运行它,重启,插上事先用 rufus 写好的 Armbian U盘,启动到 Armbian。
注意:一定不要在安卓系统运行状态下插入U盘,否则会改写U盘所有文件的属性为1023:1023。

U盘启动后,运行 Armbian-ddbr 恢复原系统,关机拨出U盘,重拨插电源,用内置 eMMC 启动系统成功。

  • 有线网络 MAC 地址每次重启随机变化
    重启完成后想固定IP,发现有线网卡 MAC 地址每次重启都会随机变化,固定其 MAC 地址有几个方法,最方便的是:修改 /boot/uEnv.ini,增加一行:ethaddr=FC:7C:02:xx:xx:xxFC:7C:02为斐讯公司),详细方法可在这里查阅。

  • 系统备份恢复后,分区保持原样,扩容后增加的空间未利用
    用 Armbian-ddbr 恢复系统备份后,所有分区大小及文件系统(ext4或btrfs)与扩容前保持一致,扩容后增加的空间未被文件系统识别利用。再次用 Armbian U盘启动,执行:

parted /dev/mmcblk2 resizepart 2 100%

上述指令中,mmcblk2 为 eMMC,part 2 为根分区(part 1 为FAT16格式的 boot 分区)。执行后分区已扩大至可用空间的100%,但还需要文件系统识别并占用这个新空间,执行:

resize2fs /dev/mmcblk2p2

至此,扩容操作完成。

N1盒子减少eMMC写入优化

  • 修改/etc/fstab,不更新文件的访问时间
/dev/root  /  ext4  defaults,noatime,errors=remount-ro  0 1
  • 定期执行 Trim,回收垃圾空间
sudo systemctl status fstrim.timer
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

上述定义默认为每周执行一次

posted on 2025-08-11 01:29  珊阑雨夜  阅读(73)  评论(0)    收藏  举报