【树莓派真好玩】3条命令制作并压缩树莓派镜像
本帖最后由 极凹甫 于 2022-4-29 10:36 编辑树莓派真好玩
本篇文章解决2个问题:
1、如何制作定制的树莓派镜像?
2、如何压缩树莓派镜像到合适的大小?
需要准备的内容:
1、一台linux主机
2、一张你定制好的树莓派tf卡,也就是说在树莓派tf卡上已经安装好你所需的定制内容。
最近玩基于树莓派的Donkeycar,需要分享安装好的树莓派镜像,有车友问如何制作的?
这样既方便自己备份镜像,也给刚刚入门的朋友更快的安装Donkeycar在树莓派上。
如果你也有自己特色的镜像,不妨使用下面的3条命令制作树莓派镜像。
# 查看tf卡的挂载情况
sudo fdisk -l
# 制作树莓派的原始镜像文件
sudo dd if=/dev/sdb of=./rasp1.img bs=512 count=31116288 status=progress
# 压缩输出最终的树莓派定制镜像
sudo ./pishrink.sh -Za rasp1.img
将你的树莓派tf卡,插入到电脑上(电脑是linux系统)
1、 使用fdisk 查看tf卡的挂载情况
fdisk -l 命令会列出你电脑上硬盘的情况, 注意查找你的tf卡挂载的路径。
wanwu@Wanwu-HP:~$ sudo fdisk -l
Disk /dev/sda: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Hitachi HTS72502
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfaa1a705
Device Boot Start End Sectors Size Id Type
/dev/sda1* 2048 1050623 1048576 512Mb W95 FAT32
/dev/sda2 1052670 488396799 487344130 232.4G5 Extended
/dev/sda5 1052672 488396799 487344128 232.4G 83 Linux
Disk /dev/sdb: 14.86 GiB, 15931539456 bytes, 31116288 sectors
Disk model: Storage Device
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x43f8c1cd
Device BootStart EndSectorsSize Id Type
/dev/sdb1 8192 532479 524288256Mc W95 FAT32 (LBA)
/dev/sdb2 532480 31116287 30583808 14.6G 83 Linux上面命令执行后,会看到如上记录, Disk/dev/sdb 是一个14.86Gb的一个挂载点, 这个就是树莓派的tf卡。
如果你的电脑硬盘分区比较多,请认真找到 tf挂载路径。
然后找到下面这一段, 其中红色的字31116287 记下来, 后面的命令会用到。
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/sdb2 532480 31116287 30583808 14.6G 83 Linux
2、使用dd制作一个镜像
dd命令用于读取、转换并输出数据;if 是数据源,树莓派tf卡的挂载目录/dev/sdb, of是输出数据,树莓派镜像文件rasp1.img;
count的值是上面记录的31116287+1,这个+1 一定要有;
status=progress 是显示数据输出的进度;如果你没有安装progress是看不到进度的。
这个过程时间很长,如果一个16G的盘,大约时间是15~20分钟。
wanwu@Wanwu-HP:~$ sudo dd if=/dev/sdb of=./rasp1.img bs=512 count=31116288 status=progress
15919596032 bytes (16 GB, 15 GiB) copied, 899 s, 17.7 MB/s
31116288+0 records in
31116288+0 records out
15931539456 bytes (16 GB, 15 GiB) copied, 899.672 s, 17.7 MB/s
命令制作完成,img文件就是一个树莓派镜像, 这个镜像是完全可以使用的。
但是这个镜像文件中有很多数据是空白的,无效的,而且这个镜像文件会很大。 就用下面的命令进行压缩输出。
3、使用pishrink来压缩你的镜像
pishrink 是一个自动化脚本可以压缩树莓派镜像。 下载路径https://github.com/Drewsif/PiShrink
执行下面的命令, 预计时间半个小时。
wanwu@Wanwu-HP:~$ sudo ./pishrink.sh -Za rasp1.img
这个命令执行完成, 会有一个 rasp1.img.xz文件形成, 这个文件是最终需要分享的镜像文件。
这个做出来的镜像会自动清除ssh公钥,并在首次启动时创建公钥吗 pATAq 发表于 2022-4-28 23:27
这个做出来的镜像会自动清除ssh公钥,并在首次启动时创建公钥吗
pishurink.shUsage: $0 [-adhrspvzZ] imagefile.img
-s Don't expand filesystem when image is booted the first time
-v Be verbose
-r Use advanced filesystem repair option if the normal one fails
-z Compress image after shrinking with gzip
-Z Compress image after shrinking with xz
-a Compress image in parallel using multiple cores
-p Remove logs, apt archives, dhcp leases and ssh hostkeys
-d Write debug messages in a debug log file版主一看就是老炮儿,使用pishrink压缩镜像,是有机会出现ssh的问题。 其中有个参数 -p , 可以remove ssh hostkeys。
但是如果使用-p参数,会造成一个情况ssh是Enable的,同一个网络中无法连接的问题。需要接上显示器,启动raspi-config,重新设置一下ssh enable。
如果不使用-p参数,ssh是可以连接。
这个也仅仅是我的经验, 但是详细具体的情况,可能还需要测试。
对, 就是这个步骤. 我之前这么做的,但是在备份的时不小心删掉了. 我最小的一个镜像精简到了 2.4GB
阿钟,我们如果不用图形界面的话,可以更精简一些的.
还有一种方法,不用全部系统打包出来.
实际上用 df -Th 看到的磁盘空间使用率只有 4.8G
如果将系统以 5G 的大小打包, 可以使得原始镜像就小于 磁盘原始大小的 16GB 或者我这里看到的64GB, 我们可以尝试用 gparted 重新构建分区表.
缩减分区大小,不过你的方法已经是最简单了.哈哈
试试把这里面的改动合并进最新的脚本,应该可以解决 ssh 的问题,并删除 bash 历史
Source:https://github.com/bg-master/PiShrink
Target :https://github.com/Drewsif/PiShrink
diff:With option -p delete also users bash history,Generate host keys on first boot with option -p pATAq 发表于 2022-4-30 11:15
试试把这里面的改动合并进最新的脚本,应该可以解决 ssh 的问题,并删除 bash 历史
Source:https://github ...
赞赞赞!!!! history -c 删除bash历史记录
页:
[1]