Я компилирую ядро Linux с помощью набора инструментов mipsel.
Все работает нормально, кроме самой последней точки, в которой указывается недопустимая точка входа:
sh: 0: Can't open /arch/mips/boot/tools/entry
rm -f arch/mips/boot/vmlinux.bin.gz
gzip -9 arch/mips/boot/vmlinux.bin
mkimage -A mips -O linux -T kernel -C gzip \
-a 0x80010000 -e \
-n 'Linux-2.6.31.3-g29b45174-dirty' \
-d arch/mips/boot/vmlinux.bin.gz arch/mips/boot/uImage
mkimage: invalid entry point -n
Теперь упоминается sh: 0: Can't open /arch/mips/boot/tools/entry
Итак, я проверил этот файл, и в нем есть следующее:
#!/bin/sh
# grab the kernel_entry address from the vmlinux elf image
entry=`$1 $2 | grep kernel_entry`
fs=`echo $entry | grep ffffffff` # check toolchain output
if [ -n "$fs" ]; then
echo "0x"`$1 $2 | grep kernel_entry | cut -c9- | awk '{print $1}'`
else
echo "0x"`$1 $2 | grep kernel_entry | cut -c1- | awk '{print $1}'`
fi
Теперь я понимаю, что что-то генерирует точку входа в ядро, но эта сгенерированная точка входа недействительна.
Вопрос: что именно создает точку входа в ядро и что потенциально можно сделать для устранения проблемы?
Проблема может быть воспроизведена с помощью следующих шагов:
Инструкции по составлению:
$ cd
$ wget https://github.com/steward-fu/a320/releases/download/v1.0/mipsel-4.1.2-nopic.tar.bz2
$ tar xvf mipsel-4.1.2-nopic.tar.bz2
$ sudo mv mipsel-4.1.2-nopic /opt/rg300
$ export PATH=$PATH:/opt/rg300/bin
$ git clone https://github.com/rs-97-cfw/rs97-linux-kernel-NoNDA rg300_kernel
$ cd rg300_kernel
$ ARCH=mips make uImage
/arch/mips/boot/tools/entry
исполняемый файл? Вы пробовали запустить его? - person stark   schedule 27.12.20200x
только тогда, когда запускаю. entry
. В любом случае я обновил инструкции по компиляции, чтобы воспроизвести проблему. Это небольшой образ ядра, поэтому он займет всего 2 минуты или меньше - person user0193   schedule 29.12.2020sh: 0: Can't open /arch/mips/boot/tools/entry
относится к/
, то есть к корневому каталогу, а не к тому месту, где фактически хранится ваш исходный код ядра. Попробуйте вставить несколько командecho 'KBUILD_SRC = ' $KBUILD_SRC
иecho 'obj = ' $obj
непосредственно перед командой mkimage в разделеuImage:
файла arch / mips / boot / Makefile - person sawdust   schedule 08.01.2021