编译并更新1# git pull /usr/src #12check /usr/src/UPDATING #23# cd /usr/src #34# make -j4 buildworld #45# make -j4 kernel #56# shutdown -r now #67# etcupdate -p #78# cd /usr/src #89# make installworld #910# etcupdate -B #1011# shutdown -r now #11Copied!
1. 2.检查 /usr/src/UPDATING,了解从源码构建之前或之后需要的任何手动步骤。 3.转到源码目录。 4.编译基本系统(World),除了内核(Kernel)以外的一切。 5.编译并安装内核。这等同于make buildkernel installkernel
。 6.重新启动系统到新的内核。 7.更新并合并安装基本系统之前需要的 /etc/ 配置文件。 8.转到源代码目录。 9.安装基本系统。 10.更新并合并 /etc/ 中的配置文件。 11.重新启动系统,使用新建立的基本系统和内核。
注意:获取源代码如果输出显示fatal: not a git repository
,说明那里的文件缺失或用不同的方法安装。需要重新签出 (checkout) 该源。表1. FreeBSD 版本和存储库分支
uname -r
的输出结果1# uname -r210.3-RELEASECopied!1# mv /usr/src /usr/src.bak #12# git clone --branch releng/10.3 https://git.FreeBSD.org/src.git /usr/src #2Copied!
1.移除旧的目录。如果这个目录中没有本地的修改,就可以删除它。 2.
cleanworld
:sysctl hw.ncpu
来查看有多少核心,不同处理器使用不同版本的 FreeBSD 编译系统,所以唯一能了解不同工作数量对编译速度影响的方式便是测试。在一开始可考虑选择一个介于 1/2 到 2 倍核心数之间的数值,工作的数量可使用 -j
来指定。例 1. 增加编译工作核心数使用四个工作核心来编译世界(world)与核心:1# make -j4 buildworld buildkernelCopied!
buildworld
。之后,可以在任何时候运行 buildkernel
来编译内核。要想只编译内核:技巧:/usr/src 可以被删除或重新创建,所以最好把自定义的内核配置文件放在一个单独的目录下,比如 /root 。将内核配置文件链接到conf
目录中。如果该目录被删除或覆盖,内核配置文件可以被重新链接到新目录中。
buildworld
与 buildkernel
两个步骤之后,便可安装新的核心与世界:注意:1# etcupdate diffCopied!该命令允许用户检查配置的变化。
警告:当从mergemaster(8)
切换到etcupdate(8)
时,第一次运行可能会不正确地合并变化,产生虚假的冲突。为了防止这种情况,在更新源代码和构建新的世界之前,请执行以下步骤:1# etcupdate extract #12# etcupdate diff #2Copied!
1. 2.引导后检查差异。修剪不再需要的任何本地更改,以减少未来更新中发生冲突的可能性。
-Ui
,mergemaster(8) 自动更新未被用户修改的文件,并安装尚未存在的新文件。技巧:当已知所有旧文件或目录都可以安全删除时,可以通过在命令中设置BATCH_DELETE_OLD_FILES
来避免按y
和Enter
删除每个文件。例如:1# make BATCH_DELETE_OLD_FILES=yes delete-old-libsCopied!