Ya, sangat mungkin. Jenis sistem yang Anda bisa boot tergantung pada bagaimana sistem itu bekerja.
Biasanya, Anda akan menemukan bahwa sistem yang sangat sederhana (seperti DOS atau Win98) dan sistem yang sangat kompleks (seperti distro Linux modern) mudah dibooting melalui jaringan.
Cara untuk mencapai ini pada dua jenis sistem sangat berbeda.
Mari kita lihat kedua cara secara lebih rinci. Saya berasumsi Anda sudah memiliki pengaturan server boot PXE ; jika tidak, silakan dan lakukan, itu cukup mudah.
Saya juga mengasumsikan dnsmasq
pengaturan pada server Linux dengan tftproot dalam /var/lib/tftpboot
, tetapi Anda harus dapat menyesuaikan instruksi dengan pengaturan lainnya.
Untuk sistem yang sederhana
Untuk sistem yang sederhana, Anda cukup memuat gambar (ISO) ke dalam RAM, dan menipu sistem agar yakin itu adalah unit yang sebenarnya. Ini dilakukan dengan sedikit bantuan dari BIOS dan modul perangkat lunak yang disebut memdisk .
Sistem yang ingin Anda muat melalui jaringan adalah freedos:
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT freedos
LABEL freedos
MENU LABEL FreeDOS
KERNEL /syslinux/memdisk
INITRD /freedos.iso iso
Cukup banyak. Beberapa baris pertama adalah menu boilerplate; bit-bit penting adalah empat baris terakhir: memuat memdisk dengan ISO yang diberikan.
Untuk sistem yang kompleks
Sistem modern dengan hal-hal mewah seperti manajemen memori yang baik dan deteksi perangkat keras yang tepat mengabaikan apa pun yang dikatakan BIOS.
Ini membuat memdisk
pendekatan yang digunakan di atas tidak berguna, karena jika Anda memuat ISO dengan cara itu, begitu kernel dibaca dari ISO dan dimuat ke dalam memori (ini dilakukan oleh bootloader di ISO; bootloader memperhatikan BIOS) , data ISO akan hilang.
Apa yang kamu lakukan? Yah, sebenarnya Anda tidak memuat ISO dari jaringan, tetapi sebaliknya katakan pada sistem bahwa ia dapat mengakses file yang diperlukan dari sana.
Untuk sistem Linux, ekstrak konten ISO di suatu tempat di tftproot dan muat kernel dan initrd secara langsung, lalu serahkan kepada mereka untuk menemukan sistem file root dan pasang.
Berikut ini contoh menggunakan CD Penyelamatan Sistem yang luar biasa . Saya benar-benar mengekstraksi seluruh ISO ke root server TFTP, karena cocok dengan struktur direktori saya, jadi kernelnya masuk /syslinux
.
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT sysrescd64
LABEL sysrescd64
MENU LABEL 1) SysResCD 4.2.0 (x64)
KERNEL /syslinux/rescue64
APPEND setkmap=us nomodeset netboot=nbd://pxe:sysrcd.dat
INITRD /syslinux/initram.igz
Bit yang paling penting di sini adalah APPEND
garis. Lihat netboot=
di bagian akhir? Begitulah cara OS mengetahui di mana root filesystem-nya. Sintaksnya adalah <protocol>://<server>:<path>
.
Saya telah dengan mudah menetapkan nama DNS pxe
untuk server saya. Jika Anda tidak memiliki itu, Anda akan menggunakan alamat IP untuk server.
Juga, sysresccd adalah salah satu yang termudah karena menggunakan gambar squashfs untuk sistem file root-nya, yang dapat dengan mudah diunduh dan dimuat ke RAM dengan metode apa pun. Di sini saya menggunakan nbd; Anda juga dapat menggunakan tftp, nfs dan http .
Untuk distro lain, seperti Ubuntu, saya pikir Anda hanya dapat menggunakan nfs.
Untuk sistem Windows, ini sedikit lebih rumit untuk dilakukan . Garis besarnya adalah:
- Memiliki penginstalan Windows 7 pada folder bersama di server
- Memiliki lingkungan Windows PE penuh di server di root TFTP Anda
- Mintalah mesin klien memuat WinPE melalui jaringan dan tekan F12untuk mendapatkan prompt perintah
- Petakan folder bersama dengan instalasi Windows 7 ke huruf drive
- Mulai instalasi dari folder yang dipetakan
Saya belum pernah mencoba ini, dan sepertinya itu tidak berhasil untuk beberapa orang. Untuk versi NT yang lebih tua dari Vista saya pikir itu bahkan tidak mungkin. Untuk Windows pra-NT (95, 98, ME, dll) Anda dapat menggunakan pendekatan memdisk, tetapi mem-boot itu tidak baik untuk kesehatan Anda :-p