summaryrefslogtreecommitdiffstats
path: root/files/halt.local.CD
blob: e34f56d14a7047a5a763e58d0d319659d39ecafd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl

use lib qw(/usr/lib/libDrakX);
use MDK::Common;
use detect_devices;
use c;

my ($device) = cat_("/proc/mounts") =~ m!(/dev/\S+)\s+/live/media\s+iso9660!;
$device or exit;

# stop plymouth
system("/bin/plymouth quit");
# send SIGRTMIN+20 to systemd to enable console output
system("/bin/kill -54 1");
# switch to console 1
system("/usr/bin/chvt 1");

# try to put halt/reboot in cache, if not called directly from them
# mount is also needed by end of /etc/init.d/halt
system("$_ --help &>/dev/null") foreach qw(halt mount reboot);

my $f = detect_devices::tryOpen($device);
# see openCdromTray() from install::any
ioctl($f, c::CDROM_LOCKDOOR(), 0); # unlock door
ioctl($f, c::CDROMEJECT(), 0);

print "\n\nPlease press <Enter> (or <CTRL><J>) once the medium is removed.\n";
system("read < /dev/console");

ioctl($f, c::CDROMCLOSETRAY(), 0);