• linux内核移植X86平台的例子


    bootloader支持启动多个Linux

    内核安装(X86平台)

    1、 cparch/x86/boot/bzImage /boot/vmlinuz-$version

    2、 cp $initrd /boot/

    3、 修改/etc/grub.conf或者/etc/lilo.conf

    $version为所编译的内核版本号

     

    文件linux-2.6.32.2.tar.bz2在目录/home/x86下。

    #tar jxvflinux-2.6.32.2.tar.bz2

    #cd linux-2.6.32

    #makedistclean

    #cp/boot/config-2.6.18-53.el5 .config(使用正在使用的RHEL5的内核配置作为参考

    #makemenuconfig(直接退出保存,使用默认的配置即可)

    #makebzImage(在X86平台,zImage只能小于512K的内核)

    生成后的内核映像bzImage位于arch/x86/boot下。

    #makemodules_install

     

    时间有点长,出去溜达下。。。

    完成安装后,编译好的内核模块会从内核源代码目录拷贝至/lib/modules(虚拟机的该目录,不是编译内核的目录!)下。

     

    #cd x86

    #mkinitrdinitrd-2.6.32 2.6.32

    initramdisk的作用:提供一种让内核可以简单使用的ramdkisk的能力。这些能力包括:格式化一个ramdisk;加载文件系统内容到ramdisk;将

    ramdisk作为根文件系统。

    完成操作后,在当前目录会生成initrd-2.6..32

     

    由于Linux系统启动时,会从/boot目录下来寻找内核文件和init ramdisk,所以需将内核和init ramdisk拷贝至/boot目录下。

    #cp/home/x86/linux-2.6.32/arch/boot/bzImage/boot/vmlinuz-2.6.32。

    vmlinuz-2.6.32可以任意取名

    #cp/home/x86/initrd-2.6.32 /boot

     

    为了让grub在启动时能提供一项我们自己制作的Linux内核的选择项,需要改grub的配置文件,在原有内容的基础上,添加以下代码。

    #vim/etc/grub.config

    title RedHat Enterprise Linux Server (2.6.18-53.el5)

            root (hd0,0)

            kernel /vmlinuz-2.6.18-53.el5ro root=/dev/VolGroup00/LogVol00 rhgb quiet

            initrd /initrd-2.6.18-53.el5.img

    以下是添加的

    titleMy Linux

            root (hd0,0)

            kernel /vmlinuz-2.6.32ro root=/dev/VolGroup00/LogVol00 rhgb quiet

            initrd /initrd-2.6.32

    重启虚拟机

    注意:Press any key to enter the menu

    选择My Linux


    我在想CF卡上抑制系统时候出现问题,请求大虾帮助!
       问题是这样的!
       我要做一个CF卡上的linux系统,要求开机引导后就可以运行应用程序!
       我的应用程序是叫hello,在终端打印hello,world!
       我现在是这样做的!
       
       第一阶段:制作CF卡上的LINUX系统
               环境:redhat linux 9.0   工具:CF卡和CF卡读卡器(对系统来说相当于USB设备,就是/dev/sda)
               制作步骤:
                   1. 将CF卡分一个区,并格式化为ext2文件系统,然后mount在/mnt/usb上,
                   2. 然后准备根文件系统!我用busybox工具,首先将busybox-1.00下载并静态编译!得到一个_install目录
                      目录里面有/sbin/bin /usr 目录 和一个连接文件 linuxrc。我将这些目录和文件拷贝到CF上,
                      即:cp -a/_install/*  /mnt/usb 
                   3. 然后建立其它文件系统录: /dev /etc /etc/rc.d   /lib /proc/tmp /var /mnt /boot /boot/grub
                 然后在/dev 下建立console tty tty1 ttyS0 ttyS1 null ram0 hda hda1 hdb hdb1 hdc hdc1 sda sda1
                     在/lib 下 拷入hello程序需要使用的共享库libc-2.3.2.so ld-2.3.2.so libdl-2.3.2.so等
                     在/etc 下建立一些需要的脚本文件,rc.sysinit, inittab, fstab
                    其中:inittab内容如下:
                          id:2:initdefaults:
                           si::sysinit:/etc/rc.d/rc.sysinit
                          ::askfirst:/bin/bash

                          rc.sysinit内容如下:
                          #!/bin/bash
                              umount -a 
                              mount -a 
                           fstab内容如下:
                          /dev/sda1  /   ext2   defaults1 1  
                          none /proc proc defaults 0 0
                     4. 建立initrd.img  我直接将redhat 9.0 /boot下的initrd-2.4.20-8.img拷过!
                     5.将redhat /boot下的vmlinuz-2.4.20-8内核拷到 /boot 下
                     6. 这样文件系统全部完成了!
      第二阶段: 引导系统  
              工具: grub  作为bootloader  
               步骤:  首先将/boot/grub 目录下的 stage1stage2 拷贝到 CF卡上/boot/grub目录下面
                   然后运行grub程序!

                    grub>; root (hd1,0)
                    grub>; setup (hd1)
                    grub>; quit
                  成功装如grub ,然后在/boot/grub目录下建立grub.conf脚本文件
                    default=0
                    timeout=10
                    titleCFlinux
                      root (hd0,0)
                      kernel /boot/vmlinuz-2.4.20-8 ro /dev/sda1 
                      initrd /boot/initrd-2.4.20-8.img
      然后开机,设定从USB启动, grub可以正确引导,不过系统报错: init can't  find !我的busybox是静态编译的!  


  • 相关阅读:
    根据对象中某个元素进行排序
    Bootstrap 弹出框(Popover)插件
    echarts+bmap 去掉地图左下角的logo
    get提交参数中存在空格
    long类型的转换为正常时间格式遇到的问题
    jQuery validate使用过程中遇到的问题
    问题 G: 最长公共子串问题
    1567. 乘积为正数的最长子数组长度(dp)
    C. Parsa's Humongous Tree(树形dp)
    1558. 得到目标数组的最少函数调用次数
  • 原文地址:https://www.cnblogs.com/mao0504/p/4983707.html
Copyright © 2020-2023  润新知