【问题标题】:cannot compile raspberry kernel on NTFS disk无法在 NTFS 磁盘上编译树莓派内核
【发布时间】:2021-03-03 01:25:11
【问题描述】:

对不起,我的英语不好。

我正在尝试在 NTFS 磁盘上编译 raspberry 和 jetson tx2 的内核源代码。 编译jetson的内核源代码ok,没有错误。 编译树莓派的内核源代码失败并显示以下错误消息:

*** Error during update of the configuration.

make[3]: *** [/media/u2004/LINUX_SHARED/rasp/linux/scripts/kconfig/Makefile:39: silentoldconfig] Error 1
make[2]: *** [/media/u2004/LINUX_SHARED/rasp/linux/Makefile:541: silentoldconfig] Error 2
make[1]: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/kernel.release'. Stop.
make[1]: Leaving directory '/media/u2004/LINUX_SHARED/rasp/build_output'
make: *** [Makefile:150: sub-make] Error 2

在 Ext4 磁盘中编译树莓派内核源代码时没有错误。

edit:添加编译环境和脚本 在 Ubuntu 20.04 64bit 中交叉编译。用下面的脚本编译aarch32(在Ext4分区编译ok)。

ROOT_DIR=/home/u2004/Desktop/dm
KERNEL_BUILD_DIR=${ROOT_DIR}/linux/
CROSS_COMPILE=${ROOT_DIR}/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
BUILD_OUTPUT=${ROOT_DIR}/build_output
INSTALL_MOD_PATH_EXT4=${ROOT_DIR}/copy_to_sdcard/ext4
INSTALL_MOD_PATH_FAT32=${ROOT_DIR}/copy_to_sdcard/fat32
ARCH=arm
DEF_CONFIG=bcm2709_defconfig
TARGET=kernel7

git clone --depth=1 -b rpi-4.9.y https://github.com/raspberrypi/linux
git clone https://github.com/raspberrypi/tools

export CROSS_COMPILE=${CROSS_COMPILE}
cd ${KERNEL_BUILD_DIR}
make mrproper
make ARCH=${ARCH} O=${BUILD_OUTPUT} ${DEF_CONFIG}
make ARCH=${ARCH} O=${BUILD_OUTPUT} -j4 zImage modules dtbs
make ARCH=${ARCH} INSTALL_MOD_PATH=${INSTALL_MOD_PATH_EXT4} modules_install

请帮忙。 谢谢你

【问题讨论】:

  • 您好,托管 NTFS 格式硬盘的 Windows 的确切版本是什么?
  • 谢谢,windows 10中格式化的硬盘
  • 您能否通过指向您尝试构建的内核的链接来扩充您的问题?您用于构建的命令?如果您正在为 aarch32 或 aarch64 编译?基本上,你能用重现问题所需的信息来扩充它吗?这将对您有所帮助。
  • 谢谢,我添加了更多有问题的信息。

标签: raspberry-pi kernel cross-compiling


【解决方案1】:

最后,我建议不要直接在 NTFS 分区上克隆/构建 linux 内核,因为根据我自己过去的经验,这可能会带来麻烦。

如果您想在 Windows 10 计算机上克隆/构建它,最安全的方法是,恕我直言,可以:

  • 在您的 Windows 系统上安装/使用 WSL2(免费​​,最快),
  • 在您的 Windows 10 系统上安装 VirtualBox(免费)并使用 EXT4 格式的虚拟驱动器(您可以轻而易举地导入从 Turnkey Linux 检索到的即用型(免费)Linux 开发虚拟机)。李>

以下过程使用 WSL2 完美运行:

启动 bash.ex,然后在 WSL2 bash 会话中输入以下命令:

user@kleronomas:/tmp$ mkdir so
user@kleronomas:/tmp$ cd so
user@kleronomas:/tmp/so$ ROOT_DIR=$(pwd)
user@kleronomas:/tmp/so$ KERNEL_BUILD_DIR=${ROOT_DIR}/linux/
user@kleronomas:/tmp/so$ CROSS_COMPILE=${ROOT_DIR}/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
user@kleronomas:/tmp/so$ BUILD_OUTPUT=${ROOT_DIR}/build_output
user@kleronomas:/tmp/so$ INSTALL_MOD_PATH_EXT4=${ROOT_DIR}/copy_to_sdcard/ext4
user@kleronomas:/tmp/so$ INSTALL_MOD_PATH_FAT32=${ROOT_DIR}/copy_to_sdcard/fat32
user@kleronomas:/tmp/so$ ARCH=arm
user@kleronomas:/tmp/so$ DEF_CONFIG=bcm2709_defconfig
user@kleronomas:/tmp/so$ TARGET=kernel7

user@kleronomas:/tmp/so$ export CROSS_COMPILE=${CROSS_COMPILE}
user@kleronomas:/tmp/so$ cd ${KERNEL_BUILD_DIR}

user@kleronomas:/tmp/so$ git clone --depth=1 -b rpi-4.9.y https://github.com/raspberrypi/linux
user@kleronomas:/tmp/so$ git clone https://github.com/raspberrypi/tools

user@kleronomas:/tmp/so$ make O=${BUILD_OUTPUT} mrproper
user@kleronomas:/tmp/so$ make ARCH=${ARCH} O=${BUILD_OUTPUT} ${DEF_CONFIG}
user@kleronomas:/tmp/so$ make ARCH=${ARCH} O=${BUILD_OUTPUT} -j4 zImage modules dtbs
user@kleronomas:/tmp/so$ make ARCH=${ARCH} O=${BUILD_OUTPUT} INSTALL_MOD_PATH=${INSTALL_MOD_PATH_EXT4} modules_install

user@kleronomas:/tmp/so$ ls -l ${BUILD_OUTPUT}
total 45445
-rw-r--r-- 1 user user      586 Mar  2 10:43 Makefile
-rw-r--r-- 1 user user   730037 Mar  2 11:05 Module.symvers
-rw-r--r-- 1 user user  2244428 Mar  2 11:04 System.map
drwxr-xr-x 1 user user      512 Mar  2 10:43 arch
drwxr-xr-x 1 user user      512 Mar  2 10:46 block
drwxr-xr-x 1 user user      512 Mar  2 10:44 certs
drwxr-xr-x 1 user user      512 Mar  2 11:07 crypto
drwxr-xr-x 1 user user      512 Mar  2 11:04 drivers
drwxr-xr-x 1 user user      512 Mar  2 11:07 firmware
drwxr-xr-x 1 user user      512 Mar  2 11:07 fs
drwxr-xr-x 1 user user      512 Mar  2 10:43 include
drwxr-xr-x 1 user user      512 Mar  2 11:04 init
drwxr-xr-x 1 user user      512 Mar  2 10:45 ipc
drwxr-xr-x 1 user user      512 Mar  2 11:07 kernel
drwxr-xr-x 1 user user      512 Mar  2 11:07 lib
drwxr-xr-x 1 user user      512 Mar  2 11:07 mm
-rw-r--r-- 1 user user     4840 Mar  2 10:44 modules.builtin
-rw-r--r-- 1 user user    61793 Mar  2 11:04 modules.order
drwxr-xr-x 1 user user      512 Mar  2 11:04 net
drwxr-xr-x 1 user user      512 Mar  2 10:44 scripts
drwxr-xr-x 1 user user      512 Mar  2 10:45 security
drwxr-xr-x 1 user user      512 Mar  2 11:07 sound
lrwxrwxrwx 1 user user       13 Mar  2 10:43 source -> /tmp/so/linux
drwxr-xr-x 1 user user      512 Mar  2 10:44 usr
drwxr-xr-x 1 user user      512 Mar  2 10:50 virt
-rwxr-xr-x 1 user user 14295892 Mar  2 11:04 vmlinux
-rw-r--r-- 1 user user 17819862 Mar  2 11:04 vmlinux.o


user@kleronomas:/tmp/so$ ls -ail ${INSTALL_MOD_PATH_EXT4}/lib/modules
 total 0
  844424931148038 drwxr-xr-x 1 user user 512 Mar  2 11:19 .
  844424931148037 drwxr-xr-x 1 user user 512 Mar  2 12:12 ..
17732923533530216 drwxr-xr-x 1 user user 512 Mar  2 12:12 4.9.80-v7+
  844424931148041 lrwxrwxrwx 1 user user  13 Mar  2 11:14 build -> /tmp/so/linux
 1125899907858695 drwxr-xr-x 1 user user 512 Mar  2 11:17 kernel
 1125899907858696 lrwxrwxrwx 1 user user  13 Mar  2 11:17 source -> /tmp/so/linux

然后,您必须将构建工件复制到您的 NTFS 分区中,可以从 WSL2 中的 /mnt/c 访问 C:/mnt/d 访问 D:,...

【讨论】:

  • 嗨@nguyennamdsn,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。当然没有义务这样做。
猜你喜欢
  • 2021-03-01
  • 1970-01-01
  • 2013-12-08
  • 2013-07-19
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
相关资源
最近更新 更多