我最近使用内置 shell 的 BusyBox v1.18.2 访问了 STMicroElectronics Base Distribution。
我阅读了 STLinux 文档中有关我的问题的所有信息,并遵循了所有步骤。
没有目录/home/STLinux
,所以我只是创建了一个新目录。
# Step 2
[root@stlinux]# cp -r /opt/STM/STLinux-X.X/devkit/sources/kernel/linux-sh4/
BusyBox v1.18.2 (2011-07-13 20:52:52 CST) multi-call binary.
Usage: cp [OPTIONS] SOURCE DEST
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY
Options:
-a Same as -dpR
-R,-r Recurse
-d,-P Preserve symlinks (default if -R)
-L Follow all symlinks
-H Follow symlinks on command line
-p Preserve file attributes if possible
-f Overwrite
-i Prompt before overwrite
-l,-s Create (sym)links
# Step 3
[root@stlinux]#cd /home/STLinux/linux-sh4
-sh: cd: can't cd to /home/STLinux/linux-sh4
# Step 4
[root@stlinux]#make ARCH=sh CROSS_COMPILE=sh4-linux- vmlinux
-sh: make: not found
# Step 5
[root@stlinux]#make ARCH=sh CROSS_COMPILE=sh4-linux- help | grep ^mb
-sh: make: not found
# All other steps were associated with make.
# Step 9
[root@stlinux]#find . | grep "\.ko$"
[root@stlinux]#
# Step 10
[root@stlinux]# make ARCH=sh CROSS_COMPILE=sh4-linux- vmlinux
-sh: make: not found
没有这些工具包是否可以构建内核?如果没有,我如何在没有任何包管理器的情况下安装它们?
答案1
不幸的是,您无法在 STLinux 上编译 STLinux 内核。至少你不应该这样做。它们是资源有限的嵌入式设备。
您所要做的就是在另一台(Intel)计算机上拥有或安装 Linux,交叉编译内核,然后将其复制到目标计算机。
顺便说一句,交叉编译是在不同架构的机器上构建二进制文件/工具的行为。
如果您查看帖子中的 CROSS_COMPILE 指令,很明显您所遵循的教程并不是为直接在设备上使用而编写的。
例如,我在 Debian Jessie 中交叉编译了 ARM NetBSD 工具链、二进制文件和自定义内核。您必须使用本机开发工具构建工具包。
之后,STLinux 似乎对工具包进行了一些补充;然后,您将使用交叉编译器工具包的新编译器和环境来生成本机二进制文件。
这里还有另一个相关线程:如何在 Linux DVR 上安装另一个发行版
此外,我怀疑您可能在不知道自己在做什么的情况下成功编译了新内核。 ARM/Mips 架构有一些与标准英特尔有很大不同的缺陷,而且这种中国设备的内核经常遭到严重黑客攻击。
尽管如此,对于您的问题给出一个非常简短的答案,不,您将无法在您的设备上编译新内核。对于开发需求来说,RAM 和磁盘通常非常有限。