日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux lspci信息 详解_Linux引导之EFI SHELL详解

發(fā)布時(shí)間:2023/12/15 linux 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux lspci信息 详解_Linux引导之EFI SHELL详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇說,我覺得許多EFI SHELL的文章,總是沒講透。所以我想將EFI SHELL掀個(gè)底兒朝天。

磁盤上的EFI系統(tǒng)分區(qū),即 EFI system partition,簡(jiǎn)寫為 ESP。

UEFI類型的BIOS一般自帶EFI SHELL,我們進(jìn)入EFI SHELL中,就像進(jìn)入了一個(gè)就簡(jiǎn)單的cli交互系統(tǒng)。通過命令可以看到bios與os之間的某些聯(lián)系,也能看到一些操作系統(tǒng)引導(dǎo)的某些信息。

1EFI SHELL簡(jiǎn)單操作

在UEFI BIOS的引導(dǎo)菜單中,通常都有EFI SHELL菜單。

選中回車即進(jìn)入了EFI SHELL。

有些服務(wù)器的EFI SHELL命令和功能較全;而有些服務(wù)器需要通過廠商的診斷維護(hù)U盤執(zhí)行其他EFI命令,來補(bǔ)充相關(guān)的EFISHELL功能。

1.1 map命令

使用map –b 可以看到當(dāng)前可以引導(dǎo)操作系統(tǒng)的硬盤。

-b 分頁顯示 相當(dāng)于 linux命令 more

map -b的說明:

fs是mount點(diǎn),blkX是磁盤塊設(shè)備分區(qū);

UEFI承認(rèn)的塊設(shè)備分區(qū)blkX、也就是磁盤上的EFI分區(qū),可以自動(dòng)或者手動(dòng)mount到某個(gè)fsX上;

比如shell>mount blk9 fs9——如果blk9是EFI分區(qū),則可以正常掛載;

詳細(xì)參考 help mount -b

mount成功后 再通過map -b看設(shè)備:

fs0:盤中的EFI esp分區(qū)(blk0)的mount點(diǎn)。Alias關(guān)鍵字后面的alias blk0 表示 blk0 mount 在fs0;

fs1:硬盤上的EFI esp分區(qū)(blk1)即hd(1,gpt)的mount點(diǎn);

blk0:centos光盤介質(zhì)的EFI blk設(shè)備;

blk1,5,6,7: 硬盤上的EFI esp分區(qū)(blk1)即hd(1,gpt);blk5-7,硬盤上的另外3個(gè)分區(qū),分別對(duì)應(yīng)hd(2,gpt),hd(3,gpt),hd(4,gpt);

————————map -b的說明完畢——————————————————

1.2 fsX的簡(jiǎn)單操作

對(duì)blk設(shè)備進(jìn)行mount后,在EFISHELL里 可以對(duì)EFI分區(qū)進(jìn)行l(wèi)s等操作,在本實(shí)驗(yàn)中,只能對(duì)fs0,fs1進(jìn)行l(wèi)s和cd:

“fsX:”用于文件系統(tǒng)之間切換;

——————————————————————————————————

centos 所在硬盤里的EFI分區(qū)的內(nèi)容:

在EFI SHELL里,.EFI就是bootloader,可以在EFISHELL中直接執(zhí)行。

硬盤EFI esp里的內(nèi)容 就是fs1(hd(1,gpt))里面的內(nèi)容:

[root@localhost /]# cd /boot/EFI

[root@localhost EFI]# ls

EFI

[root@localhost EFI]# cd EFI

[root@localhost EFI]# ls

BOOT centos

[root@localhost EFI]# cd BOOT

[root@localhost BOOT]# ls -l

total 1340

-rwx------. 1 root root 1296176 Dec 7 2015 BOOTX64.EFI

-rwx------. 1 root root 73240 Dec 7 2015 fallback.EFI

[root@localhost BOOT]# cd ../centos

[root@localhost centos]# ls -l

total 5816

-rwx------. 1 root root 128 Dec 7 2015 BOOT.CSV

drwx------. 2 root root 4096 Jul 31 13:03 fonts

-rwx------. 1 root root 1025920 Nov 22 2016 gcdx64.EFI

-rwx------. 1 root root 4159 Jul 31 13:17 grub.cfg

-rwx------. 1 root root 1024 Jul 31 13:17 grubenv

-rwx------. 1 root root 1025920 Nov 22 2016 grubx64.EFI

-rwx------. 1 root root 1283952 Dec 7 2015 MokManager.EFI

-rwx------. 1 root root 1291512 Dec 7 2015shim-centos.EFI

-rwx------. 1 root root 1296176 Dec 7 2015 shim.EFI

[root@localhost centos]#

-rwx------. 1 root root 1025920 Nov 22 2016 grubx64.EFI——是可以執(zhí)行啟動(dòng)linux的。

2map命令中的磁盤設(shè)備路徑

本部分的圖與第一部分的圖無關(guān)。

2.1 補(bǔ)充的Intel x86 CPU架構(gòu)知識(shí)

假設(shè)該服務(wù)器是Intel skylake 兩路服務(wù)器。

那么CPU0 的四個(gè)PCIBUSNO,會(huì)被BIOS初始化成:0x00,0x17,0x3a,0x5d;

那么CPU1 的四個(gè)PCIBUSNO,會(huì)被BIOS初始化成:0x80,0x85,0xae,0xd7;

除了第一個(gè)PCIBUSNO,其他三個(gè)CPU PCIBUSNO 對(duì)應(yīng)的rootport,可以被劈成(bifurcate)以下幾種方式:

1、一整個(gè)PCIBUS x16 pcie lane,形成 一個(gè)rootport;

2、一個(gè)PCIBUS x16 pcie 分成8x8 pcie lane,形成兩個(gè)rootport;

3、一個(gè)PCIBUS x16 pcie 分成8x4x4 pcie lane,形成三個(gè)rootport;

4、一個(gè)PCIBUS x16 pcie 分成4x4x4x4 pcie lane,形成四個(gè)rootport;

如下圖:

?

——服務(wù)器型號(hào)不同,則上圖bifurcate的方式就不同,具體要看服務(wù)器廠商的電路設(shè)計(jì)以及服務(wù)器的系統(tǒng)邏輯圖。

2.2 map設(shè)備路徑

再看一臺(tái)skylake服務(wù)器,浪潮I48某節(jié)點(diǎn)的EFI SHELL 的map命令輸出:

就以FS0為例:

下面這個(gè)路徑,從左到右,挨個(gè)的擼。

2.2.1?? PCIroot(0x00)

代表了該磁盤所在的rootport編號(hào)(第0個(gè)rootport,第1個(gè)rootport,第2個(gè)rootport,,,,)

從操作系統(tǒng)的lspci -vt縮略樹來看,rootport的編號(hào)和PCIE BDF位置如下:》》》粗體所示(注意iou bus 5d,明顯的,該IOU 的 PCIE lanes被研發(fā)劈成了8x4x4,所以 bus 5d下有三個(gè)rootport)

-+-[0000:d7]-+-00.0-[d8-d9]--+-00.0 Intel Corporation 82599ES 10-GigabitSFI/SFP+ Network Connection 》》》這個(gè)00.0 是系統(tǒng)第9個(gè)rootport;

| | \-00.1 Intel Corporation 82599ES 10-GigabitSFI/SFP+ Network Connection

| +-05.0 Intel Corporation Device 2034

+-[0000:ae]-+-00.0-[af-b2]----00.0 Intel Corporation PCIe Data Center SSD 》》》這個(gè)00.0 是系統(tǒng)第8個(gè)rootport;

| +-05.0 Intel Corporation Device 2034

+-[0000:85]-+-05.0 Intel Corporation Device 2034 》》》05.0 前面的 00.0沒有插卡,所以,lspci沒顯示00.0。這個(gè)沒顯示的00.0 是系統(tǒng)第7個(gè)rootport;

+-[0000:80]-+-04.0 Intel Corporation Sky Lake-E CBDMA Registers 》》》04.0 前面的 00.0沒有插卡,所以,lspci沒顯示00.0。這個(gè)沒顯示的00.0 是系統(tǒng)第第6個(gè)rootport;

+-[0000:5d]-+-00.0-[5e-61]----00.0-[5f-61]----03.0-[60-61]--+-00.0Intel Corporation Ethernet Connection X722 for 1GbE 》》》系統(tǒng)第3個(gè)rootport

| | +-00.1 Intel Corporation Ethernet Connection X722for 1GbE

| | +-00.2 Intel Corporation Ethernet Connection X722for 1GbE

| | \-00.3 Intel Corporation Ethernet Connection X722for 1GbE

| +-02.0-[62]-- 》》》系統(tǒng)第4個(gè)rootport

| +-03.0-[63]-- 》》》系統(tǒng)第5個(gè)rootport

| +-05.0 Intel Corporation Device 2034

+-[0000:3a]-+-00.0-[3b]----00.0 LSI Logic / Symbios Logic MegaRAID SAS-33108 [Invader] 》》》系統(tǒng)第2個(gè)rootbus

| +-05.0 Intel Corporation Device 2034

+-[0000:17]-+-05.0 Intel Corporation Device 2034 》》》05.0 前面的 00.0沒有插卡,所以,lspci沒顯示00.0。這個(gè)沒顯示的00.0 是第系統(tǒng)1個(gè)rootbus

\-[0000:00]-+-00.0 Intel Corporation Sky Lake-E DMI3 Registers》》》系統(tǒng)第0個(gè)rootbus

+-04.0 Intel Corporation Sky Lake-E CBDMA Registers

+-11.5 Intel Corporation C610/X99 series chipset sSATAController [RAID mode]

——所以如上所述, fs0 所在最top的rootport是:-[0000:00]-+-00.0 Intel Corporation Sky Lake-E DMI3 Registers 》》》第0個(gè)rootport(其實(shí)就是DMI連接的PCH南橋)。所以 fs0的路徑PciRoot為0x0。

2.2.2 pci(0x110x5)

pci(0x11,0x5) 與fs0 的 的sata控制器的dev,function 一致

lsblk:

?..md126 9:126 0 849.5G 0 raid0

?..md126p1 259:0 0 200M 0 md /boot/efi/

/sys/devices/pci0000:00/0000:00:11.5/ata1/host3/target3:0:0/3:0:0:0/block/sdc/holders/md126

2.2.3 sata(05,0x8000,0x1)

這個(gè)確實(shí)不知道。

2.2.4 HD(1,gpt,748ae5f2-2aa3-4cec-a074-976d6fef0895,0x800,0x64000)

1:表示這是磁盤的第一個(gè)partition(盤的分區(qū)就是從1開始);

gpt:表示該磁盤為gpt分區(qū)類型;

748ae5f2-2aa3-4cec-a074-976d6fef0895

對(duì)應(yīng) blkid的PartUUID:

[root@localhost ~]# blkid

/dev/sdc: TYPE="isw_raid_member"

/dev/sdd: TYPE="isw_raid_member"

/dev/md126p1: SEC_TYPE="msdos"UUID="3D70-7403" TYPE="vfat" PARTLABEL="EFI SystemPartition" PARTUUID="748ae5f2-2aa3-4cec-a074-976d6fef0895"

(補(bǔ)充 UUID="3D70-7403" 在分區(qū)的分區(qū)頭,該uuid是分區(qū)內(nèi)的文件系統(tǒng)的uuid。這里的分區(qū) 是磁盤的第一個(gè)分區(qū)。分區(qū)的物理起始地址是0x100000,所以UUID:3D70-7403在下圖地址:

)

PARTUUID也就是對(duì)應(yīng)gpt硬盤的盤頭 LBA2 中 第一個(gè)分區(qū)的meta(from 絕對(duì)字節(jié)地址0x400)信息中的一部分?jǐn)?shù)據(jù),絕對(duì)字節(jié)地址(0x410~0x41f),表示分區(qū)的uuid:

748ae5f2-2aa3-4cec-a074-976d6fef0895

0x800:分區(qū)開始的扇區(qū)號(hào):

Disk /dev/md126: 912.1 GB, 912141582336 bytes,1781526528 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 131072 bytes / 262144bytes

Disk label type: gpt

Disk identifier: BE6F6087-1C3E-4BF9-BDB2-6BE87F471B34

(

disk identifier 對(duì)應(yīng) 盤頭 LBA1 地址0x238~0x247處:

)

# Start End Size Type Name

1 2048 411647 200M EFI System EFI System Partition

2 411648 2508799 1G Microsoft basic

3 2508800 1781524479 848.3G Linux LVM

——start 2048=0x800 扇區(qū),就是這個(gè)0x800;(當(dāng)然,每個(gè)扇區(qū)是512字節(jié),所以start 2048也就是 start 字節(jié)地址0x100000);

——end 411647,所以 part的大小就是 411647-2048+1=409600=0x64000個(gè)扇區(qū)

至此,map設(shè)備路徑解析完畢。

3、啟動(dòng)項(xiàng)

3.1 添加USB安裝盤,map的前后變化

原始的map信息:

通過bcfg boot dump –v來查看當(dāng)前的OS啟動(dòng)項(xiàng):

bmc 的kvm遠(yuǎn)程加載一個(gè) redhat安裝iso——模擬一個(gè)光驅(qū)設(shè)備:

此時(shí)efishell里的map里還沒有這個(gè)虛擬cdrom;

從efi shell>exit返回到 bios仿真圖形,然后再進(jìn)入boot manager,boot manager應(yīng)該是自動(dòng)掃描了啟動(dòng)設(shè)備,此時(shí)啟動(dòng)項(xiàng)里便有了usb/cdrom;

然后再進(jìn)入efishell>map -b,就有了虛擬cdrom了:

3.2 通過bcfg命令添加啟動(dòng)項(xiàng)

節(jié)點(diǎn) 的bios 中似乎沒有“手工添加啟動(dòng)項(xiàng)” 的功能菜單。

刀片所用的bios廠商信息記錄如下:

——也許其他機(jī)型、其他logo 的bios有 “手工添加啟動(dòng)項(xiàng)” ,但是本機(jī)BIOS中沒有這個(gè)功能。

在這種情況下,可以嘗試用EFI SHELL里的bcfg命令來添加啟動(dòng)項(xiàng)zxpuboot。

先查看當(dāng)前的啟動(dòng)項(xiàng):

help bcfg -b:

先嘗試添加引導(dǎo)項(xiàng):第一次添加失敗(用blk設(shè)備名路徑,添加失敗),第二次添加成功(用fs設(shè)備名路徑,添加成功)

返回看看 bootmanager 仿真界面,確實(shí)有了“zxpuboot”選項(xiàng):

?

并且zxpuboot也可以正常引導(dǎo):

在某些特殊情況下,例如:升級(jí)bios以后啟動(dòng)項(xiàng)丟失,我們就可以使用以上方法添加啟動(dòng)項(xiàng)。

3.3 dmpstore查看更底層的啟動(dòng)項(xiàng)

shell>dmpstore boot* -b (注:下圖輸出中,每一行中間的 “-” (例如20-01,中間的“-”)沒有意義,忽略)

?

上圖說明:

1、bootcurrent:當(dāng)前啟動(dòng)在什么地方,上圖值為0008;而下面的圖中,boot0008項(xiàng)表示為EFI SHELL;

2、bootorder:順序分別為 0009,0000,2002,2003,2001,0008.

根據(jù)下面系列圖片,也以知道:

boot0009 為 redhat enterpriselinux\EFI\redhat\shimx64.efi

boot0000 為 linpus lite\EFI\boot\grubx64.efi

boot2002 為 EFI cdrom

boot2003 為 EFI network

boot2001 為 EFI usb

boot0008 為 EFI Shell

其實(shí)也可以通過shell>setvar BootOrder來查看變量BootOrder的值:

——所以 dmpstore boot* -b命令 的boot order結(jié)果,對(duì)應(yīng):bios界面 boot菜單下的"Boot Type Order":

也對(duì)應(yīng) shell>btcfg boot dump -v的結(jié)果。

3、通過上圖,可以看到

板載網(wǎng)卡(BMC 的dedicate+share的MAC 在A8處:2500 后面的 6c 92 bf 9a 66 3d/3c;(boot000B,boot0001)

網(wǎng)卡x722的的MAC 在 B2處:2500后面的 6c92 bf 9a 66 3e;(boot0002~0005)

x520 網(wǎng)卡的MAC地址在 A0 處:2500后面的f8 f2 1e 2c b2 80(boot0006~0007)

——參照 下面的 “bios中網(wǎng)卡mac”

另外也可以推導(dǎo)出:

dmpstore boot* -b命令 的boot order結(jié)果;

boot order:順序分別為 0009,0000,2002,2003,2001,0008.

根據(jù)下面系列圖片,也以知道:

boot0009 為 redhat enterpriselinux\EFI\redhat\shimx64.efi

boot0000 為 linpus lite\EFI\boot\grubx64.efi

boot2002 為 EFI cdrom

boot2003 為 EFI network

boot2001 為 EFI usb

boot0008 為 EFI Shell

——若network列出詳細(xì)的NETWORKPXE設(shè)備,就相當(dāng)于:

服務(wù)器啟動(dòng)時(shí),若輸入F11中斷,進(jìn)入boot Manager,手工選擇啟動(dòng)項(xiàng),這些列出來的啟動(dòng)項(xiàng):

3.4 PXE網(wǎng)卡啟動(dòng)測(cè)試

當(dāng)我們遇到PXE安裝失敗時(shí),我們可以通過EFI SHELL中的相關(guān)命令 手工測(cè)試本地PXE網(wǎng)卡 tftp PXE server。

fat32 的U盤上有下載的tftp.efi:

3.4.1 靜態(tài)IP測(cè)試

首先看看 網(wǎng)卡在uefi階段設(shè)置的 eth0 的靜態(tài)ip(配置方法參考云筆記:”i48測(cè)試” ):

從efi的tftp client端 ping tftp server 不通——這是浪潮內(nèi)網(wǎng)的問題。

tftp.efi的語法錯(cuò)誤:

——也就是說,以后不要再寫 “/”了。

從efi客戶端 嘗試tftp 一個(gè)不存在的ip 10.48.4.31(模擬IP不通):

不啟動(dòng)遠(yuǎn)端tftpserver 的情況下(IP通,但沒有tftpserver服務(wù)),強(qiáng)制啟動(dòng) tftp client:結(jié)果和ip不通是一樣一樣的,提示unable to get the size of.....timeout

啟動(dòng)tftp server,但是指定錯(cuò)誤的文件目錄:

嘗試 tftp client連接,提示:提示unable to get the size of.....TFTPError

正確的設(shè)置 tftp server的根路徑:

嘗試tftp client連接:成功

再次故意錯(cuò)誤設(shè)置tftp server 上的文件路徑:?

tftp client 又提示:unable to get the size of.....TFTPError

最后恢復(fù)正確的tftpserver 的文件路徑:

tftpclient 運(yùn)行成功:

tftp client指定 nic 方式連接也運(yùn)行 成功:

efi本地fs1確實(shí)也下載了mbrsda4k文件:

3.4.2 動(dòng)態(tài)IP獲取測(cè)試

測(cè)試ifconfig -s eth0 dhcp來獲取dhcpIP地址。

步驟略。

——本篇為x86架構(gòu)與 linux操作系統(tǒng)的最后過渡。本篇結(jié)束后,x86架構(gòu)系列暫告一段落。

總結(jié)

以上是生活随笔為你收集整理的linux lspci信息 详解_Linux引导之EFI SHELL详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。