我有兴趣使用 NetBSD 作为我的服务器上的操作系统。我没有使用过由源代码执行安全更新的系统,但已经阅读了足够的指南,可以轻松地尝试它。不过,我不知道这个手术大概需要多长时间。
给定一个相当中等的服务器,例如 1 个处理器核心和 0.5 到 1.0 GB RAM,按照以下指示构建 x86_64 系统的用户区和内核预计需要多长时间第 33 章 从源更新现有系统在指南中?
另外,此操作需要多少本地磁盘空间?我在指南中没有看到提及这一点。
答案1
大约需要一天的时间我构建 5 个左右不同的体系结构,作为完整的发布版本(也称为 tarball 和 ISO 映像)。我正在相对较低的内存 (512M) i386 虚拟机上构建,使用一个脚本来检查源代码,并且执行围绕 build.sh 的一系列设置。
如果您有多个处理器/核心,则可以通过将并发级别设置为处理器/核心的数量来加快速度,甚至可以将并发级别设置为处理器/核心数量的两倍(假设构建主要受 I/O 限制) 。
答案2
我建议任何像样的不太现代的 x86_64 true服务器应该能够在几个小时或更短的时间内完成完整的构建,包括 xsrc。
我的 NetBSD 当前构建服务器是 Xen domU,具有 8GB RAM 和 8 个 VCPU,运行在具有 32GB RAM 的 Dell PE2950 8 核 (Xeon E5440 @2.83GHz) 上,并在集成 PERC 6/i 上具有一组速度相当快的 SAS 磁盘控制器(构建输出进入 RAID-0 分区)。那台机器只花了我大约 650 美元,当然是二手的。它可以从 NetBSD-5/i386 构建所有内容到最终 ISO,所有内容都是静态链接的(即比动态链接构建需要更多的磁盘 IO 和链接器内存),来自另一个 domU 上的 NFS 安装源。同一服务器,不到 2 小时(使用 -j12)。重新启动后(没有缓存)内核构建(amd64 GENERIC)需要不到 5 分钟(使用 -j12)。
目前,我的/build
分区已使用 102GB,包含三个当前版本(amd64、i386、evbarm)和两个 5.x 版本(amd64 和 i386)的对象、二进制文件和 ISO。请记住,这都是单独的静态链接的二进制文件——动态链接的构建要小得多。静态链接的完整安装(即带有 xsrc 和 comp 以及其他所有内容)大约需要 6.6 GB。
答案3
构建内核可能需要 90 多分钟。为了加快编译过程,我们需要使用 -j
选项,例如,如果您有 2 个核心,您可以输入:
fakeroot make-kpkg..... -j 2
或者
make -j 2
您可以将编译过程加快X2(45分钟),(8核不到10分钟)
您也可以使用该CONCURRENCY_LEVEL
变量,例如,如果您有 2 个核心,您可以键入:
export CONCURRENCY_LEVEL=3
一般来说:
export CONCURRENCY_LEVEL= the number of cores +1
答案4
作为参考,./build.sh -U -j 12 -O /Users/mbelleau/netbsd/obj_amd64 -m amd64 release
在 MacBook Air i7 1.7GHz 8GB RAM、NetBSD-7.0 版本上(无 X11)大约需要 2 小时:
===> Summary of results:
build.sh command: ./build.sh -U -j 12 -O /Users/mbelleau/netbsd/obj_amd64 -m amd64 release
build.sh started: Thu May 26 23:51:30 EDT 2016
NetBSD version: 7.0
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: Darwin 15.4.0 x86_64
HOST_SH: /bin/sh
No $TOOLDIR/bin/nbmake, needs building.
Bootstrapping nbmake
MAKECONF file: /etc/mk.conf (File not found)
TOOLDIR path: /Users/mbelleau/netbsd/obj_amd64/tooldir.Darwin-15.4.0-x86_64
DESTDIR path: /Users/mbelleau/netbsd/obj_amd64/destdir.amd64
RELEASEDIR path: /Users/mbelleau/netbsd/obj_amd64/releasedir
Created /Users/mbelleau/netbsd/obj_amd64/tooldir.Darwin-15.4.0-x86_64/bin/nbmake
Updated makewrapper: /Users/mbelleau/netbsd/obj_amd64/tooldir.Darwin-15.4.0-x86_64/bin/nbmake-amd64
Successful make release
build.sh ended: Fri May 27 01:43:58 EDT 2016
===> .
对于空间使用:
$ du -sh /Users/mbelleau/netbsd/*
129M /Users/mbelleau/netbsd/gnusrc.tgz
3.7G /Users/mbelleau/netbsd/obj_amd64
7.1M /Users/mbelleau/netbsd/sharesrc.tgz
137M /Users/mbelleau/netbsd/src.tgz
48M /Users/mbelleau/netbsd/syssrc.tgz
2.9G /Users/mbelleau/netbsd/usr
158M /Users/mbelleau/netbsd/xsrc.tgz
后续(更新)发布版本应该更快;我使用 CVS 更新到 7.0-stable 标签 (cvs update -r netbsd-7-0 -Pd) 并重建,大约花了一个小时:
===> Summary of results:
build.sh command: ./build.sh -U -u -j 12 -O /Users/mbelleau/netbsd/obj_amd64 -m amd64 release
build.sh started: Fri May 27 09:08:10 EDT 2016
NetBSD version: 7.0.1_PATCH
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: Darwin 15.4.0 x86_64
HOST_SH: /bin/sh
No $TOOLDIR/bin/nbmake, needs building.
Bootstrapping nbmake
MAKECONF file: /etc/mk.conf (File not found)
TOOLDIR path: /Users/mbelleau/netbsd/obj_amd64/tooldir.Darwin-15.4.0-x86_64
DESTDIR path: /Users/mbelleau/netbsd/obj_amd64/destdir.amd64
RELEASEDIR path: /Users/mbelleau/netbsd/obj_amd64/releasedir
Created /Users/mbelleau/netbsd/obj_amd64/tooldir.Darwin-15.4.0-x86_64/bin/nbmake
Updated makewrapper: /Users/mbelleau/netbsd/obj_amd64/tooldir.Darwin-15.4.0-x86_64/bin/nbmake-amd64
Successful make release
build.sh ended: Fri May 27 10:11:14 EDT 2016
===> .