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.

# d-i preseeding is inherently not secure. Nothing in the installer checks
# for attempts at buffer overflows or other exploits of the values of a
# preconfiguration file like this one. Only use preconfiguration files from
# trusted locations! To drive that home, and because it's generally useful,
# here's a way to run any shell command you'd like inside the installer,
# automatically.

# This first command is run as early as possible, just after
# preseeding is read.
#d-i preseed/early_command string anna-install some-udeb
# This command is run immediately before the partitioner starts. It may be
# useful to apply dynamic partitioner preseeding that depends on the state
# of the disks (which may not be visible when preseed/early_command runs).
#d-i partman/early_command \
#       string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
# This command is run just before the install finishes, but when there is
# still a usable /target directory. You can chroot to /target and use it
# directly, or use the apt-install and in-target commands to easily install
# packages and run commands in the target system.
#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ộ”.

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 echo 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.