云服务器安装 FreeBSD(基于腾讯云轻量云、阿里云轻量应用服务器的内容,学到了怎样在云服务器 ECS里升级安装FreeBSD)

近期看到FreeBSD 从入门到跑路,里面有一章节讲到:云服务器安装 FreeBSD(基于腾讯云轻量云、阿里云轻量应用服务器)

结合它的方案六,针对普通的ESC服务器,进行了以下的实践操作。主要是手里没有多余的轻量服务器,所以没有进行轻量服务器的测试。

先上结论:

针对云服务器,当前的问题是有些云没有提供FreeBSD系统,有些云提供的FreeBSD系统版本太低。

本次实践解决的问题就是:在提供FreeBSD系统云供应商的云服务器里面,快速安装高版本FreeBSD!本次实践使用了阿里云ESC云服务器。

当然FreeBSD系统本身也支持使用freebsd-update升级系统,但是那个升级太慢,远不如拿到新系统后直接重装新版本更快捷更方便!

先下载img镜像

首先下载FreeBSD安装盘的img镜像。 img镜像是用来制作usb启动盘的,在云服务器里可以多采购一块云空间硬盘,然后通过镜像制作安装盘。

复制代码
wget https://mirrors.aliyun.com/freebsd/releases/ISO-IMAGES/14.3/FreeBSD-14.3-RELEASE-amd64-memstick.img

# 阿里云内部要用内部站,否则下载会慢
wget http://mirrors.cloud.aliyuncs.com/freebsd/releases/ISO-IMAGES/14.3/FreeBSD-14.3-RELEASE-amd64-memstick.img

注意,#阿里云内部要用内部站http://mirrors.cloud.aliyuncs.com,否则下载镜像文件会很慢。

查看数据盘

在阿里云采购一块数据盘,大约2G即可。当然阿里云最小的盘是20G,买买买。

在阿里云这样添加一块数据盘很方便,这样就不用再去按照手册里从原来的盘里划分一部分空间出来制作安装盘,操作简化很多。主要是FreeBSD系统里减小空间有点麻烦。

先用gpart show看默认的系统盘

复制代码
gpart show
=>      34  83886006  vtbd0  GPT  (40G)
        34       122      1  freebsd-boot  (61K)
       156     66584      2  efi  (33M)
     66740   2097152      3  freebsd-swap  (1.0G)
   2163892  81722148      4  freebsd-ufs  (39G)

查看数据盘是vtbd1

怎么知道数据盘的盘符呢?我们看到当前的系统盘是vtbd0,那么ls /dev查看/dev目录

复制代码
ls /dev/
acpi%       bpf0@       devctl%     full%       kbd1@       midistat%   pfil%       stderr@     ttyu0.init% ttyv5%      ufssuspend% usbctl%     vtcon/      
apm%        console%    devctl2%    geom.ctl%   kbdmux0%    mlx5ctl%    pts/        stdin@      ttyu0.lock% ttyv6%      ugen0.1@    vtbd0%      xpt0%       
apmctl%     consolectl% devstat%    gpt/        klog%       music0%     pvclock%    stdout@     ttyv0%      ttyv7%      ugen0.2@    vtbd0p1%    zero%       
atkbd0%     ctty%       diskid/     gptid/      kmem%       netdump%    random%     sysmouse%   ttyv1%      ttyv8%      uhid0%      vtbd0p2%    
audit%      cuau0%      efi%        input/      log@        netmap%     reroot/     tcp_log%    ttyv2%      ttyv9%      uinput%     vtbd0p3%    
auditpipe%  cuau0.init% fd/         io%         mdctl%      null%       sequencer0% ttyV0.1%    ttyv3%      ttyva%      urandom@    vtbd0p4%    
bpf%        cuau0.lock% fido%       kbd0@       mem%        pci%        sndstat%    ttyu0%      ttyv4%      ttyvb%      usb/        vtbd1%     

可以看到数据盘是vtbd1

启动镜像写入数据盘

复制代码
dd if=FreeBSD-14.3-RELEASE-amd64-memstick.img of=/dev/vtbd1 bs=1M conv=sync

写完之后使用fdisk看看/dev/vtbd1

复制代码
fdisk /dev/vtbd1

可以看到写入的内容

复制代码
fdisk /dev/vtbd1
******* Working on device /dev/vtbd1 *******
parameters extracted from in-core disklabel are:
cylinders=41610 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=41610 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 239 (0xef),(EFI System Partition)
    start 1, size 66584 (32 Meg), flag 0
        beg: cyl 1023/ head 255/ sector 63;
        end: cyl 1023/ head 255/ sector 63
The data for partition 2 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 66585, size 2962128 (1446 Meg), flag 80 (active)
        beg: cyl 1023/ head 255/ sector 63;
        end: cyl 1023/ head 255/ sector 63
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>

证明启动制作成功!

学习方案六

对于支持在线调整的文件系统,可压缩出约 2 GB 的未分配空间,创建一个 FAT32 分区,再将 img 镜像 dd 写入该分区。

在 GRUB 中,使用 chainloader +1 指向 dd 操作后生成的 BSD EFI 系统分区。需注意,一般的云服务器默认可能使用文件作为交换空间(swapfile)?或者,也可以尝试直接将 img 镜像 dd 到交换分区。

对于无法压缩分区的情况,可以临时购买并挂载一块数据盘,将镜像 dd 到数据盘。然后通过数据盘上的安装程序进行系统安装。安装完成后卸载并删除数据盘即可。

潜在的问题在于 img 镜像可能无法正确识别分区,可能需要手动指定根文件系统。

部分发行版并不使用 GRUB,此时需要考虑是安装 GRUB,还是直接在 systemd-boot 等引导程序上处理,以及其可行性如何。

gpart resize 怎么调整freebsd的分区大小,比如把根目录减小2G,新创建一个分区 df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/gpt/rootfs 39572780 6508932 29898028 18% / devfs 1 0 1 0% /dev /dev/gpt/efiesp 32764 657 32107 2% /boot/efi

尝试方案六:配置引导

由于用的是FreeBSD系统,所以没法安装方案六里面操作。

复制代码
 FreeBSD 使用的是 BSD 自研的 boot loader,并非 GRUB,因此上述文档不适用于 FreeBSD 系统。

在 FreeBSD 中,若需将引导设备从 vtbd0 改为 vtbd1,通常应修改以下文件之一:

/boot/loader.conf:可添加或修改如下行以指定根设备:

kern.rootdev="vtbd1p2"
(其中 p2 为实际根分区编号,需根据 gpart show 确认)

/etc/fstab:确保根文件系统挂载项指向正确的设备,例如:

/dev/vtbd1p2 / ufs rw 1 1
FreeBSD 的引导过程不依赖 /boot/grub/ 下的配置文件,因此无需修改 GRUB 相关内容。操作前请确认 vtbd1 上已安装完整的 FreeBSD 系统并包含 /boot 目录。

这样方法没通过

进入boot目录

复制代码
boot /dev/vtbd1p2:/boot/kernel/kernel

不管用

这里有空再去重新写下引导,这里写的应该不对,因为我后来看到引导的应该是s2而不是p2:

boot /dev/vtbd1s2:/boot/kernel/kernel

以后有空再去做实验吧。

尝试方案六:手动引导

在系统引导后,不进入FreeBSD,而是进入boot命令行模式。

查看lsdev

复制代码
disk0:
diskop1:FreeBSD boot
disk0p2:EFI
disk0p3:FreeBSD swap
disk0p4:FreeBSD UFS


disk1:
disk1s1:Unknown
disk1s2: FreeBSD
disk1s2a:FreeBSD UFS

这样我们就知道了,数据盘的结构是disk1 .

现在的问题是,

lsdev 是这样的,怎么在boot从disk1 盘启动

手工启动

进入boot后,执行

复制代码
set currdev=disk1s2a
load /boot/kernel/kernel
boot

进入安装引导画面

进入install画面

尝试使用zfs系统,碰到这个报错:

看来不能用zfs,要用ufs (吐槽一下,FreeBSD不能用zfs绝对是重大损失)

安装完成,重启,哇,真的是FreeBSD14.3

原来的系统是FreeBSD14.1,而且阿里云只支持老的系统:

总结

以前在云系统使用FreeBSD,都是要供应商有这个系统才能用,而且是供应商有什么版本,就只能安装什么版本。

这次实践是,只要有了一个FreeBSD系统,就可以自己用云盘创建启动盘,来安装任意版本的FreeBSD系统。

当前不想再去折腾了,以后会再去试试怎么在云供应商没有提供FreeBSD系统的情况下,安装FreeBSD系统。

相关推荐
水天需0102 分钟前
HISTCONTROL 介绍
linux
虫小宝3 分钟前
导购APP容器化CI/CD流程:Jenkins在返利系统持续部署中的实践
运维·ci/cd·jenkins
眠りたいです3 分钟前
Docker核心技术和实现原理第一部分-Docker镜像制作
运维·docker·容器·集群·镜像·dockerfile
IT老胡17 分钟前
Docker入门与实操(1):Docker简介
运维·docker·容器
小锋学长生活大爆炸24 分钟前
【软件】AI Agent:无需电脑的手机自动化助手AutoGLM
运维·人工智能·智能手机·自动化·手机·agent·autoglm
仅此,25 分钟前
docker 方式,postgreSQL18 安装 jieba 分词器扩展
运维·docker·postgresql·容器·中文分词·jieba
南工孙冬梅31 分钟前
Linux中安装配置nfs
linux·运维·php
水天需01034 分钟前
HISTCMD 介绍
linux
中科岩创35 分钟前
云南某地光伏站边坡自动化监测服务项目
运维·人工智能·物联网·自动化
晚风吹人醒.43 分钟前
Linux系统安全及应用(账号权限管理、登录控制、弱口令、端口扫描)
linux·运维·系统安全·grub·sudo·账号管理