Kesimpulan
- 4296
- 629
- Miss Angelo Toy
PXE (Lingkungan Eksekusi Preboot) adalah lingkungan server klien yang memungkinkan untuk mem-boot dan menginstal sistem operasi tanpa memerlukan media fisik. Gagasan intinya cukup sederhana: pada tahap yang sangat awal, klien mendapatkan alamat IP dari server DHCP dan mengunduh file yang diperlukan untuk melakukan proses boot melalui tftp Protokol (FTP sepele). Dalam tutorial ini kita akan menggunakan dnsmasq
Aplikasi: Ini dapat digunakan sebagai server DHCP utama atau di DHCP proxy mode jika server DHCP lain ada di jaringan; Ini juga menyediakan layanan TFTP yang digunakan untuk mentransfer file.
Dalam tutorial ini Anda akan belajar:
- Cara Mengkonfigurasi Pxelinux dan membuat menu boot
- Cara mengekstrak file dari ISO dan mengatur struktur file yang sesuai
- Cara mengkonfigurasi dnsmasq sebagai server DHCP standar atau proxy
- Cara mengkonfigurasi server tftp embed di dnsmasq
- Bagaimana mengizinkan lalu lintas melalui port yang dibutuhkan menggunakan UFW
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Raspberry Pi Os (sebelumnya dikenal sebagai Raspbian) |
Perangkat lunak | dnsmasq, pxelinux, syslinux-efi |
Lainnya | Izin root |
Konvensi | # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa |
Memasang paket
Hal pertama yang harus kita lakukan adalah memasang beberapa paket penting:
- dnsmasq
- pxelinux
- SYSLINUX-EFI
DNSMASQ menyediakan DHCP dan tftp jasa; Pxelinux adalah anggota bootloader dari syslinux keluarga, dan secara khusus dirancang untuk lingkungan PXE; Paket Syslinux-EFI_ berisi pustaka yang diperlukan untuk mendukung Efi Klien. Untuk menginstal paket di Raspberry Pi Os, kami dapat menjalankan:
$ sudo apt-get update && sudo apt-get install dnsmasq pxelinux syslinux-efi
Struktur file
Setelah paket yang dibutuhkan diinstal, kami dapat melanjutkan dan mengatur struktur file. Demi tutorial ini, akar dari seluruh pengaturan akan menjadi /mnt/data/netboot
direktori, yang juga akan digunakan sebagai tftp root (didefinisikan di dalam file konfigurasi DNSMASQ); Semua file yang dibutuhkan akan disimpan di dalamnya.
File dan modul syslinux
Kami ingin dapat mendukung boot klien Bios Dan Efi Mode, oleh karena itu hal pertama yang perlu kita lakukan adalah membuat dua direktori yang dinamai setelah arsitektur di dalamnya /mnt/data/netboot
:
$ mkdir/mnt/data/netboot/bios, efi64
Setiap arsitektur membutuhkan beberapa pustaka syslinux spesifik untuk bekerja. Kami menyalinnya di direktori yang sesuai:
$ cp \/usr/lib/syslinux/modules/bios/ldlinux, vesamenu, libcom32, libutil.C32 \/usr/lib/pxelinux/pxelinux.0 \/mnt/data/netboot/bios $ cp \/usr/lib/syslinux/modul/efi64/ldlinux.e64 \/usr/lib/syslinux/modules/efi64/vesamenu, libcom32, libutil.C32 \/usr/lib/syslinux.EFI/EFI64/SYSLINUX.EFI \/Mnt/Data/Netboot/EFI64
File distribusi
Pada titik ini kita perlu membuat direktori yang akan meng -host distribusi yang ingin kami sediakan di menu boot kami. Sebut saja boot
:
$ mkdir/mnt/data/netboot/boot
Dalam tutorial ini, hanya sebagai contoh, kami akan bekerja dengan gambar netinstall debian. For convenience, I will suppose a previously verified ISO (take a look at our article about checking the integrity and the signature of a distribution image with gpg if you want to know how to verify the integrity and signature of a distribution image) to be available pada sistem file RPI di /mnt/data/isos
direktori.
Kami membuat jalur yang tepat di dalamnya /mnt/data/netboot/boot
, Direktori penamaan setelah arsitektur, nama, dan versi sistem yang ingin kami berikan di menu kami (dalam hal ini AMD64 - Debian 10):
$ mkdir -p/mnt/data/netboot/boot/amd64/debian/10
Pilihan jalur ini sewenang -wenang, jadi jangan ragu untuk membuat sendiri. Pada titik ini kita harus memasang ISO distribusi dan menyalin file ke direktori tujuan. Untuk memasang ISO yang kami jalankan:
$ sudo mount -o loop -t iso9660/mnt/data/isos/debian -10.4.0-AMD64-Netinst.ISO /Media
Setelah ISO dipasang, file -nya akan dapat diakses di bawah /media
. Saya suka menggunakan rsync untuk menyalinnya:
$ sudo rsync -av/media//mnt/data/netboot/boot/amd64/debian/10
Setelah file disalin, kami dapat menghapus ISO:
$ sudo Umount /media
Pada langkah berikutnya kita akan melihat cara membuat menu boot menggunakan sintaks Syslinux.
Membuat menu boot
Sekarang kami memiliki file distribusi yang ada, kami dapat membuat menu boot. di dalam kami root tftp, (/mnt/data/netboot
Dalam kasus kami), kami membuat pxelinux.CFG
direktori:
$ mkdir/mnt/data/netboot/pxelinux.CFG
Di dalam pxelinux.CFG
direktori kami membuat file yang dipanggil bawaan
dan tempel konfigurasi berikut di dalamnya:
Judul Menu PXE Boot Menu Default Vesamenu.C32 Label Menu Lokal Label Label Boot Dari Drive Lokal LokalBoot 0xffff Menu Mulai AMD64 Judul Menu AMD64 Menu Mulai Judul Menu Debian Label Debian Instalasi Menu Label ^Instalasi Grafis Kernel :: Boot/AMD64/Debian/10/Instal.AMD/VMLINUZ Tambahkan VGA = 788 initrd = :: boot/amd64/debian/10/instal.AMD/GTK/INITRD.GZ --- label label instal menu label ^instal kernel :: boot/amd64/debian/10/install.AMD/VMLINUZ Tambahkan VGA = 788 initrd = :: boot/amd64/debian/10/instal.AMD/INITRD.GZ --- Menu Menu yang Tenang Akhir Menu
Konfigurasi di atas akan menghasilkan menu bersarang yang dibangun mengikuti jalur direktori yang kami buat di dalam boot
direktori. Sekali lagi, yang di atas hanyalah sebuah contoh. Anda dapat membuat dan menyusun menu seperti yang Anda inginkan; Yang perlu Anda lakukan adalah menggunakan sintaks yang sesuai, seperti yang dijelaskan di halaman wiki syslinux khusus.
Menu berisi entri untuk membiarkan pengguna mem -boot dari hard drive lokal, submenu dengan AMD64 label, dan dua entri untuk distribusi Debian, installgui Dan Install. Yang pertama meluncurkan penginstal distribusi dalam mode grafis, yang terakhir dalam mode tekstual yang tampaknya digunakan ncurses Perpustakaan.
Bagaimana kita bisa mengetahui parameter yang tepat untuk digunakan di INTI Dan MENAMBAHKAN baris? Kita dapat melihat konfigurasi menu yang ada di dalam konten distribusi yang kami ekstrak dari ISO. Dalam kasus kami, misalnya, /mnt/data/netboot/boot/amd64/debian/10/isolinux/menu.CFG
. Sayangnya tidak semua distribusi menggunakan sintaks yang sama, oleh karena itu kita harus memperhatikan dan menyesuaikan konfigurasi sesuai kebutuhan.
Satu hal yang harus kami beradaptasi dari konfigurasi asli, adalah jalur dari vmlinuz
Dan initrd.GZ
file. Ingatlah bahwa kami mengakses file -file tersebut melalui tftp!
Biasanya, jalur file ditafsirkan sebagai relatif ke direktori root TFTP, tetapi dalam konfigurasi di atas, seperti yang dapat Anda amati, kami menggunakan ::
Sintaks (misalnya kami menulis :: boot/amd64/debian/10/install.AMD/VMlinuz
untuk merujuk gambar kernel). Mengapa kami melakukan ini?
Karena kami membuat dua direktori yang memegang perpustakaan memberikan dukungan untuk bios Dan EFI64 mode dan kami ingin menggunakan konfigurasi menu yang sama untuk keduanya, kami perlu menautkan pxelinux.CFG
Direktori dalam keduanya, oleh karena itu kita perlu referensi tftp root dengan cara "absolut". Itu ::
Simbol memungkinkan kita untuk melakukan hal ini: Ini adalah cara untuk merujuk jalur absolut ke root TFTP.
Seandainya direktori kerja kami saat ini /mnt/data/netboot
, Untuk menautkan konfigurasi menu di direktori yang disebutkan di atas, kami dapat mengeluarkan perintah berikut:
$ ln -rs pxelinux.CFG Bios && ln -rs pxelinux.CFG EFI64
Di sini kami menggunakan -R
opsi ln
perintah untuk membuat relatif Tautan simbolik. Pada titik ini pohon direktori kita akan terlihat seperti itu:
/mnt/data/netboot ├── bios │ ├── ldlinux.C32 │ ├── libcom32.C32 │ ├── Libutil.C32 │ ├── Pxelinux.0 │ ├── Pxelinux.CFG ->… /pxelinux.CFG │ └── Vesamenu.C32 ├── BOOT │ └── AMD64 │ └── Debian │ ── 10 ├── EFI64 │ ├── ldlinux.E64 │ ├── libcom32.C32 │ ├── Libutil.C32 │ ├── Pxelinux.CFG ->… /pxelinux.CFG │ ├── Syslinux.EFI │ └── Vesamenu.C32 └── Pxelinux.CFG └── default
Kami sekarang dapat mengonfigurasi dnsmasq.
Konfigurasikan DNSMASQ
File konfigurasi dnsmasq adalah /etc/dnsmasq.conf
. Beberapa parameter yang dapat diatur di dalamnya dikomentari; Informasi lebih lanjut tentang mereka dapat ditemukan berkonsultasi dnsmasq manual. Kami hanya akan mempertimbangkan yang diperlukan untuk pengaturan kami.
Menonaktifkan fungsionalitas DNS
Hal pertama yang ingin kami lakukan adalah menonaktifkan layanan DNS yang tertanam di DNSMASQ: kami hanya membutuhkan fungsi DHCP dan TFTP yang ditawarkan oleh aplikasi. Untuk mencapai tujuan kami, kami dapat menggunakan pelabuhan
Opsi: Ini digunakan untuk menentukan port apa yang harus digunakan untuk DNS; mengatur nilainya 0
menonaktifkan layanan. Kami dapat menambahkan instruksi di akhir file konfigurasi.
port = 0
Tentukan antarmuka jaringan untuk permintaan DHCP
Hal kedua yang ingin kami lakukan adalah menentukan antarmuka jaringan yang akan digunakan untuk mendengarkan permintaan DHCP. Dalam kasus kami, antarmuka tersebut eth0
, Jadi kami menulis:
antarmuka = eth0
Jika kami tidak ingin menggunakan antarmuka tertentu, kami dapat menentukan alamat IP, menggunakan Dengarkan
Opsi sebagai gantinya.
Menentukan IP Range/Mode Proxy
Langkah konfigurasi ini sangat penting dan berubah tergantung pada konfigurasi jaringan kami.
Jika layanan DHCP yang disediakan oleh DNSMASQ satu satunya Di jaringan, pada langkah ini kita harus mengkonfigurasi kisaran alamat IP yang akan ditugaskan untuk klien, dan secara opsional a Waktu Sewa Misalnya:
DHCP-range = 192.168.0.100.192.168.0.200,12h
Pada baris di atas, kisaran alamat IP yang tersedia ditentukan dengan memisahkan batas bawah dan lebih tinggi dengan koma. Dalam hal ini kami mendefinisikan rentang yang berubah dari 192.168.0.100
ke 192.168.200
; Kami juga menetapkan a Waktu Sewa dari 12h
.
Kasus kedua mungkin yang paling umum dalam pengaturan standar/rumah, di mana biasanya layanan DHCP disediakan oleh router. Jika ini masalahnya, DNSMASQ harus diatur untuk dijalankan dalam mode proxy untuk menghindari konflik. Dalam kasus itu, kita dapat menulis:
DHCP-range = 192.168.0.0, proxy
Kami memasuki dua elemen yang dipisahkan oleh koma: yang pertama adalah alamat subnet (192.168.0.0
), yang kedua adalah kata kunci "proxy".
Mengaktifkan server TFTP
Pada titik ini kita perlu mengaktifkan dnsmasq Server TFTP tertanam: Kami akan menggunakannya untuk melayani file yang dibutuhkan untuk klien boot. Yang harus kita lakukan untuk menyelesaikan tugas ini adalah menambahkan baris berikut ke file konfigurasi:
aktifkan-tftp
Kita juga harus mengatur direktori yang harus digunakan sebagai root tftp. Direktori ini, seperti yang sudah kita bahas, akan meng -host file yang dibagikan. Dalam kasus kami, kami direktori ini /mnt/data/netboot
(yang default adalah /var/ftpd
):
tftp-root =/mnt/data/netboot
Setel file boot berdasarkan arsitektur klien
Itu pxelinux Bootloader dapat bekerja baik dalam mode EFI dan BIOS, jadi kami harus menemukan cara untuk melayani file yang sesuai tergantung pada mode yang digunakan oleh klien. Pertanyaannya adalah, bagaimana klien mengomunikasikan informasi tersebut?
DHCP menggunakan serangkaian opsi untuk pertukaran informasi: opsi 93
(Client-Arch) digunakan untuk memberikan informasi tentang arsitektur klien. Tabel di bawah ini menampilkan nilai numerik dan string dan arsitektur yang mereka referensi:
Nilai opsi | Nilai string | Arsitektur |
---|---|---|
0 | x86pc | Intel x86pc |
1 | PC98 | NEC/PC98 |
2 | Ia64_efi | Efi Itanium |
3 | Alfa | DEC Alpha |
4 | ARC_X86 | Arc x86 |
5 | Intel_lean_client | Intel Lean Client |
6 | Ia32_efi | EFI IA32 |
7 | Bc_efi | Efi BC |
8 | Xscale_efi | EFI XScale |
9 | X86-64_efi | EFI x86-64 |
Untuk menentukan file apa yang harus disediakan untuk mode yang sesuai yang digunakan oleh klien, kami dapat menggunakan PXE-Service
pilihan. Untuk x86pc kita bisa memasukkan baris berikut:
PXE-Service = x86pc, "pxelinux (bios)", bios/pxelinux
Kami memberikan tiga nilai yang dipisahkan oleh koma untuk opsi: yang pertama adalah Jenis Sistem Klien (x86pc), yang kedua adalah Teks Menu dan yang ketiga adalah file yang akan diunduh oleh klien untuk melakukan boot. Jalur file relatif terhadap root TFTP. Dalam hal ini ditemukan di dalam bios
direktori yang kami buat sebelumnya dan dipanggil pxelinux.0
: Nama tersebut harus dilaporkan tanpa .0
ekstensi, seperti yang dapat Anda lihat di atas.
Untuk EFI x86-64 Mode, sebagai gantinya, kami menambahkan:
PXE-Service = x86-64_efi, "pxelinux (EFI)", EFI64/syslinux.Efi
Pengaturan logging
Hal lain yang bermanfaat untuk diaktifkan adalah dnsmasq logging, untuk melacak aktivitas DHCP dan TFTP. Untuk menyelesaikan tugas ini, kami menambahkan Log-Queries
instruksi untuk konfigurasi kami, dan atur file yang harus digunakan untuk menyimpan pesan dengan Fasilitas log
petunjuk:
Log-queries Log-facility =/var/log/dnsmasq.catatan
Simpan konfigurasi dan restart layanan
Pada titik ini konfigurasi kami akan terlihat seperti ini:
port = 0 antarmuka = eth0 dhcp-range = 192.168.0.0, proxy mengaktifkan tftp tftp-root =/mnt/data/netboot pxe-service = x86pc, "pxelinux (bios)", bios/pxelinux pxe-service = x86-64_efi, "pxelinux (EFI), EFI64/SYSLINUX," SYSLINUX (EFI), EFI64/SYSLINUX, EFI64/SYS64/.EFI Log-Queries Log-Facility =/var/log/dnsmasq.catatan
Kami dapat menyimpan perubahan yang kami buat ke /etc/dnsmasq.conf
file, dan akhirnya restart dnsmasq
melayani:
$ sudo systemctl restart dnsmasq
Pengaturan Firewall
Agar pengaturan kami berfungsi dengan benar, kami juga harus mengizinkan lalu lintas yang masuk melalui firewall kami melalui beberapa port tertentu. Dalam tutorial ini saya akan menganggap penggunaan UFW paling depan. Port yang harus kita izinkan lalu lintas yang masuk adalah:
- 67/UDP
- 69/UDP
- 4011/UDP
Untuk mengizinkan lalu lintas kita dapat menjalankan perintah berikut:
$ sudo ufw izinkan 67/udp $ sudo ufw izinkan 69/udp $ sudo ufw izinkan 4011/udp
Booting
Pada titik ini, jika mesin klien terhubung ke jaringan melalui Ethernet dan opsi boot PXE dipilih sebagai "sumber" boot (pastikan fungsionalitas diaktifkan!), kita harus dapat melihat menu boot PXE:
Menu boot pxeSetelah kami memilih AMD64 -> Debian -> Instalasi Grafis
File yang sesuai akan diunduh dan penginstal Debian akan muncul:
Sekarang mungkin untuk melanjutkan dengan instalasi.
Kesimpulan
Dalam tutorial ini kami melihat cara melakukan langkah -langkah yang diperlukan untuk mengubah Raspberry Pi di server boot PXE: kami melihat cara menginstal dan mengkonfigurasi DNSMASQ dan bootloader PXELINUX; Kami juga belajar cara membuat menu Syslinux dan struktur file yang sesuai; Akhirnya, kami melihat port apa yang harus dibuka agar pengaturan berfungsi. Keraguan? Pertanyaan? Jangan ragu untuk berkomentar dan meminta bantuan!
Tutorial Linux Terkait:
- Cara Terhubung ke Server FTP Menggunakan Python
- Mengatur server FTP di Linux
- Daftar dan Instalasi Klien FTP di Ubuntu 22.04 Linux…
- Daftar dan Instalasi Klien FTP di Ubuntu 20.04 Linux…
- Cara mengatur server ftp/sftp dan klien di almalinux
- OpenLitespeed sebagai proxy terbalik
- Tutorial Konfigurasi Proxy Squid di Linux
- Cara menjalankan raspberry pi os di mesin virtual dengan…
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Instal Tor Proxy di Ubuntu 20.04 Linux