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是静态编译的!
linux内核移植X86平台的例子的更多相关文章
- linux 内核移植和根文件系统的制作【转载】
原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...
- linux 内核移植和根文件系统的制作
1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1 Linux版本 Linux内核的版本号 ...
- 【转】 linux内核移植和驱动添加(三)
原文网址:http://blog.chinaunix.net/uid-29589379-id-4708909.html 原文地址:linux内核移植和驱动添加(三) 作者:genehang 四,LED ...
- Linux.中断处理.入口x86平台entry_32.S
Linux.中断处理.入口x86平台entry_32.S Linux.中断处理.入口x86平台entry_32.S 在保护模式下处理器是通过中断号和IDTR找到中断处理程序的入口地址的.IDTR存的是 ...
- 基于tiny4412的Linux内核移植 --- aliases节点解析
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- 基于tiny4412的Linux内核移植 -- 设备树的展开
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- 基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- 【转】 linux内核移植和网卡驱动(二)
原文网址:http://blog.chinaunix.net/uid-29589379-id-4708911.html 一,内核移植步骤: 1, 修改顶层目录下的Makefile ARCH ...
- 基于tiny4412的Linux内核移植 -- 设备树的展开【转】
转自:https://www.cnblogs.com/pengdonglin137/p/5248114.html#_lab2_3_1 阅读目录(Content) 作者信息 平台简介 摘要 正文 一.根 ...
随机推荐
- javase学习小结一
输出格式: int num=12345; System.out.printf("%7d",number);输出结果为:空格空格12345 System.out.println(&q ...
- 初识Python装饰器
python中,一切皆对象.做为面向对象开发中非常重要的一个环节,函数有着无可替代的作用. 函数可以作为对象赋值给一个变量,可以作为元素添加到集合对象中,可以作为参数值传递给其它函数,还可以当做函数的 ...
- ABP官方文档翻译 3.3 仓储
仓储 默认仓储 自定义仓储 自定义仓储接口 自定义仓储实现 基础仓储方法管理数据库连接 查询 获取单个实体 获取实体列表 关于IQueryable 自定义返回值 插入 更新 删除 其他 关于异步方法 ...
- Oracle RAC基本概念
原文链接:http://tech.it168.com/a2012/0814/1384/000001384756_all.shtml 不同的集群产品都有自己的特点,RAC的特点包括如下几点: ·双机并行 ...
- java web 获取客户端操作系统信息
package com.java.basic.pattern; import java.util.regex.Matcher; import java.util.regex.Pattern; /** ...
- document.activeElement 过滤选择文件弹窗导致的页面失焦
在线考试页面,常常需要检测用户是否作弊. 一般是监听页面是否失焦的方式,而失焦的方式有很多种,比如QQ弹窗,切换页面,切换程序,input文件上传选择文件等 选择文件是正常情况,这种情况下需要过滤 本 ...
- pycharm导入模块的时候遇到的两个错误
1.from 包 import AES import后面一定是一个空格!!!!! 2.包的导入 上面多了一层报错 错误的原因是最外层多了一个pythonProject目录.改成下面的ok. 原因大佬这 ...
- JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox
1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...
- LocalMaxima_NOI导刊2009提高(1)
先打表,发现\(ans=\sum_{i=1}^n\frac{1}{i}\) 对于小数据可以直接打表 数据很大时,精度相对就比较宽松 欧拉-马斯刻若尼常数=调和级数-自然对数 调和级数为:\(\sum_ ...
- xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...