建立嵌入式Linux系统

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/3741923 建立嵌入式Linux系统一、Makefile 目标在Linux顶层目录键入make help,会看到所有目标列表。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/3741923

建立嵌入式Linux系统



一、Makefile 目标
在Linux顶层目录键入make help,会看到所有目标列表。如下:
$ make ARCH=arm help
Cleaning targets:
  clean - remove most generated files but keep the config
  mrproper - remove all generated files + config + various backup files

Configuration targets:
  config - Update current config utilising a line-oriented program
  menuconfig - Update current config utilising a menu based program
  xconfig - Update current config utilising a QT based front-end
  gconfig - Update current config utilising a GTK based front-end
  oldconfig - Update current config utilising a provided .config as base
  randconfig - New config with random answer to all options
  defconfig - New config with default answer to all options
  allmodconfig - New config selecting modules when possible
  allyesconfig - New config where all options are accepted with yes
  allnoconfig - New minimal config

Other generic targets:
  all - Build all targets marked with [*]
* vmlinux - Build the bare kernel
* modules - Build all modules
  modules_install - Install all modules
  dir/ - Build all files in dir and below
  dir/file.[ois] - Build specified target only
  dir/file.ko - Build module including final link
  rpm - Build a kernel as an RPM package
  tags/TAGS - Generate tags file for editors
  cscope - Generate cscope index
  kernelrelease - Output the release version string

Static analysers
  buildcheck - List dangling references to vmlinux discarded sections and
  init sections from non-init sections
  checkstack - Generate a list of stack hogs
  namespacecheck - Name space analysis on compiled kernel

Kernel packaging:
  rpm-pkg - Build the kernel as an RPM package
  binrpm-pkg - Build an rpm package containing the compiled kernel and
  modules
deb-pkg - Build the kernel as an deb package
  tar-pkg - Build the kernel as an uncompressed tarball
  targz-pkg - Build the kernel as a gzip compressed tarball
  tarbz2-pkg - Build the kernel as a bzip2 compressed tarball

Documentation targets:
  Linux kernel internal documentation in different formats:
  xmldocs (XML DocBook), psdocs (Postscript), pdfdocs (PDF)
  htmldocs (HTML), mandocs (man pages, use installmandocs to install)


Architecture specific targets (arm):
* zImage - Compressed kernel image (arch/arm/boot/zImage)
  Image - Uncompressed kernel image (arch/arm/boot/Image)
* xipImage - XIP kernel image, if configured (arch/arm/boot/xipImage)
  bootpImage - Combined zImage and initial RAM disk
  (supply initrd image via make variable INITRD=<path>)
  install - Install uncompressed kernel
  zinstall - Install compressed kernel
  Install using (your) ~/bin/installkernel or
  (distribution) /sbin/installkernel or
  install to $(INSTALL_PATH) and run lilo
  assabet_defconfig - Build for assabet
  badge4_defconfig - Build for badge4
  bast_defconfig - Build for bast
  cerfcube_defconfig - Build for cerfcube
  clps7500_defconfig - Build for clps7500
  collie_defconfig - Build for collie
  corgi_defconfig - Build for corgi
  ebsa110_defconfig - Build for ebsa110
  edb7211_defconfig - Build for edb7211
  enp2611_defconfig - Build for enp2611
  ep80219_defconfig - Build for ep80219
  epxa10db_defconfig - Build for epxa10db
  footbridge_defconfig - Build for footbridge
  fortunet_defconfig - Build for fortunet
  h3600_defconfig - Build for h3600
  h7201_defconfig - Build for h7201
  h7202_defconfig - Build for h7202
  hackkit_defconfig - Build for hackkit
  integrator_defconfig - Build for integrator
  iq31244_defconfig - Build for iq31244
  iq80321_defconfig - Build for iq80321
  iq80331_defconfig - Build for iq80331
  iq80332_defconfig - Build for iq80332
  ixdp2400_defconfig - Build for ixdp2400
  ixdp2401_defconfig - Build for ixdp2401
  ixdp2800_defconfig - Build for ixdp2800
  ixdp2801_defconfig - Build for ixdp2801
  ixp4xx_defconfig - Build for ixp4xx
  jornada720_defconfig - Build for jornada720
  lart_defconfig - Build for lart
  lpd7a400_defconfig - Build for lpd7a400
  lpd7a404_defconfig - Build for lpd7a404
  lubbock_defconfig - Build for lubbock
lusl7200_defconfig - Build for lusl7200
  mainstone_defconfig - Build for mainstone
  mx1ads_defconfig - Build for mx1ads
  neponset_defconfig - Build for neponset
  netwinder_defconfig - Build for netwinder
  omap_h2_1610_defconfig - Build for omap_h2_1610
  pleb_defconfig - Build for pleb
  poodle_defconfig - Build for poodle
  pxa255-idp_defconfig - Build for pxa255-idp
  rpc_defconfig - Build for rpc
  s3c2410_defconfig - Build for s3c2410
  shannon_defconfig - Build for shannon
  shark_defconfig - Build for shark
  simpad_defconfig - Build for simpad
  smdk2410_defconfig - Build for smdk2410
  spitz_defconfig - Build for spitz
  versatile_defconfig - Build for versatile


  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build
  make O=dir [targets] Locate all output files in "dir", including .config
  make C=1 [targets] Check all c source with $CHECK (sparse)
  make C=2 [targets] Force check of all c source with $CHECK (sparse)

Execute "make" or "make all" to build all targets marked with [*]
For further info see the ./README file

二、内核配置
Kconfig(或Kconfig.ext文件)在大约300个内核子目录中存在。Kconfig用于配置处理,其内容被配置子系统解析,表示用于对配置的选择。

配置工具(如gconf)读入来自arch子目录的Kconfig文件,如下:
gconfig:$(obj)/gconf
 $< arch/$(ARCH)/Kconfig
取决于你建立的架构,gconf读入指定架构的Kconfig作为顶层配置定义。Kconfig包含大量代码行,看起来如下:
source "drivers/pci/Kconfig"

注:GConf是在基于GNOME2的系统中用于应用程序属性配置和管理的工具,完成类似于Windows操作系统注册表的功能。GConf 包括一个配置数据库系统。

ARM架构的部分Kconfig列表如下:
arch/arm/Kconfig <<<<<< (top level Kconfig)
|-> init/Kconfig
| ...
|-> arch/arm/mach-iop3xx/Kconfig
|-> arch/arm/mach-ixp4xx/Kconfig
| ...
|-> net/Kconfig
| |-> net/ipv4/Kconfig
| | |-> net/ipv4/ipvs/Kconfig
| ...
|-> drivers/char/Kconfig
| |-> drivers/serial/Kconfig
| ...
|-> drivers/usb/Kconfig
| |-> drivers/usb/core/Kconfig
| |-> drivers/usb/host/Kconfig
| ...
|-> lib/Kconfig

三、定制配置选项
为指定硬件平台定制配置选项,如…/arch/arm/Kconfig片段:
source "init/Kconfig"
menu "System Type"
choice
  prompt "ARM system type"
  default ARCH_RPC
config ARCH_CLPS7500
  bool "Cirrus-CL-PS7500FE"
config ARCH_CLPS711X
  bool "CLPS711x/EP721x-based"
...
source "arch/arm/mach-ixp4xx/Kconfig

四、内核文档
Linux源码树包含大量的有效信息,在Documentation目录包含大约42个子目录,至少650个文档。虽然这些文档很容易过时,但它提供了各种特定内核子系统或概念的基础信息。

五、所需的组件
除了Linux内核,还需要下列组件来开发、测试和运行你的嵌入式Linux widget:
1)Bootloader移植和配置指定的硬件平台

2)支持所选架构的交叉编译器和相关的toolchain

3)包含支持本地硬件架构/处理器的打包的可执行文件和库的文件系统

4)目标板板载设备的设备驱动器

5)开发环境,包括主机工具软件(tools和utilities)

6)支持特定处理器和主板的Linux内核源码树


目录
相关文章
|
7天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
121 78
|
11天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
45 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
130 48
|
7天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
57 13
|
1月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
32 3
|
8天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
25 0
|
1月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
36 1
|
1月前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
85 1
|
19天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
消息中间件 缓存 Unix
[面试必备]嵌入式Linux内核开发必须了解的三十道题
[面试必备]嵌入式Linux内核开发必须了解的三十道题