自己制作树莓派启动盘
所需材料
- 1个存储介质,U盘/SD卡,存储容量不小于16G
- 树莓派官方镜像,传送门
Step1 对存储介质分区
利用fdisk命令给存储介质分析,本例子存储介质为SD卡,分两个区,第一个分析存储boot信息,第二个分区为根目录分区
    create 2 partition(boot and rootfs) by fdisk    (attention:  the rootfs must be the last partition)
    Device         Boot  Start       End   Sectors  Size Id Type
    /dev/mmcblk0p1        2048    526335    524288  256M  c W95 FAT32 (LBA)
    /dev/mmcblk0p2      526336 124735487 124209152 59.2G 83 Linux
    #mkfs.vfat /dev/mmcblk0p1
    #mkfs.ext4 /dev/mmcblk0p2
Step2 把系统数据拷贝到存储介质
查看树莓派官方镜像分区情况
通过fdisk -l 查看镜像分区情况
    #fdisk -l 2018-10-09-raspbian-stretch.img 
    Disk 2018-10-09-raspbian-stretch.img: 3.9 GiB, 4135583744 bytes, 8077312 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
    Disklabel type: dos
    Disk identifier: 0x2ee8b6fe
    Device                           Boot Start     End Sectors  Size Id Type
    2018-10-09-raspbian-stretch.img1       8192   97890   89699 43.8M  c W95 FAT32 (LBA)
    2018-10-09-raspbian-stretch.img2      98304 8077311 7979008  3.8G 83 Linux
计算分区偏移并挂载
首先把存储卡两个扇区挂载到本地目录
    #mount -t vfat /dev/mmcblk0p1 boot
    #mount -t ext4 /dev/mmcblk0p2 rootfs
接下来把官方镜像分区内容拷贝到存储卡中
每个扇区512byte, 所以第一个分区从8192 * 512 = 4194304开始, 第二个分区从98304 * 512 = 50331648开始 依次挂载官方镜像分区,并把内容拷贝到存储卡(通过挂载会出错,只能分开挂载)
    #mount -v -o offset=4194304 -t vfat 2018-10-09-raspbian-stretch.img img1
    #cp -rav img1/* boot
    umount img1
    #mount -v -o offset=50331648 -t ext4 2018-10-09-raspbian-stretch.img img2
    #cp -rav img2/* rootfs
    umount img2
Step3 修改系统文件
首先查看存储介质的分区UUID信息
    #blkid
    /dev/mmcblk0p1: SEC_TYPE="msdos" UUID="boot" TYPE="vfat" PARTUUID="xx31278f-01"
    /dev/mmcblk0p2: UUID="rootfs" TYPE="ext4" PARTUUID="xx31278f-02"
修改boot分区的cmdline.txt文件,因为引导启动,需要知道root分区的UUID
    #vim boot/cmdline.txt
    change from
        root=PARTUUID=2ee8b6fe-02 
    to 
        root=PARTUUID=xx31278f-02
修改fstab文件,让能正常挂载
    #vim rootfs/etc/fstab
    change from
        proc            /proc           proc    defaults          0       0
        PARTUUID=2ee8b6fe-01  /boot           vfat    defaults          0       2
        PARTUUID=2ee8b6fe-02  /               ext4    defaults,noatime  0       1
    to
        proc            /proc           proc    defaults          0       0
        PARTUUID=xx31278f-01  /boot           vfat    defaults          0       2
        PARTUUID=xx31278f-02  /               ext4    defaults,noatime  0       1
自己制作树莓派启动盘的意义
在进行上述操作后,我对系统镜像的理解更加清晰了
DIY很有趣,自己可以定制系统,可以修改引导文件,可以修改内核文件
 事实上,除了启动过程的部分文件没有开源之外,其他任何文件都是可以修改定制的,这真正是树莓派有趣,好玩的地方。