종료시 CD 꺼내기


12

좋습니다. 간단한 문제가 있습니다. 라이브 CD가 있고 컴퓨터를 재부팅하거나 중지 할 때 CD를 꺼내고 싶습니다.

실행 /usr/bin/eject -m하면 CD가 제대로 배출됩니다 ... 문제는 예상대로, 이제 파일을 읽을 수 없기 때문에 OS와 충돌합니다. 따라서 다시 부팅 /sbin/reboot할 수 없습니다. 액세스 할 수 없기 때문 입니다. ( reboot --help > /dev/null재부팅 직전에 실행을 시도했지만 여전히 읽을 수없는 다른 파일이 있습니다 ...)

요약하면, 배출을 가장 마지막으로 수행 해야하는 것으로 보입니다 . 그래서 systemd나는 그것을 가지고 놀 필요가있는 강아지 인 것 같습니다 ... 그러나 나는 말 그대로 내 삶의 몇 시간 을 찌르고 찌르는 일 을 낭비 했습니다. 그리고 나는 왜 그런지 모른다. 나는 12 가지 다른 호출 방법을 시도 eject했지만 아무 일도 일어나지 않습니다.

아무도 가장 간단한 방법을 말해 줄 수 있습니까 eject? (나는 직후에 umount.target합리적이라고 상상 한다 ...)


컴퓨터에 다른 OS가 있거나 재부팅 할 때 왜 CD를 꺼내고 싶습니까? 이런 이유로 CD 또는 디스크에서 부팅할지 여부를 선택할 수있는 부팅 메뉴를 설정하는 것이 좋습니다.
엠마누엘 버그

CD를 마운트 해제 한 후에도 여전히 initramfs의 내용이 남아 있지 않습니까? 거기 eject가 있다면 괜찮을까요?
Ulrich Schwarz

기다려. 그거 이상 하네. Linux Mint, 우분투는 기본적 으로이 작업을 수행한다고 생각합니다.
Linuxios

답변:


4

결국 제 동료는 다음 기사를 찾았습니다.

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

요약하면, 나는 /lib/systemd/system/eject.service포함 하는 파일을 만들었습니다

[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

나는 또한 systemctl enable eject.service이것이 실제로 무엇 이든 할 수 있도록 달려야 했습니다 . 그러나 이제는 systemd내가 원하는대로 종료 직전에 CD를 꺼냅니다.

불행히도 OS가 CD를 꺼내서 나머지 파일을 찾지 못하면 여전히 segfault입니다. 우리는 그래서 나는 위의 파일을 조정하려고 After=unmount.target하는, 당신이 생각하는 것 파일 시스템이 마운트 해제 한 후 실행을 스크립트를. 그러나 아닙니다, 여전히 segfaults입니다.

부팅시 라이브 CD 이미지를 RAM에 복사하는 방법을 알아 내야 할 것 같습니다. 그러나 그것은 다른 질문입니다.


1

다음이 도움이 될 수 있습니다.

  • /etc/init.d/halt.local에 eject 명령을 추가하십시오.

  • /etc/init.d/skeleton 템플릿을보고 시스템 종료와 같은 출력을 추가하도록 사용자 정의하거나 cdrom을 추출하는 키를 누르십시오.

  • /etc/init.d에서 실행 레벨 디렉토리 /etc/rc0.d (중단)에 링크 된 스크립트를 확인하십시오.


0

/etc/init.d실행 레벨 디렉토리 /etc/rc0.d(halt) 및 /etc/rc6.d(reboot)에 링크 된 스크립트를 확인하십시오 . 예를 들어, eject 명령을 넣고 /etc/init.d/reboot잘 작동했습니다.

그러나 나는 라이브 CD에 없으므로 작동하는 것을 테스트 할 수 없습니다.

당신이 그것에 대해 생각하면, 이런 식으로 상상하기 어렵고 스크립트 나 컴파일 된 바이너리를 넣습니다. 바이너리조차도 할당 / 할당 해제 오버 헤드가 필요하며 CD를 꺼내 자마자 완료됩니다. 오히려, 그것은 매우 영구적 인 메모리에 저장된 기계 명령에 대한 플래그 및 포인터와 같아야합니다 ...

어쩌면 명령을 실행하고 의도적으로 OS를 중단시키는 것이 더 쉽지만 거의 모든 항목이 오프라인 상태 일 때 수행하는 것이 나머지 시스템을 중단시키는 것은 중요하지 않습니다.

(편집) 다른 생각 : 어떻게 든 파일 시스템을 분할하여 꺼내기 명령에 대한 파티션을 만들고 재부팅하고 다른 모든 마운트를 해제 한 다음 명령을 실행할 수 있습니까? (그렇지만, fsck는 항상 꺼내기 파티션이 올바르게 마운트 해제되지 않았다고 불평하지 말아야 할 것입니다.) 또는 USB 스틱에 넣을 수 있습니까? (이것은 매우 흥미로운 문제입니다. 해결하면 알려주십시오!)

(편집 2) 무엇에 대한 병합 당신이 얻을 수 있도록, 배출하고 재부팅을 이진, 그것은 꺼내기가 CD 배출하지만, 어떤 파일 시스템에서 부하 재부팅 할 필요가 없습니다, 그것은 메인 메모리에 이미 메모리에로드?


0

우분투는 사용할 수 있습니다 eject -m; reboot -f

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.