[Failed] 记一次失败的 IPMI 下无盘安装 Debian + 启用 LUKS 加密
我不知道这个教程哪里错了,请不要使用于正常安装。如果您发现了错误,请在评论区指出。
I don’t know why this installation failed. If you know then plz leave a comment below. DO NOT INSTALL USING THIS METHOD.
0x00 Why
想试试全盘 LUKS 加密,结果商家不支持挂载 iso 安装…… 于是只好自己倒腾了。
0x01 Get Started
- 一台服务器
- 时间
- 脑子
0x02 Installation Process
一切的前提是有 root 权限。
从其它介质启动
我的这个配置没有提供挂载 iso 的方法,但是商家提供了 Ubuntu
和 FreeBSD
,甚至还有 Windows PE
的救援系统启动方式,这里以 Ubuntu
为例。
分区
首先我 1TB 的硬盘,我打算分 100MB 的 /boot
, 1GB 的 swap
, 100GB 的 /
,然后剩下的全部给了 /home
。
这里打算的是除了 /boot
分区,剩下的都加密处理。
首先 fdisk
创建两个大分区, /dev/sda1
和 /dev/sda2
。
不要忘记设置 boot 哦(
# mkfs.ext4 /dev/sda1
因为 /dev/sda2
是我需要加密处理的,所以 partition type 选择的是 8e
,即 Linux LVM。
然后开始为加密做准备:
# cryptsetup -c aes-xts-plain64 -y --use-random luksFormat /dev/sda2
# cryptsetup luksOpen /dev/sda2 luks
注意: cryptsetup 的时候让你输入 yes 是大写的
YES
!
然后创建加密分区:
# pvcreate /dev/mapper/luks
# vgcreate vg0 /dev/mapper/luks
# lvcreate --size 1G vg0 --name swap
# lvcreate --size 100G vg0 --name root
# lvcreate -l +100%FREE vg0 --name home
下面开始给他们创建文件系统:
# mkfs.ext4 /dev/mapper/vg0-root
# mkfs.ext4 /dev/mapper/vg0-home
# mkswap /dev/mapper/vg0-swap
# sync
下面要装载了:
# mkdir /mnt/debinst
# mount /dev/mapper/vg0-root /mnt/debinst
# swapon /dev/mapper/vg0-swap
# mkdir /mnt/debinst/boot
# mount /dev/sda1 /mnt/debinst/boot
# mkdir /mnt/debinst/home
# mount /dev/mapper/vg0-home /mnt/debinst/home
安装
还好,有一个 debootstrap
的官方工具可以命令行安装。
# cd ~
# mkdir install
# cd install
然后下载最新的 debootstrap
:
# wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.97_all.deb
# ar -x debootstrap_1.0.97_all.deb
# cd /
# zcat /full-path-to-install/install/data.tar.gz | tar xv
然后就可以开始安装啦:
# /usr/sbin/debootstrap --arch amd64 stretch \
/mnt/debinst http://ftp.cn.debian.org/debian
安装之后,要 bind mount /proc
, /dev
和 /sys
:
# mount --bind /proc /mnt/debinst/proc
# mount --bind /dev /mnt/debinst/dev
# mount --bind /sys /mnt/debinst/sys
现在我们可以进入系统了!
# LANG=en_US.UTF-8 chroot /mnt/debinst /bin/bash
接下来创建设备文件:
# apt install makedev
# cd /dev
# MAKEDEV generic # 创建 Device Files
接下来是 /etc/fstab
:
# UNCONFIGURED FSTAB FOR BASE SYSTEM
#
# file system mount point type options dump pass
/dev/mapper/vg0-root / ext4 defaults 0 1
/dev/sda1 /boot ext4 ro,nosuid,nodev 0 1
/dev/mapper/vg0-home /home ext4 rw,nosuid,nodev 0 1
配置其它
时间
# nano /etc/adjtime
写入
0.0 0 0.0
0
UTC
然后设置自己的时区:
# dpkg-reconfigure tzdata
网络
我们需要更改4个文件, /etc/network/interfaces
, /etc/resolv.conf
, /etc/hostname
, /etc/hosts
,接下来一个一个写。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.4.13
netmask 255.255.255.0
gateway 192.168.4.1
nameserver 8.8.8.8
nameserver 8.8.4.4
echo TEST > /etc/hostname
127.0.0.1 localhost
# 192.168.4.13 TEST
# The Following lines are disirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Apt
向 /etc/apt/sources.list
内写入这些:
deb-src http://ftp.us.debian.org/debian stretch main
deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main
语言
# apt install locales
# dpkg-reconfigure locales
安装内核 & 引导
因为我们要启动这个系统,需要安装内核和 boot loader:
# apt search linux-image
# apt install linux-image-4.9.0-6-amd64
# apt install grub-pc
# grub-install /dev/sda
然后编辑 /etc/default/grub
,更改 GRUB_CMDLINE_LINUX
成:
...
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:luks:allow-discards"
...
然后再来一次:
# update-grub
如果你不用 grub 的话,你也可以用
/etc/lilo.conf
:boot=/dev/sda1 root=/dev/mapper/vg0-root install=menu delay=20 lba32 image=/vmlinuz initrd=/initrd.img label=Debian
设置 bootloader
# apt install grub-pc
# grub-install /dev/sda
设置 ssh
# apt install ssh
# passwd
然后开始编辑 /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config
找到 PermitRootLogin
:
PermitRootLogin yes
我想你肯定需要启用 ssh key 登录:
# mkdir /root/.ssh
# cat << EOF > /root/.ssh/authorized_keys
ssh-rsa ....
EOF
然后你肯定不会用 root 来控制机子的,对吧?
# adduser misaka00251
要结束啦
安装一些必备的软件包:
# tasksel install standard
你可能会发现有很多软件包堆积在 /var/cache/apt/archives/
,可以清理一下空间:
# apt clean
不要忘记安装 cryptsetup
!
# apt install cryptsetup lvm2
然后需要编辑 /etc/cryptsetup-initramfs/conf-hook
:
...
CRYPTSETUP=y
...
然后重新配置:
# dpkg-reconfigure initramfs-tools
最后再写一下 /etc/crypttab
:
# <target name> <source device> <keyfile> <options>
root_crypt /dev/sda2 none luks
home_crypt /dev/sda2 none luks
swap_crypt /dev/sda2 none swap
0x03 References
- https://www.debian.org/releases/jessie/amd64/apds03.html.en
- https://gist.github.com/mattiaslundberg/8620837
- https://packages.debian.org/sid/main/arch-install-scripts
- https://wiki.debian.org/BuildingTutorial
0x04 Questions
我遇到了 I have no name!
如果用 whoami
的话,你会发现系统提示这个
whoami: cannot find name for user ID 0
这时候需要写入一个 /etc/passwd
root:x:0:0:root:/root:/bin/bash
apt/wget/curl/ssh 什么的都是 command not found!
请在安装之后再 bind mount /proc
/dev
/sys
,否则 debootstrap
的安装会不完整,
而且会生成一个 /debootstrap/debootstrap.log
,里面极有可能看到这种错误:
ln: failed to create symbolic link '/mnt/debinst/dev/fd/fd': no such file of directory
0x05 Other Unnecessary Notes
如果喜欢本文,欢迎点击下方的「鼓掌」按钮!
如果上面没有加载出任何东西,可以点击这里。