Home CentOS PxeLinux – Pre eXecution Environment

PxeLinux – Pre eXecution Environment

by Tal Ben Shushan 04/09/2017 0 comment
PxeLinux – Pre eXecution Environment
נהנתם מהמאמר ? שתפו אותו!

כל הזכויות שמורות לטל בן שושן – Shushan.co.il

PxeLinux – Pre eXecution Environment

PXE הוא קיצור של Pre eXecution Environment והוא מוסבר באתר גם בהתקנת מערכות הפעלה ווינדוס דרך הרשת, אך במקרה זה אנו נתקין הפצה של לינוקס דרך הרשת.

PXE הוא היכולת לעלות מערכת הפעלה \ התקנה של מערכת הפעלה דרך הרשת, עוד לפני שהמחשב עולה ברוב המקרים נלחץ על F12 ואז יש לבחור “Boot From Network” מאותו הרגע יוגדר למחשב לעלות דרך הרשת ובאותו הרגע יעלה PXE, הדבר הראשון שPXE יחפש הוא DHCP (שכן אינו עובד עם Static IP) וברגע שהמחשב מצא DHCP המחשב מקבל כתובת IP , באותו הרגע הוא מתחיל לחפש שירות PXE יכול להיות שהוא יתקל בשרת PXE של מייקרוסופט או שרת PXE של סיטריקס וכו’ במקרה שלנו הוא יתקל בשרת PxeLinux.
מאותו הרגע השרת יתן לו גישה לTFTP שבו יושב Bootloader של הפצה שאותה הפצנו.

התצורה שאותה נצטרך:
1. שרת – לדוגמה CentOS 7 שבה התקנו את מערך ה PXE
2. לקוח – מחשב ללא מערכת הפעלה שיעלה להתקנה דרך הרשת.

 

בואו נתחיל במדריך,

דרוש:

* VM או מכונה פיזית בה מותקנת הפצה של CentOS 7 ומעודכנת.

אם אין לכם עדיין ISO של ההפצה שאותה תרצו להפיץ, עליכם להוריד את הפצת הלינוקס שאתם מעוניינים להתקין דרך PXE, אני אשתמש במדריך זה ב CentOS 7

ניתן להוריד אותו מכאן

לאחר ההורדה יש לטעון אותו לUSB או לדיסק DVD ואם אתם משתמשים בוירטואליזציה יש לטעון אותו לVM בו רץ כרגע הפצה של CentOS 7

נתחבר דרך Putty לשרת שהוא יהיה שרת ה PXE שלנו, כתובת השרת שלי הוא 192.168.1.112.

כעת לאחר שהכנסנו את קובץ ה ISO למחשב (לדוגמה בvMware)

כעת נטען אותו על ידי הפקודה

[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt

לאחר שנטען, הוא יהיה בתיקייה

/mnt/

נתקין את שרת ה TFTP,שירות זה יתן לנו FTP, על ידי הפקודה

[root@localhost ~]# yum install tftp-server
[root@localhost ~]# yum install vsftpd

כעת אנו נצטרך קובץ בשם pxelinux.0 (קובץ זה יגדיר לPXE כיצד לעלות)

נעתיק את הקובץ syslinux-4.05-13.el7.x86_64.rpm לתיקיית ה Root קובץ זה מכיל בתוכו את הpxelinux.0

[root@localhost ~]# cp /mnt/Packages/syslinux-4.05-13.el7.x86_64.rpm /root/

כעת נחלץ אותו על ידי הפקודה

[root@localhost ~]# rpm2cpio syslinux-4.05-13.el7.x86_64.rpm | cpio -dimv

בתוך תיקיית ה Root תיווצר לנו תיקייה בשם usr ובתוכה תיקיות נוספות, בתוך אחת התיקיות (הנתיב מצויין למטה) יהיה את קובץ ה pxelinux.0

ניצור תיקייה בשם pxelinux בתוך tftpboot על ידי הפקודה

[root@localhost ~]# cd /var/lib/tftpboot

[root@localhost ~]# mkdir pxelinux
[root@localhost ~]# cd

העתקה תבוצע לתוך תיקיית pxelinux שנמצאת בתוך tftpboot

[root@localhost ~]# cp /root/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux

כעת נתקין את ה Bootloader שהוא syslinux ואת הקבצים שנמצאים שם ודרושים לנו

[root@localhost ~]# yum install syslinux

 

כעת נתקין את שירות ה DHCP (קיים באתר הסבר נרחב על DHCP)

[root@localhost ~]# yum install dhcp

נתקין את עורך הטקסט vi

[root@localhost ~]# yum install vi

ונערוך את הגדרות ה DHCP

[root@localhost ~]# vi /etc/dhcp/dhcpd.conf

בצעו העתק הדבק, חשוב* אם טווחי כתובת ה IP שלכם שונה, שנו את הפרמטרים ואל תשכחו יש את השורה next-server 192.168.1.112; בשורה זו יש להגדיר את השרת עצמו (כי הוא שרת ה PXE)

option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
range 192.168.1.4 192.168.1.8;
class “pxeclients” {
match if substring (option vendor-class-identifier, 0, 9) = “PXEClient”;
next-server 192.168.1.112;
if option architecture-type = 00:07 {
filename “uefi/shim.efi”;
} else {
filename “pxelinux/pxelinux.0”;
}
}
}

כעת התקינו את xinetd

[root@localhost ~]# yum install xinetd

כעת נעתיק את כל סוגי ה Bootloader Menu לתיקיית הpxelinux Aלנו על ידי הפקודה

[root@localhost ~]# cp -r /usr/share/syslinux/* /var/lib/tftpboot/pxelinux

ניצור את התיקייה pxelinux.cfg

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

ובתוכנה ניצור את הקובץdefault –  קובץ זה יגדיר לPXE איזה תפריט לפתוח ואיזה קבצי init וקבצי Boot לפתוח

[root@localhost ~]# touch /var/lib/tftpboot/pxelinux/pxelinux.cfg/default

נערוך את הקובץ על ידי הפקודה

[root@localhost ~]# vi /var/lib/tftpboot/pxelinux/pxelinux.cfg/default

ונכניס בתוכו את הפרמטרים הבאים:

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title # PXE Boot Menu #
label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount
label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp
label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.112/pub devfs=nomount inst.vnc inst.vncpassword=password
label 4
menu label ^4) Boot from local drive

נשמור ונסגור את הקובץ.

כעת נעתיק את קבצי ה vmlinuz וה initrd.img אשר טוענים את ה Bootloader

ניצור להם תיקייה

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux/centos7

ונעתיק אותם מהדיסק אל התיקייה שהרגע יצרנו

[root@localhost ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7

כעת נעתיק את קבצי ההתקנה שנמצאים בISO שלנו אל תיקיית ה FTP

[root@localhost ~]# cp -r /mnt/* /var/ftp/pub/

[root@localhost ~]# chmod -R 755 /var/ftp/pub

נתקין את rsync שיבדוק שכל הקבצים גם הנסתרים הועתקו לתיקיית ה FTP

[root@localhost ~]# yum install rsync

[root@localhost ~]# rsync -avz /mnt/ /var/ftp/pub

כעת נפתח את כל הפורטים ב Firewall

firewall-cmd --add-service=ftp --permanent

firewall-cmd --add-port=69/udp --permanent

firewall-cmd --add-service=dns --permanent

firewall-cmd --add-port=4011/udp --permanent

firewall-cmd --add-service=dhcp --permanent

firewall-cmd --reload

נגדיר לכל השירותים שהתקנו לעלות גם לאחר ריסטארט

[root@localhost ~]# systemctl enable xinetd

[root@localhost ~]# systemctl enable tftp

[root@localhost ~]# systemctl enable vsftpd

[root@localhost ~]# systemctl enable dhcpd

וכעת נפעיל מכונה חדשה ללא מערכת הפעלה, כעת היא תנסה לעלות דרך PXE, היא תקבל כתובת IP משרת ה DHCP שלנו, הכתובת היא 192.168.1.4 ולאחר מכן תתחבר לשרת הPXE שכתובתו 192.168.1.112

כעת נוכל לראות את התפריט, בחרתי להתקין את ה CentOS 7 דרך הרשת

 

מאמרים קשורים

Leave a Comment