当前位置:首页 » 编程软件 » 内核文件系统编译

内核文件系统编译

发布时间: 2023-08-19 09:34:50

1. 三、内核&文件系统编译

一、编译官方提供的内核源码

1、解压官方提供的内核源码包

2、根据官方提供的配置文件对内核进行配置,方式如下
make  ARCH=arm      xxxxx_defult_config
cp   arch/arm/xxxxx_config    .config

3、打开图形界面对内核进行配置,根据需要增加或者删除模块和其他内容

4、对内核进行编译
make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    uImage  -j6
或者编辑Makefile文件,对其中的ARCH变量和CROSS_COMPILE变量进行修改,然后执行make uImage

5、在编译编译的时候回出现mkimage命令缺失,这个命令是UBootr提供的,在编译的UBoot路径下面找到这个命令,即可直接使用

6、编译的时候各个方面需要一致性,
                1、编译的内核的交叉编译工具链如果支持硬件浮点数运算那么在配置内核的时候也需要添加硬件浮点数的支持
                        Kernel Features --->
                            [*] Use the ARM EABI to compile the kernel
                2、在编译的内核的时候注意保持不要做太多的修改,否则会出问题

7、编译内核模块
    make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    moles  -j6

8、安装内核模块到指定的目录中去
make moles_install ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- INSTALL_MOD_PATH=/home/fu/hisi/kernel/build

9、不要采用内核模块安装的命令来安装内核,因为内核不需要安装,在arch/arm/boot/uImage就是所需要的内核文件

二、编译官方提供的busybox来构建根文件系统

1、解压需要编译的busybox源码

2、进入源码中对busybox进行配置,主要是配置交叉编译工具链
Busybox Settings --->Build Options ---> 下面有关于busybox是否配置为采用共享库的模式,还有添加交叉编译工具链的前缀

3、配置需要的文件和命令进行添加或者删除

4、然后执行命令make -jn   && make install

5、创建根文件系统需要的其他的文件和目录,在一个空白的目录中首先拷贝busybox/_install下面的bin、sbin、usr目录到空白目录中,在空白目录中创建其余的所需要的目录文件 bin dev etc home lib linuxrc mnt opt proc sbin sys tmp usr var等以上目录

6、接下来在lib目录中复制内核模块,在编译内核的时候模块安装在了指定的地方,直接拷贝过来就行。

6、创建文件系统所需要的其他文件,配置文件(最简单的办法就是直接复制busybox文件下面的example文件夹里面的东西)
1、/etc/inittab     填写或者    一下是最基本的,还有其他的需要填写
# /etc/inittab
::sysinit:/etc/init.d/rcS                    //指定初始化脚本
::askfirst:-/bin/sh                            //指定第一次输入回车后打开的shell
::ctrlaltdel:/sbin/reboot                //指定这三个按键按下后的反应
::shutdown:/bin/umount -a -r        //指定关机是进行的操作

2、/etc/init.d/rcS                //这个就没有详细额硬性规定了,写入需要初始化的东西即可
#!/bin/sh
mount -a

3、/etc/fstab                        //写入mount -a是要自动挂载的文件系统
# device mount-point type options mp fsck order
proc          /proc        proc  defaults        0    0
tmpfs          /tmp        tmpfs  defaults        0    0

7、拷贝需要用到的库文件,在交叉编译工具链下面存放
arm-linux-xxxxxx-gcc/lib
海思的开发板是在和tahet/lib下面,切记。

2. linux如何编译安装新内核支持NTFS文件系统(

第一步: 对硬件进行设置,使其满足要求并下载内核:

1. 新添加一块20G的硬盘及修改内存:

3. 如何配置编译在mini2440开发板上运行的linux内核

参考:http://www.it165.net/os/html/201409/9334.html

系统ubuntu12.04(非虚拟机下)
mini2440
CPU型号: S3C2440AL-40
Nanflash型号:K9F1G08
Norflash型号:SST39VF1601
LCD: 统宝 240 x 320
$: 普通账户
#:root账户
*当shell下输入路径时可使用tab键自动补全

(一)建立交叉编译环境

1.将mini2440光盘中的linux文件夹拷贝到 /home/lianghuiyong 并改名为Linux_share
(其中两个文档为我后面添加进去的)

2.Ctrl+Alt+T打开shell
3.$ su - root (切换root权限)
4.# cd /home/lianghuiyong/Linux_share
5.解压安装arm-linux-gcc编辑器
# tar xvzf arm-linux-gcc-4.4.3.tar.gz –C / //注意:C后面有个空格
执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.4.3 目录。这句来自mini2440用户手册,我发现其实是安装到 /opt/FriendlyARM/toolchain/4.4.3 目录

6.# vim /root/.bashrc
7.在最后一行添加:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin //opt/FriendlyARM/toolschain/4.4.3/bin 为arm-linux-gcc 环境变量
:wq保存退出。
# source ~/.bashrc
8.# sudo gedit /etc/environment
games后面添加标记部分

9.# arm-linux-gcc -v //gcc后面有空格

测试hello.c(这是在安装了第二部分的linux示例程序才有examples/hello目录)
# cd /opt/FriendlyARM/mini2440/examples/hello
# arm-linux-gcc -o hello hello.c
# ./hello

(二)安装源代码及其他工具
创建工作目录(以下都为root环境下):
# mkdir -p /opt/FriendlyARM/mini2440

1>>解压安装linux内核源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/linux-2.6.32.2-mini2440-20100106.tar.gz

2>>解压安装嵌入式图形系统qtopia源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/x86-qtopia.tgz
# tar xvzf /home/lianghuiyong/Linux_share/arm-qtopia.tgz

3>>解压安装嵌入式图形系统 QtE-4.6.1 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/arm-qte-4.6.3-20100802.tar.gz

4>>解压安装busybox 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/busybox-1.13.3-mini2440.tgz

5>>解压安装 Linux 示例程序
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/examples-20100108.tgz

6>>解压安装 vboot 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/vboot-src-20100106.tar.gz

7>>解压安装 bootloader 源代码
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/bootloader.tgz

8>>解压创建目标文件系统
# cd /opt/FriendlyARM/mini2440
#tar xvzf /home/lianghuiyong/Linux_share/rootfs_qtopia_qt4-20100816.tar.gz

9>>解压安装目标文件系统映象制作工具 mkyaffs2image
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/mkyaffs2image.tgz –C /

10>>解压安装LogoMaker
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/logomaker.tgz –C /

(三)定制linux内核及制作文件系统

config_mini2440_x35 – 适用于 Sony 3.5” LCD 的内核配置文件
config_mini2440_t35 – 适用于统宝 3.5” LCD 的内核配置文件
config_mini2440_l80 – 适用于 Sharp 8” LCD(或兼容)的内核配置文件
config_mini2440_n35 – 适用于 NEC3.5” LCD 的内核配置文件
config_mini2440_h43 – 适用于 4.3” LCD 的内核配置文件
config_mini2440_a70 – 适用于群创 7” LCD 的内核配置文件
config_mini2440_vga1024x768 – 适用于 VGA 显示输出(分辨率 1024x768)模块的内核
配置文件

1.配置缺省文件config_t35 (统宝240x320)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# cp config_mini2440_t35 .config
# make menuconfig
出现界面
不做更改,exit退出。这样做是为了生成相应配置(统宝240x320)的头文件。

2.编译内核

在/opt/FriendlyARM/mini2440/linux-2.6.32.2 目录下编译内核
#make zImage
编译结束后,会在 arch/arm/boot 目录下生成 linux 内核映象文件:zImage(zImage 可下载到开发板测试)

3.定制linux内核(根据用户手册来走一遍)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# make menuconfig
出现配置选项:

3.1配置cpu
主菜单-->System --> Type S3C2400 Machines --> FriendlyARM Mini2440 development board
3.2配置lcd驱动
主菜单-->Device Drivers-->Graphics support-->Support for frame buffer devices-->Backlight-->LCD select-->3.5 inch 240x320 Toppoly LCD

3.3配置触摸屏
主菜单-->Device Drivers-->Input device support-->Touchscreens-->Samsung s3c24410 touchscreen input driver

3.4配置usb鼠标和键盘
主菜单-->Device Drivers-->hid devices-->USB Human interface Device

3.5 配置优盘
主菜单-->Device Drivers-->SCSI device support--> SCSI disk

3.6配置万能驱动USB摄像头
主菜单-->Device Drivers-->Multimedia devices-->Video capture adapters -->V4L USB devices-->GSPCA based webcams-->ALi USB m 5602 Camera Driver

3.7 配置CMOS摄像头驱动
主菜单-->Device Drivers-->Multimedia devices-->Video capture adapters-->OV9650 on the s3c2440 driver

3.8配置网卡驱动
主菜单-->Netwoking support-->Networking options -->选择Unix和TCP/IP

主菜单-->Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)-->
选择 <*> Generic Media Independent Interface device support
<*> DM9000 support

3.9 配置USB无线网卡驱动
主菜单-->Netwoking support-->wireless-->IEEE 802.11

主菜单-->Device Drivers-->Netwoking device support-->wireless LAN-->Wireless LAN(IEEE 802.11)-->Ralink driver support-->

3.10 配置音频驱动
主菜单-->Device Drivers-->Sound card supprt-->OSS Mixer API -->ALSA for Soc audio support-->SoC Audio for the samsung S3Cxxxx Chips

3.11 配置SD/MMC卡驱动
主菜单-->Device Drivers-->MMC/SD/SDIO card-->samsung S3C SD/MMC card

3.12 配置看门狗驱动支持
主菜单-->Device Drivers-->Watchdog Timer-->s3c2440 Watchdog

3.13 配置LED驱动
主菜单-->Device Drivers-->Character devices-->LED support for Mini2440

3.14 配置按键驱动
主菜单-->Device Drivers-->Character devices-->Buttons driver

3.15 配置PWM控制蜂鸣器驱动
主菜单-->Device Drivers-->Character devices-->buzzer driver for

3.16 配置AD转换驱动
主菜单-->Device Drivers-->Character devices-->ADC driver for

3.17 配置串口驱动
主菜单-->Device Drivers-->Character devices-->Serial drivers-->samsung S3C2440/S3C2442

3.18 如何配置RTC实时时钟驱动
主菜单-->Device Drivers-->Real Time Clock-->samsung S3C series SoC RTC

3.19 配置I2C-EEPROM驱动支持
主菜单-->Device Drivers-->I2C support -->I2C Hardware Bus support-->S3C2410 I2C Driver

3.20 配置yaff2s文件系统的支持
主菜单-->Device Drivers-->MTD-->NAND Device Support -->NAND FLASH Support
主菜单-->File systems-->Miscellaneous filesystems -->YAFFS2 file system support

3.21 配置EXT2/VFAT/ NFS等文件系统
主菜单-->File systems-->Network File Systems -->root file system on NFS

为了支持FAT32 文件系统.
主菜单-->File systems-->DOS/FAT/NT Filesystems -->VFAT (windows-95) fs support

关于mini2440 linux内核裁剪到此为止,退出后有一个是否保存提示,选择保存!

3.22 制作Linux logo

本来想使用Logomaker,结果生成的图片都是无数据的,这可能和系统内一些参数有关
使用命令方式制作logo:
在图片(open_show.png)目录下
# pngtopnm open_show.png > temp.ppm
# ppmquant 224 temp.ppm >temp2.ppm
# pnmnoraw temp2.ppm > logo.ppm
将目录下生成的logo.ppm改成linux_logo_clut224.ppm,替代linux2.6.32.2/drivers/video/logo 目录下的同名文件

4. 在编译内核版本为3.12.6中加入yaffs2文件系统时出现以下情况,如何破!!

所有人回答都不对,linux 版本总是对这些宏改来改去,搞的早期的软件都不支持了,比如说:
早期内核是这样定义的:
typedef uid_t kuid_t;

typedef gid_t kgid_t;

linux 3.1以后内核,不知道世界某个角落的2B程序员奇思妙想,改成下面这样的:
typedef struct {
uid_t val;
}kuid_t;
typedef struct {
gid_t val;
}kgid_t;

看到上面的代码,你就会明白,所有引用到uid_t和gid_t变量的地方,都要改为下面的调用方法:
ia_uid.val;
ia_gid.val;

5. Linux用户程序如何编译到文件系统里去。

这个就类似于自己制作Linux发行版的rootfs了。不同系统不同环境制作方法是不同的。比如我有块板子我是用yocto自己生成rootfs的,随意加入任何东西,当然不只是简单改makefile。

最省事的方法是把已经做好的rootfs解包出来,把文件复制进去,然后再打包就完事了。

6. linux内核编译和根文件系统制作过程

内核编译:
make
menuconfig配置相应的平台,然后保存退出直接make命令就可以编译了。
文件系统制作:
一般都用busybox开源软件来做,下载,解压,然后make
menuconfig配置你想要的属性,然后保存退出,make就可以了,然后make
install就会在目录下看到__install的目录就是你要的根文件系统目录了。

7. linux 文件系统 内核编译

1、第一条命令没问题;
2、第二条命令:
#mkfs.ext2 myfs
myfs is not a block special device.
无路如何也要继续?(y,n)
这时要输入y
3、第三条命令,linux kernel不支持myext2文件系统。我猜你是想要在红帽或ubuntu上mount一个ext2文件系统的loop设备,但是想使用myext2的文件系统驱动,对吧。我没有这么做过,猜不出你的myext2摘出来之后是什么样子的。我以前试过在linux安装新的文件系统支持,比如fuse系统,源码编译通过后会生成一个.ko的模块文件,使用insmod命令将其加入内核,才能获得内核对该文件系统的支持。我想你可能也应该这样做,你应该需要生成一个类似myext2.ko的模块,然后将其insmod到内核中去。

8. linux内核主要由哪几个部分组成

一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。

1、内存管理
内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。

Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。

2、进程管理
进程管理主要控制系统进程对CPU的访问。当需要某个进程运行时,由进程调度器根据基于优先级的调度算法启动新的进程。:Linux支持多任务运行,那么如何在一个单CPU上支持多任务呢?这个工作就是由进程调度管理来实现的。

在系统运行时,每个进程都会分得一定的时间片,然后进程调度器根据时间片的不同,选择每个进程依次运行,例如当某个进程的时间片用完后,调度器会选择一个新的进程继续运行。

由于切换的时间和频率都非常的快,由此用户感觉是多个程序在同时运行,而实际上,CPU在同一时间内只有一个进程在运行,这一切都是进程调度管理的结果。

3、进程间通信
进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不用的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。

一般情况下,当一个进程等待硬件操作完成时,会被挂起。当硬件操作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制。

4、虚拟文件系统
Linux内核誉衫铅中的虚拟文件系统用一个通用的文件模型表示了各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使Linux内核支持很多不同的文件系统。

这个文件系统可以分为逻辑文件系统和设备驱动程序:逻辑文件系统指Linux所支持的文件系统,例如ext2、ext3和fat等;设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

5、网络接口
网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议庆好和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。

网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序。

(8)内核文件系统编译扩展阅读

Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet 网络。

1981 年IBM公司推出微型计算机IBM PC。

1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。

1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。

1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上,而且已经爱不释手、不能离开这个shell软件了。

1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。

1994年3月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。

1995年1月,Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行版",在市场上出售。这在经营模式上是一种创举。

2001年1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能。

2003年12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。

2004年的第1月,SuSE嫁到了Novell,SCO继续顶着骂名四处强行“塌棚化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。

热点内容
编程课v 发布:2025-02-04 08:45:00 浏览:105
模拟器能有手机脚本么 发布:2025-02-04 08:39:50 浏览:757
android显示html图片 发布:2025-02-04 08:35:31 浏览:791
如何查学信网账号及密码 发布:2025-02-04 08:33:55 浏览:502
linux32位jdk 发布:2025-02-04 08:33:55 浏览:247
康佳服务器连接失败是怎么回事 发布:2025-02-04 08:18:51 浏览:916
编译编译有什么 发布:2025-02-04 08:05:52 浏览:735
让外网访问内网服务器 发布:2025-02-04 08:02:20 浏览:783
奶块脚本菜地 发布:2025-02-04 07:46:35 浏览:238
条形码识别源码 发布:2025-02-04 07:45:55 浏览:457