Прошло уже почти три месяца со дня публикации сообщения о патчах к загрузочному коду. И вот, на прошлой неделе я решил заняться этим вплотную. В итоге, создал бранч в SVN, куда стал коммитить свои наработки. Теперь все жалющие принять участие в тестировании могут это сделать :)
Историю изменений можно посмотреть здесь: http://svn.freebsd.org/base/user/ae/bootcode/
Патч относительно 10-CURRENT тут: http://people.freebsd.org/~ae/boot.diff
Какие изменения были сделаны:
Историю изменений можно посмотреть здесь: http://svn.freebsd.org/base/user/ae/bootcode/
Патч относительно 10-CURRENT тут: http://people.freebsd.org/~ae/boot.diff
Какие изменения были сделаны:
- На основе кода, используемого в GEOM_PART были написаны функции, предоставляющий интерфейс для поиска таблицы разделов на носителе и выдачи информации о разделах.
- Было удалено много старого, дублирующегося кода.
- Похожий по назнаению код в "драйверах" дисков загрузчика был унифицирован и объединён в нескольких функциях, а так же переписан с использованием нового API работы с таблицами разделов.
- zfsloader был научен использовать информацию о таблицах разелов, что значительно ускорило его работу на системах, в которых установлено много жёстких дисков.
- loader теперь умеет полноценно работать с GPT, т.е. проверяеят контрольные суммы, в случае необходимости умеет находить резервную копию GPT.
- В код PMBR так же внесены изменения, которые научили его находить резервную копию GPT, только CRC он не проверяет из-за ограничений на объём кода.
- gptboot и PMBR при обнаружении повреждений в заголовке основной таблицы GPT ищут резервную копию в последнем секторе. Если же там её нет, но есть метаданные GEOM класса, то они смотрят в предыдущем секторе. Т.е. теперь, иметь GPT внутри GEOM_MIRROR стало ещё безопаснее, даже в случае поверждения основной таблицы, загрузочный код сможет найти резервную.
Т.к. gmirror и gpt конфликтуют в некотором смысле, то мне кажется, что было бы правильней изменить логику gmirror. Все таки GPT это общий стандарт, в отличие от чисто фряшного gmirror'а.
ОтветитьУдалитьВ списке рассылки был небольшой флейм на эту тему и мнения тоже разделилось на два лагеря:
Удалить1. Что когда мы используем FreeBSD и мы понимаем, что мы делаем, такое поведение загрузчика было бы удобным.
2. Что не стоит поощрать пользователей плодить несовместимые с другими ОС системы.
Сами патчи не влияют на GPT никак, но в любом случае, в текущей версии этот функционал убран.
Что в итоге решили? Я видел, что уже в HEAD'е?
Удалитьда, уже пишу отчёт :)
Удалить