GRUB не (в настоящее время )не поддерживает LUKS2, поэтому /boot не может быть зашифрован LUKS2.
cryptsetup (начиная с версии 2.1.0 )по умолчанию создает LUKS2, если иное не указано упаковщиком дистрибутива. Так что в настоящее время ArchLinux по умолчанию создает контейнеры LUKS2.
https://gitlab.com/cryptsetup/cryptsetup/blob/master/docs/v2.1.0-ReleaseNotes:
Cryptsetup 2.1 version uses a new on-disk LUKS2 format as the default LUKS format and increases default LUKS2 header size.
The legacy LUKS (referenced as LUKS1) will be fully supported forever as well as a traditional and fully backward compatible format.
When upgrading a stable distribution, please use configure option --with-default-luks-format=LUKS1 to maintain backward compatibility.
Вы можете проверить, используется ли LUKS2 по умолчанию для вашей разновидности cryptsetup:
$ cryptsetup --help
[...]
Default compiled-in metadata format is LUKS2 (for luksFormat action).
Default PBKDF for LUKS2: argon2i
Iteration time: 2000, Memory required: 1048576kB, Parallel threads: 4
Как правило, нет веских причин избегать LUKS2, если вы знаете о предостережениях (, таких как совместимость с GRUB или чрезмерное использование ОЗУ на этапе luksOpen ).
Если по какой-либо причине вы хотите использовать LUKS1, просто укажите его:
# cryptsetup luksFormat --type luks1 /dev/sdx9
Хм-м-м, похоже на сеанс "много -кошачьих -снятия шкуры". Предполагая, что требуется только исходное количество строк, как насчет....
sed 1i$(< file wc -l) file
или
sed 1i$(sed -n "$=" file ) file
просто sed -i 1i....
сделать изменение постоянным
Использование GNU sed
, , если количество строк для файла до добавления строки счетчика:
sed -i -n '1h;1!H;${=;x;p}' file
Как это работает:
-n
:отключить печать по умолчанию.
1h;1!H;
:переместить каждую строку в h
старый буфер. (Простое H
само по себе почти сработало бы, но оно также привело бы к нежелательной пустой строке.)
${=;x;p}
:когда sed
достигает последней строки, вывести количество строк =
. Затем e x
замените полностью загруженный буфер хранения буфером шаблона и распечатайте его.
awk
раствор:
Добавить после последней строки очень просто:
awk '1; END{print NR}' file
Мы можем использовать tac
, чтобы добавить его в первую строку:
tac file | awk '1; END{print NR}' | tac
Это имеет то преимущество перед другими решениями, что файл открывается только один раз.
Альтернативаawk
-only немного сложнее, нам нужно передать файл дважды, сначала для подсчета строк, затем для печати NR в начало:
awk 'FNR!=NR{if(FNR==1)print NR-1;print;}' file file
Другаяawk
-единственная альтернатива (может быть только GNU):
awk -ireadfile 'NR==1{print split(readfile(FILENAME), l, "\n")-1}1' file