还是觉得要记录下,因为能有这篇文章我不是走了一遍就安装成功的,确切的说,在安装过程中光重启服务器我就重启了14次,14次失败才换来下面这些。
周三买的一台服务器,系统在阿里云控制台选的是FreeBSD,阿里云默认提供的系统版本是10.1,FreeBSD的最新版本是11.0,由于版本低,在使用Ports系统安装软件的时候出现错误。开始更新系统。
周四,使用FreeBSD提供的freebsd-update工具进行在线的系统升级,由于国内网络的原因,在线连接FreeBSD的镜像服务器不是超时就是下载速度极慢,这个我也没有办法,周四忍了一天,更新失败。
周五,药不能停,系统还得装。开始换方法。打算重新在云服务器上面手动安装FreeBSD。既然是安装系统,就需要一个启动盘引导进入安装环境,但是服务器在云端,没有任何物理接口可以提供用来引导,即使格式化硬盘,服务器上面也还有运行的操作系统,系统原因,会对对硬盘的操作做禁止处理,这里,是给云服务器安装的难点。
本着有困难要上,没有困难制造困难也要上的原则,此处省略了2小时的google时间。
好,时间到,方法找到了。一个叫做mfsBSD的工具能帮上忙。和他名字一样,Memory File System BSD。一个镜像工具,用来引导系统,运行在内存里面,大小配置完后56M,56M引导进入系统安装环境已经足够。下面是教程。
官网下载mfsBSD,解压进入目录。与此同时,阿里云镜像站下载FreeBSD的镜像文件FreeBSD-11.0-RELEASE-amd64-disc1.iso。
挂载FreeBSD的镜像文件到系统内的cdrom
mdconfig -a -t vnode -u 10 -f FreeBSD-11.0-RELEASE-amd64-disc1.iso
mount_cd9660 /dev/md10 /cdrom
本地利用mfsBSD配置生成引导镜像文件。
sudo make BASE=/cdrom/usr/freebsd-dist
PS:我在执行上面命令的时候mfsBSD报了一个错误,pkg-static这个命令在tools文件夹内找不到,这个好办,因为我自己电脑使用的就是FreeBSD的系统,所以直接到系统内部对这个命令做个软链到tools文件夹下面即可。
最后,得到一个叫mfsbsd-11.0-RELEASE-p2-amd64.img文件,这个文件就是mfsBSD工具利用我们下载的FreeBSD-11.0-RELEASE-amd64-disc1.iso,本地制作出的系统引导镜像。
至此,本地的操作基本完成,下面的操作就是在阿里云服务器上面了。
先说下大体过程:
1.先在阿里云web控制台为服务器选择FreeBSD系统安装上线,登录进入之后,备份系统下面的 /boot/loader.conf /etc/rc.conf /etc/resolv.conf文件到本地。
2.登录web控制台,关机更换系统到Debian,开机上线。
3.拷贝本地生成的镜像文件到云端服务器。
4.登录到web控制台,打开远程连接,网页端登录系统,重启。
5.在网页端终端下按键盘向下箭头,进入到Debian系统启动选项的高级模式,编辑高级模式,进入recovery模式启动系统。
6.找到拷贝过来的系统镜像,刻录镜像到服务器的启动分区。重启系统。
7.一切成功后应该可以引导进入mfsBSD系统内部。根据之前备份的配置文件配置mfsBSD联网。然后进行系统安装。
8.重启系统,FreeBSD就在那里等着你了。
下面详细说下具体步骤遇到的问题和解决方法。
首先还是要感谢阿里云提供的web终端界面,我想,很多人可能没有意识到这个功能的重要性。大部分的云服务器一旦上线就通过终端ssh远程到服务器上面,但是这里有个前提,就是服务器完美启动,公网地址已经获得,在此之前如果想看到服务器的启动信息,只能通过web终端连接。完美。
第一步的作用仅仅是备份那几个文件,loader.conf记录了系统启动时候首先载入哪些服务,rc.conf文件记录了系统开机需要启动的服务,resolv.conf记录了服务器内部使用的DNS配置项。之所以备份这些信息一个是要为mfsBSD镜像引导成功进入安装环境时候配置网络,联网下载FreeBSD的系统文件。另外也是为了我们自己安装完系统之后,服务器可以正常启动,因为服务器在阿里云上面,你不知道阿里云内部是怎么配置的,eg:服务器如果获取网络地址,网关地址是在哪里等等。
第二步很简单,就是一个关机更换系统盘的过程,全网页操作,哪里不会点哪里。
第三步拷贝i㎎文件到远程服务器,使用下面命令拷贝文件到远端服务器的root目录下面
scp /path/to/the/file/mfsbsd-11.0-RELEASE-p2-amd64.img root@1.2.3.4:/root
第四步同第二步,网页操作。
第五步,网页端的终端下在看到这个界面的时候,按图示操作。
编辑的时候在标红的那行的结尾输入 init=/bin/bash,按下ctr+x重启系统。这样就会进入Debian的recovery模式。
第六步,通过下面的命令找到系统盘,在我这里显示的是vda。
df -lah
ls /dev
然后使用dd命令刻录img文件到系统启动分区
dd if=/root/mfsbsd-11.0-RELEASE-p2-amd64.img of=/dev/vda bs=1M
刻录完成之后输入
echo $?
确认刻录过程没有出错,返回0为ok。
至此,img文件已经刻录到系统启动盘,通过ctr+alt+delete方式重启系统,等待引导进入mfsBSD引导环境。
第七步,配置安装环境联网。这一步昨晚搞的我很痛苦,因为配置文件的修改不支持复制粘贴,全部是手打上去的,做好准备。
先配置DNS信息,进入/etc目录,找到resolv.conf文件,如果没有手动创建。然后根据之前备份的对应配置文件修改,还有一个地方需要注意,BSD默认是没有安装vim/vi的,BSD下面默认安装的编辑器是ee。
ee /etc/resolv.conf
添加配置信息,根据备份文件内容替换下面地址
nameserver 1.1.1.1
nameserver 2.2.2.2
完成之后按下ESC键,等待ee弹窗,之后按下a键两次保存配置信息。
接下来编辑rc.conf文件,所有之前备份的rc.conf文件中的网络信息配置项远扬照抄到里面即可,这里略过,实在是不想再来一遍了...
两个配置文件配置完成之后,手动配置网络端口。
使用命令:
ifconfig vtnet0 inet 1.1.1.1 netmask 2.2.2.2
ifconfig vtnet1 inet 3.3.3.3 netmask 4.4.4.4
配置网络端口ip地址,网关地址,vtnet1/0是mfsBSD启动时候自动探测到的网络接口名称,阿里云服务器有两个网卡,1个内网,1个外网。所以配置两条。
上面东西做完之后,使用命令:
sh /etc/rc
或者:
/etc/netstart
使配置项即使生效。这个时候网络应该就是通的了。
网络通了之后,这个时候你就可以在本地使用ssh连接到mfsBSD环境了,虽然他现在只是运行在内存里。
剩下的就是输入bsdinstall开始安装FreeBSD系统到服务器硬盘了。这里有两个地方需要说下,我在这两个地方上运到了问题。
第一个是网络镜像服务器的选择,bsdinstall界面下会有选择网络镜像服务器的选项,那里罗列了FreeBSD分放在世界各地的服务器地址,选择一个距离你比较近的,我使用的是日本的3号镜像服务器,感觉速度还行,当然,如果你觉得在下载过程中速度很慢,你可以随时使用ctr+c停止掉bsdinstall的进程,重新再来一遍,但是,但是千万不要重启,千万不要重启,千万不要重启,重要的事情说三遍。如果你够贱,输入了reboot,shutdown -r now这样的命令,那么恭喜你,从上面的步骤2开始,再来一遍把。
第二个问题花了我不少时间,在选择完网络服务器那一步,而且东西都下载好的时候,出现了这个提示,这个是昨晚我用手机拍下的。
提示这个文件找不到,首先这个MANIFEST文件是用来检查FreeBSD网络下载文件MD5值的,但是FreeBSD并不会直接下载这个文件,所以你需要手动到你选择的网络镜像下面找到这个文件,下载到mfsBSD对应提示的目录里面,freebsd-dist目录并没有在我的/usr目录下面出现,所以我直接创建目录,把下载好的文件放到这个目录下面就行了。
还有一点就是如果你在安装过程中终止了,而且已经过了格式化硬盘分区那一步之后重新开启了bsdinstall,请确保第二次格式化硬盘分区的时候选择和你第一次的格式一样。否则同样会在上面那一步报错。
剩下的安装过程基本不会出现什么错了,安装完成之后等待服务器重启,开始享受FreeBSD 11.0-RELEASE吧。
PS2:mfsBSD是可以在本地通过编辑他配置文件的方式提前配置好网络的,但是,我试了好几次,引导起来的系统都是mfsBSD的默认配置,也许使我方法错了,有高人,请指点。
PS3:也许,当然我没有试过,可以通过直接下载freebsd的启动文件,dd到启动盘用这种方式来安装bsd,我现在觉得应该也可以。
PS4:因为之前在阿里云web终端下替换的最后一个系统是Debian,所以即使我安装好了FreeBSD 11之后,重新登录进web终端,阿里云给出的系统依旧是Debian系统,不知道这是不是他们的一个bug。