創建加密raw系統鏡像
通過此方法生成的鏡像應用到伺服器後,可以在開機的時候使用ssh登陸後輸入密碼。
創建虛擬塊設備
根據您的伺服器硬盤大小創建硬盤大小(一般來說10G即可)
sudo dd if=/dev/zero of=archlinux.raw bs=1M count=10240 status=progress #創建10G大小的鏡像
創建迴環設備
將鏡像虛擬為迴環設備,為了對鏡像分區。
sudo losetup -f archlinux.raw
查看迴環設備
可以得知/dev/loop0即鏡像,以下以/dev/loop0作為例子.
[xuebaxi@xuebaxi ~]$ sudo losetup -a
/dev/loop0: [fd00]:26524 (/home/xuebaxi/archlinux.raw)
對迴環設備分區
像對待普通硬碟使用fdisk將迴環設備分為:
- 一個/boot分區
- 一個根分區
準備非/boot分區
加密分區,創建文件系統並且掛載.
sudo cryptsetup -y -v luksFormat /dev/loop0p2
sudo cryptsetup open /dev/loop0p2 cryptroot
sudo mkfs.ext4 /dev/mapper/cryptroot
sudo mount /dev/mapper/cryptroot /mnt
準備/boot分區
創建文件系統並且掛載
sudo mkdir /mut/boot
sudo mkfs.ext4 /dev/loop0p1
sudo mount /dev/loop0p1 /mnt/boot
生成密鑰
ssh-keygen -t ed25519
將公鑰拷貝到鏡像
以密鑰名字為id_ed25519(默認名字)為例子
mkdir -p /mnt/etc/tinyssh/root_key
cp ~/.ssh/id_ed25519.pub /mnt/etc/tinyssh/root_key
安裝archlinux
參考archlinux官方wiki,安裝完成後不要退出chroot.
安裝遠程輸入密碼需要的包
pacman -S mkinitcpio-netconf mkinitcpio-tinyssh mkinitcpio-utils
mkinitcpio設置
編輯/etc/mkinitcpio.conf在MODULES中加入:
virtio_pci virtio-net virtio-blk virtio_scsi sd_mod ext4
在HOOKS中加入
keyboard keymap encryptssh netconf
- 注意netconf要在filesystems之前
重新生成initramfs
mkinitcpio -p linux
- 注意: 如果遇到錯誤 libgcc_s.so.1 must be installed for pthread_cancel to work, 你需要將 /usr/lib/libgcc_s.so.1 添加到 “BINARIES” 中.
設置啟動器
設置以下內涵參數,其中device-UUID 為/dev/loop0p2的UUID
ip=dhcp cryptdevice=UUID=device-UUID:cryptroot root=/dev/mapper/cryptroot
退出chroot 環境
exit
umount分區
umount -R /mnt
卸載迴環設備
sudo losetup -d /dev/loop0
Comments