编译linux内核 形成可运行的自己的linux系统
来源:互联网 发布:中国机电行业相关数据 编辑:程序博客网 时间:2024/06/11 03:50
开始学习linux,老师说可以建立一个自己的linux操作系统。感觉很神奇。
开始的时候就是看了些资料。说的是通过livecd(linux from scratch),来构建自己的linux系统。记得那份资料大楷有六十来页,自己跟着做了大楷一半,出了无数的错,说到底还是兼容性,版本的问题。这个livecd是通过构建新的编译工具链来构建。对于自己这个初学者来说还是太麻烦了。其实这些工具链其实可以在一些发行版linux找到。自己用的比如(centos)。后来就选择另外的构建方法:交叉编译。
这有目标机,主机的区分。大楷什么意思也不用太仔细说,就是一个机器编译,在另一个机器上执行。调试的话,可以选择虚拟机来调试。
能够运行的linux最基本的的两个东西:内核,文件系统(选择的是busybox-1.21.0)。
大楷思路:有两种方法:
1把内核的bzimage和busybox中的文件系统(initrd)打包成iso文件(当然还要加载grub)。形成的xx——linux.iso。可以用虚拟机打开调试。
有篇文章写的非常好,开始自己做的时候都是根据这个步骤弄的。搜索::基于Linux源代码及Busybox源代码制作精简可启动内核镜像方法
2直接把文件系统编译进内核形成bzimage,然后用grub加载就可以了。
下面就介绍第二种方法:
步骤:
1,下载linux内核源代码,(最好是最新版本的,);我选择的是linux-3.13.5 。放在主机(centos)上
2 ,因为是把文件系统编进内核。所以先编译busybox'。
2.1 :下载busybox,busybox-1.21.0.tar.bz2
2.2 :拷贝到centos(主机)中,然后解压。命令 tar -xyzf
2.3 : 在解压目录运行命令:make menuconfig 注:选择静态编译。Busybox Settings –> Build Options –> Build Busybox as a static binary
2.4:编译,命令:make 注: 最好还是选择编译的目的文件夹,是为了不污染源文件。可以选择 make后面跟参数 O=/dir。
2.5 : 安装,命令:make install .安装完成后会形成一个_install的文件夹。
2.6:这步就是配置形成_install文件夹里面的一些东西。因为在上面提到的那个搜索出的文章里面有详细的说明,就不详细阐述了。注:在_install中运行这句shell是非常重要的。ln -sv ./bin/busybox init 因为不加的情况下后面在启动系统的时候会出现这种情况
。
3,编译linux内核:
3.1 :make i386_defconfig (这个事自己选择32位(make i386——defconfig)还是64位(x86_64_defconfig));
3.2 :make menuconfig (配置菜单,)注:可能在后面出现有些错误,简单的方法就是在运行make menconfig后出现的菜单项中删除出现错误的选项。
注:因为自己为了简单就直接把文件系统编译到bzImage里面。所以这里就需要文件系统(选择简单的(busybox):编译busybox后面再说。)
3.2.1 在menuconfig 里面可以选择选择自己编译的文件系统。 下面两个是必须的。
3.2.2 :General Setup –> Initial RAM filesystem and RAM disk support
- 编译linux内核 形成可运行的自己的linux系统
- 编译可调试的Linux内核
- Linux 内核的编译系统
- Linux 内核的编译系统
- linux内核编译(自己实践过的)
- 使用自己编译的在Android上运行的内核(Linux Kernel)
- 使用自己编译的在Android上运行的内核(Linux Kernel)
- 编译Linux系统内核的方法步骤
- linux内核的运行
- Linux内核编译运行
- linux-0.11 GCC4.3下可编译运行的源码
- android手机编译可运行的linux程序
- Linux内核的编译
- Linux内核的编译
- Linux内核的编译
- linux内核的编译
- linux内核的编译
- linux内核的编译
- Cisco Packet Tracer模拟器使用
- usaco training 5.3.1 Milk Measuring 题解
- 可视化编辑器-bootstrap-wysiwyg
- win7打开和关闭本机的8080端口
- 【Android自动化打包】01. aapt的用法
- 编译linux内核 形成可运行的自己的linux系统
- VS2010(MFC)添加POPUP MENU的方法
- XFD5410开发板
- 关于字符串和格式化输入输出的学习
- 【Python】KeyError解决方法
- ssh无密钥登陆
- 区分挂载的分区是否是移动硬盘并返回最大剩余空间的本地磁盘
- 向监听类传递参数
- AsyncTask的缺陷