自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Devyn的Linux內(nèi)核專題:配置內(nèi)核特性

系統(tǒng) Linux
Linux內(nèi)核擁有許多可以配置的特性,接下來(lái)我們還有許多要配置。

Linux內(nèi)核擁有許多可以配置的特性,接下來(lái)我們還有許多要配置。

[[90380]]

下一個(gè)可以配置的特性是x86的隨機(jī)數(shù)生成器(x86 architectural random number generator (ARCH_RANDOM))。記住,我們現(xiàn)在配置的是針對(duì)AMD64系統(tǒng)的內(nèi)核代碼。這個(gè)隨機(jī)數(shù)生成器使用Intel x86的RDRAND指令。這并不通用,所以為了一個(gè)更輕量的內(nèi)核我禁用了它。

接著,我們可以啟用或者禁用"Supervisor Mode Access Prevention (X86_SMAP)"。這是Intel處理器使用的安全特性。SMAP在一些條件下只允許內(nèi)核訪問(wèn)用戶空間。這個(gè)有助于保護(hù)用戶空間。如果啟用,這里有一點(diǎn)性能和內(nèi)核大小的開銷,但是開銷很小。由于我是用的是AMD系統(tǒng),所以我禁用了這個(gè)特性。

開發(fā)者可以啟用"EFI runtime service support (EFI)"。只有在有EFI固件的系統(tǒng)上啟用它。擁有這個(gè)特性,內(nèi)核可以使用的EFI服務(wù)。EFI是一個(gè)操作系統(tǒng)和硬件如何交流的規(guī)范,所以EFI固件是使用這個(gè)規(guī)范的硬件代碼。因?yàn)槲覜](méi)有EFI固件,所以我禁用了它。

這是一個(gè)應(yīng)該被啟用的有用的安全方式(Enable seccomp to safely compute untrusted bytecode (SECCOMP))。這個(gè)安全特性在使用非可信的字節(jié)碼的數(shù)值計(jì)算(執(zhí)行大量計(jì)算的軟件)中使用。字節(jié)碼(可移植代碼)是一種被解釋器有效讀取的代碼。字節(jié)碼不是源代碼,但它也不是匯編或者二進(jìn)制代碼。非可信的代碼是一種可能導(dǎo)致系統(tǒng)/數(shù)據(jù)損壞的代碼。可能會(huì)破壞系統(tǒng)或者毀壞數(shù)據(jù)的非可信的代碼通過(guò)seccomp被隔離在獨(dú)立的地址空間中。這是通過(guò)文件描述符傳輸?shù)姆椒?。通常上,最好啟用這個(gè)安全特性,即使會(huì)有一些性能開銷,除非你在制作一個(gè)需要榨干性能的內(nèi)核。

這里是另外一個(gè)安全特性(Enable -fstack-protector buffer overflow detection (CC_STACKPROTECTOR))。緩沖溢出是數(shù)據(jù)被寫在超出了它的內(nèi)存界限而進(jìn)入了鄰近的內(nèi)存中。這是一個(gè)安全威脅。一些惡意軟件使用緩沖區(qū)溢出來(lái)破壞系統(tǒng)。啟用這個(gè)會(huì)使用GCC選項(xiàng) "-fstack-protector"。GCC是一個(gè)Linux編譯器,在你配置完成后用它來(lái)編譯內(nèi)核。這個(gè)編譯器參數(shù)會(huì)在返回地址前在棧上加入一個(gè)canary值(特殊的安全代碼)。這個(gè)值會(huì)在返回前被驗(yàn)證。當(dāng)內(nèi)存溢出發(fā)生時(shí),canary值會(huì)得到覆蓋消息。這時(shí),會(huì)導(dǎo)致內(nèi)核崩潰。如許多人知道的那樣,內(nèi)核錯(cuò)誤意味著系統(tǒng)將要崩潰,但是這比系統(tǒng)被入侵或者數(shù)據(jù)永久損害的好。發(fā)生內(nèi)核錯(cuò)誤,系統(tǒng)會(huì)重啟,但是如果緩沖溢出則可能導(dǎo)致系統(tǒng)被入侵。一個(gè)簡(jiǎn)單的重啟無(wú)法修復(fù)破壞(譯注:但也不會(huì)更壞)。你必須用GCC 4.2或者更高版本支持這個(gè)參數(shù)的GCC來(lái)編譯內(nèi)核。

提示:要知道你使用的版本號(hào),在命令行內(nèi)鍵入"gcc --version"。

在這之后,我們可以配置定時(shí)器頻率。配置工具建議使用250Hz,所以我們使用這個(gè)值。

 

  1. Timer frequency 
  2. 1. 100 HZ (HZ_100) 
  3. >2. 250 HZ (HZ_250) 
  4. 3. 300 HZ (HZ_300) 
  5. 4. 1000 HZ (HZ_1000) 
  6. choice[1-4?]: 2 

 

使用1000Hz通常來(lái)講對(duì)許多系統(tǒng)而言太快了。定時(shí)器頻率決定著定時(shí)器中斷被使用的頻率。這有助于在時(shí)間線上的系統(tǒng)操作。程序并不是隨機(jī)地執(zhí)行一條命令,相反它們會(huì)等到定時(shí)器中斷結(jié)束。這保持著有組織和結(jié)構(gòu)的處理。頻率為100Hz的定時(shí)器中斷之間的時(shí)間是10ms,250Hz是4ms,1000Hz是1ms。現(xiàn)在許多開發(fā)者會(huì)馬上想到1000Hz是最好的。好吧,這取決于你對(duì)開銷的要求。一個(gè)更大的定時(shí)器頻率意味著更多的能源消耗和更多的能源被利用(在定時(shí)器上),產(chǎn)生更多的熱量。更多的熱量意味著硬件損耗的更快。

注意:如果某個(gè)特定的特性對(duì)你并不重要或者你不確定該選擇什么,就使用配置工具選擇的默認(rèn)值。比如,就我現(xiàn)在正在配置的內(nèi)核而言,使用哪個(gè)定時(shí)器對(duì)我并不重要??偟膩?lái)說(shuō),如果你沒(méi)有特別的原因去選擇任何一個(gè)選項(xiàng)時(shí),就使用默認(rèn)值。

下面這個(gè)有趣的系統(tǒng)調(diào)用可能會(huì)對(duì)一些用戶有用(kexec system call (KEXEC))。kexec調(diào)用會(huì)關(guān)閉當(dāng)前內(nèi)核去啟動(dòng)另外一個(gè)或者重啟當(dāng)前內(nèi)核。硬件并不會(huì)關(guān)閉,并且這個(gè)調(diào)用可以無(wú)需固件的幫助工作。bootloader是不執(zhí)行的(bootloader是啟動(dòng)操作系統(tǒng)的軟件) 。這個(gè)重啟發(fā)生在操作系統(tǒng)級(jí)別上而不是硬件上。使用這個(gè)系統(tǒng)調(diào)用會(huì)快于執(zhí)行一個(gè)標(biāo)準(zhǔn)的關(guān)機(jī)或者重啟,這會(huì)保持硬件在加電狀態(tài)。這個(gè)系統(tǒng)調(diào)用并不能工作在所有系統(tǒng)上。為了更高性能,啟用這個(gè)熱啟動(dòng)功能。

為了使用kexec,對(duì)重啟后要使用的內(nèi)核使用如下命令替換""。同樣,使用之前我們講過(guò)的內(nèi)核參數(shù)替換"" (我會(huì)在以后的文章中更深入的討論。)

 

  1. kexec -l <kernel-image> --append="<command-line-options>”  

特別地,我這里輸入:

 

  1. kexec -l /boot/vmlinuz-3.8.0-27-generic –append="root=/dev/sda1"  

注意:硬件有時(shí)不需要重置,所以這不依賴于kexec。

下面,我們有一個(gè)適用于kexec的調(diào)試特性(kernel crash dumps (CRASH_DUMP))。當(dāng)kexec被調(diào)用時(shí),一個(gè)崩潰信息(crash dump)會(huì)生成。除非你有必要調(diào)試kexec,否則這個(gè)并不必要。我禁用了這個(gè)特性。

再者,我們有另外一個(gè)kexec特性(kexec jump (KEXEC_JUMP))。kexec跳允許用戶在原始內(nèi)核和kexec啟動(dòng)的內(nèi)核之間切換。

最好對(duì)內(nèi)核啟動(dòng)地址使用默認(rèn)值(Physical address where the kernel is loaded (PHYSICAL_START) [0x1000000])。

下一個(gè)內(nèi)核選項(xiàng)(Build a relocatable kernel (RELOCATABLE))允許內(nèi)核放在內(nèi)存的任何地方。內(nèi)核文件會(huì)增大10%,但是超出部分會(huì)在執(zhí)行時(shí)從內(nèi)存移除。許多人也許想知道這為什么很重要。在2.6.20內(nèi)核前,救援內(nèi)核(rescue kernel)必須被配置和編譯運(yùn)行在不同的內(nèi)存地址上。當(dāng)這個(gè)特性發(fā)明后,開發(fā)者不必再編譯兩個(gè)內(nèi)核。救援內(nèi)核不會(huì)在第一個(gè)已加載的內(nèi)核的地方加載,因?yàn)樵搲K內(nèi)存已被占用或者發(fā)生了錯(cuò)誤。(如果你正在使用救援內(nèi)核,那么明顯第一個(gè)內(nèi)核發(fā)生了錯(cuò)誤)

下面這個(gè)特性應(yīng)該在可以增加CPU數(shù)量的系統(tǒng)中啟用,除非你有特別的理由不去這么做(Support for hot-pluggable CPUs (HOTPLUG_CPU))。配置工具會(huì)自動(dòng)啟用這個(gè)特性。在這個(gè)特性下,你可以在一個(gè)擁有很多處理器的系統(tǒng)上激活/停用一個(gè)CPU,這并不是說(shuō)在系統(tǒng)中插入新的CPU,所有的CPU必須已經(jīng)安裝在系統(tǒng)中。

下面的選項(xiàng)會(huì)讓我們選擇設(shè)置上面的特性是否默認(rèn)啟用(Set default setting of cpu0hotpluggable (BOOTPARAM\HOTPLUG_CPU0))。為了性能最好禁用這個(gè)特性直到需要的時(shí)候。

接著的這個(gè)調(diào)試特性允許開發(fā)者調(diào)試CPU熱插拔特性(Debug CPU0 hotplug (DEBUG_HOTPLUG_CPU0))。我禁用了它。

為了兼容舊版本的glibc(<2.3.3),可以啟用這個(gè)特性(Compat VDSO support (COMPAT_VDSO))。這適用于通過(guò)映射32位在VDSO(虛擬動(dòng)態(tài)鏈接共享對(duì)象)的舊式地址。Glibc是GNC C庫(kù);這是GNU工程實(shí)現(xiàn)的C標(biāo)準(zhǔn)庫(kù)。

如果系統(tǒng)內(nèi)核被用于一個(gè)缺乏完整功能的bootloader上,那么啟用這個(gè)特性(Built-in kernel command line (CMDLINE_BOOL))。這允許用戶在內(nèi)核自身上使用一條命令行(譯注:及其參數(shù)),那么管理員可以修復(fù)內(nèi)核問(wèn)題。如果bootloader已經(jīng)有了一條命令行(像grub),那么這個(gè)特性不必啟用。

現(xiàn)在我們可以配置ACPI和電源了。首先,我們被要求選擇系統(tǒng)是否可以掛起到內(nèi)存(Suspend to RAM and standby (SUSPEND))。高級(jí)配置和電源接口(ACPI)是一種對(duì)于設(shè)備配置和電源管理的開放標(biāo)準(zhǔn)。掛起系統(tǒng)會(huì)將數(shù)據(jù)放在內(nèi)存上,同時(shí)硬件進(jìn)入一種低功耗的狀態(tài)。系統(tǒng)不會(huì)完全關(guān)機(jī)。如果用戶需要計(jì)算機(jī)進(jìn)入一個(gè)低功耗的狀態(tài),但是希望保留當(dāng)前已打開程序時(shí)是非常有用的。關(guān)閉一個(gè)系統(tǒng)會(huì)完全關(guān)閉系統(tǒng)電源并且清理內(nèi)存。

下面,我們可以啟用睡眠(Hibernation (aka 'suspend to disk') (HIBERNATION))。睡眠就像掛起模式,但是內(nèi)存中所有數(shù)據(jù)被保存到硬盤上,并且設(shè)備完全關(guān)閉。這允許用戶在電源恢復(fù)后繼續(xù)使用他們已打開的程序。

這里,我們可以設(shè)置默認(rèn)的恢復(fù)分區(qū)(Default resume partition (PM_STD_PARTITION))。很少有開發(fā)者和管理員需要這個(gè)特性。當(dāng)系統(tǒng)從睡眠中恢復(fù)時(shí),他會(huì)加載默認(rèn)的恢復(fù)分區(qū)。

在這之后,我們可以啟用"Opportunistic sleep (PM_AUTOSLEEP)"。這會(huì)讓內(nèi)核在沒(méi)有活躍的喚醒調(diào)用被調(diào)用時(shí)進(jìn)入掛起或者睡眠狀態(tài)。這意味著空閑的系統(tǒng)將會(huì)進(jìn)入掛起模式以節(jié)省電源。我啟用了這個(gè)特性。

接下來(lái),是詢問(wèn)關(guān)于"User space wakeup sources interface (PM_WAKELOCKS)"。啟用這個(gè)特性將會(huì)允許喚醒源對(duì)象被激活、停用,并通過(guò)基于sysfs接口由用戶空間創(chuàng)建。喚醒源對(duì)象會(huì)追蹤喚醒事件源。

sysfs是位于/sys/的虛擬文件系統(tǒng)。這個(gè)虛擬文件系統(tǒng)包含了關(guān)于設(shè)備的信息。當(dāng)進(jìn)入/sys/時(shí),它似乎是硬盤的一部分,但是這個(gè)并不是一個(gè)真正的掛載點(diǎn)。這些文件實(shí)際存在于內(nèi)存中。這與/proc/是同一個(gè)概念。

注意:"/sysfs/"是一個(gè)文件夾,而"/sysfs"則可以是一個(gè)根目錄下名為"sysfs"的文件。許多Linux用戶會(huì)混淆這兩種命名約定。

如果啟用了上面的選項(xiàng),那么你可以設(shè)置"Maximum number of user space wakeup sources (0 = no limit) (PM_WAKELOCKS_LIMIT)"。最好選擇默認(rèn),那么你就可以啟用垃圾收集器(Garbage collector for user space wakeup sources (PM_WAKELOCKS_GC))。垃圾收集是一種內(nèi)存管理方式。

注意:在需要更多內(nèi)存的系統(tǒng)中,通常最好在大多數(shù)情況下盡可能啟用垃圾收集。不然內(nèi)存會(huì)消耗得更快且雜亂。

下一個(gè)電源選項(xiàng)關(guān)于IO設(shè)備(Run-time PM core functionality (PM_RUNTIME))。這個(gè)選項(xiàng)允許IO硬件在運(yùn)行時(shí)進(jìn)入低功耗狀態(tài)。硬件必須支持這個(gè)才行,不是所有硬件都支持。

與其他許多內(nèi)核組件一樣,如果啟用了(Power Management Debug Support),電源管理代碼同樣有調(diào)試支持。我禁用了這個(gè)選項(xiàng)。

注意:注意這些我引用/顯示的配置工具上的選項(xiàng)或問(wèn)題不再顯示選項(xiàng)代碼(括號(hào)間所有的大寫字母)。這是因?yàn)槲覜](méi)有使用基于ncurses的配置工具(make menuconfig)而是使用默認(rèn)工具去得到選項(xiàng)、設(shè)置和問(wèn)題。記住,"make config"缺乏保存當(dāng)前進(jìn)度的能力。

在這之后,配置工具會(huì)啟用"ACPI (Advanced Configuration and Power Interface) Support"。最好允許這個(gè)電源管理規(guī)范。通常配置工具會(huì)啟用這個(gè)特性。

為了允許向后兼容,啟用"Deprecated /proc/acpi files"。新的實(shí)現(xiàn)使用更新的在/sys下的實(shí)現(xiàn)。我禁用了這個(gè)選項(xiàng)。一個(gè)相似的問(wèn)題詢問(wèn)關(guān)于"Deprecated power /proc/acpi directories"。通常上,如果你禁用了這些文件,你不再需要這些文件夾,所以我禁用了他們。一些舊的程序可能會(huì)使用這些文件和文件夾。如果你在給舊的的Linux系統(tǒng)上編譯一個(gè)新的內(nèi)核,最好啟用這個(gè)選項(xiàng)。

下面,我們有另外一個(gè)文件接口可以啟用或者禁用(EC read/write access through)。這會(huì)在/sys/kernek/debug/ec下創(chuàng)建一個(gè)嵌入式控制器接口。嵌入式控制器通常在筆記本中讀取傳感器,內(nèi)核代碼通過(guò)系統(tǒng)的BIOS表提供的ACPI代碼訪問(wèn)嵌入式控制器。

這里有另外一個(gè)可以啟用或者禁用的向后兼容特性 (Deprecated /proc/acpi/event support)。acpi守護(hù)進(jìn)程可能會(huì)讀取/proc/api/event來(lái)管理ACPI生成的驅(qū)動(dòng)。不同于這個(gè)接口,守護(hù)進(jìn)程使用netlink事件或者輸入層來(lái)得到送給用戶空間的事件,acpi守護(hù)進(jìn)程管理ACPI事件。

下一個(gè)選項(xiàng)允許開發(fā)者啟用一個(gè)特性,它會(huì)通知內(nèi)核現(xiàn)在使用的是交流電源(AC Adapter)還是電池。下一個(gè)選項(xiàng)從/proc/acpi/battery/ (Battery)中提供電池信息。

為了內(nèi)核在電源/睡眠按鈕按下或者蓋子合上時(shí)不同表現(xiàn),啟用這個(gè)“按鈕”選項(xiàng)(Button)。這些事件在/proc/acpi/event/中控制。比如這樣的行為,如果在用戶賬戶的電源選項(xiàng)啟用了掛起,當(dāng)筆記本電腦的蓋子關(guān)閉后系統(tǒng)將會(huì)掛起。

下一個(gè)ACPI擴(kuò)展是針對(duì)顯卡的(Video)。

ACPI風(fēng)扇控制可以被啟用/禁用(Fan)。最好啟用ACPI風(fēng)扇管理,這有助于節(jié)能。

我們正在進(jìn)一步配置內(nèi)核中,但在接下來(lái)的文章中還有更多要做。

via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-5.4424/

責(zé)任編輯:奔跑的冰淇淋 來(lái)源: Linux中國(guó)
相關(guān)推薦

2013-12-18 14:44:10

2013-11-07 13:59:56

Linux內(nèi)核

2013-11-05 09:58:39

Linux內(nèi)核

2013-11-06 13:03:10

Linux內(nèi)核

2013-11-12 11:01:46

Linux內(nèi)核

2013-12-18 11:14:57

Linux內(nèi)核Linux Kerne

2013-10-31 14:09:14

Linux內(nèi)核

2013-11-05 09:55:37

2013-11-25 17:39:17

Linux內(nèi)核PCIACPI

2013-10-31 14:15:10

2013-10-31 16:29:10

Linux內(nèi)核

2013-12-20 13:08:12

Linux內(nèi)核服務(wù)器

2009-12-09 09:27:35

linux內(nèi)核

2019-04-01 17:43:21

Linux內(nèi)核網(wǎng)關(guān)設(shè)計(jì)

2021-02-20 06:08:07

LinuxWindows內(nèi)核

2011-01-14 16:23:46

Linux內(nèi)核

2010-03-02 09:17:32

Linux local

2013-05-13 09:52:52

Windows內(nèi)核Linux內(nèi)核

2010-01-13 09:58:42

2021-05-19 07:56:26

Linux內(nèi)核搶占
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)