编译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

          3.2.2    General Setup –> Initial RAM filesystem and RAM disk support后面选择刚才我们编译形成的_install 的路径

         3.3编译
              make 
        然后找到./arch/x86/boot/目录下的bzImage 。这个就包含了需要的文件系统和内核。
  4,用grub启动
       因为开始自己下载了livecd。就可以直接在livecd里面启动。因为livecd里面配置了sshd服务。可以通过这个考到livecd里面。然后更改grub配置
最后reboot启动的就是自己构建的linux系统。下面是自己创建的一些步骤:
    4.1:进入livecd系统。
       mkdir boot
       mkdir boot/grub
       mount dev/hda1 /boot
       cp /usr/lib/grub/* /boot/grub/ -rf
       cp /root/bzImage /boot/grub  注:我上传的bzimage在root目录下总之是吧bzimage考在上述文件夹里面。
       vi grub.conf
       输入grub
        root  (hd0)     //第一个分区
        setup             //启动
       
重启界面出现:
     输入 kernel /bzImage
             boot
     
最终打开的就是我们自己构建的linux系统。

    

0 0
原创粉丝点击