Đẩy CD khi tắt máy


12

OK, vì vậy tôi có một vấn đề đơn giản: Tôi có CD trực tiếp và tôi muốn CD phát ra khi máy tính được khởi động lại hoặc tạm dừng.

Việc thực thi /usr/bin/eject -mlàm cho việc đẩy đĩa CD trở nên tốt đẹp ... rắc rối là, như bạn có thể mong đợi, điều này sau đó làm hỏng hệ điều hành vì giờ đây nó không thể đọc bất kỳ tệp nào. Vì vậy, việc khởi động lại không bao giờ xảy ra, vì /sbin/rebootkhông thể truy cập được. (Tôi đã thử thực thi reboot --help > /dev/nullngay trước khi khởi động lại, nhưng vẫn còn các tệp khác vẫn không thể đọc được ...)

Tóm lại, có vẻ như tôi cần phải làm cho việc đẩy ra là điều cuối cùng xảy ra. Vì vậy, có vẻ như đó systemdlà con chó con mà tôi cần chơi cùng ... Nhưng tôi đã lãng phí hàng giờ trong cuộc đời để chọc và chọc nó, và dù tôi có làm gì, thì trong mọi trường hợp, nó không bao giờ thực sự lấy CD ra. Và tôi không biết tại sao. Tôi đã thử hàng tá cách gọi khác nhau eject, nhưng không có gì xảy ra.

Ai có thể cho tôi biết cách đơn giản nhất để chạy eject? (Tôi tưởng tượng ngay sau umount.targetđó sẽ hợp lý ...)


Tôi lấy nó, bạn có một hệ điều hành khác trên máy tính hoặc tại sao bạn lại muốn lấy CD ra khi khởi động lại? Nếu đây là lý do, có lẽ bạn có thể làm tốt hơn nếu bạn thiết lập menu khởi động nơi bạn có thể chọn khởi động từ đĩa CD hoặc từ đĩa.
Emanuel Berg

Sau khi bạn vượt qua đĩa CD, bạn vẫn không để lại nội dung của initramfs chứ? Nếu có ở ejectđó, bạn sẽ ổn chứ?
Ulrich Schwarz

Giữ lấy. Thật ki quặc. Linux Mint và tôi nghĩ Ubuntu làm điều này theo mặc định.
Linuxios

Câu trả lời:


4

Cuối cùng, đồng nghiệp của tôi đã tìm thấy bài viết sau:

http://lists.freedesktop.org/archives/systemd-devel/2012-September/006573.html

Tóm lại, tôi đã tạo một tệp có tên /lib/systemd/system/eject.servicechứa

[Unit]
Description=Eject the DVD
Before=final.target
After=shutdown.target
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/usr/bin/eject -m
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit

[Install]
WantedBy=shutdown.target

Tôi cũng phải chạy systemctl enable eject.serviceđể làm điều này thực sự làm bất cứ điều gì. Nhưng bây giờ systemdnhả đĩa CD ngay trước khi tắt máy, chính xác như tôi muốn.

... thật không may, hệ điều hành vẫn phân tách khi nó không thể tìm thấy phần còn lại của các tệp với đĩa CD được đẩy ra. Tôi đã thử điều chỉnh tệp trên để chúng tôi có After=unmount.target, cái mà bạn nghĩ sẽ chạy tập lệnh sau khi các hệ thống tập tin chưa được kết nối. Nhưng không, vẫn là segfaults.

Có vẻ như tôi sẽ phải tìm cách sao chép hình ảnh CD trực tiếp vào RAM khi khởi động - nhưng đó là một câu hỏi hoàn toàn khác ...


1

Những điều sau đây có thể giúp bạn:

  • Thêm lệnh đẩy của bạn tại /etc/init.d/halt.local

  • Bạn cũng có thể xem mẫu /etc/init.d/sk MP và tùy chỉnh nó để có thể thêm một số đầu ra, ví dụ như tắt hệ thống, nhấn bất kỳ phím nào để đẩy cdrom, v.v.

  • Kiểm tra các tập lệnh trong /etc/init.d được liên kết đến trong các thư mục runlevel /etc/rc0.d (tạm dừng).


0

Kiểm tra các tập lệnh /etc/init.dđược liên kết đến trong các thư mục runlevel /etc/rc0.d(tạm dừng) và /etc/rc6.d(khởi động lại). Ví dụ, tôi đặt lệnh đẩy ra /etc/init.d/rebootvà nó hoạt động tốt.

Nhưng, tôi không có trên Live CD nên tôi không thể kiểm tra cái gì sẽ hoạt động.

Nếu bạn nghĩ về nó, một cái gì đó như thế này, thật khó để tưởng tượng, đưa vào một kịch bản hoặc thậm chí là một nhị phân được biên dịch. Ngay cả một nhị phân cũng yêu cầu một số chi phí phân bổ / thỏa thuận và ngay khi bạn lấy CD ra, bạn đã hoàn thành. Thay vào đó, nó phải giống như một lá cờ và một con trỏ tới một lệnh máy, được lưu trữ trong một số bộ nhớ siêu bền bỉ ...

Có thể dễ dàng hơn khi chỉ chạy lệnh và cố tình làm sập hệ điều hành, nhưng để làm như vậy khi gần như tất cả mọi thứ đều ngoại tuyến, do đó, sẽ không có vấn đề gì khi bạn làm sập hệ thống còn lại của mình.

(Chỉnh sửa) Một suy nghĩ khác: Bằng cách nào đó bạn có thể phân vùng hệ thống tập tin của mình, tạo một phân vùng cho chỉ lệnh đẩy và khởi động lại, ngắt kết nối tất cả những thứ khác, sau đó chạy lệnh? (Nhưng, có lẽ sau đó fsck sẽ được yêu cầu không phàn nàn mỗi lần, rằng phân vùng đẩy không được kết nối chính xác.) Hoặc, bạn có thể đặt nó vào thẻ nhớ USB không? (Đây là một vấn đề rất thú vị; nếu bạn giải quyết nó, hãy nói với chúng tôi!)

(Chỉnh sửa 2) Còn về việc sáp nhập eject và khởi động lại, vì vậy bạn sẽ có được một nhị phân, nó được nạp vào bộ nhớ, đẩy đẩy đĩa CD, nhưng không nhất thiết phải khởi động lại tải từ bất kỳ hệ thống tập tin, nó đã nằm trong bộ nhớ chính?


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.