4.3. Chuẩn bị tập tin để khởi động qua mạng TFTP

Nếu máy tính của bạn có kết nối đến mạng cục bộ, bạn có thể có khả năng khởi động qua mạng từ máy khác bằng TFTP. Nếu bạn định khởi động hệ thống cài đặt từ máy khác, cần phải để các tập tin khởi động vào vị trí dứt khoát trên máy đó, cũng cấu hình máy đó để hỗ trợ khả năng khởi động máy tính riêng của bạn.

Bạn cần phải thiết lập một trình phục vụ TFTP, và cho nhiều máy cũng cần một trình phục vụ DHCP, hay trình phục vụ BOOTP.

BOOTP là một giao thức IP báo máy tính biết địa chỉ IP của chính nó và nơi trên mạng có thể lấy ảnh khởi động.

Giao thức truyền tập tin không đáng kể (TFTP) được dùng để phục vụ ảnh khởi động cho ứng dụng khách. Về lý thuyết có thể sử dụng bất kỳ trình phục vụ nào trên bất kỳ nền tảng nào mà thực hiện những giao thức này. Những lời thí dụ trong tiết đoạn này sẽ cung cấp lệnh riêng cho hệ điều hành SunOS 4.x, SunOS 5.x (cũng tên Solaris), và GNU/Linux.

4.3.1. Thiết lập trình phục vụ BOOTP

Có hai trình phục vụ BOOTP sẵn sàng cho GNU/Linux. Trình thứ nhất là bootpd CMU. Trình thứ hai thật là một trình phục vụ DHCP: dhcpd ISC. Trong Debian GNU/Linux hai trình này nằm trong góibootpdhcp3-server riêng từng cái.

Để sử dụng bootpd CMU, trước tiên bạn cần phải bỏ ghi chú (hay thêm) dòng tương ứng trong trong tập tin cấu hình /etc/inetd.conf. Dưới hệ điều hành Debian GNU/Linux, bạn có khả năng chạy lệnh update-inetd --enable bootps, rồi /etc/init.d/inetd reload để làm như thế. Trong trường hợp trình phục vụ BOOTP của bạn không chạy Debian được, dòng đó nên hình như:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Sau đó, bạn cần phải tạo một tập tin /etc/bootptab. Nó có cùng một dạng thức thường và khó hiểu với những tập tin printcap, termcapdisktab của BSD. Xem trang hướng dẫn (man) bootptab để tìm thông tin thêm. Đối với tiến trình bootpd, bạn cần phải biết địa chỉ phần cứng (địa chỉ MAC) của máy khách. Đây là một tập tin /etc/bootptab thí dụ :

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

Bạn cần phải thay đổi ít nhất tùy chọn “ha”, mà xác định địa chỉ phần cứng của máy khách. Tùy chọn “bf” xác định tập tin máy khách cần lấy bằng TFTP; xem Phần 4.3.4, “Xác định vị trí của ảnh TFTP” để tìm chi tiết.

Mặt khác, tiến trình thiết lập BOOTP bằng dhcpd ISC là rất dễ dàng, vì nó xử lý các ứng dụng khách BOOTP là ứng dụng khách DHCP kiểu hơi đặc biệt. Một số kiến trúc riêng cần thiết cấu hình phức tạp để khởi động ứng dụng khách thông qua BOOTP. Nếu máy của bạn có kiến trúc như thế, hãy đọc tiết đoạn Phần 4.3.2, “Thiết lập trình phục vụ DHCP”. Trong trường hợp đó, rất có thể là bạn đơn giản cần phải thêm chỉ thị allow bootp (cho phép BOOTP) vào khối cấu hình dành cho mạng phụ chứa máy chạy ứng dụng khách đó, rồi khởi chạy lại trình nền dhcpd bằng lệnh /etc/init.d/dhcpd3-server restart.

4.3.2. Thiết lập trình phục vụ DHCP

Một trình phục vụ DHCP phần mềm tự do là dhcpd ISC. Đối với Debian GNU/Linux, gói dhcp3-server khuyến khích. Đây là một tập tin cấu hình mẫu cho nó (xem /etc/dhcp3/dhcpd.conf):

option domain-name "mẫu.com";
option domain-name-servers ns1.mẫu.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "tên_máy_phục_vụ";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host tên_máy_khách {
  filename "/tftpboot/tftpboot.img";
  server-name "tên_máy_phục_vụ";
  next-server tên_máy_phục_vụ;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

[option			tùy chọn
domain-name		tên miền
domain name servers	các máy phục vụ tên miền
subnet-mask		mặt nạ mạng phụ
default-lease-time		thời gian thuê mặc định
max-lease-time	thời gian thuê tối đa
server-name		tên máy phục vụ
subnet			mạng phụ
netmask			mặt nạ mạng
range			phạm vị
routers			các bộ định tuyến
host				máy (hỗ trợ)
filename			tên tập tin
hardware ethernet	Ethernet phần cứng
fixed-address		địa chỉ cố định]

Trong lời thí dụ này, có một máy phục vụ tên tên_máy_phục_vụ mà làm mọi công việc của trình phục vụ DHCP, trình phục vụ TFTP và cổng ra mạng. Bình thường, bạn sẽ cần phải thay đổi những tùy chọn tên miền (domain-name), cũng như tên máy phục vụ (server-name) và địa chỉ phần cứng (hardware address) của máy khách. Tùy chọn filename (tên tập tin) nên là tên tập tin sẽ được lấy thông qua TFTP.

Sau khi bạn chỉnh sửa tập tin cấu hình của trình nền dhcpd, hãy khởi chạy lại nó bằng lệnh /etc/init.d/dhcpd3-server restart.

4.3.3. Bật chạy trình phục vụ TFTP

Để hiệu lực trình phục vụ TFTP, trước tiên bạn cần phải kiểm tra xem trình nền tftpd đã được bật chạy chưa. Bình thường nó được bật chạy bằng dòng theo đây (hay tương tự) trong tập tin cấu hình /etc/inetd.conf:

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Khi bạn cài đặt các gói Debian, dòng này thường được thiết lập theo mặc định.

Ghi chú

Trong quá khứ, máy phục vụ TFTP đã dùng /tftpboot như là thư mục từ đó cần phục vụ ảnh. Tuy nhiên, các gói Debian GNU/Linux có thể sử dụng thư mục khác để tuân theo Tiêu Chuẩn Phân Cấp Hệ Thống Tập Tin (FHS). Chẳng hạn, tftpd-hpa theo mặc định sử dụng thư mục /var/lib/tftpboot. Có lẽ bạn cần phải điều chỉnh những mẫu cấu hình trong phần này một cách tương ứng.

Thấy trong tập tin cấu hình /etc/inetd.conf và ghi nhớ thư mục được dùng như là đối số của in.tftpd[3]; bạn sẽ cần nó bên dưới. Nếu bạn đã cần phải thay đổi tập tin cấu hình /etc/inetd.conf, bạn sẽ cần phải thông báo tiến trình inetd đang chạy rằng tập tin đó đã thay đổi. Trên máy kiểu Debian, hãy chạy lệnh nạp lại /etc/init.d/inetd reload; trên các máy khác, tìm biết mã nhận diện tiến trình (PID) choinetd, và chạy lệnh ép buộc kết thúc kill -HUP mã_inetd.

4.3.4. Xác định vị trí của ảnh TFTP

Sau đó, hãy để ảnh khởi động TFTP cần thiết (như được tìm trong Phần 4.2.1, “Nơi tìm ảnh cài đặt”) vào thư mục ảnh khởi động của trình nền tftpd. Có lẽ bạn cần phải tạo một liên kết từ tập tin đó đến tập tin mà tftpd sẽ sử dụng để khởi động máy khách riêng. Tiếc là tên tập tin được quyết định bởi máy khách TFTP, và chưa có tiêu chuẩn mạnh nào.

4.3.4.1. Ảnh TFTP của DECstation

Đối với máy kiểu DECstation, có tập tin ảnh TFTP dành cho mỗi kiến trúc phụ, mà chứa cả hạt nhân lẫn trình cài đặt trong cùng một tập tin. Quy ước đặt tên là kiến_trúc_phụ/netboot-boot.img. Sao chép tập tin ảnh TFTP đã muốn vào /tftpboot/tftpboot.img nếu bạn dùng thiết lập BOOTP/DHCP được diễn tả bên trên.

Phần vững DECstation khởi động thông qua TFTP bằng lệnh boot #/tftp, mà # là số hiệu thiết bị TurboChannel từ đó cần khởi động. Trên phần lớn máy DECstations, số này là “3”. Nếu máy phục vụ BOOTP/DHCP không cung cấp tên tập tin, hoặc nếu bạn cần gởi tham số thêm cho lệnh, chúng có thể được phụ thêm bằng cú pháp này:

boot #/tftp/tên_tập_tin tham_số1=giá_trị1 tham_số2=giá_trị2 ...

Một số bản sửa đổi phần vững DECstation biểu lộ một vấn đề về khả năng khởi động qua mạng: việc truyền bắt đầu được, nhưng sau một thời gian nó bị dừng với lỗi a.out err. Có vài lý do có thể :

  1. Phần vững không trả lời yêu cầu ARP trong tiến trình truyền TFTP: ARP quá giờ nên việc truyền bị dừng. Cách sửa chữa là thêm địa chỉ MAC của thẻ Ethernet trong DECstation một cách tĩnh vào bảng ARP của trình phục vụ TFTP, bằng cách chạy lệnh arp -s địa_chỉ_IP địa_chỉ_MAC với tư cách người chủ trên máy chạy trình phục vụ TFTP. Có thể hiển thị địa chỉ MAC của máy DECstation bằng cách nhập lệnh cnfg vào dấu nhắc phần vững của DECstation đó.

  2. Phần vững máy giới hạn kích cỡ của tập tin khởi động được thông qua TFTP.

Cũng có một số bản sửa đổi phần vững không thể khởi động thông qua TFTP bằng cách nào cả. Toàn cảnh về các bản sửa đổi phần vững khác nhau nằm trên các trang Mạng của NetBSD: http://www.netbsd.org/Ports/pmax/board-list.html#proms.



[3] Đối số -l cho một số phiên bảnin.tftpd có khả năng ghi lưu mọi yêu cầu vào những bản ghi hệ thống: có ích để chẩn đoán lỗi khởi động.