Vâng, nó là rất nhiều có thể. Loại hệ thống bạn có thể khởi động sẽ phụ thuộc vào cách hệ thống hoạt động.
Thông thường, bạn sẽ thấy rằng các hệ thống rất đơn giản (như DOS hoặc Win98) và các hệ thống rất phức tạp (như các bản phân phối Linux hiện đại) có thể dễ dàng khởi động qua mạng.
Cách để thực hiện điều này trên hai loại hệ thống là rất khác nhau.
Chúng ta hãy xem cả hai cách chi tiết hơn. Tôi giả sử bạn đã thiết lập máy chủ khởi động PXE ; Nếu bạn không, hãy tiếp tục và làm điều đó, nó khá dễ dàng.
Tôi cũng đang giả sử dnsmasq
thiết lập trên máy chủ Linux với tftproot trong/var/lib/tftpboot
, nhưng bạn sẽ có thể điều chỉnh các hướng dẫn cho bất kỳ thiết lập nào khác.
Đối với hệ thống đơn giản
Đối với các hệ thống đơn giản, bạn chỉ cần tải hình ảnh (ISO) vào RAM và lừa hệ thống tin rằng đó là một đơn vị thực tế. Điều này được thực hiện với một chút trợ giúp từ BIOS và một mô-đun phần mềm có tên là memdisk .
Hệ thống bạn muốn tải qua mạng là freedo:
# /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
Nó khá là nhiều. Một vài dòng đầu tiên là trình soạn thảo trình đơn; các bit quan trọng là bốn dòng cuối cùng: tải memdisk với ISO đã cho.
Đối với các hệ thống phức tạp
Các hệ thống hiện đại với những thứ lạ mắt như quản lý bộ nhớ tốt và phát hiện phần cứng phù hợp gần như bỏ qua mọi thứ mà BIOS nói.
Điều này làm cho memdisk
cách tiếp cận được sử dụng ở trên khá vô dụng, bởi vì nếu bạn đã tải ISO theo cách đó, một khi hạt nhân đã được đọc từ ISO và được nạp vào bộ nhớ (điều này được thực hiện bởi bộ tải khởi động trong ISO; bộ nạp khởi động sẽ chú ý đến BIOS) , dữ liệu ISO sẽ biến mất.
Sau đó bạn làm gì? Chà, bạn không thực sự tải ISO từ mạng, mà thay vào đó hãy nói với hệ thống rằng nó có thể truy cập các tệp cần thiết từ đó.
Đối với các hệ thống Linux, trích xuất nội dung ISO ở đâu đó trong tftproot và tải kernel và initrd trực tiếp, sau đó để chúng tự tìm hệ thống tập tin gốc và gắn kết nó.
Đây là một ví dụ sử dụng CD Cứu hệ thống tuyệt vời . Tôi thực sự trích xuất toàn bộ ISO vào thư mục gốc của máy chủ TFTP, vì nó phù hợp với cấu trúc thư mục của tôi, vì vậy các hạt nhân nằm trong /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 quan trọng nhất ở đây là APPEND
dòng. Xem netboot=
cuối cùng? Đó là cách hệ điều hành biết hệ thống tập tin gốc của nó ở đâu. Cú pháp là <protocol>://<server>:<path>
.
Tôi đã thuận tiện đặt tên DNS pxe
cho máy chủ của mình. Nếu bạn không có điều đó, bạn sẽ sử dụng địa chỉ IP cho máy chủ.
Ngoài ra, sysresccd là một trong những cách dễ nhất vì nó sử dụng hình ảnh squashfs cho hệ thống tập tin gốc của nó, có thể dễ dàng tải xuống và tải vào RAM bằng bất kỳ phương pháp nào. Ở đây tôi sử dụng nbd; bạn cũng có thể sử dụng tftp, nfs và http .
Đối với các bản phát hành khác, như Ubuntu, tôi nghĩ bạn chỉ có thể sử dụng nfs.
Đối với các hệ thống Windows thì phức tạp hơn một chút . Các phác thảo là:
- Cài đặt Windows 7 trên thư mục dùng chung trên máy chủ
- Có môi trường Windows PE đầy đủ trên máy chủ trong thư mục gốc TFTP của bạn
- Yêu cầu máy khách tải WinPE qua mạng và nhấn F12để nhận dấu nhắc lệnh
- Ánh xạ thư mục dùng chung với cài đặt Windows 7 thành ký tự ổ đĩa
- Bắt đầu cài đặt từ thư mục được ánh xạ
Tôi chưa bao giờ thử điều này, và có vẻ như nó không hoạt động đối với một số người. Đối với các phiên bản NT cũ hơn Vista tôi nghĩ điều đó thậm chí không thể. Đối với Windows trước NT (95, 98, ME, v.v.), bạn có thể sử dụng phương pháp memdisk, nhưng khởi động những thứ đó có hại cho sức khỏe của bạn :-p