Про machine ID при загрузке ядра.
Как правило при сборке ядра линукс указывается модель платки под которую идет сборка. Для каждого типа плат существуют свои конфигурационные файлы с аппаратным описанием составляющих платы (kernel_src/arch).
В каждом таком файле должна находится структурка вот такого типа (обычно она распологается в самом низу файла):
MACHINE_START(DB88F6281_BP, "Mrv Development Board") .atag_offset = 0x100, .init_machine = db88f6281_init, .map_io = kirkwood_map_io, .init_early = kirkwood_init_early, .init_irq = kirkwood_init_irq, .timer = &kirkwood_timer, .restart = kirkwood_restart, MACHINE_END
Суть этого примерно в следующем. На этапе конфигурации ядра может быть выбрано несколько типов плат для которых будет производиться сборка. Но при старте, ядро должно подхватить ту конфигурацию системы для которой запущено ядро.
Данный выбор осщуествляется через переменную юубта arcNumber. Т.е. переменная юбута arcNumber передается в ядро и сравнивается с значением DB88F6281_BP. И если они совпадают то проиходит загрузка именно этой конфигурации. При варианте что нет совпадений переменной arcNumber со всеми существующими конфигурациями на экране увидим примерно следующее:
Error: unrecognized/unsupported machine ID (r1 = 0x00000d54). Available machine support: ID (hex) NAME 0000089b LaCie d2 Network v2 0000089e LaCie 5Big Network v2 0000089c LaCie 2Big Network v2 00000b1e HP t5325 Thin Client Please check your kernel config and/or bootloader.