ELsmp 應該抄是企業 Linux 的內核,針對襲 smp (也就是多 CPU )進行的優化(其實就是打開多核心支持,這個多核心支持內核裡面的設置是有上限可以設置的,普通內核最高 256 個)。
PAE 是打開了 CPU 的 PAE 支持,這個 PAE 好像是 32 位 CPU 對 >4G 內存的支持的擴展功能。也就是用 >32位的表示法表示內存大小(32 位最高 4G,貌似 PAE 是用 36 位表示來提供 64G 的支持)。一般來說現在的 CPU 都支持,但其實是新版本的 i686 級別 CPU 才支持,老的 i586 和更早,以及部分 i686 時代早期的 CPU 不支持。
㈡ linux 編譯內核幾個常見問題解決方法
第一次把自己編譯的驅動模塊載入進開發板,就出現問題,還好沒花費多長時間,下面列舉出現的問題及解決方案
1:出現insmod: error inserting 'hello.ko': -1 Invalid mole format
法一(網上的):是因為內核模塊生成的環境與運行的環境不一致,用linux-2.6.27內核源代碼生成的模塊,可能就不能在linux-2.6.32.2內核的linux環境下載入,需要在linux-2.6.27內核的linux環境下載入。
a.執行 uname -r //查看內核版本
b.一般出錯信息被記錄在文件/var/log/messages中,執行下面命令看錯誤信息
# cat /var/log/messages |tail
若出現類似下面:
Jun 4 22:07:54 localhost kernel:hello: version magic '2.6.35.6-45.fc14.i686.PAE
' should be '2.6.35.13-92.fc14.i686.PAE'
則把 Makefile里的KDIR :=/lib/moles/2.6.35.6-45.fc14.i686.PAE/build1 改為
KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1 //改成自己內核源碼路徑
(這里的build1是一個文件鏈接,鏈接到/usr/src/kernels/2.6.35.6-45.fc14.i686.PAE和13-92的)
然並卵,我的fedora 14 /usr/src/kernels下並沒有2.6.35.13-92.fc14.i686.PAE,只有2.6.35.13-92.fc14.i686,雖然不知道兩者有什麼區別,但改成2.6.35.13-92.fc14.i686還是不行,照樣這個問題,還好後來在看教學視頻的到啟發
法二:改的還是那個位置
KDIR :=/opt/FriendlyARM/linux-2.6.32.2 //把這里改成你編譯生成kernel的那個路徑
all:
$ (MAKE) -C $ (KDIR) M = $ (PWD) moles ARCH=arm CROSS_COMPILE=arm-linux- //加這句
2. [70685.298483] hello: mole license 'unspecified' taints kernel.
[70685.298673] Disabling lock debugging e to kernel taint
方法:在模塊程序中加入: MODULE_LICENSE("GPL");
3. rmmod: chdir(2.6.32.2-FriendlyARM): No such file or directory 錯誤解決
方法:lsmod 可查看模塊信息
即無法刪除對應的模塊。
就是必須在/lib/moles下建立錯誤提示的對應的目錄((2.6.32.2)即可。
必須創建/lib/moles/2.6.32.2這樣一個空目錄,否則不能卸載ko模塊.
# rmmod nls_cp936
rmmod: chdir(/lib/moles): No such file or directory
但是這樣倒是可以卸載nls_cp936,不過會一直有這樣一個提示:
rmmod: mole 'nls_cp936' not found
初步發現,原來這是編譯kernel時使用make moles_install生成的一個目錄,
但是經測試得知,rmmod: mole 'nls_cp936' not found來自於busybox,並不是來自kernel
1).創建/lib/moles/2.6.32.2空目錄
2).使用如下源碼生成rmmod命令,就可以沒有任何提示的卸載ko模塊了[luther.gliethttp]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main(int argc, char *argv[])
{
const char *modname = argv[1];
int ret = -1;
int maxtry = 10;
while (maxtry-- > 0) {
ret = delete_mole(modname, O_NONBLOCK | O_EXCL);//系統調用sys_delete_mole
if (ret < 0 && errno == EAGAIN)
usleep(500000);
else
break;
}
if (ret != 0)
printf("Unable to unload driver mole \"%s\": %s\n",
modname, strerror(errno));
}
3).把生成的命令復制到文件系統
# arm-linux-gcc -static -o rmmod rmmod.c
# arm-linux-strip -s rmmod
# cp rmmod /nfs/
cp /nfs/rmmod /sbin
代碼如下:
proc.c
[html] view plain
<span style="font-size:18px;">#include <linux/mole.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h> /* Necessary because we use the proc fs */
#define procfs_name "proctest"
MODULE_LICENSE("GPL");
struct proc_dir_entry *Our_Proc_File;
int procfile_read(char *buffer,char **buffer_location,off_t offset, int buffer_length, int *eof, void *data)
{ int ret;
ret = sprintf(buffer, "HelloWorld!\n");
return ret;
}
int proc_init()
{ Our_Proc_File = create_proc_entry(procfs_name, 0644, NULL);
if (Our_Proc_File == NULL) {
remove_proc_entry(procfs_name, NULL);
printk(KERN_ALERT "Error: Could not initialize /proc/%s\n",procfs_name);
return -ENOMEM; }
Our_Proc_File->read_proc = procfile_read;//
// Our_Proc_File->owner = THIS_MODULE;
Our_Proc_File->mode = S_IFREG | S_IRUGO;
Our_Proc_File->uid = 0;
Our_Proc_File->gid = 0;
Our_Proc_File->size = 37;
printk("/proc/%s created\n", procfs_name);
return 0;
}
void proc_exit()
{ remove_proc_entry(procfs_name, NULL);
printk(KERN_INFO "/proc/%s removed\n", procfs_name);
}
mole_init(proc_init);
mole_exit(proc_exit);</span></span></span></span></span>
[html] view plain
<span style="font-size:18px;">
ifneq ($(KERNELRELEASE),)
obj-m :=proc.o
else
KDIR :=/opt/FriendlyARM/linux-2.6.32.2
#KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1
PWD :=$(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif</span></span></span></span></span>
make後生成proc.ko,再在開發板上insmod proc.ko即可
執行 dmesg 就可以看到 產生的內核信息啦
㈢ 為什麼 32 位 Ubuntu 系統可支持 4G 以上內存
何謂PAE呢?全稱:Physical Address Extension
其實就是使32位系統支持超過4G內存,最大可達64G內存。
對於Linux來說,內核從2.6版本開始全面支持PAE[3] ,這使得在32位的機器上可以訪問64GB的內存。啟用了PAE的linux內核還需要同樣支持PAE的CPU。從2008年起,很多一般的發布的Linux版本都默認使用啟用了PAE的內核。
㈣ kali linux是什麼
Kali Linux是基於Debian的Linux發行版, 設計用於數字取證和滲透測試。由Offensive Security Ltd維護和資助。最先由Offensive Security的Mati Aharoni和Devon Kearns通過重寫BackTrack來完成,BackTrack是他們之前寫的用於取證的Linux發行版 。
Kali Linux預裝了許多滲透測試軟體,包括nmap (埠掃描器)、Wireshark (數據包分析器)、John the Ripper (密碼破解器),以及Aircrack-ng (一應用於對無線區域網進行滲透測試的軟體).[2] 用戶可通過硬碟、live CD或live USB運行Kali Linux。Metasploit的Metasploit Framework支持Kali Linux,Metasploit一套針對遠程主機進行開發和執行Exploit代碼的工具。
Kali Linux既有32位和64位的鏡像。可用於x86 指令集。同時還有基於ARM架構的鏡像,可用於樹莓派和三星的ARM Chromebook
Kali Linux安裝條件
安裝Kali Linux到你的電腦過程很簡單.首先你需要兼容的電腦硬體. Kali支持i386, amd64, 和ARM (armel和armhf) 平台.最低硬體要求如下,更好的硬體性能會更好. i386鏡象默認使用PAE內核,所以你能在大於4GB內存的機器運行它.下載Kali Linux然後刻錄DVD盤,或者准備好一塊Kali Linux Live U盤作為安裝媒介.如果你的電腦沒有DVD光碟機或者USB埠, 請參考Kali Linux網路安裝.
㈤ ubuntu的Linux的內核版本用的那種版本最多
12.04 是3.2.0-24 12.10是3.3.4
最多的版本?內核還是ubuntu?
內核的話redhat和SUSE用的是2.6
書的話介紹也是以2.6為主
ubuntu版本的話用的多專的12.04 書講解的一般屬還是10.04
.04是穩定版 .10會有新特性但是不穩定 12.10安個3d桌面就會無限死機。。。
㈥ linux內核版本變少
Linux內核版本命名在不同時期有著不同的規范,在涉及到Linux版本問題時經常容易混淆,主線版本/穩定版/長期支持版本經常搞不清楚,本文主要記錄下內核版本命名的規則以及如何查看Linux系統版本信息。
Linux內核(Linux kernel)簡介
內核是操作系統的核心 ,其主要功能有:
響應中斷,執行中斷服務程序
管理多個進程,調度和分享處理器的時間
管理進程地址空間的內存管理
網路和進程間通信等系統服務程序
內核的活動范圍:
1.運行於用戶空間,執行用戶進程
2.運行於內核空間,處於進程上下文,代表某個特定進程的執行
3.運行於內核空間,處於中斷上下文,與任何進程無關,處理某個特定的中斷
Linux內核版本號
第一種方式:
Linux 的版本號分為兩部分,即內核版本與發行版本。內核版本號由3個數字組成:A.B.C。各數字含義如下:
A:內核主版本號。這是很少發生變化,只有當發生重大變化的代碼和內核發生才會發生。在歷史上曾改變兩次的內核:1994年的1.0及1996年的2.0。
B:內核次版本號。是指一些重大修改的內核。偶數表示穩定版本;奇數表示開發中版本。
C:內核修訂版本號。是指輕微修訂的內核。這個數字當有安全補丁,bug修復,新的功能或驅動程序,內核便會有變化。
第二種方式:
major.minor.patch-build.desc
major : 主版本號,有結構變化才變更
minor : 次版本號,新增功能時才發生變化,一般技術表示測試版,偶數表示生產版
patch : 補丁包數或次版本的修改次數
build : 編譯(或構建)的次數,每次編譯可能對少量程序做優化或修改,但一般沒有大的(可控的)功能變化。
desc : 當前版本的特殊信息,其信息由編譯時指定,具有較大的隨意性,有如下的標識是常用的:
rc(或r),表示發行候選版本(release candidate),rc後的數字表示該正式版本的第幾個候選版本,多數情況下,各候選版本之間數字越大越接近正式版。
smp,表示對稱多處理器(Symmetric MultiProcessing)。
pp,在Red Hat Linux中常用來表示測試版本(pre-patch)。
EL,在Red Hat Linux中用來表示企業版Linux(Enterprise Linux)。
mm,表示專門用來測試新的技術或新功能的版本。
fc,在Red Hat Linux中表示Fedora Core。
例如:
用命令uname -a查看內核版本號
1、在CentOS下如:
Linux localhost 2.6.32-642.15.1.el6.x86_64 #1 SMP Fri Feb 24 14:31:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
說明如下:
第一個組數字:2, 主版本號
第二個組數字:6, 次版本號,當前為穩定版本
第三個組數字:32, 修訂版本號
第四個組數字:642.15.1,表示發型版本的補丁版本
el6:則表示我正在使用的內核是 RedHat / CentOS 系列發行版專用內核
x86_64:採用的是64位的CPU
2、在Ubuntu下如:
Linux localhost 3.2.0-67-generic #101-Ubuntu SMP Tue Jul 15 17:46:11 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
#有的是3.2.0-67-generic-pae
說明如下:
第一個組數字:3,主版本號
第二個組數字:2,次版本號,當前為穩定版本
第三個組數字:0,修訂版本號
第四個組數字:67,當前內核版本(3.2.0)的第67次微調patch
generic:當前內核版本為通用版本,另有表示不同含義的server(針對伺服器)、i386(針對老式英特爾處理器)
pae(PhysicalAddressExtension):物理地址擴展,為了彌補32位地址在PC伺服器應用上的不足而推出,表示此32位系統可以支持超過4G的內存
x86_64:採用的是64位的CPU
SMP:對稱多處理機,表示內核支持多核、多處理器
TueJul1517:46:11UTC2014:內核的編譯時間(builddate)為2014/07/1517:46:11
有好東西,一定想著大家。我是愛分享的Linux技術狂。大家記得關注我,也不要忘記點贊、評論、收藏。
同時也可以點擊 正在跳轉 我們在這里一起學習、一起進步,或者點擊 C/C++Linux伺服器開發/後台架構師 免費訂閱一下,多一點知識,多一份收獲,更多一點工資。
更多關於內核的視頻干貨:
嗶哩嗶哩 ( ゜- ゜)つロ 乾杯~ Bilibili
內核版本分類
Linux內核版本的最新發布狀態,參見Linux官網:
The Linux Kernel Archives
1、mainline
主線版本
2、stable
穩定版,由mainline在時機成熟時發布,穩定版也會在相應版本號的主線上提供bug修復和安全補丁,但內核社區人力有限,因此較老版本會停止維護,而標記為EOL(End of Life)的版本表示不再支持的版本。
3、longterm(Long Term Support)
長期支持版,長期支持版的內核不再支持時會標記EOL。
4、linux-next,snapshot
代碼提交周期結束之前生成的快照 用於給Linux代碼貢獻者們做測試
查看Linux內核版本命令
1、cat /proc/version
[root@bogon ~]# cat /proc/version
Linux version 4.4.131-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Wed May 2 13:09:02 EDT 2018
2、uname -a
[root@bogon ~]# uname -a
Linux bogon 4.4.131-1.el7.elrepo.x86_64 #1 SMP Wed May 2 13:09:02 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@bogon ~]# uname -r
4.4.131-1.el7.elrepo.x86_64
查看Linux系統版本的命令
1、lsb_release -a(適用於所有的Linux發行版本)
LSB是Linux Standard Base的縮寫,lsb_release命令用來顯示LSB和特定版本的相關信息。如果使用該命令時不帶參數,則默認加上-v參數。
說明:
-v 顯示版本信息。
-i 顯示發行版的id。
-d 顯示該發行版的描述信息。
-r 顯示當前系統是發行版的具體版本號。
-c 發行版代號。
-a 顯示上面的所有信息。
-h 顯示幫助信息。
-s 輸出簡短的描述信息(僅限於redhat和fedora系統) 。
有些系統中默認並沒有安裝lsb_release,需要進行安裝,以CentOS為例:
首先查找lsb_release安裝包:
[root@bogon ~]# yum provides lsb_release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* elrepo: mirrors.tuna.tsinghua.e.cn
* extras: centos.ustc.e.cn
* updates: mirrors.cn99.com
redhat-lsb-core-4.1-27.el7.centos.1.x86_64 : LSB Core mole support
Repo : base
Matched from:
Filename : /usr/bin/lsb_release
安裝:
[root@bogon ~]# yum install -y redhat-lsb-core
2、cat /etc/redhat-release(適用於Redhat系的Linux)
[root@bogon ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
3、cat /etc/issue(適用於所有的Linux發行版本)
root@localhost:~# cat /etc/issue
Ubuntu 14.04.5 LTS \n \l
本文作者: Jason hu
本文轉自鏈接: http://jasonhzy.github.io/2019/02/05/linux-kernel-version/
版權聲明:本文採用 CC BY-NC-SA 3.0 許可協議。
展開閱讀全文
㈦ 請教RedHat Linux 2.6.18-8.el5PAE和2.6.18-194.el5有什麼區別
2.6.18-8.el5PAE 是RHEL 5 的內核,並且支持PAE(物理地址擴展),使32位系統能夠訪問大於4GB的RAM
2.6.18-194.el5 是RHEL 5 Update 5的內核
㈧ ubuntu,with linux 3.2.0-23-generic-pae(recovery mode)什麼意思
ubuntu系統,用3.2.0-23-generic-pae內核啟動,單用戶模式登錄系統(單用戶模式一般用來修復內系統用)。
如果是在啟動容畫面出現這個界面,可以按E進入grub菜單查看linux一行,有更詳細的內核啟動參數。
㈨ 32位linux能支持的最大物理內存有多少
32位linux不打開PAE,則最多隻能識別出4GB內存,若打開PAE,則最多可以識別出64GB內存。但是 32位系統下的進程一次最多隻能定址4GB的空間。
64位linux則沒有32位系統的限制。因此對於內存大於4GB的機器來說,最好安裝64位系統。
簡單介紹下如何讓redhat 5-32位支持4G以上內存。
步驟1:
安裝kernel-PAE.i686 內核包,讓系統內核支持PAE物理地址擴展。
rpm-ivh kernel-PAE-2.6.18-53.el5.i686.rpm 安裝的時候會報如下警告。
㈩ linux系統中怎麼打開支持8G的內核
根據你的內核版本 你安裝的應該是RHEL4.5 也就是redhat enterprise linux 4 upgrade5, 這個發行版默認的內核最大支持4G內存 ,如果想使用8G內存,需要安裝安裝光碟中的kernel-PAE 內核
下面是RHEL4的kernel doc
Red Hat Enterprise Linux contains the following kernel packages
kernel:Contains the kernel for multi-processor systems.For x86 system,only the first 4GB of RAM is used.As such,x86systems with over 4GBof RAM should use the kernel-PAE.
kernel-devel:Contains the kernel headers and makefiles sufficient to bulid moles against the kernel package.
kernel-PAE(only for i686systems):This package offers the following key configuration options (in addition to the options already enabled for the kernel package)
1.Support for over 4GB of RAM (up to 64GB for the x86)
2.PAE(Physical Address Extension)or 3-level paging on x86 processors that support PAE
3.4GB/4GB split:4GB of virtual address space for the kernel an almost 4GB for each userprocess on x86systtems
軟體包位置處於 安裝盤 Server目錄下 找到包含 kernel-PAE的包 安裝之 ,重啟 選擇新的內核啟動即可
或者也可以安裝 包含 kerlne-smp 字樣的內核包