云服务器手动重装Debian 9系统

上次说到阿里云5M带宽轻量云服务器,由于目前阿里云并未给轻量云服务器提供Debian9系统,对于最喜欢Debian9系统的我来说,虽然阿里云没有提供Debian 9,但是肯定是要自己想办法装上个Debian9的,毕竟只要思想不滑坡,方法总比问题多不是。花了点时间成功将系统重装成了Debian9,这里记录一下。

安装之前

为什么要自己去手动安装系统?
1、阿里云到目前为止(2018年10月中旬)没有提供我想要的Debian9系统
2、阿里云自带的那些系统默认都有一大堆监控程序,对我来说没什么作用还占用服务器系统资源,而且我不想整天被阿里云知道我在服务器上干了些什么
3、可以最大限度的决定安装哪些软件包

既然是自己安装系统,肯定有利有弊,自行安装系统之后,可能会遇到下面的问题:
1、可能默认无法使用阿里云提供的系统监控服务,当然这个想要可以手动安装
2、一些重置密码等功能可能无法使用
3、对于轻量云服务器,可能无法直接使用控制台提供的网页远程连接功能

安装准备

安装之前还需做些准备的。

安装过程中需要输入一些比如网络设置、repo源信息等,由于我想要安装的是Debian9系统,所以,最好是在Debian8系统下获取到这些信息。管理后台重装成Debian8系统之后(期间遇到了两个小bug,具体看这里:阿里云轻量云服务器Debian8系统模板bug,本来是说不提供Debian9自己手动来安装Debian9的,但安装Debian8得到的却是Debian9,不管了,还是手动安装一遍放心),SSH登录到服务器,执行命令获取相关信息。

获取IP及网关相关信息,可能会用到

root@iZuf60qo8g78w0qfgfxxxx:~# ip route
default via 172.16.63.xxx dev eth0 proto dhcp src 172.16.19.xxx metric 1024
172.16.0.0/18 dev eth0 proto kernel scope link src 172.16.19.xxx
172.16.63.xxx dev eth0 proto dhcp scope link src 172.16.19.xxx metric 1024
root@iZuf60qo8g78w0qfgfxxxx:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:0a:1f:f5 brd ff:ff:ff:ff:ff:ff
    inet 172.16.19.xxx/18 brd 172.16.63.255 scope global dynamic eth0
       valid_lft 315344295sec preferred_lft 315344295sec

获取DNS服务器的IP地址:

root@iZuf60qo8g78w0qfgfxxxxx:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 100.100.2.136
nameserver 100.100.2.138
options timeout:2 attempts:3 rotate single-request-reopen

最好还是备份一下sources.list,毕竟国内的小水管,用外网的源实在是浪费时间,如果是按量付费的,还浪费钱:

root@iZuf60qo8g78w0qfgfxxxx:~# cat /etc/apt/sources.list
deb http://mirrors.cloud.aliyuncs.com/debian/ stretch main contrib non-free
deb http://mirrors.cloud.aliyuncs.com/debian/ stretch-updates main contrib non-free
deb http://mirrors.cloud.aliyuncs.com/debian/ stretch-proposed-updates main non-free contrib
deb http://mirrors.cloud.aliyuncs.com/debian/ stretch-backports main non-free contrib
...

开始安装

无法接触到服务器硬件,只能使用控制台的救援模式进行安装,我们还是需要使用Debian自带的grub引导程序进行安装引导,接下来,就是参考官方两个文档,准备启动需要的文件了。

安装过程参考的是这两篇文章:
https://www.debian.org/releases/stable/amd64/ch04s04.html.en
https://www.debian.org/releases/stable/amd64/ch05s01.html.en#boot-initrd

首先,在/boot下新建文件夹用于放置引导所需的文件,相关命令如下:

mkdir /boot/newinstall/
cd /boot/newinstall/
wget http://mirrors.aliyun.com/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
wget http://mirrors.aliyun.com/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux

有了引导所需文件,我们还需要修改下grub引导的配置文件,使得在重启的时候可以进入安装程序,根据文档,修改
/boot/grub/grub.cfg,然后添加如下配置:

vim /boot/grub/grub.cfg

title  New Install
root   (hd0,0)
kernel /boot/newinstall/linux
initrd /boot/newinstall/initrd.gz

注意两个文件名,可能下载的文件和官方文档中的不一致,如果不一致,肯定是找不到文件导致失败的。

然后,登录阿里云控制面板,依次是远程连接→救援模式,第一次进入可能需要设置一个救援连接密码,设置好就能登录了,如图:
aliyun-swas-rescue-mode

aliyun-swas-rescue-mode-2
既然没提供重启功能,那我们通过SSH重启一下好了,SSH命令行输入reboot即可重新启动。

重启之后引导界面如图:
aliyun-swas-rescue-mode-grub

如果服务商提供DHCP,安装过程中可能直接就配好了IP、DNS等信息,如果服务商没提供DHCP,则可能需要我们手动去输入我们上面获取到的信息。我用的阿里云的,安装过程通过DHCP自动获取了IP及DNS,所以不用我们手动配置。

安装过程没啥好说的,按照需求来一步一步就行,至于安装哪些包无所谓,别忘了把OpenSSH-Server装上就行。

安装完成之后要做的几件事

如果是国内的云服务器,或多或少需要考虑一下流量和带宽这回事,有的时候更新系统或者安装软件包需下载的文件太大的时候,1M的小水管慢不说,还影响服务器的正常访问,所以,出于带宽考虑,我们最好还是使用服务商提供的内网源仓库,比如阿里云的aliyuncs,也就是我们上面备份的哪个sources.list,直接替换/etc/apt/sources.list里面的域名,将安装过程选择的域名替换成mirrors.cloud.aliyuncs.com或者别的服务商提供的内网源仓库地址即可。

同时,如果DNS解析IP不是服务商内网的,建议还是使用内网DNS解析IP,一来是节省出口宽带,二来是有助于使用服务商的其他产品,比如数据库,对象存储等。