在本文中,讓我們討論如何設置 tftpboot,包括安裝必要的軟件包,以及 tftpboot 配置。
TFTP 引導服務主要用于在您沒有物理訪問權限的遠程計算機上執行操作系統安裝。為了成功執行操作系統安裝,應該有一種重新啟動遠程服務器的方法 - 使用wakeonlan或手動重新啟動它或其他方式。
在這些情況下,您可以相應地設置 tftpboot 服務,并且可以遠程完成操作系統安裝(您需要擁有 autoyast 配置文件來自動執行操作系統安裝步驟)。
本文介紹了 64 位架構中的 SLES10-SP3 的分步過程。但是,這些步驟與任何其他 Linux 發行版非常相似。
需要為 tftpboot 設置安裝以下軟件包。
安裝 dhcp 服務器服務的軟件包:
$ rpm -ivh dhcp-3.0.7-7.5.20.x86_64.rpm
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
$ rpm -ivh dhcp-server-3.0.7-7.5.20.x86_64.rpm
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
$ rpm -ivh tftp-0.48-1.6.x86_64.rpm
$ rpm -ivh syslinux-3.11-20.14.26.x86_64.rpm
安裝 syslinux 包后,會在 /usr/share/pxelinux/ 目錄下創建 pxelinux.0 文件。這是在客戶端機器上加載安裝內核和 initrd 映像所必需的。
驗證軟件包是否已成功安裝。
$ rpm -qa | grep dhcp
$ rpm -qa | grep tftp
從您各自的 Linux 發行版的存儲庫中下載適當的 tftpserver。
在根目錄( /? )下創建 tftpboot 目錄,如下所示。
# mkdir /tftpboot/
安裝 syslinux 軟件包后,PXE Linux 映像將可用。將其復制到 /tftpboot 路徑,如下所示。
# cp /usr/share/syslinux/pxelinux.0 /tftpboot
讓我們假設我們要在遠程服務器上安裝 SLES10 SP3 Linux 發行版。如果您有 SUSE10-SP3 DVD,請將其插入驅動器或安裝您擁有的 ISO 映像。在這里,iso 映像已按如下方式掛載:
# mkdir /tftpboot/sles10_sp3
# mount -o loop SLES-10-SP3-DVD-x86_64.iso /tftpboot/sles10_sp3
請參閱我們之前關于如何掛載和查看 ISO 文件的文章。
將 initrd 復制到 tftpboot 目錄,如下所示。
# cd /tftpboot/sles10_sp3/boot/x86_64/loader
# cp initrd linux /tftpboot/
在 /tftpboot 下創建目錄 pxelinux.cfg 并為客戶端定義 pxe 引導定義。
# mkdir /tftpboot/pxelinux.cfg
# cat >/tftpboot/pxelinux.cfg/default
default linux
label linux
kernel linux
append initrd=initrd showopts instmode=nfs install=nfs://192.168.1.101/tftpboot/sles10_sp3/
以下選項用于,
根據上面的條目,nfs 安裝模式用于提供安裝 RPM 和配置文件。因此,在導出列表中使用 /tftpboot 目錄在這臺機器上設置 nfs。您可以在 autoyast 配置文件中添加“autoyast”選項以自動執行操作系統安裝步驟,否則您需要手動運行安裝步驟。
將nobody:nobody 分配給/tftpboot 目錄。
# chown none:nobody /tftpboot
# chmod 777 /tftpboot
修改 /etc/dhcpd.conf 如下所示。
# cat /etc/dhcpd.conf
ddns-update-style none;
default-lease-time 14400;
filename "pxelinux.0";
# IP address of the dhcp server nothing but this machine.
next-server 192.168.1.101;
subnet 192.168.1.0 netmask 255.255.255.0 {
# ip distribution range between 192.168.1.1 to 192.168.1.100
range 192.168.1.1 192.168.1.100;
default-lease-time 10;
max-lease-time 10;
}
在 /etc/syslinux/dhcpd 中指定接口以偵聽來自客戶端的 dhcp 請求。
# cat /etc/syslinux/dhcpd | grep DHCPD_INTERFACE
DHCPD_INTERFACE=”eth1”;
在這里,這臺機器在 eth1 設備上的 ip 地址為 192.168.1.101。因此,如上所示,為 DHCPD_INTERFACE 指定 eth1。
修改 /etc/xinetd.d/tftp 文件以反映以下內容。默認情況下,禁用參數的值為“yes”,請確保將其修改為“no”,并且需要將 server_args 條目更改為 -s /tftpboot。
# cat /etc/xinetd.d/tftp
service tftp {
socket_type=dgram
protocol=udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args=-s /tftpboot
disable =no
}
無需修改 etc/xinetd.conf 文件。使用 xinetd.conf 文件中指定的默認值。
重新啟動這些服務,如下所示。
# /etc/init.d/xinetd restart
# /etc/init.d/dhcpd restart
# /etc/init.d/nfsserver restart
重啟nfs服務后,可以通過以下命令查看導出的目錄列表(/tftpboot),
# showmount -e
最后,tftpboot 設置已準備就緒,現在可以在 BIOS 設置中將第一個引導設備更改為“網絡”后引導客戶端計算機。
如果您遇到任何 tftp 錯誤,您可以通過 tftpd 服務檢索一些文件來進行故障排除。
從 tftpserver 檢索一些文件以確保 tftp 服務使用 tftp 客戶端正常工作。讓我們假設 sample.txt 文件存在于 /tftpboot 目錄下。
$ tftp -v 192.168.1.101 -c get sample.txt
如果感覺小編寫得不錯,請素質三連:點贊+轉發+關注。我會努力寫出更好的作品分享給大家。更多JAVA進階學習資料小編已打包好,可以關注私信找我領取哦
提醒:本文為合集文章,后續會持續更新!
關注我,每日提升!
在正式介紹dnf之前,阿銘先給你看一個東西:
# ls -l /usr/bin/dnf
lrwxrwxrwx 1 root root 5 5月 10 21:28 /usr/bin/dnf -> dnf-3
# ls -l /usr/bin/yum
lrwxrwxrwx 1 root root 5 5月 10 21:28 /usr/bin/yum -> dnf-3
通過以上操作,你會發現在Rocky8里面,使用yum或者dnf,都是一樣的,本質上都是dnf工具,所以在前面章節中阿銘使用yum命令就是在使用dnf命令。
10.2 dnf工具
Dnf工具最大的優勢在于可以聯網去下載所需要的RPM包,然后自動安裝。如果要安裝的RPM包有依賴關系,dnf工具會幫我們依次安裝所有相關的RPM包。下面阿銘介紹一下常用的dnf命令。
10.2.1 列出所有可用的RPM包
使用yum list 命令,可以列出所有的RPM包資源,如下所示:
# dnf list |head -20
上次元數據過期檢查:1:45:34 前,執行于 2022年11月07日 星期一 21時26分29秒。
已安裝的軟件包
NetworkManager.x86_64 1:1.32.10-4.el8 @anaconda
NetworkManager-config-server.noarch 1:1.32.10-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.32.10-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.32.10-4.el8 @anaconda
NetworkManager-tui.x86_64 1:1.32.10-4.el8 @anaconda
OpenIPMI-libs.x86_64 2.0.31-3.el8 @baseos
acl.x86_64 2.2.53-1.el8.1 @anaconda
adcli.x86_64 0.8.2-12.el8 @anaconda
alsa-sof-firmware.noarch 1.8-1.el8 @anaconda
annobin.x86_64 10.29-3.el8 @appstream
apr.x86_64 1.6.3-12.el8 @appstream
apr-devel.x86_64 1.6.3-12.el8 @appstream
apr-util.x86_64 1.6.1-6.el8.1 @appstream
apr-util-bdb.x86_64 1.6.1-6.el8.1 @appstream
apr-util-devel.x86_64 1.6.1-6.el8.1 @appstream
apr-util-openssl.x86_64 1.6.1-6.el8.1 @appstream
at.x86_64 3.1.20-11.el8 @anaconda
attr.x86_64 2.4.48-3.el8 @anaconda
限于篇幅,阿銘只列舉了18個RPM包的信息。如上例所示,最左側是RPM包名,中間是版本信息,最右側是安裝信息。如果已安裝,最右側就顯示@appstream或者@ anaconda,它們前面都會有一個@符號,這很好區分。如果未安裝,則顯示appStream、anaconda。如果你仔細看看,就會發現dnf list 命令會先列出已安裝的包(installed package),然后再列出可安裝的包(available package)。
10.2.2 搜索RPM包
搜索RPM包的命令為dnf search [相關關鍵詞],示例命令如下:
# dnf search vim
上次元數據過期檢查:1:49:06 前,執行于 2022年11月07日 星期一 21時26分29秒。========================================================================================================名稱 和 概況 匹配:vim=========================================================================================================awesome-vim-colorschemes.noarch : Collection of color schemes for Neo/vim, merged for quick use
beakerlib-vim-syntax.noarch : Files for syntax highlighting BeakerLib tests in VIM editor
boxes-vim.noarch : Vim plugin for boxes
fluxbox-vim-syntax.noarch : Fluxbox syntax scripts for vim
geany-plugins-vimode.x86_64 : Vim-mode plugin for Geany
neovim.x86_64 : Vim-fork focused on extensibility and agility
notmuch-vim.x86_64 : A Vim plugin for notmuch
python-neovim-doc.noarch : Documentation for python-neovim
python3-neovim.noarch : Python client to Neovim
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System - GVim
vim-airline.noarch : Lean & mean status/tabline for vim that's light as air
vim-ansible.noarch : Vim plugin for syntax highlighting ansible's common filetypes
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-devicons.noarch : Adds file type icons to Vim plugins
vim-editorconfig.noarch : EditorConfig Vim Plugin
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.noarch : VIM filesystem layout
vim-fugitive-gitlab.noarch : GitLab support for vim-fugitive plugin
vim-go.x86_64 : Go development plugin for Vim
vim-gv.noarch : Git commit browser in Vim
vim-jellybeans.noarch : A colorful, dark color scheme for Vim
vim-minimal.x86_64 : A minimal version of the VIM editor
vim-powerline.noarch : Powerline VIM plugin============================================================================================================名稱 匹配:vim=============================================================================================================vim-fugitive.noarch : A Git wrapper so awesome, it should be illegal
vim-gitgutter.noarch : Shows a git diff in the gutter and stages/undoes hunks and partial hunks
vim-halibut.noarch : Syntax file for the halibut manual tool
vim-nerdtree-git-plugin.noarch : Plugin of NERDTree showing git status
vim-pathogen.noarch : Manage your runtimepath============================================================================================================概況 匹配:vim=============================================================================================================kakoune.x86_64 : Code editor heavily inspired by Vim
ranger.noarch : A vim-like file manager
除了這樣搜索方法外,阿銘還常用grep來過濾,從而找到相應的RPM包,如下所示:
# dnf list|grep vim
vim-common.x86_64 2:8.0.1763-16.el8_5.13 @appstream
vim-enhanced.x86_64 2:8.0.1763-16.el8_5.13 @appstream
vim-filesystem.noarch 2:8.0.1763-16.el8_5.13 @appstream
vim-minimal.x86_64 2:8.0.1763-16.el8 @anaconda
vim-X11.x86_64 2:8.0.1763-19.el8_6.4 appstream
vim-common.x86_64 2:8.0.1763-19.el8_6.4 appstream
vim-enhanced.x86_64 2:8.0.1763-19.el8_6.4 appstream
vim-filesystem.noarch 2:8.0.1763-19.el8_6.4 appstream
vim-minimal.x86_64 2:8.0.1763-19.el8_6.4 baseos
10.2.3 安裝RPM包
安裝RPM包的命令為dnf install [-y] [RPM包名],如果不加-y選項,則會以與用戶交互的方式安裝。示例命令如下:
上次元數據過期檢查:1:51:22 前,執行于 2022年11月07日 星期一 21時26分29秒。
依賴關系解決。=========================================================================================================================================================================================================================================軟件包 架構 版本 倉庫 大小=========================================================================================================================================================================================================================================安裝:
psmisc x86_64 23.1-5.el8 baseos 150 k
事務概要=========================================================================================================================================================================================================================================安裝 1 軟件包
總下載:150 k
安裝大小:483 k
確定嗎?[y/N]:y
下載軟件包:
psmisc-23.1-5.el8.x86_64.rpm 196 kB/s | 150 kB 00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
總計 195 kB/s | 150 kB 00:00
運行事務檢查
事務檢查成功。
運行事務測試
事務測試成功。
運行事務
準備中 : 1/1
安裝 : psmisc-23.1-5.el8.x86_64 1/1
運行腳本: psmisc-23.1-5.el8.x86_64 1/1
驗證 : psmisc-23.1-5.el8.x86_64 1/1
已安裝:
psmisc-23.1-5.el8.x86_64
完畢!
在這個過程中,它首先會把需要安裝的RPM包列出來,如果有依賴關系,也會把所有依賴的包列出來。然后詢問用戶是否需要安裝,輸入y則安裝,輸入n則不安裝。但阿銘覺得這樣太麻煩,所以會直接加上-y選項,這樣就省略了詢問用戶是否安裝的那一步。
10.2.4 卸載RPM包
卸載RPM包的命令為dnf remove [-y] [RPM包名],示例命令如下:
# dnf remove psmisc
依賴關系解決。==========================================================================================================================================================軟件包 架構 版本 倉庫 大小==========================================================================================================================================================移除:
psmisc x86_64 23.1-5.el8 @baseos 483 k
事務概要==========================================================================================================================================================移除 1 軟件包
將會釋放空間:483 k
確定嗎?[y/N]:y
運行事務檢查
事務檢查成功。
運行事務測試
事務測試成功。
運行事務
準備中 : 1/1
刪除 : psmisc-23.1-5.el8.x86_64 1/1
運行腳本: psmisc-23.1-5.el8.x86_64 1/1
驗證 : psmisc-23.1-5.el8.x86_64 1/1
已移除:
psmisc-23.1-5.el8.x86_64
完畢!
卸載和安裝一樣,也可以直接加上-y選項,從而省略與用戶交互的那一步。這里阿銘需要提醒一下,卸載某個RPM包時它會連帶依賴的包一起卸載,所以一定要看清楚,不要連其他重要的RPM包也一起卸載了,以免影響正常的業務。建議使用dnf remove命令卸載包時,還是不要加-y選項了。
10.2.5 升級RPM包
升級RPM包的命令為dnf update [-y] [RPM包],示例命令如下:
# dnf update bash
上次元數據過期檢查:1:54:52 前,執行于 2022年11月07日 星期一 21時26分29秒。
依賴關系解決。==========================================================================================================================================================軟件包 架構 版本 倉庫 大小==========================================================================================================================================================升級:
bash x86_64 4.4.20-4.el8_6 baseos 1.5 M
事務概要==========================================================================================================================================================升級 1 軟件包
總下載:1.5 M
確定嗎?[y/N]:y
下載軟件包:
bash-4.4.20-4.el8_6.x86_64.rpm 3.2 MB/s | 1.5 MB 00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------
總計 3.1 MB/s | 1.5 MB 00:00
運行事務檢查
事務檢查成功。
運行事務測試
事務測試成功。
運行事務
準備中 : 1/1
升級 : bash-4.4.20-4.el8_6.x86_64 1/2
運行腳本: bash-4.4.20-4.el8_6.x86_64 1/2
清理 : bash-4.4.20-2.el8.x86_64 2/2
運行腳本: bash-4.4.20-2.el8.x86_64 2/2
驗證 : bash-4.4.20-4.el8_6.x86_64 1/2
驗證 : bash-4.4.20-2.el8.x86_64 2/2
已升級:
bash-4.4.20-4.el8_6.x86_64
完畢!
前面介紹了如何使用dnf工具搜索、安裝、卸載以及升級RPM包,如果你掌握了這些技能,基本上就可以解決日常工作中遇到的與RPM包相關的問題了。當然,dnf工具還有好多其他好用的命令,阿銘不再一一舉出,如果你感興趣,可以使用man命令查閱幫助信息。除此之外,阿銘還會教你一些關于dnf工具的小應用。
10.2.6 搜索某個命令是由哪個RPM包安裝的
阿銘經常遇到在系統里想要執行某個命令時發現命令不存在,這是因為系統里還沒有安裝過對應的包。此時就可以使用如下命令來搜一下:
# dnf provides vmstat
上次元數據過期檢查:1:59:44 前,執行于 2022年11月07日 星期一 21時26分29秒。
procps-ng-3.3.15-6.el8.i686 : System and process monitoring utilities
倉庫 :baseos
匹配來源:
文件名 :/usr/bin/vmstat
procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
倉庫 :@System
匹配來源:
文件名 :/usr/bin/vmstat
procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
倉庫 :baseos
匹配來源:
文件名 :/usr/bin/vmstat
上例中,阿銘想搜一下vmstat這個命令是由哪個RPM包來安裝的,使用了dnf provides就可以查看到vmstat命令是由procps-ng這個包安裝來的。
10.2.7 更改dnf倉庫為國內鏡像站
上面章節里提到,dnf是通過從網絡獲取rpm包的,那么它是去哪里下載的RPM包呢?大家可以通過查看配置文件
/etc/yum.repos.d/Rocky-BaseOS.repo獲得地址:
# cat /etc/yum.repos.d/Rocky-BaseOS.repo
# Rocky-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for Rocky updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
這里的mirrors.rockylinux.org為下載rpm的地址,該站點在國外,相對來說訪問比較慢,我們可以將其更改為國內的鏡像站點,比如阿里云的,具體方法如下。
(1) 將下載地址改為上海交大的鏡像地址
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.sjtug.sjtu.edu.cn/rocky|g' \
-i.bak /etc/yum.repos.d/Rocky-*.repo
(2) 刷新repos生成緩存,如下所示:
# dnf clean all
# dnf makecache
然后就可以使用dnf命令安裝你所需要的軟件包了,比如我們可以安裝一個tftp的RPM包,如下所示:
# dnf install –y tftp
10.2.8 下載RPM包
有時我們需要下載RPM包但不安裝,而僅僅是復制給其他機器使用。其實,通過dnf安裝rpm包時,它需要先下載這個RPM包,然后再去安裝,所以使用yum工具完全可以做到只下載而不安裝。
使用dnf download命令就可以直接下載rpm包了,它會將rpm包下載到當前目錄下,當然如果不指定任何選項,它只下載指定的rpm包,并不會下載依賴的包,要想連同依賴的包一起下載,還需要指定--resolve選項,命令如下:
# mkdir /tmp/rmps
# cd /tmp/rmps
# dnf download --resolve vim-enhanced
上次元數據過期檢查:2:16:28 前,執行于 2022年11月07日 星期一 21時26分29秒。
[SKIPPED] vim-enhanced-8.0.1763-19.el8_6.4.x86_64.rpm: Already downloaded
(2/4): vim-filesystem-8.0.1763-19.el8_6.4.noarch.rpm 186 kB/s | 49 kB 00:00
(3/4): gpm-libs-1.20.7-17.el8.x86_64.rpm 91 kB/s | 38 kB 00:00
(4/4): vim-common-8.0.1763-19.el8_6.4.x86_64.rpm 4.1 MB/s | 6.3 MB 00:01
感謝閱讀,關注我,持續為你輸出高質量Linux技術文檔!