Я получаю результат, который вы описали, попросив qemu эмулировать другой процессор, чем arm926ej-s.Но загрузка versatilepb с процессором по умолчанию работает.Я кросс-скомпилировал свое ядро и скомпилировал в него все драйверы (поэтому я не использую initrd).
Просто скачайте 100-мегабайтный набор инструментов arm-eabi из http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ (это бесплатноно они хотят вашу электронную почту, как компилятор Intel x86).У него есть установщик, просто скажите «следующий», пока не закончите, как в Windows.Затем добавьте каталог bin в ваш путь:
export PATH=~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/:$PATH
Затем вернитесь к исходному каталогу ядра и выполните
make ARCH=arm CROSS_COMPILE=arm-none-eabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-none-eabi- zImage modules
Вы можете сделать
sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- INSTALL_MOD_PATH=path_to_arm_root modules_install
, есливы можете получить доступ к файловой системе ARM с хоста.Если вы используете root NFS, это тривиально, но если вы используете образ диска, вам нужно либо:
- использовать необработанный образ диска и kpartx (зависит от того, какое ядро вашего хоста имеет dm-multipath) или
- qemu-nbd, который поддерживает qcow (и зависит от ядра хоста, имеющего поддержку сетевых устройств)
Для загрузки в qemu с диска вам нужны правильные драйверы (SYM53C8XX SCSI),Универсальный defconfig не выбирает их.