边缘云Alpine Linux
Alpine安装
树莓派环境安装Alpine Linux 可以提供轻量级的运行环境,配合 K3s - 轻量级Kubernetes 可以实现ARM环境的 Kubernetes ,并进一步实现 Infra-Service
在 边缘云计算架构(旧版) 中:
树莓派Raspberry Pi 3 采用TF卡作为存储
树莓派Raspberry Pi 4 采用外接USB磁盘
安装 Alpine Linux 采用 sys
模式,也就是直接设置磁盘分区作为可读写 rw
模式
TF卡或者外接USB磁盘需要划分2个分区:
分区1是
fat32
,256MB分区2是
ext4
,TF卡使用全部剩余空间,USB外接磁盘则划分32GB(以便将剩余空间用于部署分布式存储 Ceph )
1Disk /dev/sdb: 59.5 GiB, 63864569856 bytes, 124735488 sectors
2Units: sectors of 1 * 512 = 512 bytes
3Sector size (logical/physical): 512 bytes / 512 bytes
4I/O size (minimum/optimal): 512 bytes / 512 bytes
5Disklabel type: dos
6Disk identifier: 0x00000000
7
8Device Boot Start End Sectors Size Id Type
9/dev/sdb1 * 2048 526335 524288 256M c W95 FAT32 (LBA)
10/dev/sdb2 526336 124735487 124209152 59.2G 83 Linux
磁盘文件系统格式化:
sudo partprobe sudo mkdosfs -F 32 /dev/sdb1 sudo mkfs.ext4 /dev/sdb2
挂载:
sudo mount /dev/sdb1 /mnt
解压缩:
cd /mnt sudo tar zxvf ~/Downloads/alpine-rpi-3.15.0-aarch64.tar.gz
完成解压缩后,系统已经初步安装好,现在将TF卡插入 树莓派Raspberry Pi 3 主机,连接电源、显示器和键盘后启动
执行
setup-alpine
命令:主机名设置(第一台案例):
x-k3s-m-1.edge.huatai.me
提示有2个网卡
eth0 wlan0
,默认选择eth0
,并配置固定IP地址192.168.7.11
,默认网关192.168.7.200
最后要在
save config
时回答none
; 然后还要save cache
更新软件:
apk update
挂载分区2
备注
这里 树莓派Raspberry Pi 3 使用TF卡,所以分区2是 /dev/mmcblk0p2
对于 树莓派Raspberry Pi 4 使用USB外接SSD磁盘,则分区2是 /dev/sda2
实际方法完全一致,仅设备名区别
mount /dev/mmcblk0p2 /mnt
export FORCE_BOOTFS=1
# 这里添加一步创建boot目录
mkdir /mnt/boot
setup-disk -m sys /mnt
重新以读写模式挂载第一个分区,准备进行更新:
mount -o remount,rw /media/mmcblk0p1 # An update in the first partition is required for the next reboot.
清理掉旧的
boot
目录中无用文件:rm -f /media/mmcblk0p1/boot/* cd /mnt # We are in the second partition rm boot/boot # Drop the unused symbolink link
将启动镜像和
init ram
移动到正确位置:mv boot/* /media/mmcblk0p1/boot/ rm -Rf boot mkdir media/mmcblk0p1 # It's the mount point for the first partition on the next reboot
创建软连接:
ln -s media/mmcblk0p1/boot boot
更新
/etc/fstab
echo "/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0" >> etc/fstab sed -i '/cdrom/d' etc/fstab # Of course, you don't have any cdrom or floppy on the Raspberry Pi sed -i '/floppy/d' etc/fstab cd /media/mmcblk0p1
因为下次启动,需要标记root文件系统是第二个分区,所以需要修订
/media/mmcblk0p1/cmdline.txt
,完成修订后/media/mmcblk0p1/cmdline.txt
内容如下:modules=loop,squashfs,sd-mod,usb-storage quiet console=tty1 root=/dev/mmcblk0p2
备注
注意,对于使用外接USB磁盘,上述命令中 mmcblk0p
都需要修订成 sda
,即:
mmcblk0p1
改成sda1
mmcblk0p2
改成sda2
由于树莓派没有硬件时钟,需要解决 Alpine Linux在树莓派启动"clock skew"报错 ,所以还需要执行以下步骤:
创建空文件:
sudo touch /etc/init.d/.use-swclock
修改
/lib/rc/sh/init.sh
,在mountproc
段落后添加:
...
if $mountproc; then
ebegin "Mounting /proc"
if ! fstabinfo --mount /proc; then
mount -n -t proc -o noexec,nosuid,nodev proc /proc
fi
eend $?
fi
if [ -e /etc/init.d/.use-swclock ]; then
"$RC_LIBEXECDIR"/sbin/swclock /etc/init.d
fi
...
修改
/etc/fstab
,将最后一列指示文件系统fsck的功能关闭(0 0
):
#UUID=ea1024e0-3e6f-4552-8ebd-18b775e9648b/ext4rw,rel atime 0 1
UUID=ea1024e0-3e6f-4552-8ebd-18b775e9648b/ext4rw,relatime 0 0
重启系统:
reboot
alpine linux系统初始安装
安装必要系统软件:
sudo apk update && sudo apk upgrade sudo apk add sudo curl
修订
/etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL
我自己的账号 huatai
位于 wheel
组,这样就可以 sudo
执行命令无需输入密码