本文记录了用LAN+ssh远程安装Linux系统的过程及方法
基本原理就是ssh远程登录服务器+debootstrap安装Debian系统
本文记录的过程和命令比较简略,建议有一定linux基础的同学阅读
还有一种给服务器安装系统的方法是把系统装进服务器硬盘,再把硬盘装到服务器上,这里我没研究
所需工具及基本要求
- 服务器有USB接口
- 可以让服务器和电脑处于同一个局域网下,并且可以连接互联网
- 电脑上安装了Linux系统,或者有虚拟机、wsl,因为需要定制debian live u盘
- 至少2GB的u盘
- 服务器支持uefi启动(我不会用BIOS模式引导系统..)
如果你的服务器硬盘上面有操作系统,而且BIOS里设置的是优先从硬盘启动而不是u盘,那你还是找一张亮机卡把服务器接到显示器上装系统吧。当然如果你的硬盘支持热拔插也可以先拔掉,在u盘里的live系统启动之后再插上。总之需要能从u盘启动
制作启动u盘
原版debian live镜像
方法一:去官方下载standard live iso,这里用standard版的原因是没有桌面环境,体积比较小方便操作
方法二:自己制作(比较麻烦):我自己研究的方法
修改原版镜像
下面这一部分和上面我写的另一篇文章非常像,就是多了ssh的配置,不懂的可以参考那个
- 解压iso文件(
7z
命令) - 解压
[iso文件解压目录]/live/filesystem.squashfs
(unsquashfs
命令) - 挂载chroot需要的文件系统:
mount --bind /sys/ $chroot_dir/sys/ #$chroot_dir是解压之后的squashfs目录
mount --bind /proc/ $chroot_dir/proc/
mount --bind /dev/ $chroot_dir/dev/
mount --bind /dev/pts/ $chroot_dir/dev/pts/
chroot
进入解压的squashfs文件系统- 换源,编辑解压的文件系统里的
/etc/apt/sources.list
- 创建用户(
/sbin/adduser
,直接adduser不行因为root的环境变量里没有sbin),并visudo
添加到sudoers,主要是因为root用户用起来太不方便了;创建完别忘了passwd
修改密码,还有root密码最好也改一下 su
到刚才创建的用户apt update
,然后apt install
装系统必须的软件包:sudo network-manager openssh-server grub-efi debootstrap
PS:理论上只安装network-manager
和openssh-server
,其他的到服务器上再安装也行- 安装其他可选软件包(主要为了丰富启动u盘的功能)
neovim #编辑器
ntfs-3g #NTFS支持
btrfs-progs #Btrfs支持
smartctl #硬盘smart支持,我是用于检查机械硬盘损坏情况
pigz #多线程gz压缩
bash-completion #bash代码补全
htop #任务管理器
udisks2 #用来"弹出"u盘
- 安装linux内核镜像:比如我安装的是
linux-image-amd64
- 复制
initrd.img
和vmlinuz
到iso文件解压目录下面的live
,替换掉原来的initrd和linux镜像 - 编辑
[iso文件解压目录]/boot/grub/grub.cfg
,在你需要的grub启动选项后面加上live-config.noautologin live-config.nocomponents=openssh-server
,目的是阻止原版的live镜像自动登录,并且防止它禁用ssh密码登录 mksquashfs
打包filesystem.squashfs
,替换掉原来的- 在你的u盘里找(或者新建)一个fat32分区,把刚才修改好的iso文件内容复制进去,这样就可以当uefi启动u盘了,不用全部复制,我复制的文件如下
main@n960kp:/run/media/main/debssh$ ls -R
.:
boot EFI efi.img live tools
./boot:
grub
./boot/grub:
config.cfg grub.cfg install_start.cfg loopback.cfg theme.cfg
efi.img install.cfg live-theme splash.png unicode.pf2
./boot/grub/live-theme:
theme.txt
./EFI:
boot
./EFI/boot:
bootx64.efi grubx64.efi
./live:
filesystem.squashfs initrd.img vmlinuz
./tools:
loadlin.exe loadlin.txt
安装服务器系统
- 把u盘插服务器上,服务器用网线和路由器/光猫之类的连上,保证电脑能访问到它
- 在电脑上用ssh登录服务器系统
安装
具体安装过程比较长,可以类比Arch Linux的安装,我发现Debian也有官方教程,另外Arch Linux中文版安装教程
注意下面几点
debootstrap
时选择国内镜像- 安装grub时别用Debian官方教程里的
grub-pc
,用刚才安装好的grub-efi
,因为需要uefi启动,我用的安装grub的命令大概长这样grub-install --target=x86_64-efi --efi-directory=/boot/efi
,记得chroot到服务器硬盘里的系统之前先mount一下EFI分区 - 有的主板不会自动识别EFI分区下的.efi引导文件(比如我的),导致重启之后进不去系统,或者就是你有显示器的话在BIOS里找不到Debian启动选项,需要用
efibootmgr
手动创建uefi启动条目,我的命令大概长这样efibootmgr --create --label "Debian" --loader /EFI/debian/grubx64.efi
,直接输入efibootmgr
会列出当前主板保存的启动选项,创建之后就有了;这里注意,这个命令要在u盘的live系统里运行,我在chroot到硬盘里的系统之后运行会提示efivar不可用 - 安装好系统之后别忘了安装并开启ssh服务