Почему это изменение делает мое блочное устройство не загружаемым?

Я считаю, что вы ищете вариант -s . С помощью -s вы можете передавать аргументы сценарию.

В качестве фиктивного примера, чтобы проиллюстрировать это:

$ echo 'echo 1=$1' | bash -s -- Print
1=Print

Здесь вы можете видеть, что скрипту, предоставленному на stdin, задан позиционный параметр Print . Ваш скрипт принимает аргумент -u UUID , который также может быть адаптирован:

$ echo 'echo arguments=$*' | bash -s -- -u UUID print
arguments=-u UUID print

Итак, в вашем случае:

curl -fsSL http://git.io/vvZMn | bash -s -- print

Или,

curl -fsSL http://git.io/vvZMn | bash -s -- -u UUID print

Как указал Стивен Харрис, загрузка скрипта и его выполнение , невидимое зрение, является проблемой безопасности.

3
15.02.2017, 04:50
2 ответа

Для полного объяснения может потребоваться некоторая предыстория последовательности загрузки ПК. (Современные ПК с UEFI работают по-другому, но логика аналогична).

Итак, давайте вернемся в 80-е годы, когда на компьютерах впервые появились жесткие диски.

BIOS загрузит первый сектор жесткого диска. Он содержал главную загрузочную запись (MBR), которая представляла собой комбинацию кода и таблицы разделов. Для всего этого было всего 512 байт, поэтому кодирование было трудным.

MBR просматривает таблицу разделов и выясняет, какой раздел был активен и где он начинался. Затем он загрузил вторичную загрузочную систему, которая хранилась внутри этого раздела. (Исторически это означало, что вторичный загрузчик должен находиться в пределах первых 504 МБ диска). Этот код знал о файловой системе и мог загружать ОС (обычно IO.SYS, MSDOS.SYS, COMMAND.COM). Итак, DOS загрузился.Обычно новый компьютер требует "fdisk / mbr" для установки этого основного загрузочного сектора.

Тот факт, что это было программное обеспечение в MBR, сделал процесс загрузки гибким и позволил использовать альтернативные загрузчики. Первым загрузчиком для Linux был LILO («Загрузчик Linux»). У этого был первичный загрузчик, вторичный загрузчик. Он знал о стандартных файловых системах Linux и мог выполнять двойную загрузку Linux и DOS (и Windows).

Позже появился GRUB (а затем GRUB2). Но все они следуют процессу первичного / вторичного загрузчика.

Теперь вы перемещаете вторичный процесс загрузки при изменении раздела / boot. (Довольно тупой) первичный загрузчик не знает, где найти умную часть. И ваша виртуальная машина не загружается.

Что вам нужно сделать, так это современный эквивалент старого процесса «fdisk / mbr»; вам нужно указать в MBR, где найти вторичный загрузчик.

Как вы это делаете, зависит от того, какой загрузчик вы используете. Это может быть «grub-install», «grub2-install» или «lilo». Это будет зависеть от варианта ОС (CentOS, Ubuntu, Debian, Amazon ... все они могут быть разными).

Это не говорит вам , что сделать, чтобы исправить вашу сборку, но, по крайней мере, теперь вы должны понять , почему ваша ОС не загружается!

4
27.01.2020, 21:21

Обратите внимание, что загрузочный том в AWS является своего рода особым, я не смог найти место, чтобы подтвердить это и объяснить, почему, но корневой том подключен как sda1 (xvda1 ), обратите внимание на раздел номер 1 в конце, см. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/RootDeviceStorage.html. Я думаю, что это может быть причиной того, что биос не загружается с раздела, который сам содержит таблицу разделов и другие разделы.

Я не думаю, что вы можете избежать использования более одного тома, если вам нужно более одного раздела (без использования уродливых уловок, таких как петлевые устройства, прикрепленные к большим файлам в корневом разделе :D ).

0
27.01.2020, 21:21

Теги

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