编辑 Raspbian 镜像
这个笔记记录如何在 Raspbian 上编辑 Raspbian 镜像。为什么会有这个需要呢?第一是因为经常在 Raspberry Pi 上尝试各种各样的东西,会把系统弄得乱七八糟,所以经常要重新刷 Raspbian ,因此就有了编辑 Raspbian 镜像的需求。第二是我现在用的是 Mac OS ,编辑镜像文件并不那么方便,所以就干脆在 Raspbian 系统中编辑 Raspbian 镜像了。
首先我们要在 Raspberry Pi 的官网上下载最新的 Raspbian lite 镜像。我们也可以通过以下命令行下载:
wget https://downloads.raspberrypi.org/raspbian_lite_latest
这样我们会得到一个名字叫做 raspbian_lite_latest
的文件。我们将其改名并解压缩:
mv raspbian_lite_latest raspbian.zip
unzip raspbian.zip
解压出来的是一个后缀为 .img
的镜像文件,使用 mv
命令将其改名为 raspbian.img
。我们的目的就是编辑这个镜像文件的内容。为了达到这个目的,我们需要把这个镜像加载到系统中。这需要镜像的基本信息。
fdisk -lu raspbian.img
结果大概是这样的:
Disk raspbian.img: *** MB, *** bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
raspbian.img1 8192 122879 57344 c W95 FAT32 (LBA)
raspbian.img2 122880 3788799 1832960 83 Linux
这个镜像有两个分区,第一个分区对应的是 /boot
,而第二个分区对应的是 /
。如果我们需要开启 ssh 功能,我们需要在第一个分区生成一个名字为 ssh
的空文件。如果我们要让系统连上无线,我们则需要修改第二个分区的 /etc/wpa_supplicant/wpa_supplicant.conf
文件。
在加载这两个分区之前我们需要利用之前的信息(主要是 Start 那一列的信息)计算各分区的起始偏移(offset):
第一个分区:8192*512=4194304
第二个分区:122880*512=62914560
有了这些准备,我们就可以加载这两个分区了。
sudo mkdir /mnt/img1
sudo mount -t vfat -o loop,offset=4194304 raspbian.img /mnt/img1/
sudo mkdir /mnt/img2
sudo mount -t ext4 -o loop,offset=62914560 raspbian.img /mnt/img2/
如果在加载第二个分区的时候出错了,那么我们可以先加载第一个分区,然后再完成对第一个分区的修改后卸载第一个分区:
umount /mnt/img1
这样我们就可以继续使用之前的命令加载第二个分区并对其进行修改。最后修改完了不要忘记卸载第二分区:
umount /mnt/img2