# Jetson-NanoShrink **Repository Path**: yeahbot-ros/jetson-nano-shrink ## Basic Information - **Project Name**: Jetson-NanoShrink - **Description**: Jetson-NanoShrink 是一个 bash 脚本,可自动收缩 Jetson Nano 镜像文件。收缩后的镜像将在首次启动时自动扩展至 SD 卡最大容量,从而加快镜像烧录速度并提升压缩率。 此外,收缩后的镜像支持 gzip 和 xz 压缩,通过多核并行压缩可进一步减小体积。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-14 - **Last Updated**: 2025-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Jetson-NanoShrink # Jetson-NanoShrink 是一个 bash 脚本,可自动收缩 Jetson Nano 镜像文件。收缩后的镜像将在首次启动时自动扩展至 SD 卡最大容量,从而加快镜像烧录速度并提升压缩率。 此外,收缩后的镜像支持 gzip 和 xz 压缩,通过多核并行压缩可进一步减小体积。 ## 用法 ## ```text 用法: Jetson-Nanoshrink.sh [-adhnrsvzZ] 镜像文件.img [新镜像文件.img] -s 禁止首次启动时自动扩展文件系统 -v 显示详细输出 -n 禁用版本更新检查 -r 常规修复失败时尝试高级文件系统修复 -z 收缩后使用gzip压缩(自动添加.gz后缀) -Z 收缩后使用xz压缩(自动添加.xz后缀) -a 启用多核并行压缩(pigz用-f9,xz用-T0) -d 生成调试日志pishrink.log ``` 指定新镜像文件.img时,脚本将基于原文件创建副本进行操作。需确保有足够空间存放完整副本。 `-s 禁止镜像首次启动时的文件系统自动扩展 `-v 显示更多执行细节 `-n 禁止脚本检查 GitHub 是否有新版本 `-r 文件系统常规修复失败时启用额外修复选项 `-z/-Z 压缩格式选择,自动添加对应后缀 `-a 并行压缩:pigz 使用 - f9,xz 使用 - T0(利用全部核心) `-d 生成调试日志,便于问题排查 压缩工具默认参数可通过环境变量覆盖: PISHRINK_GZIP(gzip)或PSHRINK_XZ(xz) ## 前置条件 ## VirtualBox 环境:直接使用共享文件夹可能导致错误,建议先复制镜像到虚拟机本地 Ubuntu 系统:旧版 e2fsck 可能报错(metadata_csum),推荐使用 16.10 + 版本 分区要求:仅支持收缩最后一个 ext2/ext3/ext4 分区,非根分区无法实现启动自动扩容 Systemd 系统:如需自动扩容,需启用 /etc/rc.local 兼容模式 ## 安装指南 ## ### Linux安装 ### Debian/Ubuntu 用户执行: ```bash sudo apt update && sudo apt install -y wget parted gzip pigz xz-utils udev e2fsprogs ``` 下载并安装脚本: ```bash chmod +x Jetson-Nanoshrink.sh sudo mv Jetson-Nanoshrink.sh /usr/local/bin ``` > [!警告] > 必须在包含镜像的目录执行命令 ## 例子 ## ```bash root@ub:~# Jetson-Nanoshrink.sh test_mbr.img test_mbr_pressed.img PiShrink v24.10.23 - https://github.com/Drewsif/PiShrink Jetson-Nanoshrink.sh: Copying test_mbr.img to test_mbr_pressed.img... Jetson-Nanoshrink.sh: Gathering data Jetson-Nanoshrink.sh: An existing /etc/rc.local was not found, autoexpand may fail... grep: /tmp/tmp.FIAcyHrehy/etc/rc.local: No such file or directory Creating new /etc/rc.local Jetson-Nanoshrink.sh: Checking filesystem nano: 342038/3784704 files (0.6% non-contiguous), 7076614/15107835 blocks resize2fs 1.44.1 (24-Mar-2018) Jetson-Nanoshrink.sh: Shrinking filesystem resize2fs 1.44.1 (24-Mar-2018) Resizing the filesystem on /dev/loop25 to 7231051 (4k) blocks. Begin pass 2 (max = 56519) Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Begin pass 3 (max = 462) Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on /dev/loop25 is now 7231051 (4k) blocks long. Jetson-Nanoshrink.sh: Zeroing any free space left Jetson-Nanoshrink.sh: Zeroed 1.1G Jetson-Nanoshrink.sh: Shrinking partition Jetson-Nanoshrink.sh: Truncating image Jetson-Nanoshrink.sh: Shrunk test_mbr_pressed.img from 58G to 28G ``` ## 贡献说明 ## 发现 bug 或建议新功能请创建 Issue 欢迎提交 Pull Request 修复问题或增加功能