Я считаю, что вы ищете вариант -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
Как указал Стивен Харрис, загрузка скрипта и его выполнение , невидимое зрение, является проблемой безопасности.
Для полного объяснения может потребоваться некоторая предыстория последовательности загрузки ПК. (Современные ПК с 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 ... все они могут быть разными).
Это не говорит вам , что сделать, чтобы исправить вашу сборку, но, по крайней мере, теперь вы должны понять , почему ваша ОС не загружается!
Обратите внимание, что загрузочный том в AWS является своего рода особым, я не смог найти место, чтобы подтвердить это и объяснить, почему, но корневой том подключен как sda1 (xvda1 ), обратите внимание на раздел номер 1 в конце, см. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/RootDeviceStorage.html. Я думаю, что это может быть причиной того, что биос не загружается с раздела, который сам содержит таблицу разделов и другие разделы.
Я не думаю, что вы можете избежать использования более одного тома, если вам нужно более одного раздела (без использования уродливых уловок, таких как петлевые устройства, прикрепленные к большим файлам в корневом разделе :D ).