В настоящее время iucode_tool вызываются с параметром --scan-system. Наверное, это хорошо для любимой домашней системы и маленького initrd. Но если хочется сделать условную live/rescue для неопределённого круга серверов с разношёрстными процессорами, вряд ли там попадётся такой же процессор, как на домашней системе. Если этот параметр закомментировать в /usr/share/make-initrd/tools/add-ucode, то всё получается, в initrd попадает полный микрокод. Но для удобства процесса напрашивается какая-то опция выбора, чтобы не лезть каждый раз в исходники.
(В ответ на комментарий №0) > В настоящее время iucode_tool вызываются с параметром --scan-system. > Наверное, это хорошо для любимой домашней системы и маленького initrd. Вообще-то make-initrd создаёт образ для _локальной_ машины. Любимой или нет. > Но если хочется сделать условную live/rescue для неопределённого круга серверов > с разношёрстными процессорами, вряд ли там попадётся такой же процессор, как на > домашней системе. make-initrd использует локальный procfs и sysfs. Если ваш неопределённый круг серверов с разношёрстными процессорами и железом настолько совместимы с машиной на которой генерируется образ, то и ucode должен положить совместимую прошивку. > Если этот параметр закомментировать в /usr/share/make-initrd/tools/add-ucode, > то всё получается, в initrd попадает полный микрокод. Вы можете показать документацию про такое поведение утилиты iucode_tool ? Что будет положено без этой опции ? Весь файл с прошивками ? > Но для удобства процесса напрашивается какая-то опция выбора, чтобы не лезть > каждый раз в исходники. Да, как только мне будет понятно, что это будет за опция.
(In reply to comment #1) > (В ответ на комментарий №0) > > В настоящее время iucode_tool вызываются с параметром --scan-system. > > Наверное, это хорошо для любимой домашней системы и маленького initrd. > > Вообще-то make-initrd создаёт образ для _локальной_ машины. Любимой или нет. Всегда любимой :) А для создания initrd для образов инсталяторов, rescue, live и прочих дистрибутивных сборок - разве какой-то иной инструмент предполагается использовать? > > > Но если хочется сделать условную live/rescue для неопределённого круга серверов > > с разношёрстными процессорами, вряд ли там попадётся такой же процессор, как на > > домашней системе. > > make-initrd использует локальный procfs и sysfs. Ок, это я понимаю. > Если ваш неопределённый круг > серверов с разношёрстными процессорами и железом настолько совместимы с > машиной > на которой генерируется образ, то и ucode должен положить совместимую прошивку. В том-то и дело, что совместимости ждать сложно. Пример: в initrd, сделанный на i7-7700, по умолчанию не попадает микрокод для E5-2620 v3. > > Если этот параметр закомментировать в /usr/share/make-initrd/tools/add-ucode, > > то всё получается, в initrd попадает полный микрокод. > > Вы можете показать документацию про такое поведение утилиты iucode_tool ? man iucode_tool: -S, --scan-system Select microcodes by scanning online processors on this system for their signa‐ tures. This option can be used only once, and it can be combined with the -s option to select more microcodes. The microcodes selected by --scan-system can also be dese‐ lected by a later -s !signature option. Should the signature scan fail, the program will print a warning to the user and continue as if --scan-system had not been specified. This is a fail‐safe condition when iucode_tool is used to install microcode updates for the next boot. > Что будет положено без этой опции ? Весь файл с прошивками ? Судя по размеру, да. Весь файл.
(В ответ на комментарий №2) > А для создания initrd для образов инсталяторов, rescue, live и прочих > дистрибутивных сборок - разве какой-то иной инструмент предполагается > использовать? А кто его предлагает использовать для создания rescue, live и прочих дистрибутивных сборок ? Это я к тому, что агрумент, что этот инструмент не кладёт что-то, что нужно для других машин совсем не аргумент, а особенность инструмента. > > > Но если хочется сделать условную live/rescue для неопределённого круга серверов > > > с разношёрстными процессорами, вряд ли там попадётся такой же процессор, как на > > > домашней системе. > > > > make-initrd использует локальный procfs и sysfs. > > Ок, это я понимаю. > > > Если ваш неопределённый круг > > серверов с разношёрстными процессорами и железом настолько совместимы с > > машиной > > на которой генерируется образ, то и ucode должен положить совместимую прошивку. > > В том-то и дело, что совместимости ждать сложно. > Пример: в initrd, сделанный на i7-7700, по умолчанию не попадает микрокод для > E5-2620 v3. Не спорю, но это правильно. > > Вы можете показать документацию про такое поведение утилиты iucode_tool ? > > man iucode_tool: Спасибо конечно, но я это читал и всё же задал этот вопрос т.к. из мана не понятно, что будет положено в образ. > > Что будет положено без этой опции ? Весь файл с прошивками ? > > Судя по размеру, да. Весь файл. А как бы получить более конкретный ответ ?
(In reply to comment #3) > (В ответ на комментарий №2) > > А для создания initrd для образов инсталяторов, rescue, live и прочих > > дистрибутивных сборок - разве какой-то иной инструмент предполагается > > использовать? > > А кто его предлагает использовать для создания rescue, live и прочих > дистрибутивных сборок ? Я затрудняюсь ответить на этот вопрос :) > > > Что будет положено без этой опции ? Весь файл с прошивками ? > > Судя по размеру, да. Весь файл. > А как бы получить более конкретный ответ ? Да, весь файл с прошивками. То, что оказывается в initrd, имеет такую-же MD5 сумму, как и полный файл в хост-системе: [root@0ab1f7f40749 z]# cat /boot/initrd-4.14.34-un-def-alt0.M80P.1-colaboot.img |cpio -id 3402 blocks [root@0ab1f7f40749 z]# md5sum kernel/x86/microcode/GenuineIntel.bin 4f9294e1327e3199e806bf0b5180e707 kernel/x86/microcode/GenuineIntel.bin [root@0ab1f7f40749 z]# md5sum /lib/firmware/intel-ucode/intel-microcode.bin 4f9294e1327e3199e806bf0b5180e707 /lib/firmware/intel-ucode/intel-microcode.bin
попробуйте: http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commit;h=5336dc1559b6bb61f7716fc130ef53864b697104
Исправлено в make-initrd 2.0.9-alt1
(In reply to comment #5) > попробуйте: > > http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commit;h=5336dc1559b6bb61f7716fc130ef53864b697104 Алексей, спасибо, проверяю. Нету ли здесь ошибки в этой строке? ']' не хватает? + +[ -z "${UCODE_ALL_MICROCODE-}" || + iucode_scan_system= +
Проверил. Опция UCODE_ALL_MICROCODE работает замечательно, с "UCODE_ALL_MICROCODE = 1" в initrd попадает полный микрокод. С UCODE_CPU_FAMILY всё не так ясно. Как я понял из исходников, там должно быть число больше 6 (и соответствовать family из cpuinfo). - что я указываю UCODE_CPU_FAMILY = 6, что UCODE_CPU_FAMILY = 7 - в initrd попадает одинаковый (по md5) маленький файлик микрокода. Кажется, переменная $cpu_family используется только для проверки, не ПентиумПро ли это. - что на i7-7700, что на E5-2620 v3 по cpuinfo получаются абсолютно одинаковые семейства, vendor_id : GenuineIntel cpu family : 6 А микрокод, как оказывается, нужен разный. Т.е. получается, эту UCODE_CPU_FAMILY не удастся использовать для выбора микрокодов для избранных процессоров?
(В ответ на комментарий №7) > Нету ли здесь ошибки в этой строке? ']' не хватает? > > + > +[ -z "${UCODE_ALL_MICROCODE-}" || > + iucode_scan_system= > + Да, опечатка. Исправлено. (В ответ на комментарий №8) > С UCODE_CPU_FAMILY всё не так ясно. Как я понял из исходников, там должно быть > число больше 6 (и соответствовать family из cpuinfo). Да. Этот параметр нужен если вы хотите положить микрокод под конкретное семейство. > - что я указываю UCODE_CPU_FAMILY = 6, что UCODE_CPU_FAMILY = 7 - в initrd > попадает одинаковый (по md5) маленький файлик микрокода. Кажется, переменная > $cpu_family используется только для проверки, не ПентиумПро ли это. Нет, если процессор AMD. > А микрокод, как оказывается, нужен разный. Т.е. получается, эту > UCODE_CPU_FAMILY не удастся использовать для выбора микрокодов для избранных > процессоров? UCODE_CPU_FAMILY влияет только на выбор файла firmware. Для конкретного процессора нужно указывать конкретную сигнатуру и такой поддержки нет.
(In reply to comment #9) > Нет, если процессор AMD. А, всё время забываю что такие бывают :) Еще раз большое спасибо!