2019 年黑五搞了个 virmach 家的年付1刀的 vps,具体配置是 1 核,100M 内存,1G 硬盘,1G流量,没错,就是 Deal Might Not Work 的那台,你可以购买,但是可能无法工作。既然买了,那就得折腾一下,虽然吃灰是必然的,但是必须挂个探针才能吃灰对不对。
100M 内存加 1G 硬盘可以选择的系统并不多,轻量级的 Alpine 更加合适一些,正好看见控制面板提供了 Alpine3.1 镜像,但是启动的时候无法识别出硬盘,也就无法进行安装了。然后打算使用救援模式重装系统,但是救援模式下是另外单独启动的内核,并且硬盘竟然挂载成功了,重装系统的话就稍微麻烦了一些。最后觉得还是挂载 Finnix 镜像手动安装更方便一些。
通过 Finnix 镜像第一遍装了最新的 Alpine3.10,但是忽略了一个很严重的问题,100M 内存是无法启动 4.X 的内核的,果真安装完成启动的时候提示因为内存过小内核无法启动,第二次装3.1成功进系统了,总共用了将近 400M 流量。
安装完成后的信息:
挂载并启动 Finnix
在控制面板挂载 Windows Offline NT Password & Registry Editor 镜像
设置启动方式为优先 CDROM
reboot 以后进 VNC ,选择 Finnix 64 位启动
修改 Finnix 的 ssh 服务开启远程登录,使用 VNC 操作比较麻烦。
passwd # 设置 root 密码
vi /etc/ssh/sshd_config # 修改 ssh 配置文件将 PermitRootLogin 改为yes
service ssh start # 开启 ssh
接下来用 xshell 或 putty 等 ssh 工具登录 Finnix 方便操作。
下载 Alpine 系统
首先使用 fdisk -l
查看一下硬盘名字,一般为 /dev/sda
或者 /dev/vda
,以下均使用 /dev/sda
。
mkfs.ext4 /dev/sda # 格式化1g硬盘
mkdir /mnt/custom
mount /dev/sda /mnt/custom/ # 挂载硬盘
apt update
apt install wget
wget http://dl-cdn.Alpinelinux.org/Alpine/latest-stable/main/x86_64/apk-tools-static-2.10.4-r2.apk # 下载 apk tools
tar xzvf apk-tools-static-2.10.4-r2.apk
./sbin/apk.static -X http://dl-cdn.Alpinelinux.org/Alpine/v3.1/main -U --allow-untrusted --root /mnt/custom/ --initdb add Alpine-base # 下载 Alpine3.1版本
cp /etc/resolv.conf /mnt/custom/etc/
mkdir -p /mnt/custom/root
mkdir -p /mnt/custom/etc/apk
echo "http://dl-cdn.Alpinelinux.org/Alpine/v3.1/main" > /mnt/custom/etc/apk/repositories # 设置apk源
创建相应设备目录
mknod -m 666 /mnt/custom/dev/full c 1 7
mknod -m 666 /mnt/custom/dev/ptmx c 5 2
mknod -m 644 /mnt/custom/dev/random c 1 8
mknod -m 644 /mnt/custom/dev/urandom c 1 9
mknod -m 666 /mnt/custom/dev/zero c 1 5
mknod -m 666 /mnt/custom/dev/tty c 5 0
挂载目录
mount -t proc none /mnt/custom/proc
mount -o bind /sys /mnt/custom/sys
mount -o bind /dev /mnt/custom/dev
配置 Alpine 系统
chroot /mnt/custom /bin/sh -l
首先 chroot 到 apline 目录。
在控制台的 network 中点击 ip 查看网卡信息,也可以等开机点控制台的 Reconfigure Networking 按钮自动配置网卡(装完以后如果没网可以这样修复)
vi /etc/network/interfaces
创建网卡配置文件,写入自己的网卡配置
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 107.175.xxx.xxx
gateway 107.175.xxx.xxx
netmask 255.255.255.224
dns-nameservers 8.8.8.8 8.8.4.4
设置 ssh
apk add openssh # 安装 openssh
vi /etc/ssh/sshd_config # 修改 ssh 配置文件允许root登录(PermitRootLogin 改为yes)
passwd # 创建 root 密码
配置开机启动的服务
rc-update add sshd
rc-update add devfs sysinit
rc-update add dmesg sysinit
rc-update add mdev sysinit
rc-update add hwclock boot
rc-update add modules boot
rc-update add sysctl boot
rc-update add hostname boot
rc-update add bootmisc boot
rc-update add syslog boot
rc-update add mount-ro shutdown
rc-update add killprocs shutdown
rc-update add savecache shutdown
rc-update add networking boot
rc-update add urandom boot
rc-update add acpid default
rc-update add hwdrivers sysinit
rc-update add crond default
设置引导
apk add linux-vanilla syslinux # 安装内核和引导
dd bs=440 count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sda # 将mbr引导写到磁盘中
extlinux -i /boot
blkid /dev/sda # 查看硬盘uid
sed -i -e "s:^root=.*:root=UUID=9d120ecb-8c8c-49f1-8e75-xxxxxxxxxx:" /etc/update-extlinux.conf # 将硬盘 uuid 写入配置文件
sed -i -e "s:^modules=.*:modules=sd-mod,usb-storage,ext3,ext4:" /etc/update-extlinux.conf # 添加 ext4 支持
update-extlinux # 更新引导
echo "UUID=9d120ecb-8c8c-49f1-8e75-xxxxxxxxxx / ext4 defaults 1 1" > /etc/fstab # 将硬盘信息写到文件系统配置文件中
最后在控制面板卸载 Windows Offline NT Password & Registry Editor 镜像或者设置启动方式为优先 Hard Disk,然后重启便会进入 Alpine 系统。
结束
重启进系统后装 php 和 caddy,挂上探针,成功吃灰,大概明年黑五才能想起来登录进去看看,就不放地址会友了(没流量啊啊啊啊!!!)