之前搭建了Ubuntu10.04驱动开发环境,但是那儿的内核版本是2.6.32.27,总感觉无从下手的感觉,因为书上的内核版本是2.6.10,作为初学者不知道差异在哪里,或许不应该纠结这个问题吧。

昨天搜2.6.10版本的时候,一直没有搜到关键的文章,今天偶尔搜了关键字"kernel 2.6.10 编译"一下子命中多篇关于搭建ldd3环境的博文,看来关键字选择很重要,昨天用的关键字是"构建内核树""Linux Device Driver 驱动开发虚拟机环境",可见都没有命中问题节点,因为这个环境搭建的卡壳点就在于"kernel 2.6.10 虚拟机环境",而失败的几个关键字中都没有直接出现,难怪搜不到。(note: 谷歌搜索)

这是搜到的几篇博文的链接:

根据上面两篇文章,拷贝步骤如下:

  • 下载5.04安装包:

    http://old-releases.ubuntu.com/releases/hoary/ubuntu-5.04-install-i386.iso

  • 虚拟机(这里用的vmware12.0版本,其他的一样使用)安装,特别注意下面这点否则提示检测不到CD驱动,估计是因为这个版本的Ubuntu只能识别IDE接口的光驱吧:

    note: 创建虚拟机--》典型--》选择下载好的iso文件-》然后根据需要设置,下一步,直到出现"已选择好创建虚拟机"这个页面,选择"自定义硬件",选中"CD/DVD",点旁边的"高级",将"虚拟设备节点"改成"IDE",保存。

    自动分区就可以了--中文语言的话就不要下载折腾了--然后自动重启安装。

  • 安装Gcc

    安装盘里就有gcc,版本是3.3.5,用这个版本就可以了,版本太高编译内核会出问题。

    系统默认的源来自安装盘(还有这种说法!),所以不用更新原,直接输入:sudo apt-get install gcc

    note: 确保CD/DVD属于"已连接"状态,并且"使用ISO镜像文件",选中的就是上面的安装包。不然会提示找不到/cdrom。(我这边是,重启之后,"已连接"消失,所以就在"硬件"那里找到CD/DVD,把"已连接"打钩就可以了)

  • 安装vmware tools,但是提示,所以暂时无法安装,所以也就不能使用共享文件夹或者直接拖文件到虚拟机里面

  • 准备编译内核,先下载内核源码

    https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz

  • 因为无法直接传文件到虚拟机,所以使用USB的方法,先把文件拷到U盘里面:

     
     

  • sudo cp linux-2.6.10.tar.gz /usr/src/

    sudo tar zxvf linux-2.6.10.tar.gz

  • 编译安装:

    cd linux-2.6.10

    sudo make oldconfig

    sudo make -j4

    sudo make bzImage

    sudo make modules

    此处保存一次虚拟机快照

    sudo make modules_install

    sudo make install

  • 生成内核对应的RAMDISK文件,这个估计是用于启动用的

    sudo update-initramfs -c -k 2.6.10 这个命令不再有效

    sudo mkinitrd -o /boot/initrd.img-2.6.10 2.6.10

  • 添加启动项:sudo gedit /boot/grub/menu.lst

  • 不知道什么原因这个版本的字体有些模糊,而且在虚拟机里面操作也不是很流畅,所以决定用ssh连接它使用
    • 安装ssh,把安装盘如前挂载上:

      sudo apt-get install ssh

      /etc/init.d/ssh restart

    • 查看虚拟机ip地址

      ifconfig

    • 使用 SSH Secure Shell Client 连接虚拟机即可,登录后效果如下:
  • 此处务必记得保存一个快照
  • 保存快照后重启:

  • 测试是否成功替换内核版本:

    成功替换!

  • 接下来就是重新安装vmware tools,为了避免不必要的问题,这里绝对不安装了。
    • 重启一下ssh:
    • 配置一下IP和win7同一个网段:

    • 重启一下网络连接:

    • 还是连接ssh,把网络连接改为桥接方式,成功!(具体原理也不清楚)
    • 连接ssh

    • 提示:

    • 解决方法:
      • sudo vim /etc/ssh/sshd_config
      • 修改:

      • 重启ssh:

      • 再次连接ssh成功:

  • 使用linux,在用户根目录下有一个.bash_profile配置文件,该配置只对当前用户有效.若对所有的用户有效,修改/etc/profile文件

    使用ls -a命令可以查看到该文件.使用vi编辑器打开该文件后,在其中加入

     
     

    LANG=zh_CN.GB2312

    export LANG

  • ctags/cscope

    1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,

2)然后进入源代码根目录执行./configure,

3)然后执行make,

4)编译成功后执行make install。

 
 

小结:

  • 不要折腾工具吧,尽快学习内容吧

ldd3-2 构造和运行模块:环境搭建2的更多相关文章

  1. Windows7下Java运行时环境搭建

    第一步:下载JDK 地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,(由于Sun于2009年被oracle收 ...

  2. yarn上运行flink环境搭建

    主要完成hadoop集群搭建和yarn上运行flink 1.搭建hadoop伪集群 主要是搭建hadoop MapReduce(yarn)和HDFS 1.1 下载&配置环境变量 这里下载的ha ...

  3. 【Linux设备驱动程序】Chapter 2 - 构造和运行模块

    Hello World 模块 #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Du ...

  4. docker_facenet_image在Docker容器中运行Facenet环境搭建

    对开发和运维人员来说,可能最梦寐以求的就是一次性地创建或配置,可以在任意环境.任意时间让应用正常运行.而Docker恰恰是可以实现这一终极目标的瑞士军刀. 具体来说,Docker在开发和运维过程中,具 ...

  5. linux设备驱动第二篇:构造和运行模块

      上一篇介绍了Linux驱动的概念,以及linux下设备驱动的基本分类情况及其各个分类的依据和差异,这一篇我们来描述如何写一个类似hello world的简单测试驱动程序.而这个驱动的唯一功能就是输 ...

  6. liunx驱动----构造和运行模块

    以hello world模块为例 #include <linux/init.h> #include <linux/module.h> //在执行 insmod hlello 的 ...

  7. .net core 部署在Linux系统上运行的环境搭建总结

    安装Linux用的是腾讯云的centos7.5,需要安装有环境有mysql5.7  .netcore2.1 nginx1.14 1.首先是mysql的安装 我用的链接工具是putty,首先root登入 ...

  8. python+selenium第一步 - 环境搭建

    刚开始学习一门技术,肯定是要从环境搭建开始的,我也不例外. 首先选择需要安装的版本,我使用的是mac自带的2.7版本. selenium2,和火狐浏览器 为求稳定不会出现未知问题,我选择了seleni ...

  9. 基于Ubuntu的ORB-SLAM2项目环境搭建过程

    目录 关于ORB-SLAM2 环境搭建 已有环境 创建环境 新建项目目录 安装Pangolin 安装OpenCV 3.2 安装Eigen DBoW2 and g2o (Included in Thir ...

随机推荐

  1. Android——ImageSwitcher 图片切换

    public class ImageSwitcherActivity extends Activity implements OnClickListener,        ViewFactory { ...

  2. HDU1325

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1325 #include<stdio.h> #include<algorithm&g ...

  3. 关于codeblocks调试错误

    对于出血编程者,当代码有错误时,可能大家一般都是在程序的变量操作之后输出变量的值,但是这种方法较麻烦,工作量较大,也无法很快的找出错误,因此运用编程软件调试错误就显得尤为重要,刚才写啦一个代码,运用直 ...

  4. Linux-Apache+Mysql+PHP+PHPWind(重点Apache+PHP集成环境)

    整理Apache+Mysql+PHP+PHPWind(Apache+PHP集成环境) 一.情况简述: 1.虚拟机VM上面CentOS 2.全部yum安装(yum安装与源码安装的安装路径不同) 二.操作 ...

  5. leetcode reverse bits python

    Reverse Bits Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (re ...

  6. oracle 闪回技术

    oracle默认不启动闪回数据库 如果需要启动闪回数据库,数据库需要设置为归档模式,并启用恢复区. 1.查看是否启动闪回删除 SQL> show parameter recyclebin; NA ...

  7. oracle中行转列、列转行函数

    多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str ...

  8. PHP isset()与empty()的区别

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...

  9. StackExchange.Redis使用和封装小试

    StackExchange.Redis使用和封装小试 https://git.oschina.net/Ultralisk/ThorActor/blob/ThorActor/DBUtility/Redi ...

  10. angular directive指令相互独立

    想要让指令的使用相互间不干扰,如下: