Где /cow для загрузки Linux с LiveUSB?

awk -F ';;;;' -v 'OFS=;;;;' '$4 == "Y" { $3 = "UPDATE" } $4 == "N" { $3 = "NA" } { print; }' test.txt

с test.txt, как указано в вопросе, печатает

000092;;;;2004;;;;NA;;;;N
000098;;;;0086;;;;UPDATE;;;;Y

Как указано в вопросе, я предполагаю, что у вас действительно есть только 4 столбца, разделенных;;;;(4 точками с запятой ), а не 13 столбцов, разделенных;(одиночной точкой с запятой ). Так что этот скрипт не будет работать, если у вас есть строки с дополнительными данными между группами по 4 ;.

Пояснение:

-F ';;;;'установить разделитель полей ввода
-v 'OFS=;;;;'установить разделитель полей вывода
$4 == "Y"условие :, если поле 4Y
{ $3 = "UPDATE" }действие :изменить поле 3
то же самое для NиNA
{ print; }безусловное действие :печать (результирующая )строка

1
30.11.2021, 20:23
1 ответ

На USB-накопителях LiveUSB используется оверлейная файловая система, такая как overlayfs . Есть несколько разных, поэтому я не уверен, какой из них используется, но принцип почти одинаков в каждом.

Корневая файловая система, которую вы видите, состоит из слоев. Для LiveUSB это будет

  • верхний записываемый слой
  • только для чтения -нижний уровень, содержащий образ вашей операционной системы и часто хранящийся в файле squashfs.

Сначала вы видите только файлы нижнего уровня, потому что верхний (перезаписываемый )слой пуст. Когда вы записываете новые файлы, они будут записываться на верхний слой. Но другие изменения, такие как перемещение файла и редактирование файла, фактически приведут к тому, что файл будет скопирован на верхний уровень с нижнего уровня.

Верхний слой может быть несколькими вещами. Если LiveUSB не имеет постоянства, часто временные файлы хранятся только в ОЗУ. Однако, если есть постоянство, это может быть что-то другое... возможно, это файл с возможностью записи, отформатированный с помощью EXT4.

Если это файл с возможностью записи, вы можете найти этот файл и смонтировать его отдельно от оверлейных файлов, чтобы посмотреть, что внутри.


Where is /cow and how to see its contents?

Это самая сложная часть вопроса. Дело в том, что он может больше не существовать, по крайней мере, под этим именем.

Он существовал во время выполнения initramfs. Но затем initramfs вызвал pivot _root , который переместил бы его... а затем, скорее всего, попытался размонтировать его, так что теперь ни один пользовательский процесс больше не может его видеть. Ядро должно логически все еще смонтировать его.

Если он был смонтирован с настойчивостью, возможно, удастся выяснить, что именно /cowбыло, и повторно -смонтировать его в другом месте.

1
03.12.2021, 23:25

Теги

Похожие вопросы