не может заставить его работать с ядром 4.19 и форматом LUKS 2 . userland может читать/записывать GPT на /dev/mapper/${name}, но partprobe
| partx
| blockdev
| hdparm
все не могут предоставить ядру внутренний GPT LUKS.
Вы можете сделать это с базовым дистрибутивом perl, не нужно устанавливать дополнительные пакеты:
use strict;
sub IO::Handle::icanon {
my ($fh, $on) = @_;
use POSIX;
my $ts = new POSIX::Termios;
$ts->getattr(fileno $fh) or die "tcgetattr: $!";
my $f = $ts->getlflag;
$ts->setlflag($on ? $f | ICANON : $f & ~ICANON);
$ts->setattr(fileno $fh) or die "tcsetattr: $!";
}
# usage example
# a key like `Left` or `á` may generate multiple bytes
STDIN->icanon(0);
sysread STDIN, my $c, 256;
STDIN->icanon(1);
# the read key is in $c
Чтение только одного байта может быть плохой идеей, потому что это просто оставит мусор, который будет считан позже при нажатии клавиши, такой как Left
или F1
. Но вы можете заменить 256
на 1
, если хотите, несмотря ни на что.