如何在FreeBSD上使用svn更新/usr/src的源代码树
我为使用vnet的FreeBSD Jail编译了定制的FreeBSD内核。
如何更新我的FreeBSD/usr/src /代码树?
如何使用svn命令在FreeBSD上的/usr/src上更新源树,以再次修补和编译内核?
说明:Subversion是一个软件版本控制和版本控制系统,根据Apache许可以开源形式分发。
FreeBSD使用Subversion作为唯一的版本控制系统来存储所有FreeBSD的源代码,文档和Ports集合。
因此,使用svn命令更新/usr/src /和/usr/ports /。
在本教程中我们学习了如何使用Subversion更新/usr/src /源代码。
在/usr/src中更新源树的命令
Subversion的轻量级版本已经以svnlite
的形式安装在FreeBSD上。
但是,我喜欢svn。
如果需要,可以使用svnlite而不是svn命令。
所以我要安装svn client。
安装ca_root_nss软件包
ca_root_nss软件包包括来自Mozilla NSS库以及Firefox和Thunderbird中的证书颁发机构的根证书。
这意味着您也可以使用Subversion来验证HTTPS存储库服务器的身份。
执行以下pkg命令以安装ca_root_nss:
# pkg install ca_root_nss
或者
# cd /usr/ports/security/ca_root_nss # make install clean
在FreeBSD上安装svn命令
执行以下pkg命令以安装Subversion。
# pkg install subversion
Subversion也可以作为端口安装:
# cd /usr/ports/devel/subversion # make install clean
如何更新在/usr/src /下安装的FreeBSD源代码树
运行以下命令以更新现有树:
# svn update /usr/src/
或者,如果您使用的是svnlight,请运行:
# svnlight update /usr/src/
如果您从未使用过/usr/src /或者在其上运行svn命令,则必须删除或者移动旧的/usr/src /:
# cd /usr/src/ # rm -rf *
现在运行svn update/usr/src /
# svn update /usr/src/
或者查找当前的FreeBSD版本
# uname -r # <--- says version 11.2 and so get 11.2 latest source code # svn checkout https://svn.freebsd.org/base/releng/11.2 /usr/src/
等一下在编译FreeBSD内核或者进行buildworld之前,请使用cat命令或者vi命令阅读/usr/src/UPDATING
$ cat /usr/src/UPDATING | more
或者
$ vi /usr/src/UPDATING
如何从更新的/usr/src /编译内核
假设您要编译启用了VIMAGE的FreeBSD内核。
使用cp命令,如下所示复制内核配置:
$ sudo cp -v /usr/src/share/examples/jails/VIMAGE /usr/src/sys/amd64/conf/VIMAGE $ cd /usr/src/
编译:
$ sudo make KERNCONF=VIMAGE kernel
通过传递-j选项,可以指定make一次可以运行的最大作业数。
例如:
$ sudo make -j 16 KERNCONF=VIMAGE kernel
您必须重新启动FreeBSD框:
$ sudo reboot
重新启动后验证新版本:
$ uname -mrs
如何同时进行buildworld和内核编译
命令如下:
# vim /usr/src/UPDATING # cd /usr/src # make -j16 buildworld # make -j16 kernel # reboot # cd /usr/src # make installworld # mergemaster -Ui # reboot
要验证新的FreeBSD内核,请在重新引导FreeBSD服务器/机器后运行以下命令:
$ uname -a
输出示例:
11.2-RELEASE-p12
或者使用freebsd-version命令找出FreeBSD的版本和补丁程序级别:
$ freebsd-version
例如,如何确保 Jail也开始了。
所以我执行:
jls
输出示例:
JID IP Address Hostname Path 1 rsnapshot /jails/rsnapshot 2 www /jails/www