Làm thế nào để sử dụng systemd-firstboot.service?


11

Tôi đang tạo một hình ảnh của Debian Jessie. Khi khởi động hệ thống không có /etc/machine-idtập tin. Điều này gây ra một số vấn đề với tạp chí không bắt đầu.

Tôi đã tìm thấy rằng trong repo systemd:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=First Boot Wizard
Documentation=man:systemd-firstboot(1)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-remount-fs.service
Before=systemd-sysusers.service sysinit.target shutdown.target
ConditionPathIsReadWrite=/etc
ConditionFirstBoot=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=@rootbindir@/systemd-firstboot --prompt-locale --prompt-timezone --prompt-root-password
StandardOutput=tty
StandardInput=tty
StandardError=tty

Nó nên được đặt ở đâu để nó chạy?

Trong systemd 215, conditionFirstBoot không khả dụng. Làm thế nào để đối phó với điều đó?

Câu trả lời:


1

Tôi hơi ngạc nhiên khi bạn không có tập lệnh này thay vì chỉ cài đặt systemd, nhưng (nói chung) tôi nghĩ câu trả lời là bạn nên đặt nó vào /etc/systemd/system.

Trong tình huống này (vì bạn đang làm tất cả những điều này để thử và lấy id máy, để làm cho journald hoạt động), tôi đoán tôi có thể thay thế điều kiệnFirstBoot bằng kiểm tra tệp bạn quan tâm , /etc/machine-id.

Vì vậy, tôi có thể sẽ viết lại phần Đơn vị như:

[Unit]
Description=First Boot Wizard
Documentation=man:systemd-firstboot(1)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-remount-fs.service
Before=systemd-sysusers.service sysinit.target shutdown.target
ConditionPathIsReadWrite=/etc
ConditionPathExists=!/etc/machine-id

Điều đó đang được nói, nếu có thể gửi một hệ thống gần đây hơn với hình ảnh của bạn (Tôi không giỏi về Debian, vì vậy tôi không thể tìm thấy bất cứ nơi nào để kiểm tra phiên bản được hỗ trợ mới nhất là gì), có thể đáng để xem xét - systemd 215 có một vài vấn đề đã được khắc phục ( https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=systemd ).


Chỉ cần một lưu ý để xác minh hai lần rằng giải pháp được đề xuất sẽ hoạt động. Khi tôi bắt đầu chụp ảnh HĐH được kiểm soát bởi hệ thống (dựa trên Debian 10, IIRC, khi anh ấy vẫn còn Sid) vài năm trước, sự thúc đẩy đầu tiên của tôi là xóa / etc / machine-id ngay trước khi chụp ảnh, trong số các tác vụ xóa nhân cách khác. Hiệu ứng này khá ấn tượng: hệ thống từ chối khởi động và chuyển sang chế độ recovery (một cục gạch nếu bạn đang triển khai một đám mây vm). Bản sửa lỗi đã bị cắt bớt nhưng vẫn giữ tệp ( : > /etc/machine-id). Có thể điều này thậm chí không còn đúng nữa, nhưng tôi đã học cách đối xử với tập tin này với sự tôn trọng và kính nể từ bao giờ.
kkm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.