1. 大規模部署案例
當組織有服務器需要部署linux系統時,需要通過網絡方式安裝并結合自動應答文件,實現無人職守自動安裝部署操作系統。這種方式需要我們至少配置一臺服務器,所有需要安裝系統的客戶端通過網絡的方式連接服務器端啟動安裝程序,再根據服務器中存放的自動應答文件實現大規模自動安裝部署系統。整個環境的拓撲結構:
在這里插入圖片描述
這種無人職守的解決方案需要提前部署一臺包含DHCP、TFTP和NFS等服務器的安裝服務器。
在這里插入圖片描述
安裝部署流程:
? 客戶端首先需要在BIOS中設置通過網絡啟動
? 當客戶端啟動后,會通過發送廣播包的方式尋找DHCP服務器
? 當找到DHCP服務器,即可向該服務器申請獲得包括IP地址在內的網絡參數等,并通過DHCP獲得TFTP的位置
? 當客戶端獲得TFTP服務器的地址后,即可從TFTP服務器上將啟動文件下載至本機內存并運行,最終實現無盤啟動的功能
? 我們可以在啟動文件中設置Kickstart文件的共享的位置,這樣客戶端啟動后,即可自動尋找Kickstart文件實現無人職守安裝系統
注意:Kickstart文件需要事先通過網絡共享,在Kickstart文件中描述了如何安裝設置操作系統、運行部署腳本等
2. PXE 技術
PXE( preboot execute environment)是由Intel公司開發的基于C/S(客戶端/服務器)模式的一種技術,其核心功能讓客戶端通過網絡從遠端服務器下載啟動鏡像,從而實現網絡啟動。整個過程中,客戶端要求服務器分配IP地址,再用TFTP協議下載位于服務器上的啟動鏡像到本機內存中并執行,由這個啟動文件完成客戶端軟件的設置。
1.pxe client必須支持pxe用戶端功能,并且開機時選擇網絡啟動,才能確保以網絡的方式進入pxe啟動程序;
2.pxe server必須至少提供DHCP、TFTP、HTTPD(vsftpd 或 nfs)的服務,且還需滿足如下要求:
?DHCP服務器除了必須滿足為pxe client分配ip地址之外,還需告知tftp所在的位置(即告訴pxelinux.0的文件位置)
?TFTP服務器則為pxe client 提供bootloader 及 kernel 等重要文件下載服務
? 使用httpd/vsftpd/nfs服務器提供pxe client所需程序及軟件來源(共享源)
當讀取安裝程序進入安裝界面后,剩余的步驟,如語言設置、系統管理員密碼、網絡參數等參數還需要我們手動設置,至此,我們僅可以實現無盤網絡啟動,若要實現無人職守自動安裝,還需要Kickstart技術
3. Kickstart 技術
Kickstart 安裝是目前主要的一種無人職守自動部署安裝操作系統的方式。這種技術的核心是自動應答文件(Kickstart文件),即將本來在安裝過程中需要我們手動設置的語言、密碼和網絡參數等,通過讀取自動應答文件實現自動設置。所以,我們需要事先將對操作系統的設置寫入自動應答文件,開始安裝操作系統時,指定安裝程序讀取自動應答文件實現自動安裝及部署操作系統。
Kickstart文件可以通過三種方式生成:
? 手動書寫(僅需要一個文本編輯工具即可)
? 通過system-config-kickstart圖形工具
? 通過紅帽的安裝程序 Anaconda 自動生成
本文以system-config-kickstart圖形工具為主,介紹如何生成一份自動應答文件,具體步驟如下
注意該系統需要有桌面,否則無法啟動該圖形工具
首先安裝system-config-kickstart圖形工具,命令如下:
yum install system-config-kickstart.noarch安裝完成后,輸入system-config-kickstart運行該工具
在這里插入圖片描述
我們可以通過圖形界面進行系統基本設置、安裝方式管理、啟動方式配置、分區配置、網絡配置、認證配置、防火墻設置、顯示配置、安裝包配置。除此之外,還可以編寫系統安裝前及安裝后所需運行的腳本。
4. 配置安裝服務器
最終要實現無人職守自動安裝部署操作系統,需要提前定制安裝服務器,其中包括:DHCP、TFTP及NFS服務。
4.1 DHCP服務
DHCP服務器主要實現在企業內部網絡為客戶端分配IP地址等網絡參數。在我們無人職守環境中,當客戶端選擇從網絡啟動后,就會通過發送廣播數據包的形式尋找DHCP服務器,從DHCP獲得IP地址等參數后才可以通過TFTP共享讀取啟動文件,簡單步驟如下:
1. 安裝DHCP服務
[root@localhost ~]# yum install -y dhcp
2. 修改配置文件
其主要配置文件為/etc/dhcp/dhcpd.conf,以下為簡單配置樣本:
[root@node-139 ~]#cat/etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page subnet 192.168.0.0 netmask 255.255.0.0 { interface"ens34"; range 192.168.17.202 192.168.17.240; option domain-name-servers 8.8.8.8; option routers 192.168.17.1; default-lease-time 600; max-lease-time 7200; next-server 192.168.17.139; filename"pxelinux.0"; }
該文件中,
? subnet 指為哪個網段分配網絡參數,
? range設置為客戶端分配的IP地址池,這個可以分配客戶端分配從192.168.17.201到192.168.17.240之間的IP地址。
? domain-name-servers設置為客戶端分配的DNS服務器地址,
? routers設置為客戶端分配的網關地址。
? 對網絡啟動至關重要的參數是next-server和filename,從安裝部署流程可以看出,客戶端啟動計算機通過DHCP獲得IP地址后,還需要從TFTP下載啟動文件,而next-server設置的即TFTP服務器的地址,filename設置的是在該TFTP文件服務器上共享的啟動文件名稱,客戶端通過這兩個參數連接TFTP服務器,并從中下載啟動文件
可以拷貝/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example進行修改,或者手動編寫
4.2 TFTP 服務
TFTP服務器為客戶端提供一種簡單的文件共享,它不具備FTP那樣豐富的功能。由于其簡單的設計,TFTP非常適用于傳輸小且簡單的PXE啟動文件。
1. 安裝TFTP服務
[root@localhost dhcp]# yum install -y tftp-server
2. 修改配置文件
默認的配置文件為/etc/xinetd.d/tftp。該文件中,disable默認值為yes,也就是說,該服務默認為禁用狀態,需要手動修改為no來啟動服務。該配置文件中server_args的值定義了共享的目錄,也就是我們共享的文件要存放的路徑。
service tftp { socket_type = dgram protocol = udp wait =yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable =yes per_source = 11 cps = 100 2 flags = IPv4 }
4.3 NFS服務
NFS是Network File System的簡寫,即網絡文件系統。NFS服務的特點是服務器配置簡單,客戶端通過網絡訪問NFS文件系統就像訪問自己的本地磁盤一樣方便。這里使用它作為CentOS系統文件的共享服務平臺,當客戶端從網絡啟動正式進入安裝界面后,還需要讀取CentOS光盤中的系統文件,以完成最后的安裝。這些文件就是通過NFS共享給網絡用戶。linux默認安裝NFS系統,可以通過修改配置文件提供共享文件。
1. 啟動服務
[root@localhost dhcp]# systemctl start nfs-server [root@localhost dhcp]# systemctl status nfs-server ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled) Active: active (exited) since Mon 2023-12-25 2218 CST; 2s ago Process: 78263 ExecStartPost=/bin/sh -cifsystemctl -q is-active gssproxy;thensystemctl reload gssproxy ;fi(code=exited, status=0/SUCCESS)
2. 修改配置文件
默認配置文件為/etc/exports,該文件的內容默認為空
[root@localhost dhcp]#cat/etc/exports /media 192.168.0.0/255.255.0.0(ro)
樣本文件中編寫了共享了/media目錄,后面的IP地址表示僅192.168.0.0網絡可以訪問該共享目錄,ro表示客戶端訪問權限為只讀。
這里共享鏡像還可以使用vsftpd或者httpd作為替代方案
5. 示例
我們嘗試搭建一個自動化安裝部署操作系統的模擬案例,使用的操作系統及安裝系統均為Centos7。
服務器 | IP | 安裝服務 |
server | 192.168.17.139 | dhcp,tftp,nfs |
client1 | 192.168.17.201(計劃) | |
client2 | 192.168.17.202(計劃) |
5.1 搭建server
在前文中,我們在server已經安裝了dhcp,tftp,nfs,并通過Kickstart技術生成自動應答的相關文件
1. 啟動dhcp并設為開機自啟
[root@node-139 ~]# systemctl start dhcpd [root@node-139 ~]# systemctlenabledhcpd Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
2. 設置并啟動tftp
[root@node-139 ~]#cat/etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait =yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } [root@node-139 ~]# systemctl start tftp [root@node-139 ~]# systemctl status tftp ● tftp.service - Tftp Server Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled) Active: active (running) since Mon 2023-12-25 2338 CST; 3s ago Docs: man:in.tftpd Main PID: 85504 (in.tftpd) Tasks: 1 CGroup: /system.slice/tftp.service └─85504 /usr/sbin/in.tftpd -s /var/lib/tftpboot Dec 25 2338 node-139 systemd[1]: Started Tftp Server.
共享路徑為/var/lib/tftpboot
3. 將客戶端所需啟動文件復制到TFTP服務器
[root@node-139 ~]# yum install -y syslinux [root@node-139 ~]#cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
把內核鏡像文件vmlinuz、isolinux.cfg和initrd.img拷貝到共享路徑
initrd.img文件就是個ram disk的映像文件。ram disk是標準內核文件認識的設備(/dev/ram0)文件系統也是標準內核認識的文件系統。可以參考 https://blog.csdn.net/u010230019/article/details/131450815
isolinux.cfg啟動菜單的配置文件
[root@node-139 tftpboot]#cp/home/yurq/isolinux.cfg pexlinux.cfg/default [root@node-139 tftpboot]#chmod644 pexlinux.cfg/default [root@node-139 tftpboot]# ll pexlinux.cfg/default -rw-r--r--. 1 root root 3032 Dec 25 23:59 pexlinux.cfg/default
修改啟動配置文件default(isolinux.cfg)
[root@node-139 tftpboot]#catpexlinux.cfg/default default linux timeout600 display boot.msg menu title Welcome to CentOS7 by Yurq label linux menu label ^Install CentOS 7 menu default kernel vmlinuz append initrd=initrd.img ks=nfs/ks/ks.cfg label rescue menu label ^Rescue a CentOS system kernel vmlinuz append initrd=initrd.img rescue menu end
配置說明:default指定默認引導方式,從配置文件可以看出,有一種以label開始的名稱為linux的正常引導方式,另一種是名稱為rescue的救援引導方式,而default決定了默認采用哪種引導方式引導安裝程序。此外,kernel指定的是系統內核文件,在上面的步驟中,我們已將該文件復制到TFTP共享目錄中。如果沒有后面的ks參數,至此,我們可以實現無盤啟動,后面的安裝步驟需要我們手動進行,設置ks參數可以指定自動應答文件的位置,從而實現無人職守自動安裝。本文中設置192.168.17.139的NFS共享方式讀取Kickstart文件。
[root@node-139 ~]# ll /var/lib/tftpboot total 60480 -rw-r--r--. 1 root root 55129656 Dec 25 23:56 initrd.img -rw-r--r--. 1 root root 26759 Dec 25 23:47 pxelinux.0 drwxr-xr-x. 2 root root 21 Dec 26 23:08 pxelinux.cfg -rw-r--r--. 1 root root 6769256 Dec 25 23:56 vmlinuz
重啟TFTP服務,并關閉防火墻
[root@node-139 tftpboot]# systemctl restart tftp [root@node-139 tftpboot]# systemctl stop firewalld
4. 創建Kickstart自動應答文件
1. 基本設置
在這里插入圖片描述
包括:默認語言,鍵盤,時區,root密碼(可選)
2. 設置安裝方法
在這里插入圖片描述
配置安裝方式可以選擇全新安裝或者升級安裝,本文中為全新安裝,設置安裝過程中所需安裝文件(Centos7 系統光盤中的內容)通過NFS讀取,這里的NFS服務器為192.168.17.139,共享目錄為/media
3. 引導設置
在這里插入圖片描述
此處配置系統引導程序,安裝方式選擇全新安裝GRUB引導程序,GRUB引導密碼未設置,將系統引導程序安裝于MBR區域,內核參數未設置任何特殊參數
4. 分區設置
在這里插入圖片描述
分區選擇移除所有的現有分區后重新分區,并初始化磁盤標簽
注意:通過圖形界面生成的Kickstart文件無法使用LVM邏輯卷分區,需要使用LVM邏輯卷分區,則需要手動修改生成后的Kickstart文件
這里需要手動添加(ADD)至少/和/boot
5. 網絡設置
在這里插入圖片描述
添加網絡設備ens33,并設置通過DHCP獲得網絡參數
6. 認證設置
在這里插入圖片描述
所有的用戶密碼都使用SHA512算法加密
如果需要將本機加入活動目錄的化,可以修改LDAP參數加入活動目錄
7. SELinux和防火墻
在這里插入圖片描述
SELinux和防火墻均被設置為激活狀態,并設置防火墻開放HTTP和SSH服務
8. 顯示設置
在這里插入圖片描述
這里不勾選安裝圖形環境(可自行選擇)
9. 安裝包選擇
在這里插入圖片描述
正常可以選擇,筆者這里可能是版本問題沒有顯示內容
在這里插入圖片描述
安裝軟件時根據自己實際需求進行選擇后來筆者構建本地源,不過可選內容較少,可能導入的是mini.iso的原因
在這里插入圖片描述
構建本地源,需要注意源名稱必須為development,因為這個是ks代碼內固定讀取的:
[development] name=centos cdrom baseurl=file:///media/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1
10. 安裝前執行腳本
在這里插入圖片描述
若沒有特殊需求,可以為空
11. 安裝后運行的腳本
在這里插入圖片描述
常用腳本為創建YUM源,初始化用戶賬號,部署軟件服務等,如果沒有特殊需求,可以為空
完成所有設置后,通過File菜單選擇Save,即可保存生成Kickstart文件,本文中將其保存至/ks/目錄中,取名為ks.cfg
[root@node-139 ~]#cat/ks/ks.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard'us' # Root password rootpw --iscrypted $1$2ZdAsgIv$xBtWTquTEb5prUaMEgk.G/ # System language lang zh_CN # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # SELinux configuration selinux --enforcing # Use NFS installation media nfs --server=192.168.17.139 --dir=/media # Firewall configuration firewall --enabled --http --ssh # Network information network --bootproto=dhcp --device=ens33 # Halt after installation halt # System timezone timezone Africa/Abidjan # System bootloader configuration bootloader --location=mbr --boot-drive=sda # Partition clearing information clearpart --all --initlabel # Disk partitioning information part swap --fstype="swap"--size=1000 part /boot --fstype="ext4"--size=200 part / --fstype="ext4"--grow --size=1 %post /usr/bin/hostname yurq %end %packages @core %end
注意:bootloader --location=mbr --boot-drive=sda 默認用圖形工具編寫完成沒有--boot-drive=sda這個選項,所以需要手動加上
否則會卡在anaconda的配置界面
5. 部署NFS服務
修改NFS服務如下,
[root@node-139 ~]#cat/etc/exports /ks 192.168.0.0/255.255.0.0(ro) /media 192.168.0.0/255.255.0.0(ro)
啟動NFS并設置為開機自啟
[root@node-139 ~]# systemctl start nfs [root@node-139 ~]# systemctlenablenfs
6. 將系統光盤或ISO文件通過NFS共享
如果有光盤或光驅可以通過mount的方式將光盤直接掛載在/media目錄下
umount /dev/cdrom mount /dev/cdrom /media
如果沒有光盤,僅有ISO鏡像文件,亦可以將ISO鏡像文件掛載至/media目錄,
[root@node-139 ~]# mount -o loop -t iso9660 /root/CentOS-7-x86_64-Minimal-2009.iso /media mount: /dev/loop0 is write-protected, mounting read-only [root@node-139 ~]# ll /media/ total 110 -rw-r--r--. 2 root root 14 Oct 30 2020 CentOS_BuildTag drwxr-xr-x. 3 root root 2048 Oct 27 2020 EFI -rw-rw-r--. 15 root root 227 Aug 30 2017 EULA -rw-rw-r--. 15 root root 18009 Dec 10 2015 GPL drwxr-xr-x. 3 root root 2048 Oct 27 2020 images drwxr-xr-x. 2 root root 2048 Nov 3 2020 isolinux drwxr-xr-x. 2 root root 2048 Oct 27 2020 LiveOS drwxr-xr-x. 2 root root 73728 Nov 3 2020 Packages drwxr-xr-x. 2 root root 4096 Nov 3 2020 repodata -rw-rw-r--. 15 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7 -rw-rw-r--. 15 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7 -r--r--r--. 1 root root 2883 Nov 3 2020 TRANS.TBL
至此服務器端就設置好了
5.2 客戶端
正常來說,在所有客戶端主機的BIOS中,將第一啟動方式設置為PXE網絡啟動,或通過類似于開機按F12鍵這樣的快捷方式設置啟動方式。不同型號的主機設置網絡啟動的方式不同,用戶可自行選擇。
本文中使用虛擬機模擬真實場景,所以還需要設置虛擬機
1. 設置虛擬機
在這里插入圖片描述
由于筆者的服務器是雙網卡,所以指定客戶端機器未僅主機模式,讀者可自行選擇,能讓DHCP分配到IP就可以了
另外,雙網卡需要注意在DHCP設置時指定interface
2. 啟動安裝
在這里插入圖片描述
在這里插入圖片描述
由于鏡像是mini版本的,所以只有命令行界面
在這里插入圖片描述
6. 問題匯總
1. 卡在dracut
dracut 是一個事件驅動的 initramfs 基礎設施。dracut(工具)被用來通過拷貝工具和文件,從一個已經安裝的系統創建一個 initramfs 鏡像,并將鏡像與dracut框架結合在一起。通常發現在 /usr/lib/dracut/modules.d/.
? 不像已經存在的initramfs框架,dracut的框架嘗試有盡可能更少的硬編碼進入initramfs。initramfs在生命中有一個基本的目標:獲取已經掛載的rootfs,以致我們能夠過渡到真正的rootfs。這是所有驅動裝置的可用性。因此,取代腳本硬編碼去做各種事情,dracut的 initramfs 依賴 udev 去創建符號鏈接到設備節點,接著,當rootfs的設備節點出現的時候,它被掛載和根切換到rootfs設備。 這個有助于保持在initramfs里要求的時間盡可能的少,以致一些事情,如5s鐘啟動,作為一個initramfs的存在結果不是不可能的。
? 在dracut中,大部分的initramfs生成器功能由一群生成模塊提供,這些模塊是被主要的dracut工具采購,來安裝特定的功能進入initramfs。他們存在于這些模塊的子目錄。和使用由dracut-functions提供的功能去做他們的工作。
? dracut 作為新一代的 initramfs 系統,和前一代的initramfs系統的 mkinitrd 的不同點在于, dracut設計上就考慮到了映像尺寸的問題,盡量避免硬編碼,以提高生成的 cpio 映像載入內存的速度。實際上,由于initramfs的唯一作用就是掛載rootfs(因此不需要把一堆無用的比如 plymouth 等都裝進去),它主要依賴 udev 去獲取 rootfs 的設備節點,一旦 rootfs 節點出現則立刻切換過去。按照官方維基的說法:5秒啟動不是夢。另外它采用了模塊化的方式,使用者可自由在 %{_libdir}/dracut/modules.d 下創建他需要的特殊模塊,可擴展性很強。最后它的使用方式和 mkinitrd 非常接近,遷移成本較低。
dracut 用于制作initrd啟動鏡像文件, dracut-network會為鏡像內添加nfs等網絡支持.
1. 鏡像未掛載
mount -o loop -t iso9660 /root/CentOS-7-x86_64-Minimal-2009.iso /media
2. 內存不足
建議大于2G
2. 卡在沒有選擇磁盤
1. 卡在anaconda安裝界面的沒有選擇磁盤,需要手動在ks.cfg文件指定磁盤名稱
bootloader --location=mbr --boot-drive=sda#注意
2. 在制作ks.cfg分區設置時,需要手動添加(ADD)至少/和/boot
3. 卡在DHCP分配地址
在這里插入圖片描述
這里需要注意:
1. 服務器是否是雙網卡,是否指定了具體使用的網卡,在編輯/etc/dhcp/dhcpd.conf時,指定interface
```bash [root@node-139 ~]#cat/etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page subnet 192.168.0.0 netmask 255.255.0.0 { interface"ens34"; #網卡 range 192.168.17.202 192.168.17.240; option domain-name-servers 8.8.8.8; option routers 192.168.17.1; default-lease-time 600; max-lease-time 7200; next-server 192.168.17.139; filename"pxelinux.0"; }
2. 客戶端機器如果是虛擬機,指定網絡模式
3. 提示no dhcp or proxydhcp,查看服務器的dhcpd服務是否啟動
4. tftp open timeout
在這里插入圖片描述
可以看到客戶端已經獲取到了IP,但是準備向tftp服務獲取pxelinux.0,但是無法連接tftp服務,這時現象是顯示打開tftp超時,并且一直嘗試連接。
? 檢查tftp服務是否啟動。
5. 服務端缺少pxelinux.0
提示file not found | tftp error
可以看到客戶端已經獲取到了IP,并且tftp連接也沒有報錯。但是準備向tftp服務獲取pxelinux.0文件失敗,提示文件沒有發現。
? 檢查/var/lib/tftpboot/目錄下是否有pxelinux.0文件。
6. 服務端缺少指定內核的配置文件
提示unable to locate configuration file
可以看到客戶端已經獲取到了IP,并且tftp連接也沒有報錯。但是準備向tftp服務獲取default文件失敗,提示文件沒有發現。
? 檢查/var/lib/tftpboot/pxelinux.cfg/default是否存在。
7. 提供ks.cfg文件的服務宕機
在這里插入圖片描述
提示failed connect | failed to fetch kisckstart
到這一步,表示內核與偽文件系統已經加載完畢,準備根據ks.cfg應答文件進行自動安裝,但是提示連接服務,請求文件失敗。
? 檢查web服務是否宕機,該文件可能是由其他服務(ftp|nfs)提供,所以需要檢查對應的服務是否宕機。
8. 客戶機內存不夠
在這里插入圖片描述 提示no space left on device
到這一步,表示內核與偽文件系統已經加載完畢,沒有缺少什么文件,但是空間不夠。
? 檢查虛擬機或者客戶機的內存是否足夠,內存設置至少2G。
鏈接:https://blog.csdn.net/u010230019/article/details/135150807
-
Linux
+關注
關注
87文章
11446瀏覽量
212622 -
服務器
+關注
關注
12文章
9663瀏覽量
87166 -
操作系統
+關注
關注
37文章
7059瀏覽量
124873
原文標題:5步搭建全自動無人值守Linux系統安裝服務器|全網最細教程!
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
實時操作系統和分時操作系統的區別

Linux操作系統安裝與使用
Linux操作系統安裝與使用
在Windows2012操作系統部署EasyRTC程序錯誤怎么解決
安裝Ubuntu操作系統的方法
Linux快速入門之安裝Linux操作系統及小結
如何安裝實時操作系統RTOS

受支持的Linux操作系統和WAS ND 9.0安裝部署文檔的資料說明

評論