成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細(xì)介紹網(wǎng)絡(luò)安裝 Linux

運(yùn)維 系統(tǒng)運(yùn)維
網(wǎng)絡(luò)安裝 Linux 并不是一個(gè)新鮮的話題,其過(guò)程也不是一個(gè)輕松的體驗(yàn)。為了讓機(jī)器能通過(guò)網(wǎng)絡(luò)來(lái)安裝 Linux,如果還需要配合 kickstart 來(lái)自動(dòng)化網(wǎng)絡(luò)來(lái)安裝 Linux過(guò)程的話,用戶需要做大量的配置工作。

Linux經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,很多用戶對(duì)網(wǎng)絡(luò)安裝 Linux概念,我發(fā)表一下個(gè)人理解出來(lái)和大家深入簡(jiǎn)述一下。但在現(xiàn)實(shí)環(huán)境下,很多原因會(huì)導(dǎo)致我們無(wú)法選擇安裝一個(gè)新的 Linux 發(fā)行版本文通過(guò)將網(wǎng)卡驅(qū)動(dòng)加入到 initrd.img 中,使 Linux 內(nèi)核在啟動(dòng)的過(guò)程中能識(shí)別并加載網(wǎng)卡驅(qū)動(dòng),從而使網(wǎng)絡(luò)安裝得以進(jìn)行。如果熟悉 Linux 的啟動(dòng)過(guò)程和驅(qū)動(dòng)程序,那么要解決本文的問(wèn)題,基本上有兩條路可走。

網(wǎng)絡(luò)安裝 Linux 并不是一個(gè)新鮮的話題,其過(guò)程也不是一個(gè)輕松的體驗(yàn)。為了讓機(jī)器能通過(guò)網(wǎng)絡(luò)來(lái)安裝 Linux,如果還需要配合 kickstart 來(lái)自動(dòng)化網(wǎng)絡(luò)來(lái)安裝 Linux過(guò)程的話,用戶需要做大量的配置工作。眾所周知,用戶需要挑選一臺(tái)機(jī)器作為服務(wù)器,然后在這臺(tái)機(jī)器上配置 DHCP, TFTP, NFS/Http/Ftp, pxelinux, kickstart 等一系列的東西。

學(xué)習(xí)網(wǎng)絡(luò)安裝 Linux時(shí),你可能會(huì)遇到XX問(wèn)題,這里將介紹XX問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。但是所有的這一切能成功運(yùn)作都至少有一個(gè)前提條件:我們所網(wǎng)絡(luò)安裝 Linux 能正確的識(shí)別并驅(qū)動(dòng)所有客戶機(jī)的網(wǎng)卡。如果網(wǎng)卡驅(qū)動(dòng)不了,客戶機(jī)根本無(wú)法通過(guò)網(wǎng)絡(luò)從服務(wù)器取到所需要的東西,網(wǎng)絡(luò)安裝 Linux 就無(wú)從談起了。

本文通過(guò)將網(wǎng)卡驅(qū)動(dòng)加入到 initrd.img 中,使 網(wǎng)絡(luò)安裝 Linux 內(nèi)核在啟動(dòng)的過(guò)程中能正確識(shí)別并加載網(wǎng)卡驅(qū)動(dòng),從而使網(wǎng)絡(luò)安裝得以進(jìn)行。本文并不講述網(wǎng)絡(luò)安裝 Linux 的背景知識(shí)(如為什么需要網(wǎng)絡(luò)安裝,網(wǎng)絡(luò)安裝的好處等)、具體配置和操作步驟(也就是配置 DHCP,TFTP,pxelinux 等內(nèi)容)。此外,本文需要讀者有熟練的 網(wǎng)絡(luò)安裝 Linux 操作經(jīng)驗(yàn)和 Shell 編程的基本知識(shí),而且對(duì) Linux 啟動(dòng)過(guò)程和驅(qū)動(dòng)程序有基本的了解。
注:所有被安裝的機(jī)器我們稱之為客戶機(jī),提供網(wǎng)絡(luò)安裝服務(wù)的機(jī)器我們稱之為服務(wù)器

開(kāi)始之前的建議

建議:如果您碰到了前言中所描述的問(wèn)題的話,***的解決方法是 – 找一個(gè)能驅(qū)動(dòng)客戶機(jī)網(wǎng)卡的 Linux Distribution,這樣能省卻很多麻煩。
但在現(xiàn)實(shí)環(huán)境下,很多原因會(huì)導(dǎo)致我們無(wú)法選擇安裝一個(gè)新的 Linux 發(fā)行版。原因有很多,比如:
客戶不同意我們選用其他的 網(wǎng)絡(luò)安裝 Linux 版本,因?yàn)榭蛻粲写罅康膽?yīng)用程序已經(jīng)在某個(gè)Linux 版本上編譯,運(yùn)行良好了,更換 Linux 發(fā)行版會(huì)帶來(lái)應(yīng)用的移植問(wèn)題
客戶擁有一些特殊的硬件,而這些硬件只有基于某個(gè) Linux 發(fā)行版的驅(qū)動(dòng)。更換 Linux 發(fā)行版,會(huì)導(dǎo)致這些硬件無(wú)法正常工作
沒(méi)有一個(gè) Linux 發(fā)行版能驅(qū)動(dòng)客戶機(jī)的網(wǎng)卡。網(wǎng)卡廠商只給我們提供了某個(gè) Linux 發(fā)行版上的驅(qū)動(dòng),一切都要 DIY
您有著強(qiáng)烈的DIY情感,面對(duì)問(wèn)題不是尋求別人的解決方案而是一切都要自己克服 – 毫無(wú)疑問(wèn),您就是本文最適合的讀者

解決思路

如果熟悉 Linux 的啟動(dòng)過(guò)程和驅(qū)動(dòng)程序,那么要解決本文的問(wèn)題,基本上有兩條路可走。***就是將網(wǎng)卡驅(qū)動(dòng)編譯進(jìn)內(nèi)核(靜態(tài)鏈接進(jìn)內(nèi)核),第二種方法就是將網(wǎng)卡驅(qū)動(dòng)做成模塊,然后想辦法在網(wǎng)絡(luò)安裝 Linux 啟動(dòng)的時(shí)候讓 Linux 內(nèi)核能找到并掛載該驅(qū)動(dòng)。面對(duì)這兩種方案,第二種方法有更好的可行性和擴(kuò)展性。因?yàn)槭紫扔行┚W(wǎng)卡驅(qū)動(dòng)本身就不能被靜態(tài)鏈接進(jìn)入內(nèi)核,而只能被編譯成一個(gè)模塊,例如下文要舉的例子 - e1000 網(wǎng)卡驅(qū)動(dòng);其次,驅(qū)動(dòng)做成模塊的方式,可以適應(yīng)多個(gè)內(nèi)核版本,用方法 1,更換一個(gè)內(nèi)核版本就要重新編譯一次內(nèi)核;***,等會(huì)會(huì)看到,相比編譯內(nèi)核,方法 2 更簡(jiǎn)單和可操作。

方法 2 的實(shí)現(xiàn)手段就是定制 initrd.img,將我們的網(wǎng)卡驅(qū)動(dòng)加進(jìn)去。initrd.img 是一個(gè)小型的根文件系統(tǒng),在 Linux 內(nèi)核沒(méi)有掛載硬盤(pán)上的根分區(qū)的時(shí)候,initrd.img 將在內(nèi)存中展開(kāi)。一般情況下,initrd.img 中將包含一些必需的命令和驅(qū)動(dòng),如 insmod 命令和磁盤(pán)驅(qū)動(dòng)。有了 insmod,才能將磁盤(pán)驅(qū)動(dòng)掛載進(jìn)內(nèi)核,有了磁盤(pán)驅(qū)動(dòng),內(nèi)核才能掛載位于磁盤(pán)上的根文件系統(tǒng)。

大部分的 Linux 發(fā)行版都提供了用于網(wǎng)絡(luò)安裝 Linux 的 initrd.img,一般位于***張安裝光盤(pán)的 images/pxeboot 目錄下。在一臺(tái)已經(jīng)裝好 Linux 的機(jī)器中,在 /boot 目錄下我們也能找到 initrd.img,比較一下這兩個(gè) initrd.img,會(huì)發(fā)現(xiàn) pxeboot 目錄下的 initrd.img 會(huì)比 /boot 下的大很多,這是因?yàn)樵诰W(wǎng)絡(luò)安裝的情況下,Linux 不會(huì)嘗試去掛載位于磁盤(pán)上的根分區(qū)(事實(shí)上,在沒(méi)有安裝Linux的機(jī)器上,此時(shí)磁盤(pán)中可能什么數(shù)據(jù)都沒(méi)有),所以此時(shí)的 initrd.img 需要包含大量的驅(qū)動(dòng),使網(wǎng)絡(luò)安裝 Linux 能識(shí)別大量的硬件。位于 /boot 下的 initrd.img,基本上唯一需要的東西就是磁盤(pán)驅(qū)動(dòng),只要內(nèi)核能訪問(wèn)磁盤(pán),那么其余所需的東西都可以從磁盤(pán)取得而不需要依賴 initrd.img。

具體操作和實(shí)例

從安裝光盤(pán)中取得 initrd.img 之后,就可以開(kāi)始對(duì)其進(jìn)行定制。這里要感謝 Jeremy Mates,他寫(xiě)的 initrd-util.sh 能很好的解開(kāi)和生成一個(gè) initrd.img。腳本可以在http://sial.org/howto/linux/initrd/initrd-util下載到。
下面我們以RedHat Enterprise Linux Advance Server 4 Update 2 x86_64,Intel e1000網(wǎng)卡驅(qū)動(dòng)為例,講述具體的操作過(guò)程(在本例中,服務(wù)器和客戶機(jī)擁有相同的Intel e1000網(wǎng)卡,而且我們已經(jīng)手動(dòng)在服務(wù)器上安裝完成了正確的e1000驅(qū)動(dòng)):
首先從光盤(pán)取到initrd.img,登錄到服務(wù)器,然后用initrd-util.sh解開(kāi):

命令輸出 1. 解開(kāi)initrd.img
[root@ericvm ~]# cd `./initrd-util.sh unpack initrd.img |tail -1`
info: initrd unpack expanded into: /var/tmp/initrd-util.workdir.DA29317
[root@ericvm initrd-util.workdir.DA29317]# pwd
/var/tmp/initrd-util.workdir.DA29317
[root@ericvm initrd-util.workdir.DA29317]# ls
2.6.9-22.EL  bin  dev  etc  linuxrc  lost+found  modules
proc  sbin  selinux  sys  tmp  var

initrd-util.sh很簡(jiǎn)單,利用gunzip, mount和cpio這些工具將initrd.img解開(kāi),其中驅(qū)動(dòng)包位于modules目錄下,名為modules.cgz,將這個(gè)文件解開(kāi)后,生成了2.6.9-22.EL目錄,進(jìn)入該目錄,就能找到包含在initrd.img中的驅(qū)動(dòng)。本例中,RedHat已經(jīng)包含了一個(gè)e1000的驅(qū)動(dòng),但是這個(gè)驅(qū)動(dòng)不能驅(qū)動(dòng)我們新的Intel e1000網(wǎng)卡。為此,我們?cè)趀1000網(wǎng)站下載新版的驅(qū)動(dòng),然后在服務(wù)器上編譯完成,生成ko模塊文件,然后拷貝到2.6.9-22.EL目錄下,覆蓋原文件即可。

驅(qū)動(dòng)更新完畢后,現(xiàn)在我們需要將2.6.9-22.EL這個(gè)目錄重新制作成modules.cgz,這個(gè)功能initrd-util.sh不能為我們完成,所以我們手動(dòng)操作:

命令輸出 2. 加入驅(qū)動(dòng)并重新打包
[root@ericvm initrd-util.workdir.DA29317]# find 2.6.9-22.EL | cpio -o -H crc > newmodules
16582 blocks
[root@ericvm initrd-util.workdir.DA29317]# gzip -n -9 newmodules
[root@ericvm initrd-util.workdir.DA29317]# mv newmodules.gz modules
[root@ericvm initrd-util.workdir.DA29317]# cd modules
[root@ericvm modules]# rm -f modules.cgz
[root@ericvm modules]# mv newmodules.gz modules.cgz
[root@ericvm modules]# pwd
/var/tmp/initrd-util.workdir.DA29317/modules

驅(qū)動(dòng)包重新生成了并不意味著Linux就可以識(shí)別網(wǎng)卡了,因?yàn)榫W(wǎng)絡(luò)安裝 Linux必須依靠一種邏輯,將硬件設(shè)備和驅(qū)動(dòng)模塊文件對(duì)應(yīng)起來(lái)。這個(gè)邏輯就被定義在modules目錄下的除modules.cgz之外的文件中:

命令輸出 3. 設(shè)備驅(qū)動(dòng)識(shí)別信息文件
               
[root@ericvm modules]# ls
module-info  modules.cgz  modules.dep  modules.pcimap  modules.usbmap  pci.ids  pcitable

如上所示,pcitable, modules.pcimap中定義了PCI設(shè)備和驅(qū)動(dòng)模塊之間的對(duì)應(yīng)關(guān)系,modules.dep中定義了模塊和模塊之間的依賴關(guān)系(比如,各種SCSI設(shè)備都會(huì)依賴一個(gè)基礎(chǔ)的SCSI驅(qū)動(dòng)模塊),module-info中定義了驅(qū)動(dòng)的靜態(tài)描述信息......

要填寫(xiě)這些文本文件,也很簡(jiǎn)單,首先我們必須要知道這塊e1000網(wǎng)卡的PCI設(shè)備信息,由于在服務(wù)器上e1000這塊網(wǎng)卡已經(jīng)安裝完成了,所以我們可以在服務(wù)器上取到我們想要的信息:

命令輸出 4. 查看網(wǎng)卡硬件信息
[root@ericvm ~]# lspci
............  ignore some outputs
04:00.0 Ethernet controller: Intel Corporation Enterprise Southbridge DPT LAN Copper
04:00.1 Ethernet controller: Intel Corporation Enterprise Southbridge DPT LAN Copper
............  ignore some outputs
lspci列出了服務(wù)器上兩塊網(wǎng)卡的設(shè)備信息,根據(jù)網(wǎng)卡設(shè)備的ID號(hào)碼(04:00.0, 04:00.1),我們就可以在lspci –n的輸出中找到設(shè)備的vendor code和device code(請(qǐng)參考lspci的manual了解lspci):

命令輸出 5. 查看網(wǎng)卡code
[root@ericvm ~]# lspci –n
............  ignore some outputs
04:00.0 Class 0200: 8086:1096 (rev 01)
04:00.1 Class 0200: 8086:1096 (rev 01)
............  ignore some outputs

在lspci –n的輸出中,我們找到了兩塊網(wǎng)卡的vendor code和device code – 8086和1096。得到了vendor code和device code之后,就可以更新initrd.img中modules目錄下的pcitable, modules.pcimap等這些文件了。舉例來(lái)說(shuō),在pcitable中查找e1000,能發(fā)現(xiàn)很多設(shè)備和e1000這個(gè)驅(qū)動(dòng)關(guān)聯(lián),但是唯獨(dú)沒(méi)有8086:1096的組合,這就是為什么Linux無(wú)法驅(qū)動(dòng)這塊e1000網(wǎng)卡的原因了,我們需要手動(dòng)將8086, 1096這兩個(gè)code加入到pcitable中,并將這個(gè)設(shè)備對(duì)應(yīng)到e1000驅(qū)動(dòng)上。照此方法,更新其余的文件,如module-info, modules.pcimap等。

這樣我們就完成了對(duì)initrd.img的完全修改,用initrd-util.sh重新將目錄打包,生成一個(gè)新的initrd.img:

命令輸出 6. 重新生成initrd.img
[root@ericvm ~]# ./initrd-util.sh pack /var/tmp/initrd-util.workdir.DA29317/
notice: new initrd size: 6144K
6144+0 records in
6144+0 records out
mke2fs 1.35 (28-Feb-2004)
info: initrd packed into: /var/tmp/initrd-util.initrd-new.IV29439.gz
/var/tmp/initrd-util.initrd-new.IV29439.gz
[root@ericvm ~]# ls -lh /var/tmp
total 3.7M
-rw-r--r--   1 root root 3.7M Jun 20 17:10 initrd-util.initrd-new.IV29439.gz
drwxr-xr-x  12 root root 4.0K Jun 20 17:10 initrd-util.workdir.DA29317
drwxr-xr-x  13 root root 4.0K Jun 20 15:53 initrd-util.workdir.ID29288

initrd-util.sh首先創(chuàng)建一個(gè)“空洞文件”,然后在這個(gè)文件中建立ext2 文件系統(tǒng),然后將這個(gè)文件mount到一個(gè)目錄中,***用rsync這種方式將我們更新過(guò)的文件“拷貝”到了mount的目錄下,這樣“空洞”文件中就有了內(nèi)容,***對(duì)文件進(jìn)行壓縮,生成最終的img文件。

將/var/tmp/initrd-util.initrd-new.IV29439.gz改名成initrd.img,放到tftp配置的目錄下,就可以讓客戶機(jī)在網(wǎng)絡(luò)啟動(dòng)的時(shí)候取到新的initrd.img了,從而識(shí)別網(wǎng)卡開(kāi)始網(wǎng)絡(luò)安裝 Linux。

【編輯推薦】

  1. 三大***Linux發(fā)行版 今天你用了嗎?
  2. 對(duì)Linux操作系統(tǒng)的內(nèi)核系統(tǒng)概述
  3. 介紹Linux硬盤(pán)系統(tǒng)建立分區(qū)步驟掛載
  4. 講述Linux系統(tǒng)掛載分區(qū)的使用
  5. 闡述Linux操作系統(tǒng)特權(quán)帳號(hào)與普通帳號(hào)的區(qū)別
責(zé)任編輯:佚名 來(lái)源: CSDN
相關(guān)推薦

2010-03-02 15:29:11

Linux圖形軟件安裝

2010-03-02 14:35:58

linux文本環(huán)境安裝

2009-12-30 17:25:34

Linux Ubunt

2010-06-21 16:57:11

Linux Arch

2009-12-21 13:37:00

Linux系統(tǒng)安裝

2010-03-04 15:37:17

Linux優(yōu)盤(pán)引導(dǎo)安裝

2009-12-24 16:47:22

Linux安裝Perl

2010-03-03 09:57:37

Linux虛擬機(jī)

2010-06-18 17:35:16

Linux Anacr

2010-06-22 09:28:31

Linux at命令

2010-01-05 16:56:28

2010-06-23 15:36:23

Linux Bug B

2009-12-11 15:59:00

Linux grep指

2009-12-25 14:24:59

Linux指令od

2010-03-11 09:20:54

Ubuntu網(wǎng)絡(luò)配置

2010-03-04 15:20:30

Linux優(yōu)盤(pán)引導(dǎo)安裝

2010-06-17 17:03:31

Linux流量控制

2010-03-09 11:21:41

Linux etcgroup

2009-12-24 10:04:38

Linux進(jìn)行C編譯

2010-03-09 09:55:14

Linux mount
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日一区二区 | 欧洲毛片 | 日韩欧美精品在线 | 成人免费小视频 | 久久久久久久久久久久亚洲 | 国产福利视频 | 亚洲精品欧美 | 欧美成人专区 | 久久久久久久一区二区 | 成人免费观看男女羞羞视频 | 亚洲一区二区三区在线视频 | 亚洲国内精品 | 久久久久久久久久久一区二区 | 国产亚洲精品美女久久久久久久久久 | www.操.com| 91美女在线观看 | 成人性视频在线播放 | 日韩在线免费 | 综合久久99| 亚洲欧美视频在线观看 | 国产精品区一区二 | 国产99免费视频 | 99pao成人国产永久免费视频 | 亚洲欧美综合精品久久成人 | 成人午夜激情 | h视频在线免费观看 | 午夜婷婷激情 | 91免费版在线观看 | 久久五月婷| 亚洲成av人影片在线观看 | 国产成人精品免费视频大全最热 | 特黄色一级毛片 | 久久99网站 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 日韩视频一区二区 | 国产精品久久久久久 | 99re国产视频| 精品一区二区三区电影 | 午夜影院普通用户体验区 | 成年人精品视频在线观看 | 国产ts人妖一区二区三区 |