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