存档
-
arm-linux-gcc和arm-elf-gcc的区别
使用一句话来描述 arm-linux-gcc 和 arm-elf-gc c的区别 arm-linux-gcc 是针对arm + linux的开发环境的,kernel使用的是linux,不是uclinux,arm是有硬件MMU的。 而arm-elf-gcc是针对no MMU arm + uclinux的开发环境,kernel使用的是uclinux,硬件是廉价的无MMU的arm芯片。 arm-linux-gcc倒是有点类似X86 PC环境下的linux开发,是linux嵌入式开发的基本工具。
2008年8月27日 | 归档于 Linux教程 -
制作一个最小的Linux kernel
其实没有最小, 但是可以更小! 下面我们来介绍一下如何来制作一个最小的Linux kernel Linux 能有多小呢 ? 每一个做 embedded 系统的人都把小看成第一要务,其实这是不对的。如果我们对系统的好坏和大小作图,它应该长得像 | |—- | | —– | | ——– | — |———————– 小当然不会比较坏,但不一定比较好。如果系统使用 4MB 和 5MB 没有价格或性能上的差别,那 4MB 和 5MB 是一样好的。 到底有多小 废话说了一堆,那到底 Linux 有多小呢? 好吧,各位这么有小牛顿的精神。我也只好想办法生一个答案出来了。 首先我必须声明,我的不一定最小。不要说我在欺骗世人,你的核心比我小。我无意比较,我的数据只是给大家一个参考而己。不过我欢迎大家提出自己的心得,告诉大家怎么样做出更小的核心。 我使用的是 Mandrake 内付的 2.2.15,我没有修改任何一行程序码,完全只靠修改组态档得到这些数据。 首先,使用 make xconfig 把所有可以拿掉的选项都拿得。 不要 floppy 不要 SMP,MTRR 不要 networking,SCSI 把所有的 block device 移除,只留下 old IDE device 把所有的 character device 移除 把所有的 filesystem 移除,只留下 minix 不要 sound 支援 相信我,我己经把所有的选项都移除了。这样做之后,我得到了一个 188K 的核心。 还不够小吗? OK,再加上一招,请把下列二个档案中的 -O3,-O2 用 -Os 取代。 ./Makefile ./arch/i386/kernel/Makefile 这样一来,整个核心水小了 9K,成为 179K。 不过这个核心恐怕很难发挥 Linux 的功能,因此我决定把网络加回去。把 General 中的 network support 加回去,重新编译,核心变成 189 K。10K 换个 TCP/IP stack,似乎是很上算的生意。 不过有 stack 没有 driver 也是惘然,所以我把 embedded board 常用的 RTL8139 的 driver 加回去,195K。 如果你需要 DOS 档案系统,那大小成为 213K。如果 minix 用 ext2 换代,则大小成长至 222K。 不过大家要注意,那里的大小指的是核心档的大小。那和所需要的随取记忆体是二回事。这个数字代表的意义是你需要多小的 ROM 来存放你的核心。 Linux 所需的记忆体大约在 600~800 K 之间。1MB 可能可以开机了,但可能不太有用。因为可能连载入 C 程序库都有困难。2MB 应该就可以做点事了,但可能要到 4MB 以上才可以执行一个比较完整的系统。 到底谁占了这些空间 看到这里,是不是觉得 Linux 真的有点大。好吧! 那我们就来看看谁占用了这些空间,下面这个列表是从 222K 这个核心做出来的。 # wc \ arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o \ ipc/ipc.o \ fs/filesystems.a \ net/network.a \ drivers/block/block.a \ drivers/char/char.a \ drivers/misc/misc.a \ drivers/net/net.a drivers/pnp/pnp.a \ /usr/src/smalllinux/arch/i386/lib/lib.a \ /usr/src/smalllinux/lib/lib.a \ /usr/src/smalllinux/arch/i386/lib/lib.a 结果如下 : 243 2250 81946 arch/i386/kernel/kernel.o 42 316 10569 arch/i386/mm/mm.o 173 1541 74660 kernel/kernel.o 266 2307 68053 mm/mm.o [...]
2008年8月26日 | 归档于 Linux教程 -
Unix/Linux 的 Load 初级解释
几乎每个接触类 Unix 操作系统的工程师都知道如何查看系统负载。但这东西的工作机理到底是怎样的,可能没有多少能说清楚。对比了一些相关信息,加上自己的理解,做一下笔记。什么是 Load ? 什么是 Load Average ? Load 就是对计算机干活多少的度量(WikiPedia:the system load is a measure of the amount of work that a computersystem is doing)。也有简单的说是进程队列的长度. Load Average 就是一段时间 (1 分钟、5分钟、15分钟)内平均 Load 。【最好的参考文章:UNIX® Load Average Part 1: How It Works】下面是一个 uptime 命令输出:$ uptime18:57:48 up 423 days, 3:55, 2 users, load average: 1.16, 1.12, 1.20尽管各种信息来源的定义都不太确定。能确定的一件事情是,你不能精确获取当前时间的 Load [...]
2008年8月25日 | 归档于 Linux教程 -
linux下安装arm-linux-gcc
在嵌入式开发中我们经常会用到arm-linux-gcc来编译我们的应用程序。作为arm-linux-gcc的入门,我们先看看如何安装arm-linux-gcc。 安装arm-linux-gcc还是比较简单的,我们看看Redhat9.0下的安装步骤吧。 1、将arm-linux-gcc的压缩包arm-linux-gcc-2.95.3.tar.gz解压缩; 2、将路径usr/local下的arm目录拷贝到你自己系统的/usr/local下; 3、vi /etc/profile;在出现pathmunge 的语句段后添加pathmunge /usr/local/arm/2.95.3(版本号)/bin; 4、保存对profile的修改后,执行source /etc/profile就OK了 之后你就可以用arm-linux-gcc来编译你的程序了,你也可以尝试一下哟。
2008年8月25日 | 归档于 Linux教程 -
linux下的软件包管理工具rpm
rpm命令是redhat 系列linux 最为常用的软件包管理工具 rpm -q name查询指定名称的内核版本号rpm -qa列出全部内核,可以在最后加上 |more可以将结果提供给grep命令rpm -qa | grep wrenamerpm -qc 列出软件包的所有配置文件rpm -qd 列出软件包中的所有文档,这些文件可能是联机手册rpm -qi 显示软件包的详细信息,包括安装日期,版本号等rpm -ql 列出软件包的所有文件。rpm -qs 列出软件包的所有文件状态 安装使用 rpm -i如果要强迫安装错误的软件包 使用如下命令rpm -i -force warename 删除 应用Rpm -e name不需要输入全部的软件名称 仅需要输入软件包的名称 -即 版本号前面的部分 rpm -e 不会删除其他软件包所需要的软件包。 升级 rpmrpm -u warename必须输入完整的软件包名。升级时会先删除旧版本再安装新版本。 校验 rpmrpm -v warename会对现有文件与源文件进行比较,如果一至不会打印任何东西。如果有修改过的文件 会列出。Rpm 校验报告使用字符说明S 大小改变M 许可文件类型不同5 用MD5算法计算的校验和不同D 设备名不同L 象征连接不同U 文件用户不同G [...]
2008年8月25日 | 归档于 Linux教程 -
解决”无法连接虚拟设备 floppy0 主机上没有相对应的设备”
默认的情况下,虚拟机的虚拟软驱是使用主机的物理软驱的,而我们现在买的电脑一般都不安装软驱,所以会提示“主机上没有相应的设备” 解决方案:在启动虚拟系统的时候,断开虚拟软驱的电源 (取消打开电源时连接) 想用虚拟软盘可以建一个映像文件。不用的话,可以直接在硬件中移除。
2008年8月25日 | 归档于 Linux教程 -
RealPlayer for Linux 11 发布
最近,RealNetworks 针对 Linux 发布了最新的 RealPlayer 11。此版本增添了如下特性: 支持 Windows Media 文件的播放 内建播放列表编辑功能 支持通过 ALSA 的 5.1 声道回放 在流媒体播放过程中,实现暂停时缓冲 你可以从这里下载 RealPlayer for Linux 11 【更多下载地址】 • bin格式 • RPM格式
2008年8月25日 | 归档于 Linux教程 -
ubuntu硬盘安装
本文阐述了在原有的windows基础上使用硬盘来安装ubuntu的方法: 1,将Ubuntu8.04的ISO文件拷贝到C盘根目录 2,使用虚拟光驱把Ubuntu8.04的ISO里面的.disk和casper拷贝到C盘根目录 3,下载GrubforDos,用来引导系统。 4,将下载的GrubforDos解压到C盘根目录 将menu.lst内容修改为 title Ubuntu 8.04 LiveCD find –set-root /Ubuntu-8.04-desktop-i386.iso kernel /casper/vmlinuz boot=casper find_iso=/Ubuntu-8.04-desktop-i386.iso noapic initrd /casper/initrd.gz 5.右键点击桌面上“我的电脑”,选择“属性->高级->启动和故障恢复->设置->系统启动->编辑”,在打开的Boot.ini文件末尾添加c:\grldr=“Ubuntu Linux”,保存退出。 6.重新启动机器,选择Ubuntu就好了,下面一路安装。
2008年8月23日 | 归档于 Linux教程 -
解决linux下打开pdf文件乱码
一般linux图形下使用pdf阅读器打开文件的时候显示乱码是因为linux系统字符集的问题 ubuntu下如此解决: sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional 但是可能还会有点问题, 应该是字体的问题, 换个系统字体看下
2008年8月23日 | 归档于 Linux教程 -
Linux下使用虚拟光驱
linux下安装虚拟光驱: 首先在根目录dev目录中,找到dvd并将其删除。 接下来输入 ln /dev/loop7 /dev/dvd 回车。 在输入 losetup /dev/loop7 /root/shilenthill.iso —->/root/shilenthill.iso是存储镜像的路径。 然后我们挂载这个设备在终端中输入 mount /dev/dvd /media/cdrom。 卸载虚拟光驱: 先卸载挂载的目录在终端中输入 umount /media/cdrom。 最后使用 losetup -d /dev/loop7卸载这个虚拟设备。 这是下虚拟光驱设备,如果只是读取iso中的文件,可以直接用mount挂载 在图形界面下,用归档管理器(安装rar)也能打开,只是比较慢
2008年8月23日 | 归档于 Linux教程