第一步: 对硬件进行设置,使其满足要求并下载内核:
1. 新添加一块20G的硬盘及修改内存:
‘贰’ 内核编译以及如何得到kernel
注:不仅要对机器本身有了解,还要对Linux系统有一定的了解)有一定的理解——这是一个难题。
因此一个Linux新手是根本不会尝试编译内核的。这篇文章中展示了一些在使用“make xconfig”命令编译内核过程中的截图。
使用这个命令(“make xconfig”),用户可以通过图形用户界面(GUI)和鼠标来对内核进行处理。
这里有差不多40张截图,它们解释了在某种特定的情况下为什么你需要或不能选择某个特定的内核选项(options)。
将这40幅截图逐一讨论看上去似乎有些夸张,但这的确是解释内核的内部工作机理(internal
workings)以及特定内核选项存在的原因和工作原理的比较好的方法。
这些截图是kernel-2.4.6的。最新的内核是2.4.19,但是除去在菜单中有一些新的项目(e.g.对新硬件的支持)以外,
屏幕的显示以及编译的过程应该是一样的。建议你在开始编译前把这篇文章打印出来,这样你就可以随时查找必要的信息!
本文的结构如下。首先讨论你在Internet的什么地方能够找到内核的源码以及如何安装这些源码,
然后通过屏幕截图讨论使用图形界面配置内核。 一旦内核配置完毕,它就需要被编译,但是一个新编译的内核并不能直接使用。
首先,新内核需要和引导程序“lilo”一起安装,然后,在使用lilo前你必须写配置文件“/etc/lilo.conf”。
另外,还有需要指出一些特殊的要点(specific points),比如笔记本电脑需要的PCMCIA支持。
看上去象信用卡的PCMCIA,小型板卡(small inserts)通常负责联网任务,在2.4.x的内核中已经可以直接提供支持。
但之前的内核需要重新编译安装后才能提供PCMCIA支持。SuSE Linux还有一个问题,那就是ALSA声卡驱动程序的音效支持。
这些驱动程序并不是内核的一部分,它们需要被编译进去然后重新安装,因为原始的驱动程序通常没有工作。
更麻烦的是,从一个系列的内核转到另一个系列的内核,比如从2.2.x系列转到2.4.x系列, 可能会由于使用某种(某些)内核工具(kernel
utilities)而产生一些问题。 这就是所谓的“motils”(译者注:可以看为“Moles
Utilities”的所写,这样就不会对这个名称感到费解了),包括代码(code)需要载入(load)的内核模块(kernel
mole):图3解释了什么是内核模块。 有时新内核不知道如何处理老的motils,所以你必须编译和安装更新版本的motils。
这样的问题虽然不多但是它们的确存在,而且目前只能预先指出它们。
但是如果你完全按照本文的步骤进行,几乎不会发生错误。新内核被添加到lilo,或者被复制()到loadlin所在的分区。
因此,在紧急情况下,你仍然可以通过老内核启动机器。然后可以在老内核下试着解决新内核的问题。
即使你遇到motils的问题,你也可以从老内核重新启动计算机,然后通过将它们(内核和motils)分别编译和安装来修复(fix)这个问
题: 所有新版本的motils都对老内核向下兼容,所以新motils在老内核下可以很好的工作。
‘叁’ 怎样才能把framebuffer正确编译进内核
GRUB配置文件 grub.conf 里现在使用的内核的 kernel 一行最后加上vga=ask(前面加空格和别的部分隔开); 重启linux,会停在一个系统支持分辨率列表的界面,选择想要的分辨率进入。 进系统后应该有framebuffer开启,有设备文件 /dev/fb0 。
‘肆’ beaglebone black 编译内核时出现问题
更改文件 drivers/gpu/drm/tilcdc 下的Kconfig
改为如下
config DRM_TILCDC
tristate "DRM Support for TI LCDC Display Controller"
depends on DRM && OF && ARM
select DRM_KMS_HELPER
select DRM_KMS_CMA_HELPER
select DRM_GEM_CMA_HELPER
select OF_VIDEOMODE
select OF_DISPLAY_TIMING
select BACKLIGHT_CLASS_DEVICE
help
Choose this option if you have an TI SoC with LCDC display
controller, for example AM33xx in beagle-bone, DA8xx, or
OMAP-L1xx. This driver replaces the FB_DA8XX fbdev driver.
‘伍’ LINUX内核编译
到kernel.org下载最新的内核,然后解压, cd 到你解压的目录
1. make menuconfig
2. make -j4
3. make moles_install
4. make install
---------------------------------------
OK!
‘陆’ linux kernel 4支持checkpoint么
androidkernel和linxukernel比较,Android系统的Kernel主要增加如下内容“ 基于ARM架构增加Gold-Fish平台,相应增加的目录如下: kernel/arch/arm/mach-goldfish kernel/include/asm-arm/arch-goldfish Gold-Fish平台采用的是ARM926TCPU作为BaseBand处理器,该CPU主频至少为200MHZ.而要流畅运行Android系统的CPU主频至少要在400MHZ以上,也就是说如果你要上Android系统,最好是选用基于ARM11及以上平台进行开发。 2.增加了yaffs2FLASH文件系统,增加的目录为:kernel/fs/yaffs2 实际上,Android包经过编译后生成的system.img和ramdisk.img文件就yaffs2格式的包. 3.增加了Android的相关Driver,相应目录为: kernel/drivers/android 主要分为: AndroidIPC系统:Binder Android日志系统:Logger Android电源管理:Power Android闹钟管理:Alarm Android内存控制台:Ram_console Android时钟控制的gpio:Timed_gpio 4.增加了switch处理,相应的目录为:kernel/drivers/switch/ 5.增加了一种新的共享内存处理方式,相应增加的文件为:kernel/mm/ashmem.c 6.其他为Linux-2.6.25内核所做的补丁等等,例如BlueTooth, 另外GoldFish平台相关的驱动文件如下: 1.字符输出设备: kernel/drivers/char/goldfish_tty.c 2.图象显示设备:(FrameBuffer) kernel/drivers/video/goldfishfb.c 3.键盘输入设备: kernel/drivers/input/keyboard/goldfish_events.c 4.RTC设备:(RealTimeClock) kernel/drivers/rtc/rtc-goldfish.c 5.USBDevice设备: kernel/drivers/usb/gadget/android_adb.c 6.SD卡设备: kernel/drivers/mmc/host/goldfish.c 7.FLASH设备: kernel/drivers/mtd/devices/goldfish_nand.c kernel/drivers/mtd/devices/goldfish_nand_reg.h 8.LED设备: kernel/drivers/leds/ledtrig-sleep.c 9.电源设备: kernel/drivers/power/goldfish_battery.c 10.音频设备: kernel/arch/arm/mach-goldfish/audio.c 11.电源管理: kernel/arch/arm/mach-goldfish/pm.c 12.时钟管理: kernel/arch/arm/mach-goldfish/timer.c
‘柒’ Linux内核编译要用什么工具
GNU toolchain工具链
包含binutils/gcc/glibc
binutils包含链接器,汇编器等处理obj文件的工具
gcc是编译器
glibc是GNU的标准C库
这是一个最小集合,除此之外工具链还有其他的一些工具,比如:
make,tar,ncurses等等
参考资料是如何从源代码构造Linux(LFS)关于工具链的说明
‘捌’ 我在Ubuntu10.10中成功编译好linux内核后在kernel version 中显示 2.6.29-gb0d93fb-drirty
dirty表示内核的源码是dirty的,至于这个dirty是什么意思,我还真不知道,我以为是代码有小bug,不简洁什么的,如果你看源码,会有XXX-dirty这种文件
‘玖’ Linux0.11内核编译后可不可以运行程序
能运行,只是0.11的版本功能比较少,比较傻瓜,所以并不能很好的支持现在各种应用程序,只能是简单的而已。为何要用这个跑程序,现在的0.11的作用只能为了那些学习内核知识的人,毕竟简单,我就研究过这个代码,对基础支持了解很有帮助。跑程序就没必要了。
‘拾’ 编译内核,支持ntfs的步骤
1. # cd /usr/src/linux-2.4
2. # make menuconfig
3. 选中File System下的NTFS file system support (read only)为M
4. # uname -a
2.4.21-27.0.2.EL
5. # vi Makefile
确保前几行为
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 21
EXTRAVERSION = -27.0.2.EL
6. # make dep
7. # make moles SUBDIRS=fs/ntfs
8. # mkdir /lib/moels/2.4.21-27.0.2.EL/kernel/fs/ntfs
9. # cp -f fs/ntfs/*.o /lib/moels/2.4.21-27.0.2.EL/kernel/fs/ntfs/
10. # depmod -a
11. # modprobe ntfs
12. # lsmod
确保有ntfs在里面,更多内容请查看《Linux就该这么学》。