蓝冠官网戴文的Linux内核专题:蓝冠官网09 配置内核(5)

蓝冠吧,蓝冠好么,蓝冠登录官网,

Linux内核拥有许多可以配置的特性,蓝冠官网 接下来我们还有许多要配置。

下一个可以配置的特性是x86的随机数生成器(x86 architectural random number generator (ARCH_RANDOM))。记住,我们现在配置的是针对AMD64系统的内核代码。这个随机数生成器使用Intel x86的RDRAND指令。这并不通用,所以为了一个更轻量的内核我禁用了它。

接着,我们可以启用或者禁用"Supervisor Mode Access Prevention (X86_SMAP)"。这是Intel处理器使用的安全特性。SMAP在一些条件下只允许内核访问用户空间。这个有助于保护用户空间。如果启用,这里有一点性能和内核大小的开销,但是开销很小。由于我是用的是AMD系统,所以我禁用了这个特性。

开发者可以启用"EFI runtime service support (EFI)"。只有在有EFI固件的系统上启用它。拥有这个特性,内核可以使用的EFI服务。EFI是一个操作系统和硬件如何交流的规范,所以EFI固件是使用这个规范的硬件代码。因为我没有EFI固件,蓝冠平台怎么样 所以我禁用了它。

这是一个应该被启用的有用的安全方式(Enable seccomp to safely compute untrusted bytecode (SECCOMP))。这个安全特性在使用非可信的字节码的数值计算(执行大量计算的软件)中使用。字节码(可移植代码)是一种被解释器有效读取的代码。字节码不是源代码,但它也不是汇编或者二进制代码。非可信的代码是一种可能导致系统/数据损坏的代码。可能会破坏系统或者毁坏数据的非可信的代码通过seccomp被隔离在独立的地址空间中。这是通过文件描述符传输的方法。通常上,最好启用这个安全特性,即使会有一些性能开销,除非你在制作一个需要榨干性能的内核。

这里是另外一个安全特性(Enable -fstack-protector buffer overflow detection (CC_STACKPROTECTOR))。缓冲溢出是数据被写在超出了它的内存界限而进入了邻近的内存中。这是一个安全威胁。一些恶意软件使用缓冲区溢出来破坏系统。启用这个会使用GCC选项 "-fstack-protector"。GCC是一个Linux编译器,在你配置完成后用它来编译内核。这个编译器参数会在返回地址前在栈上加入一个canary值(特殊的安全代码)。这个值会在返回前被验证。当内存溢出发生时,蓝冠注册平台 canary值会得到覆盖消息。这时,会导致内核崩溃。如许多人知道的那样,内核错误意味着系统将要崩溃,但是这比系统被入侵或者数据永久损害的好。发生内核错误,系统会重启,但是如果缓冲溢出则可能导致系统被入侵。一个简单的重启无法修复破坏(译注:但也不会更坏)。你必须用GCC 4.2或者更高版本支持这个参数的GCC来编译内核。

提示:要知道你使用的版本号,在命令行内键入"gcc --version"。

在这之后,我们可以配置定时器频率。配置工具建议使用250Hz,所以我们使用这个值。

Timer frequency

  1. 100 HZ (HZ_100)
  1. 250 HZ (HZ_250)
  1. 300 HZ (HZ_300)
  2. 1000 HZ (HZ_1000)

choice[1-4?]: 2

使用1000Hz通常来讲对许多系统而言太快了。定时器频率决定着定时器中断被使用的频率。这有助于在时间线上的系统操作。程序并不是随机地执行一条命令,相反它们会等到定时器中断结束。这保持着有组织和结构的处理。频率为100Hz的定时器中断之间的时间是10ms,250Hz是4ms,1000Hz是1ms。现在许多开发者会马上想到1000Hz是最好的。好吧,这取决于你对开销的要求。一个更大的定时器频率意味着更多的能源消耗和更多的能源被利用(在定时器上),产生更多的热量。更多的热量意味着硬件损耗的更快。

注意:如果某个特定的特性对你并不重要或者你不确定该选择什么,就使用配置工具选择的默认值。比如,就我现在正在配置的内核而言,使用哪个定时器对我并不重要。总的来说,如果你没有特别的原因去选择任何一个选项时,就使用默认值。

下面这个有趣的系统调用可能会对一些用户有用(kexec system call (KEXEC))。kexec调用会关闭当前内核去启动另外一个或者重启当前内核。硬件并不会关闭,并且这个调用可以无需固件的帮助工作。bootloader是不执行的(bootloader是启动操作系统的软件) 。这个重启发生在操作系统级别上而不是硬件上。使用这个系统调用会快于执行一个标准的关机或者重启,这会保持硬件在加电状态。这个系统调用并不能工作在所有系统上。为了更高性能,启用这个热启动功能。

为了使用kexec,对重启后要使用的内核使用如下命令替换""。同样,使用之前我们讲过的内核参数替换"" (我会在以后的文章中更深入的讨论。)

分享到:
No Response
Comment (0)
Trackback (0)