第 2.6 节 云服务器安装 FreeBSD(基于腾讯云轻量云)
最后更新于
最后更新于
注意
以下内容仅供参考,有待测试。如果你测试通过,请告知我们!
根据反馈,在 VMware EXSI 等半虚拟化平台上安装或升级 FreeBSD 会遇到故障(如阿里云 virtio-blk 驱动会出问题),需要在开机时按 ESC 键,然后输入 set kern.maxphys=65536
回车,再输入 boot
即可正常启动。安装好后需要在 /boot/loader.conf
加入 kern.maxphys=65536
即可避免每次开机重复操作。阿里云升级完成后可能会因为此类问题卡在引导界面,此时需要重启并进 VNC 再进行上述操作。
注意
对于不再受安全支持的版本如
9.2
,请参考本文并结合手动安装 FreeBSD 章节操作。
警告
安装前请在原有的 Linux 系统上看看自己的 IP 及 netmask,可以用命令
ip addr
及ip route show
查看网关信息。因为有的服务器并不使用 DHCP 服务,而需要手动指定 IP。
视频与教程有一定出入,按哪个来都可以。SCP 命令可以用图形化的 Winscp 替代。最后安装完毕建议按照其他章节来设置密钥登录,并禁止密码验证,以提高安全性。
以及 等机器都没有 FreeBSD 系统的支持,只能通过特殊的的方法自己暴力安装。
警告
请注意数据安全,以下教程有一定危险性和要求你有一定的动手能力。
如前所述,且因 FreeBSD 和一般的 Linux 是不同的生态,我们需要先进入 Linux 的内存盘,再在运行于内存中 Linux 里把 mfsBSD 写入硬盘,然后通过 bsdinstall
工具安装系统。
在一般的 Linux 系统中,initrd 是打包成内存盘的小而全的 Linux 根目录,里面可加载驱动,可挂载硬盘,并包含启动初始化程序的必要数据。开机时 Bootloader 加载内核与 initrd,由 initrd 中的脚本进行启动的准备工作,随后运行硬盘里的初始化程序。
我们先把从那个 ISO 提取出来的内核和 initrd 文件放在根目录下,然后重启机器进入 GRUB 的命令行界面(可在倒计时的时候按 e
进入编辑模式,删掉 linux
、initrd
行原有内容,写完后按 Ctrl X
即可加载),手动启动指定的内核和 initrd(可以用 Tab
键补全路径)。然后输入 boot
后回车即可继续启动操作系统。
技巧
不一定是 (hd0,msdos1),以实际为准,不要一下都删掉了看不出来了。
这个特制的 initrd 启动之后并未加载硬盘上的原系统,而是自己连接了网络并打开 SSH 服务器。这样我们就获得了一款运行在内存中的 Linux 系统。
这个时候应该就可以使用 ssh 连接上服务器了,并且可以安全的格式化硬盘。
mfsBSD 和 mfsLinux 镜像的 root
密码默认均是 mfsroot
技巧
建议在此处使用服务器的“快照”功能对服务器进行备份,以防以下教程操作失误重来耽误时间。
ssh 连接服务器后,使用 kldload zfs
加载 zfs 模块,然后运行 bsdinstall
,在出现以下图片时,点 Other
输入图中的指定镜像版本(地址里有即可,你可以自己改哦):
我们还可以手动下载 FreeBSD 的安装文件,以 MANIFEST
文件为例:
为何不能直接 dd?(错误示范,仅供说明,请勿执行)
在正常的 Linux 系统内直接把 mfsBSD 的 img dd 到硬盘里,重启之后虽然正常加载 bootloader,但是可能是因为系统又对硬盘进行了写入而无法正常挂载内存盘。
解释:
|
是管道的意思,将上一个命令的标准输出作为下一个命令的标准输入
-O-
指把文件下载输出到标准输出,而 dd 在没有指定 if 时会自动从标准输入读取内容
直接 dd 会报错如图:
如果有云服务器用 lvm 的话,需要把东西全都放到 /boot
里面,要不然 grub 和 mfslinux 都打不开。
上述的服务器面板里没有 FreeBSD 镜像 IDC,所以要用变通的方法来安装。因为 FreeBSD 和 Linux 的内核不通用,可执行文件也不通用,所以无法通过 chroot 再删掉源系统的方法安装。安装的方法是先在内存盘中启动 FreeBSD 系统,即先安装 ,再格式化硬盘安装新系统。mfsBSD 是一款完全载入内存的 FreeBSD 系统,类似于 Windows 的 PE 系统。
我们需要下载 ,可以提前下好,再使用 WinSCP 传入服务器,服务器直接下载可能需要两个小时。
就在 mfsBSD 下载位置的下方,有 ,它就是我们要用的 Linux。由于它只有 ISO 格式,无法直接在当前环境下启动,因其是纯 initrd 类型的,我们就把启动它的 initrd 和内核提取出来,放在硬盘里手动启动。
示例:如 或