כל הזכויות שמורות לטל בן שושן – 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 דרך הרשת