B.5. Tùy chọn cấp cao

B.5.1. Chạy lệnh riêng trong khi cài đặt

Những công cụ chèn sẵn cũng cung cấp một tùy chọn rất mạnh và dẻo : khả năng chạy lệnh hay văn lệnh tại một số điểm thời riêng trong tiến trình cài đặt.

# Tiến trình chèn sẵn trình cài đặt Debian không đảm bảo là an toàn.
# Không có gì trong trình cài đặt mà kiểm tra bắt sự cố gắng tràn bộ đệm
# hoặc cách khác lạm dụng giá trị nằm trong tập tin cấu hình sẵn
# như điều này. Hãy dùng chỉ tập tin cấu hình sẵn có nguồn đáng tin !
# Để chứng minh tình trạng không an toàn của tập tin cấu hình sẵn,
# và vì nó có ích một cách chung, bên dưới có một phương pháp
# tự động chạy bất cứ câu lệnh trình bao nào bên trong trình cài đặt.

# Lệnh đầu tiên này được chạy càng sớm càng có thể, đúng sau khi
# đọc thông tin chèn sẵn.
#d-i preseed/early_command string anna-install some-udeb
# Câu lệnh này được chạy ngay trước khi công cụ phân vùng khởi chạy.
# Nó có thể hữu ích để áp dụng cấu hình chèn sẵn động
# vào chức năng phân vùng mà phụ thuộc vào tình trạng của các đĩa
# (mà có thể không hiện rõ khi preseed/early_command chạy).
#d-i partman/early_command \
#       string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"

# Câu lệnh bên dưới được chạy đúng trước khi cài đặt xong, nhưng khi
# vẫn còn có một thư mục « /target » có ích. Bạn có thể chroot (chuyển đổi
# vị trí của thư mục gốc) sang « /target » và dùng nó một cách trực tiếp,
# hoặc dùng các lệnh « apt-install » (cài đặt bằng apt) và « in-target »
# (trong đích) để cài đặt dễ dàng các gói và chạy câu lệnh trên hệ thống đích.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

B.5.2. Dùng khả năng chèn sẵn để thay đổi giá trị mặc định

Có thể dùng khả năng chèn sẵn để thay đổi trả lời mặc định đối với câu hỏi, còn vẫn nhắc người dùng với câu hỏi đó. Để làm như thế, cờ seen (đã xem) phải được đặt lại thành false (sai) sau khi đặt giá trị cho câu hỏi.

d-i foo/bar string value
d-i foo/bar seen false

Có thể làm cùng kết quả cho tất cả các câu hỏi bằng cách đặt tham số preseed/interactive=true tại dấu nhắc khởi động. Cũng có thể hữu ích để thử hay gỡ lỗi tập tin cấu hình sẵn.

Ghi chú rằng chủ sở hữu d-i chỉ nên được dùng cho các biến được đặt cho trình cài đặt chính nó. Đối với biến thuộc về gói được cài đặt vào hệ thống đích, bạn nên sử dụng tên của gói để thay thế. Xem cước chú về Phần B.2.2, “Dùng tham số khởi động để chèn sẵn câu hỏi”.

Nếu bạn chèn sẵn dùng tham số khởi động, bạn cũng có thể làm cho tiến trình cài đặt hỏi câu tương ứng bằng cách dùng toán tử ?=, tức là foo/bar?=giá_trị (hay chủ_sở_hữu:foo/bar?=giá_trị). Nó chỉ có tác động đối với tham số tương ứng với câu hỏi thật được hiển thị trong khi cài đặt, không phải đối với tham số nội bộ.

Để có thêm thông tin gỡ lỗi, hãy dùng tham số khởi động DEBCONF_DEBUG=5. Việc này sẽ làm cho debconf in thêm rất nhiều chi tiết về các xác lập hiện tại của từng biến và về tiến trình của nó qua các văn lệnh cài đặt gói.

B.5.3. Tải dây chuyền tập tin định cấu hình sẵn

Có thể gồm một số tập tin cấu hình sẵn khác từ chỉ một tập tin định cấu hình sẵn có liệt kê chúng. Thiết lập nào nằm trong các tập tin cấu hình sẵn đó sẽ đè lên thiết lập tồn tại từ tập tin được tải trước. Tính năng này cho khả năng, lấy thí dụ, để thiết lập mạng chung cho chỗ bạn trong tập tin này, còn để thiết lập chi tiết hơn cho một số cấu hình riêng trong các tập tin khác.

# Có thể liệt kê nhiều tập tin, định giới bằng dấu cách: tất cả các tập tin
# trong danh sách này sẽ được nạp. Những tập tin được bao gồm
# cũng có thể dùng chỉ thị chèn sẵn/bao gồm riêng.
# Ghi chú rằng nếu tên tập tin là tương đối, nó được lấy từ
# cùng một thư mục với tập tin cấu hình sẵn mà chứa tập tin đó.
#d-i preseed/include string x.cfg

# Trình cài đặt có khả năng (tùy chọn) thẩm tra tổng kiểm (checksum)
# của tập tin cấu hình sẵn, trước khi dùng nó. HIện thời chỉ hỗ trợ
# tổng kiểm kiểu md5sum; hãy liệt kê các tổng md5sum
# theo cùng một thứ tự với danh sách các tập tin cần gồm.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d

# Dẻo hơn, dòng bên dưới chạy lệnh trình bao : xuất tên của
# tập tin cấu hình sẵn thì bao gồm các tập tin đó.
#d-i preseed/include_command \
#      string if [ "`hostname`" = bob ]; then echo bob.cfg; fi

# Dẻo nhất, dòng này tải về chương trình rồi chạy nó. Chương trình
# có khả năng dùng lệnh như « debconf-set » (debconf đặt) để thao tác
# cơ sở dữ liệu cấu hình « debconf ». Có thể liệt kê danh sách các
# văn lệnh, định giới bằng dấu cách.
# Ghi chú rằng nếu tên tập tin là tương đối, nó được lấy từ
# cùng một thư mục với tập tin cấu hình sẵn mà chứa tập tin đó.
#d-i preseed/run string foo.sh

Cũng có thể nạp dây chuyền từ giải đoạn chèn sẵn kiểu initrd hay tập tin, đến việc chèn sẵn qua mạng, bằng cách đặt preseed/url trong những tập tin sớm hơn. Sự chọn này sẽ gây ra việc chèn sẵn qua mạng được thực hiện khi mạng trở thành hoạt động. Hãy làm cẩn thận, vì có hai tiến trình chèn sẵn riêng: chẳng hạn, bạn có hai dịp chạy lệnh preseed/url, điều thứ hai được tạo một khi mạng trở thành hoạt động.