Можно ли копировать файлы с помощью скриптов grub2?

3

Я пытаюсь проработать некоторые детали для двойной загрузки, публичного использования (т.е. контекст публичной библиотеки), который работает под управлением Windows 7 и Linux.

Я использую Windows 7 и Linux Mint. Windows 7 работает на VHD-файле (образ файловой системы, такой как squashfs в Linux). Мне нужен grub для копирования различных файлов BCD и VHD на место до загрузки Windows.

Стратегия заключается в том, чтобы скопировать другой BCD-файл на место, чтобы изменить загрузку по умолчанию с WinPE (используется для загрузки Windows в режиме обслуживания), чтобы загрузить VHD-файл, который загружает снимок (т. Е. Базовую конфигурацию Windows), и если бы я мог сделать что в загрузчике grub2 это было бы идеально.

Я использую бесплатное «Steadier State» ( http://www.steadierstate.com/ ) в качестве основы для загрузки с VHD. Требуется 2 цикла загрузки, чтобы гарантировать, что каждый перезапуск системы загружает согласованную базовую линию.

Хотя в стандартной комплектации SS не позволяет при каждой перезагрузке запускать базовую систему, я добавил скрипт завершения работы системы, который использует bcdedit для переключения ОС по умолчанию для загрузки. Он переключает его с загрузки VHD-файла на загрузку WinPE, которая оценивает условия и, если они верны, удаляет, затем воссоздает дочерний файл «snapshot.vhd», затем изменяет загрузку по умолчанию обратно на snapshot.vhd и затем завершает работу, вызывая базовую версию Windows. ОС для загрузки.

Если бы grub2 мог копировать файлы, я мог бы избавиться от необходимости загружать WinPE просто для того, чтобы заново создать snapshot.vhd и переключить ОС по умолчанию для загрузки.

Кстати, grub2 всегда загружает bootmgr, если выбрана «Windows 7». Файл / boot / BCD сообщает bootmgr, что загружать. В этом BCD есть только 2 загрузочных записи, одна для "Windows 7" (т.е. она загружает snapshot.vhd) или "Только для администраторов!" это загружает WinPE. Тайм-аут в BCD всегда установлен на ноль, поэтому вы никогда не увидите меню bootmgr.

Техническое обслуживание выполняется путем вставки USB-накопителя, который (при обнаружении) меняет bootmgr на загрузочный WinPE, чтобы можно было объединить обновления базовой линии.

Мотех человек
источник
Мне удалось найти информацию о том, как собрать grub2 с помощью модуля lua (поиск grub-extras), и я успешно запустил некоторый код lua под grub2. Тем не менее, я до сих пор не нашел способ скопировать файлы в grub2, используя lua. Lua часто используется как способ предоставления сценариев приложениям. Контекст lua, предоставляемый приложением, может быть сильно ограничен или очень неограничен, в зависимости от того, что требуется приложению. Lua выполняет некоторые действия через "os.execute", но в случае grub2, который является загрузчиком ОС, такой вызов недоступен. Нужно найти документы.
Мотечник
Я сомневаюсь, что копирование файлов возможно с grub2, с поддержкой lua или без нее. moi.vonos.net/linux/Booting_Linux_on_x86_with_Grub2/… говорит, что grub2 не реализует функцию записи в файл. Lua «grub-extras» не предоставляет объект «os» или «io». Большая часть возможностей grub2 lua предоставляется grub.run (<string>). Так что, если grub2 не обеспечивает возможности записи в файл, я подозреваю, что lua-программы grub2 также пострадают от этого ограничения.
Мотечник