树莓派4 USB存储启动Alpine Linux(clone方式)

在通过 Clone Alpine Linux (树莓派) 复制部署好用于 K3s - 轻量级Kubernetes 管控节点的3个服务器 x-k3s-m-1 / x-k3s-m-2 / x-k3s-m-3 之后,需要部署3个工作节点。工作节点采用USB SSD,所以先采用 树莓派环境安装Alpine Linux到USB磁盘启动 ,然后以这个USB SSD磁盘的模版clone出后续同样硬件环境的Alpine Linux。

备份模版系统

可以看到分区挂载:

Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                     924.3M         0    924.3M   0% /dev/shm
/dev/sda2                31.2G    248.3M     29.4G   1% /
tmpfs                   369.7M    160.0K    369.6M   0% /run
/dev/sda1               252.0M     52.9M    199.2M  21% /media/sda1
  • 使用标准fdisk检查磁盘分区:

    Disk /dev/sde: 953.86 GiB, 1024175636480 bytes, 2000343040 sectors
    Disk model: My Passport 25F3
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
    Disklabel type: dos
    Disk identifier: 0xab86aefd
    
    Device     Boot  Start      End  Sectors  Size Id Type
    /dev/sde1  *      2048   526335   524288  256M  c W95 FAT32 (LBA)
    /dev/sde2       526336 67635199 67108864   32G 83 Linux
    

如果使用alpine linux内置fdisk查看:

Disk /dev/sda: 954 GB, 1024175636480 bytes, 2000343040 sectors
124515 cylinders, 255 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes

Device  Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/sda1 *  0,32,33     32,194,34         2048     526335     524288  256M  c Win95 FAT32 (LBA)
/dev/sda2    32,194,35   114,24,38       526336   67635199   67108864 32.0G 83 Linux
  • 按照 Clone Alpine Linux (树莓派) 对整个操作系统进行打包:

    cd /
    tar -cvpzf alpine-sys-ssd.tar.gz --exclude=alpine-sys-ssd.tar.gz --exclude=var/cache --exclude=dev/* --exclude=proc/* --exclude=sys/* --exclude=tmp/* --exclude=run/* .
    

备注

请注意,这里对于 dev proc 等动态虚拟文件系统都采用跳过备份,但是都是对子目录跳过 ( 例如 proc/* )。这是因为恢复时依然需要创建这些目录,否则启动时会因为缺少这些关键目录而导致系统报错无法正常工作。

复制系统

将目标主机使用的USB SSD磁盘插入到一台主机,例如我在 zcloud 上完成操作,使用标准fdisk进行分区:

fdisk /dev/sde

将移动SSD硬盘插入主机,按照上文做好磁盘分区,然后进行格式化:

sudo mkdosfs -F 32 /dev/sde1
sudo mkfs.ext4 /dev/sde2
  • 挂载系统:

    mount /dev/sde2 /mnt
    mkdir -p /mnt/media/sda1
    mount /dev/sde1 /mnt/media/sda1
    

备注

请注意,使用SSD移动硬盘启动Alpine Linux时,这个移动硬盘分区是 /dev/sda1 所以这里设置的挂载目录必须是 /mnt/media/sda1

  • 复制系统:

    cd /mnt
    tar zxvf ~/alpine-sys-ssd.tar.gz
    
  • 检查磁盘分区UUID:

    blkid /dev/sde2
    

显示输出:

/dev/sde2: UUID="c5e2356d-6fda-468b-be80-7eb798038100" TYPE="ext4" PARTUUID="ab86aefd-02"

这个分区UUID需要订正到clone后的系统中,这样才能保证新系统启动时正确挂载磁盘

  • 修订配置 boot/cmdline.txt

    root=UUID=c5e2356d-6fda-468b-be80-7eb798038100 modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4
    
  • 修订 etc/fstab

    UUID=c5e2356d-6fda-468b-be80-7eb798038100       /       ext4    rw,relatime 0 0
    ...
    /dev/sda1  /media/sda1  vfat defaults 0 0
    
  • 修订主机名和IP地址配置:

    • etc/hostname

    • etc/hosts

    • etc/network/interfaces

  • 卸载:

    cd /
    umount /mnt/media/sda1
    umount /mnt
    
  • 将clone的USB接口SSD移动硬盘插入 树莓派Raspberry Pi 4 ,然后加电启动验证