标签归档:Git

ubuntu环境下编译内核详解

=========================================================

本文为转载,转载必须确保本文完整并完整保留原作者信息和本文链接

E-mail: khler@163.com

QQ:     23381103

MSN:   pragmac@hotmail.com

原文:http://forum.ubuntu.org.cn/viewtopic.php?t=134404

申明:转载只为传播知识,让更多人享受作者智慧的结晶!

如原作者对转载于此有异议,请立即联系本人,本人将在第一时间删除,并深表歉意!

=========================================================

 

声明:本文是个人参考网上有关资料,编译2.6.25内核的总结,如按本文步骤编译内核造成的责任和本文作者无关。
本文放在本人的blog上面:http://hi.baidu.com/ffbp89/
本文还有姊妹篇《老笔记本编译2.6.20内核指导》
如果有修改,也在blog上。
欢迎转载本文,但是请不要取消本声明。
写这篇东西主要是教学目的,学生可以结合编译内核复习shell的有关命令。

一、下载源代码和编译软件的准备
下载内核源代码:http://www.kernel.org/
注意,点击2.6.25内核的F版,即完整版。
如果你懒得去网站点联接,运行下列命令:

代码:
$cd ~
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.10.tar.bz2

安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。
安装不了,请检查/etc/apt/sources.list 文件。
有关命令:

代码:
$sudo  apt-get install build-essential kernel-package   libncurses5-dev

二、解压源代码
注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。我放在自己的主目录下的src目录。
如果你下载源代码是放到自己的主目录下或者运行上面的wget下载的,那么运行下列命令:

代码:
$ cd ~
$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/

现在,源代码就在 ~/src/linux-2.6.25.10
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。

代码:
$ cd ~/src/linux-2.6.25.10

三、开始编译前的准备工作。
首先,清理以前编译时留下的临时文件。如果是刚刚解开的包,不需要执行这步。如果是第二次或者是第n次编译,那么一定要执行。
相关命令如下:

代码:
$ sudo make mrproper

网上很多教程上说把现在使用的内核的config拷贝过来参考,据实验,是不需要的,ubuntu还有
debian会自动做这步。不过这条命令倒是可以学习一下。当然你可以将以前的配置拷贝过来。
命令:

代码:
cp /boot/config-`uname -r` ./.config

四、开始配置内核选项。
相关命令:

代码:
$sudo make menuconfig

配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。
选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。
配置选项非常多,具体配置可以参考金步国先生翻译的资料:Linux 2.6.19.x 内核编译配置选项。
参考网址:http://lamp.linux.gov.cn/Linux/kernel_options.html
为了一次成功,请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。这样虽然内核不那么精简,但是不容易出现问题。
我们可以精简的部分是硬件模块部分,对于自己没有的硬件要毫不犹豫的清除。
如果你很执着,或者你有洁癖,你也可以一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。

五、必须强调的几个选项:
1、在“General setup”里面的“Prompt for development and/or incomplete code/drivers”金步国认为是不需要。但是如果你的硬件比较新,那几乎是必须选的,这样,我们才可以找到4965无线网卡,alsa声音驱动等等。
Kernel log buffer size 我选15,双核。如果你用ia64,要选16。
Control Group support 集群支持?可以不要
Choose SLAB allocator (SLUB (Unqueued Allocator)) 内存管理模式slab和slub选择slub。

2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,谁有2TB的文件?

3、Processor type and features中是关于cpu的,要认真选。
Symmetric multi-processing support是打开多核的开关,我的cpu是双核的,选中。
Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support选项取消。
Subarchitecture Type 选(PC-compatible)
Maximum number of CPUs 输入自己的核心数目,我输入2。
SMT (Hyperthreading) scheduler support说的是超线程技术,P4有支持的,我的t8100不支持,目前大部分市场上的家用cpu都不支持。
High Memory Support (4GB) 1G以下选1G;我是3G,选4G;4G以上的选16G
在“ Timer frequency ”里,默认是250Hz,较新的cpu都可以选择了1000Hz,性能更好。

4、Power management options中把APM (Advanced Power Management) BIOS support关闭。现在的电脑都用acpi了。
CPU Frequency scaling 是笔记本cpu节电技术
Default CPUFreq governor (conservative) cpu节电模式有四个,笔记本默认选conservative比较好。
ACPI Processor P-States driver 必须选,不然CPU Frequency就不能用。
后面的可选自己硬件相关的,我选的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的统统消灭。

5、Bus options的选择:
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
PCI support
PCI Express support 现在新买的机器基本上都是PCI Express了
ISA support 较新的新机器没有ISA设备,可以去掉
MCA support 去掉
NatSemi SCx200 support 去掉
PCI Hotplug Support
Support for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,去掉
这里的选项可以考虑全部编译进内核,而不是以模块形式存在。

6、Device Drivers是重点,由于linux不但面向个人工作站,更多的是面向服务器的应用,所以可以把自己机器上没有的硬件全部去掉,而不用面面俱到。但是通用型的选项要慎重。

比如在网卡的部分,除了我的千兆网卡 Broadcom Tigon3 support和4965无线网卡Intel Wireless WiFi 4965AGN,其余的硬件支持统统去掉。

再比如声卡部分,我的是hd声卡,我只是在PCI devices中,选intel hd 声卡,再选Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
声卡还有一个细节,在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options snd-hda-intel probe_mask=1 model=3stack,这样我的笔记本喇叭才可以发声,不然只有外接耳机或者音箱。这次编译以后,这个动作就不必了,但是两个耳机插口只有一个可以用了。

再比如我的电脑中没有agp,就可以直接把agp相关的选项全部取消。

要注意的:
ATA/ATAPI/MFM/RLL support
Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选*,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。
SCSI emulation support 要用刻录机,必须选。

SCSI device support 现在都是SATA硬盘,一定要选*
SCSI disk support 如果你的/boot放在SATA硬盘上,一定要选*。
SCSI CDROM support 虽然康宝刻录机是ide接口的,但是必须把它当成scsi接口的,这是老问题了。用刻录机,必须选。

Graphics support
Support for frame buffer devices 选中,进入选择
VESA VGA graphics support 选上,不然字符界面启动会有问题,
后面的显卡选择:由于我的显卡是nvidia 8400gs,要自己安装nvidia公司的驱动,所以一个都没有选。这样导致ubuntu开机动画会出问题,我索性在grub中的splash字符全部删除,把开机动画关闭。字符界面很正常。

Console display driver support 有人开机后字符控制台错误,就是这部分选项没有选,出问题了。
Framebuffer Console support 需要打开。
Bootup logo 开机图标,会在自检的画面上加上个性图标。需要在grub上添加“vga=”的选项,可以参考http://dotimes.com/articles /t23-slackware-framebuffer.html

7、File systems
Filesystem in Userspace support 简称fuse。是必选的,如果你要用windows分区。

CD-ROM/DVD Filesystems
ISO 9660 CDROM file system support 一般选*
DOS/FAT/NT Filesystems
VFAT (Windows-95) fs support 有FAT32分区就选*吧
NTFS file system support 有NTFS分区就选*吧
NTFS write support 如果想对 NTFS分区进行写操作,选*

必须将启动盘的文件系统编译进内核,默认是编译成模块,这样无法启动系统。ubuntu采用的文件系统是ext3,请把ext2,ext3相关的必要选项都编译进入内核。

8、Virtualization这个大类是我多花几百元买t8100的主要原因,因为t8100支持intel vt技术
使linux上的虚拟机的性能大幅度提高。这里的选项我除了amd的,其他都编译成模块。

9、全部设置完成,最后一项是保存设置。
按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config20080630
然后再保存到当起目录,文件名 .config
退出设置程序。

六、开始编译内核。
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
相关命令:

代码:
$sudo make-kpkg clean   这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
$ sudo make-kpkg -initrd –initrd –append-to-version=dell1400 kernel_image kernel-headers

上述命令中的dell1400可以用自己喜欢的字符代替,最后的字符一定是数字.
输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。我的机器大概十几分钟。

七、安装内核
编译完成就是安装工作。编译好的内核在上一层目录。包括linux-headers-…-_i386.deb和linux-image-…-i386.deb两个文件,如果你不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。
安装相关命令:

代码:
$ cd ..
$ sudo dpkg -i   linux-image-(按tab键)

文件名很长,如果不用tab自动补足是不可能的,tab键万岁。
安装完成后和老内核比较一下大小

代码:
$ ls -l /boot/

八、重新启动验证新内核。

代码:
$ sudo reboot

九、显卡驱动
如果你的显卡和我一样是nvidia显卡,启动之后往往无法正常进入x-window。即使能看到gdm登录界面,效果也是很差的。
那么就要安装nvidia驱动。
用ctrl+alt+f1 进入字符命令行,输入用户名,密码登录。
命令:

代码:
下载驱动
$ wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/NVIDIA-Linux-x86-173.14.12-pkg1.run

$sudo -s
输入密码取得超级权限。
#ps ax
看看和gdm相关的进程,把这些进程全部关闭;用sudo /etc/init.d/gdm stop有可能有一个进程没有关闭:
#kill 进程号
然后安装nvidia显卡驱动,当然驱动要先下好,到nvidia驱动所在的目录里,运行:
# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run

重新启动以后就ok。要用nvidia的驱动,每次升级内核都要这么做。

十、无线网卡
相关的内核选项是
Networking —>
Wireless —>
Generic IEEE 802.11 Networking Stack (mac80211)
还有4965的驱动。

4965无线网卡驱动虽然已经编入内核,但没有firmware无法使用。需要把原来内核的firmware拷贝到新内核对应的目录,名字和内核一致,我的内核是linux-image-2.6.25.10dell1400,那建的目录名就是2.6.25.10dell1400。

代码:
具体命令:
$ cd /lib/firmware/
$ sudo mkdir 2.6.25.10dell1400
把你的老内核中的4965的firmware拷贝过来。
$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/

上面的命令和下面的命令是等价的:
$ cd /lib/firmware/
$ sudo cp -R 2.6.24-16-generic/  2.6.25.10dell1400/

重新启动系统,无线网卡就正常了。

附编译使用的机器配置:dell vostro 1400,t8100,nvidia 8400cs显卡,内置SigmaTel STAC9228芯片的声卡,4965无线网卡,BCM5906M千兆网卡,3G内存,160G硬盘,combo刻录。
编译系统版本:ubuntu 8.04桌面版.

常用的Linux shell命令详解

最近搞palm和Android都是基于Linux平台的应用,经常要用到一些shell 命令,所以就将相关的命令整理了一下,便于记忆和查询,部分内容来源于网络。

1 文件与目录操作命令

1.1文件内容查询命令 grep、fgrep、egrep

语法:grep[选项][查找模式][文件名1,文件名2,……]

选项:

-E 每个模式作为一个扩展的正则表达式对待

-F 每个模式作为一组固定字符串对待,而不作为正则表达式

-i 比较时不区分大小写

-l 显示首次匹配匹配串所在的文件名并用换行符将其分开。当在文件中多次出现匹配串时,不重复显示次文件名;

-x 只显示整行严格匹配的行

1.2文件查找命令 find、locate

语法:

find 起始目录 寻找条件 操作以名称和文件属性查找

选项: -name‘字串‘ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[]。

-lname‘字串‘ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[]。

-gid n 查找属于ID号为n的用户组的所有文件。

-uid n 查找属于ID号为n的用户的所有文件。

-group‘字串‘ 查找属于用户组名为所给字串的所有的文件。

-user‘字串‘ 查找属于用户名为所给字串的所有的文件。

-path‘字串‘ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[]。

-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711、644。

-type x 查找类型为 x的文件,

语法:locate 相关字

1.3文件的复制、删除和移动命令 文件复制命令

[选项] 源文件或目录 目标文件或目录

选项:

– a 通常在拷贝目录时使用

-d 拷贝时保留连接

-f 删除已经存在的目标文件而不提示

-i 和f选项相反

-p 此时cp除复制源文件内容外,还将其修改的时间和访问权限也复制到新文件中

-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下的所有的子目录和文件,此时目标文件必须为一个目录名;

-l 不作拷贝,只是链接文件文件移动命令

mv[选项] 源文件或目录 目标文件或目录

-i 交互式操作

-f 禁止交互式操作文件删除命令

[选项] 文件…

-f 忽略不存在的文件,从不给出提示

-r 指示rm将参数中列出的全部目录和子目录均递归地删除

-i 进行交互式删除 1.4文件链接命令

ln [选项] 目标 [链接名] 或 ln [选项] 目标 目录

选项:

– s 建立符号链接

1.5目录的创建和删除命令 mkdir 创建一个目录

语法: [选项] dirname

选项: – m 对新建目录设置存取权限

-p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

rmdir 删除空目录

语法: rmdir [选项] dirname

选项:

– p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。

1.6改变工作目录,显示目录内容命令

1、改变工作目录: cd [directory]

2、显示当前工作的目录的绝对路径: pwd

3、显示目录内容: ls [选项] [目录或是文件]

选项:

– a 显示指定目录下所有子目录与文件,包括隐藏文件;

-c 按照文件的修改时间排序

-C 分成多列显示各项

-d 如果参数是目录,只显示其名称而不显示其下的个文件

-F 在目录名后面标记“/”,可执行文件后面标记“*”,符号链接后面标记“@”,管道(或FIFO)后面标记“|”,socket文件后面标记“=”。

-l 以长格式来显示文件的详细信息

-L 若指定的名称为一个符号链接,则显示链接所指向的文件

-t 显示时按修改时间而不是名字排序

-u 显示时按文件上次存取的时间而不是名字排序

4、改变文件或目录的访问权限命令chmod [who] [+| – | = ] [mode] 文件名?

Who选项:

– u表示用户,即文件和目录的所有者

-g表示同组用户

-o(other)表示其他用户

-a (all)表示所有用户

操作符号: + 添加某个权限 – 取消某个权限 = 赋予给定权限并取消其他所有的权限(如果有的话)

mode 选项:

– r 可读

-w 可写

-x 可执行 chgrp [-R] group filename? 改变目录或文件所属的组

chown [-Rv] 用户或组 文件

1.7备份与压缩命令

1、tar命令 为文件和目录创建档案语法:

tar [主选项+辅助选项] 文件或者目录 : u 主选项

-c 创建新的档案文件。如果用户想备份一个目录或是一些文件,则选此项

-r 把要存档的文件追加到档案文件的末尾

-t 列出档案文件的内容,查看已经备份了哪些文件;

-u 更新文件

-x 从档案文件中释放文件;

-u 辅助选项

-b 该选项为磁带机设定的,其后跟一位数字,用来说明区块的大小,系统预设值为20

-f 使用档案文件或设备,这个选项通常是必选的

-k 保存已经存在的文件。例如把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖;

-m 在还原文件时,把所有文件的修改时间设定为现在;

-M 创建多卷的档案文件,以便在几个磁盘中存放;

-v 详细报告tar处理的文件信息

-w 每一步都要求确认

-z 用gzip来压缩/解压缩文件

2、gzip命令 压缩/解压缩命令

语法:gzip [选项] 压缩(解压缩)的文件名

选项:

-c 将输出写到标准输出上,并保留原有文件

-d 将压缩文件解压

-l 显示每个压缩文件的详细信息

-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩

-t 测试、检查压缩文件是否完整

-v 对每一个压缩和解压的文件,显示文件名和压缩比

3、unzip 命令 用MS windows下的压缩软件winzip压缩的文件在linux系统下展开

语法:unzip [选项] 压缩文件名.zip

选项: -x 文件列表 解压缩文件,但不包括指定的file文件

-v 查看压缩文件目录,但不解压

-t 测试文件有无损坏 ,但不解压

-d 目录 将压缩文件解到指定目录下

-z 只显示压缩文件的注解

-n 不覆盖已经存在的文件

-o 覆盖已经存在的文件且不要求用户确认

-j 不重建文档的目录结构,把所有文件解压到同一目录下

1.8在LINUX环境下运行DOS命令 linux系统提供了一组称为mtools的可移植工具,可以让用户轻松地从标准的DOS软盘上读写文件和目录。

mcd 目录名 改变MSDOS目录 mcopy 源文件 目标文件 在MSDOS和UNIX之间复制文件;

mdel 目录名 删除MSDOS目录 mdir 目录名 显示MSDOS目录 mformat 驱动器号 在低级格式化的软盘上创建MSDOS文件系统 rnlabel 驱动器号 产生MSDOS卷标 mmd 目录名 删除MSDOS目录 mren 源文件 目标文件 重新命名已存在的MSDOS文件 mtype 文件名 显示MSDOS文件的内容

2 设备管理命令

1)linux采用下面的形式定义一个IDE硬盘:/dev/hd[drive][partition]

2)SCSI硬盘使用同样的机制表示: /dev/sd[drive][partition]

3)对于一般的LINUX分区,可以用mkfs将其格式化并生成文件系统,命令如下: mk2fs –c

4)装载文件系统:

mount –t ext2 [-o optioms] partition mountpiont 其中,

-t为指定装载文件系统的类型;

-o指定一些选项,如只读ro,可读可写rw等等; partition定义分区名称; mountpiont定义文件系统被装载的目录名称。

5)装载CD-ROM文件系统:mount –t iso9660 –r /dev/cdrom /mnt/cdrom

6)装载软驱文件系统: CODE:[Copy to clipboard]mount –t msdos –rw /dev/fd0 /dev/mnt/floppy

7)卸载文件系统 CODE:[Copy to clipboard]umount /mnt/cdrom 磁带设备的安装要注意以下几点:

1、 首先要选择一个唯一的SCSI ID号,然后再将设备链接到适当的位置

2、 选择驱动程序。

3、 生成设备文件。SCSI磁带设备的主要设备号是9,次要设备号是0。设备文件名通常是/dev/nrst0(不支持回绕的磁带设备)或/dev/nst0(支持回绕的磁带设备) 用 ls /dev/*rst* 检查磁带设备文件是否存在,如果不存在,用 mknod –m 666 /dev/nrst0 c 9 9 mknod –m 666 /dev/rst0 c 9 0 生成

4、 可以对块长度、缓存、磁带密度等参数进行一些设置,例如 mt setblk 20 将块长度指定为20 mt setblk 0 指定块程度没有限制

5、 通过检查系统的启动信息可以确定系统是否识别了新的磁带设备。用dmesg命令,查看是否有以下类似的信息: aha274x:target 4now synchronous at 4.4Mb/s Vendor:TANDBERG Model:TDC 3800 Rev: =05: Type: Sequential-Access ANSI SCSI revision: 02 Detected scsi tape st0 at scsi0, id4, lun0 Scsi : detected 1 SCSI tape 1 SCSI crom 1 SCSI disk total

3 软件包管理命令

3.1软件安装的步骤 在LINUX系统上安装软件的步骤有:

1、 查找所要安装软件的源文件

2、 把源文件解开放到一个目录中,命令如下: tar zxvf <源文件名>;

3、 针对本操作系统配置源文件。可以是编辑make文件或其他文件,也可能是运行该软件自带的自动配置工具,如./configure

4、 make源文件,通常是运行make命令,即执行 make

5、 安装二进制文件和其他支撑文件,运行命令: make install

6、 最后,完成所有其他必须的配置

3.2软件包管理命令 QUOTE: rpm –ivh <软件包>; // 安装指定的软件包,并在安装过程中用#表示安装的进度 rpm –Uvh <软件包>; // 更新一个已经存在的或还没安装好的软件包,并删除所有该软件包的旧版本。 rpm –e //卸载一个rpm软件包 rpm –qa // 查看系统中已经安装的软件包 rpm –q <软件包>; // 查看系统中某个软件包的版本号; rpm –qlp <软件包>; //列出某个软件包中的所有文件 rpm –qf <软件包>; //找出一个文件属于哪个软件包

4 LINUX系统常用命令

4.1 与系统管理有关的命令 Wall (Write All)  对全部已 登录的用户发送信息,用户可以先反要发送的信息写好存入一个文件中,然后输入: # wall < FileName 例:Wall ‘Thank you !’ Write 向某一用户发送信息。 Write xxq hello 输入Ctrl+C组合即可终止 Shutdown命令 Shutdown [选项] [时间] [警告信息]

-k 并不真正关机,而只是发出警告信息给所有的用户。

-r 关机后立即重新启动。

-h 关机后不重新启动。

-f 快速关机,启动时跳过fsck。

-n快速关机,不经过init程序。

-c 取消一个已经运行的shutdown 例:系统马上关机:Shutdown –h now Free命令查看当前系统内存的使用情况, CODE:[Copy to clipboard]Free [-b] [-k] [-m] CODE:[Copy to clipboard]-b 以字节为单位显示。

-k 以K字节为单位显示。

-m 以M字节为单位显示。 Uptime QUOTE: 显示系统已经运行了多长的时间:现在时间、系统已经运行的时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

4.2与用户有关的命令 Passwd命令设置、更换用户口令。

Passwd [用户名] Su 使一个普通的用户具有超级用户的权利,离开可用EXIT命令。 4.3其它命令 Echo命令在显示器上显示一段文字,一般起到一个提示的作用。

echo [-n] 字符串 Cal命令显示某年某月的日历。

cal [选项] [月[年]]

选项的含义:

-j 显示也给定月中的每一天是一年中的和几天(从1月1日算起)。

-y 显示也整年的日历。 Date命令 date命令的功能是显示和设置系统日期和时间。 4.4磁盘管理 磁盘空间管理 df命令检查文件系统的磁盘空间占用局部。

Df [选项]

-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。

-k 以K字节为单位显示。

-i 显示i节点信息,而不是磁盘块。

– t 显示各指定类型的文件系统的磁盘空间使用情况。

-x 列出不是某一指定类型文件系统的磁盘窨使用情况(与t相反)。

-T 显示文件系统类型。 du命令 du的英文原意为disk usage,含义为显示磁盘空间的使用情况。功能是统计目录(或文件)所占磁盘空间的大小。

du [选项] [Names…]

-s 对每人Names 参数只给也占用的数据块总数。

-a 递归地显示指定目录中各文件用子孙目录中的各文件占用的数据块总数。

-b 以字节为单位列也磁盘窨使用情部(缺省以K字节为单位)

-k 以1024字节为单位列也磁盘空间使用情况。

-c 最后再加上一个总计(系统缺省)

-l 计算所有的文件大小,对硬链接文件,则计算多次。

-x 跳过在不同文件系统上的目录不予统计。 dd命令把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。

语法: dd 〔选项〕  if =输入文件(或设备名称)。 of =输出文件(或设备名称)。 ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。 skip = blocks 跳过读入缓冲区开头的ibs*blocks块。 obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。 bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。 cbs = bytes 一次转换bytes字节。 count = blocks 只拷贝输入的blocks块。 conv = ASCII 把EBCDIC码转换为ASCII码。 conv = ebcdic 把ASCII码转换为EBCDIC码。 conv = ibm 把ASCII码转换为alternate EBCDIC码。 conv = blick 把变动位转换成固定字符。 conv = ublock 把固定们转换成变动位 conv = ucase 把字母由小写变为大写。 conv = lcase 把字母由大写变为小写。 conv = notrunc 不截短输出文件。 conv = swab 交换每一对输入字节。 conv = noerror 出错时不停止处理。 conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。 fdformat命令低级格式化软盘。

format [-n] device QUOTE: -n 格式化后不做检验

4.5常用的网络命令 FTP命令 Telnet命令。

Netstat命令

-a 显示所有的scoket,包括正在监听和。

-c 每隔1秒就重新显示一遍,直到用户中断它。

-i 显示所有网络接口的信息,格式同”ifconfig –e”

-n 以网络IP地址代替名称,显示也网络连接情形。

-r 显示核心路由表,格式同”route –e:。

-t 显示TCP协议的连接情况。

-u 显示UDP协议的连接情况。

-v 显示正在进行的工作。 nslookup命令。 finger命令,功能是查询用户的信息。 ping命令。(用户和组的管理可以使用工具:TurboUserCfg或是XturboUserCfg。)

4.6有关进程的命令。 进程和启动 at [-V] [-q] [-f文件名] [-mldbv]时间 at –c 作业 [作业….] AT命令启动的进程系统只执行一次。 batch [-V] [-q 队列] [-f 文件名] [-mv] [时间] 在系统负载较小时,资源比较空闲时执行。 cron命令按一定的时间间隔执行命令。 crontab命令用于安装、删除或列出用于驱支cron后台进程的表格。进程查看

who命令。 w命令是一个比who命令更强大的命令 w

–[husfV] [user] -h 不显示标题。

-u 当列出当前进程和CPU时间时忽略用户名。

-s 使用短模式。不显示登录时间JCPU和PCPU时间。

-f 切换显示FROM项,也就是远程主机名项。

-V 显示版本信息。 user 只显示指定用户的情况。 ps命令。

-e 显示所有进程。

-f 全格式

-h 不显示标题。

-l 长格式。

-w 宽输出。 a 显示终端上所有进程,包括其他用户的进程。 r 只显示正在运行的进程。 x 显示没有控制终端的进程。 top 命令动态显示系统当前的进程和其他状况。 5系统的启动过程。

5.1初始启动 在PC机启动时,BIOS从指定的启动设备中读入“主引导记录”(MBR)。MBR的格式是:地址偏移量 内容 大小 +00 h 可执行的代码(启动模块) 可能变化 +1BE h 第一分区表项 16字节 +1CE h 第二分区表项 16字节 +1DE h 第三分区表项 16字节 +1EE h 第四分区表项 16字节 +1FE h 可执行的标记(AA55 h) 2字节 启动模块包含足以装入操作系统的代码,或者是第二步的加载代码的位置。启动模块需要使用BIOS调用来从磁盘装入数据,而这些中断调用,如INT 13h等,限制了最大磁盘柱面号为1023。这也就是说启动模块需要加载的一切内容,如初始内存磁盘、内核、启动的时间信息等,必须存放在1024个柱面以内。在MBR中只有四个分区表项,每个表项的格式如下: 地址偏移 内容 大小 +00h 分区状态:00代表非启动分区,80h代表启动分区 1字节 +01h 分区的起始位置 磁头 1字节 +02h 分区的起始位置 柱面和扇区 1字节 +04h 分区的类型 1字节 +05h 分区的结束位置 磁头 1字节 +06h 分区的结束位置 柱面和扇区 1字节 +08h 在主引导区和本分区的第一个扇区间的扇区数目 4字节 +0Ch 分区内的扇区数目 4字节

5.2 Linux的启动过程

1启动的命令行参数 在Linux启动时,它处理所有传递给它的命令行参数。这可以影响Linux的运行方式。

命令行参数包括: mem=xxxM:定Linux可以使用的内存大小。这在用户的计算机系统有超过64MB的内存时才需要。因为从前的主板只对第一个64MB内存进行缓存,使用超过64MB的内存会使整个计算机的性能下降,所有内存均按无缓存的速度运行。 single:使Linux按单用户方式启动,缺省方式是多用户方式。 root=/dev/xxx:指定Linux要安装为根文件系统的设备。 init=;:指定作为初始化进程的文件。 initrd=;:指定作为初始内存磁盘的设备。 ro:指定根文件系统为只读。 rw:指定根文件系统为可读可写。

2 Init进程 在内核初始化自身和找到的硬件设备后,在后台启动进程init(/sbin/init),init进程号1运行。在UNIX世界中有许多启动过程的版本,一些是基于系统V,一些是基于BSD。大多数Linux版本使用系统V的实现方法,在这里描述的就是这样。 init是由文件/etc/inittab内容和功能控制的,随启动模式是单用户或多用户而不同。 QUOTE: 单用户模式:init进程忽略/etc/inittab文件,在执行少数几个脚本程序后调用/dev/console shell。这样,用户就可以有了一个shell,而且可以执行一定限度的任务。多用户模式:init进程把系统带入/etc/inittab文件指定的运行级别。Init通过标准的Linux方法进入一个指定的进行级别。

3.进行级别 Linux与其他UNIX操作系统一样,可以任何时刻处于任何一个运行级别。这些运行级别提供的功能不同,为主要是由于其运行的服务方程序(后台daemon)的不同造成的。Linux共有6种运行级别。

0:关闭计算机或终止计算机运行,这个级别就是系统停止运行。

1:单用户启动级别,系统只有一个用户,就是root,该用户在控制台登录。

2:多用户运行级别,但无网络功能。在这个运行级别,网络功能没有启动,但是系统允许多个用户登录,可以通过虚拟控制台或串行线路。

3:多用户模式,有网络功能。在这个运行级别,所有标准网络服务均被启动。

4:目前没有实现。

5:X11运行级别,在这个运行级别,X服务器软件运行,提供图形界面的登录方式。

6:系统重新启动。查询当前运行级别:runlevel;

4在启动过程中运行的脚本在init进程运行时,它负责查看缺省的运行级别,并进入该运行级别。这是通过运行在/etc/rc.d/rcX.d目录下的脚本程序来实现的,其中X代表运行的级别,即一个运行级别对应一个目录。不同的字母开头的文件有不同的作用。其中:以K开头的脚本程序是系统离开某个运行级别时执行的,作用是停止某种服务。当系统从某个支持级别变为其他级别时,首先要进行原运行级别所对应的所有K程序。以S开头的脚本程序是系统进入某个运行级别时所执行的,作用是启动某种服务。当系统改变为某个运行级别时,就要运行新运行级别所对应的所有S程序。

5增加启动脚本程序用户可能有一些特定的硬件设备要初始化,或需要在系统启动时初始化一些其他应用程序,用户可以增加自己的初始化脚本程序来完成这些工作。通常步骤是:复制一个已经存在的脚本,这样可以得到一个通用的框架格式。修改这个脚本,以完成自己的需求,要注意使程序可以处理启动和关闭的参数,尽管可能关闭处理什么也不需要干。把这个肢本拷贝到/etc/rc.d/init.d目录下,命名为”serv”。按下面的方法在相应的目录下建立运行控制链接: CODE:[Copy to clipboard]ln –s ../init.d/serv/etc/rc.d/rc3.d/s99 serv 进行测试。

6 LILO和其他的启动模块要启动Linux,启动模块是必须的。一般用于Linux的启动模块是LILO,LILO用自己的主引导区代替一般的主引导区。LILO可以通过修改/etc/lilo.conf文件内容来进行配置,对引导区内容的更新通过lilo命令来完成。下面给也了一个装有DOS,TurboLinux3.4.0和RedHat

5.2系统的计算机的lilo.conf文件。

在例子中的数字标号是用户加上去并要在文中详细解释的。 CODE:[Copy to clipboard]# more /etc/lilo.conf boot=dev/had map=/boot/map instll/boot/boot.b prompt #表示启动盘是/dev/had,这是主IDE硬盘。 timeout=50 #表示等待用户输入的时间是50秒。 default=TL3.4 other=dev/hda1 #表示如果在上述的时间内没有输入,缺省的启动系统是TL3.4,即TurboLinux 3.4.0 label=dos table=dev/had #表示如果在LILO提示用户输入启动系统时,用户按了;键,各个系统将以label的内容显示出来,供用户选择。 image=/mnt/tl3.4/boot/vmlinuz label=TL3.4 root=/dev/hda3 read-only TurboLinux的启动文件,/mnt/tl3.4/boot/vmlinuz被确定,根文件系统在/dev/hda3,根文件系统是只读方式的。 CODE:[Copy to clipboard]image=/mnt/rh5.2/boot/vmlinuz-2.0.36-0.7 label=RH5.2 root=/dev/hda4 read-only RedHat的启动文件,/mnt/rh5.2/boot/vmlinuz-2.0,36-0.7被确定,根文件系统在/dev/hda4,根文件系统可读写。

作者:蓝之风
出处:http://www.cnblogs.com/vaiyanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

ubuntu下串口调试助手推荐: cutecom

先上个PP图,cutecom的主界面如下所示:

在WinXP下经常用的是minicom,或者是自己写的小工具,

cutecom相对于minicom而言,多了一个输入命令历史列表,这个功能不错。

下边说下安装,在ubuntu下比较简单,直接用新立得软件包管理器安装即可
使用命令cutecom启动。

这里额接的是usb转串口,pl2303,其名字叫ttyUSB0。
ubuntu内已经集成了驱动,不需要再安装,
插入usb转串口后,使用dmesg | grep usb,可以查看其安装情况。
我这边输出显示有这样一句:
[11117.004678] usb 4-1: pl2303 converter now attached to ttyUSB0
显示其已安装成功。

本文来自:http://blog.ednchina.com/walnutcy/285266/message.aspx

 

ubuntu 10.04下天翼3G上网卡(华为EC1260)的使用

 

在9.10的时候系统可以很好的识别出天翼上网卡,我们要做的只需要在NetworkManager输入用户名和密码就可以了。但升级到10.04后,系统就识别不出上网卡了,插上候没反应。这是就需要刷新下上网卡的固件。

固件下载地址:http://www.huaweidevice.com/cn/downloadCenter.do?method=list&flay=software&directoryId=20&treeId=0
你可以根据自己卡的型号选择下载,我这以EC1260为例。
软件下载选:移动宽带->数据卡产品->EC1260,下载统一升级包。解压出来你会发现是一个EXE文件,没错那确实就是一个EXE文件。 接下来要做的就是找一台win系统的电脑,插上上网卡,注意不要链接,然后运行那个EXE文件,接下来的过程就是自动的了。
固件升级完成后,你就可以将卡插到linux系统上了,这时系统会将它识别为一个光驱。挂载上它,点进去会看到有个LINUX文件夹。然后运行文件夹里的install文件:
$ sudo /<path>/install
在这个过程中会看到有找不到/usr/local/Mobile_Partner这个目录的提示,问是否新建?选Y就行了!
接下来就等安装自己完成了!
默认情况下,linux下的客户端会在你插入上网卡后自启动。如果没有,可以到安装目录/usr/local/Mobile_Partner下去手动启动。
在客户端启动好后默认是没有帐号密码的,还不能直接链接上网,需要手动设置。点tools->options->profile management。自己随便取个名字,然后用户名设成:ctnet@mycdma.cn,密码:vnet.mobi.如图

设好后点SAVE->OK,再链接,就可以上网了!
下面是一张实测的截图,速度还不错,下载速度能冲到200+KB/S(点击看大图)

 

转自http://hi.baidu.com/%CF%EB%B2%BB%B3%F6%87%E5%B5%C4id%C1%CB/blog/item/e1598cad564840054a36d606.html

 2010-04-02 23:11

 

UBuntu中增加中文字符编码的方法

在Widnows XP下的FTP服务器中有中文文件名 ,今天使用ftp命令,发现不能显示中文文件名,只能显示????。于是到网上查了一些资料,也没有找到好的解决方法,只是有人说使用图形化的ftp工具gftp,安装方法:sudo apt-get install gftp,另外还要增加中文字符编码zh_CN.GBK即可即可。在这里总结一下Ubuntu下增加中文字符编码的方法。
一. Ubuntu默认的中文字符编码
Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在/etc/environment中看到:
sudo gedit
/etc/environment
可以看到如下内容:

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”
LANG=”zh_CN.UTF-8″
LANGUAGE=”zh_CN:zh:en_US:en”

第二行即是默认的中文字符编码。注:可以通过这里修改默认的中文编码字符,比如修改为:zh_CN.GBK。

二. 添加中文字符编码的方法
1. 直接使用locale-gen
在超级终端输入命令:
sudo locale-gen zh_CN.GB18030
即可完成中文字符集的添加。完成后可以转到
/usr/lib/locale/,下面已经有一个zh_CN.gb18030文件夹;在超级终端输入命令:gedit /var/lib/locales/supported.d/local,可以发现文件中多了一行:zh_CN.GB18030 GB18030。说明添加成功。

2. 通过修改/var/lib/locales/supported.d/local文件
在终端输入命令行
sudo gedit /var/lib/locales/supported.d/local
可以看到如下内容:

zh_CN.UTF-8 UTF-8
en_US.UTF-8 UTF-8

在文件尾添加中文字符集
zh_CN.GBK GBK
保存后退出。在超级终端输入命令:
sudo dpkg-reconfigure locales

Generating locales…
  en_AU.UTF-8… done
  en_BW.UTF-8… done
  en_CA.UTF-8… done
  en_DK.UTF-8… done
  en_GB.UTF-8… done
  en_HK.UTF-8… done
  en_IE.UTF-8… done
  en_IN.UTF-8… done
  en_NZ.UTF-8… done
  en_PH.UTF-8… done
  en_SG.UTF-8… done
  en_US.UTF-8… done
  en_ZA.UTF-8… done
  en_ZW.UTF-8… done
  zh_CN.GBK… done
  zh_CN.UTF-8… up-to-date
  zh_HK.UTF-8… done
  zh_SG.UTF-8… done
  zh_TW.UTF-8… done
Generation complete.

即可生成相应文件:/usr/lib/locale/zh_CN.gbk/
注:也可使用locale-gen

 

作者:denlee   发布时间:2008-4-1

 

 

【原】Ubuntu中安装 mercurial – TortoiseHG

=================================================
本文为khler原作,转载必须确保本文完整并完整保留原作者信息及本文原始链接
E-mail: khler@163.com
QQ:     23381103
MSN:   pragmac@hotmail.com
=================================================

Ubuntu9.10后对apt的操作方便了很多。以下针对9.10后:

1、加入ppa:mercurial

2、加入ppa:TortoiseHG
3、update apt
4、install TortoiseHG
5、重启系统
6、OK了

具体操作如下:

hyh@ubuntu:~$ sudo add-apt-repository ppa:tortoisehg-ppa/releases
[sudo] password for hyh:
Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /etc/apt/secring.gpg –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver keyserver.ubuntu.com –recv 61EC6AF562E4A619C1156F71F2A97597D5056DDE
gpg: 下载密钥‘D5056DDE’,从 hkp 服务器 keyserver.ubuntu.com
gpg: 密钥 D5056DDE:公钥“Launchpad TortoiseHg PPA Packagers”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1  (RSA: 1)

hyh@ubuntu:~$ sudo apt-get update
命中 http://cn.archive.ubuntu.com lucid Release.gpg
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/main Translation-zh_CN         
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/restricted Translation-zh_CN   
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/universe Translation-zh_CN     
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/multiverse Translation-zh_CN   
命中 http://cn.archive.ubuntu.com lucid-updates Release.gpg                    
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/main Translation-zh_CN
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/restricted Translation-zh_CN
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/universe Translation-zh_CN
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/multiverse Translation-zh_CN
命中 http://cn.archive.ubuntu.com lucid Release                                
命中 http://cn.archive.ubuntu.com lucid-updates Release                        
命中 http://cn.archive.ubuntu.com lucid/main Packages                          
命中 http://cn.archive.ubuntu.com lucid/restricted Packages                    
命中 http://cn.archive.ubuntu.com lucid/main Sources                           
命中 http://cn.archive.ubuntu.com lucid/restricted Sources                     
命中 http://cn.archive.ubuntu.com lucid/universe Packages                      
命中 http://cn.archive.ubuntu.com lucid/universe Sources                       
命中 http://cn.archive.ubuntu.com lucid/multiverse Packages                    
命中 http://cn.archive.ubuntu.com lucid/multiverse Sources                     
命中 http://cn.archive.ubuntu.com lucid-updates/main Packages                  
命中 http://cn.archive.ubuntu.com lucid-updates/restricted Packages            
命中 http://cn.archive.ubuntu.com lucid-updates/main Sources                   
命中 http://cn.archive.ubuntu.com lucid-updates/restricted Sources             
命中 http://cn.archive.ubuntu.com lucid-updates/universe Packages              
命中 http://cn.archive.ubuntu.com lucid-updates/universe Sources               
命中 http://cn.archive.ubuntu.com lucid-updates/multiverse Packages            
命中 http://cn.archive.ubuntu.com lucid-updates/multiverse Sources             
命中 http://ppa.launchpad.net lucid Release.gpg                                
忽略 http://ppa.launchpad.net/tortoisehg-ppa/releases/ubuntu/ lucid/main Translation-zh_CN
命中 http://ppa.launchpad.net lucid Release                                
命中 http://ppa.launchpad.net lucid/main Packages                           
命中 http://security.ubuntu.com lucid-security Release.gpg
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/main Translation-zh_CN
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/restricted Translation-zh_CN
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/universe Translation-zh_CN
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/multiverse Translation-zh_CN
命中 http://security.ubuntu.com lucid-security Release
命中 http://security.ubuntu.com lucid-security/main Packages
命中 http://security.ubuntu.com lucid-security/restricted Packages
命中 http://security.ubuntu.com lucid-security/main Sources
命中 http://security.ubuntu.com lucid-security/restricted Sources
命中 http://security.ubuntu.com lucid-security/universe Packages
命中 http://security.ubuntu.com lucid-security/universe Sources
命中 http://security.ubuntu.com lucid-security/multiverse Packages
命中 http://security.ubuntu.com lucid-security/multiverse Sources
正在读取软件包列表… 完成

hyh@ubuntu:~$ sudo apt-get install tortoisehg
正在读取软件包列表… 完成
正在分析软件包的依赖关系树       
正在读取状态信息… 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
  tortoisehg: 依赖: mercurial (>= 1.6) 但是它将不会被安装
E: 破损的软件包

hyh@ubuntu:~$ sudo add-apt-repository ppa:mercurial-ppa/releases
Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /etc/apt/secring.gpg –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver keyserver.ubuntu.com –recv 41BD8711B1F0EC2B0D85B91CF59CE3A8323293EE
gpg: 下载密钥‘323293EE’,从 hkp 服务器 keyserver.ubuntu.com
gpg: 密钥 323293EE:公钥“Launchpad Mercurial PPA Packagers”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1  (RSA: 1)

hyh@ubuntu:~$ sudo apt-get update
命中 http://cn.archive.ubuntu.com lucid Release.gpg
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/main Translation-zh_CN         
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/restricted Translation-zh_CN   
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/universe Translation-zh_CN     
命中 http://cn.archive.ubuntu.com/ubuntu/ lucid/multiverse Translation-zh_CN   
命中 http://cn.archive.ubuntu.com lucid-updates Release.gpg                    
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/main Translation-zh_CN
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/restricted Translation-zh_CN
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/universe Translation-zh_CN
忽略 http://cn.archive.ubuntu.com/ubuntu/ lucid-updates/multiverse Translation-zh_CN
命中 http://cn.archive.ubuntu.com lucid Release                                
命中 http://cn.archive.ubuntu.com lucid-updates Release                        
命中 http://cn.archive.ubuntu.com lucid/main Packages                          
命中 http://cn.archive.ubuntu.com lucid/restricted Packages                    
命中 http://cn.archive.ubuntu.com lucid/main Sources                           
命中 http://cn.archive.ubuntu.com lucid/restricted Sources                     
命中 http://cn.archive.ubuntu.com lucid/universe Packages                      
命中 http://cn.archive.ubuntu.com lucid/universe Sources                       
命中 http://cn.archive.ubuntu.com lucid/multiverse Packages                    
命中 http://cn.archive.ubuntu.com lucid/multiverse Sources                     
命中 http://cn.archive.ubuntu.com lucid-updates/main Packages                  
命中 http://cn.archive.ubuntu.com lucid-updates/restricted Packages            
命中 http://cn.archive.ubuntu.com lucid-updates/main Sources                   
命中 http://cn.archive.ubuntu.com lucid-updates/restricted Sources             
命中 http://cn.archive.ubuntu.com lucid-updates/universe Packages              
命中 http://cn.archive.ubuntu.com lucid-updates/universe Sources               
命中 http://cn.archive.ubuntu.com lucid-updates/multiverse Packages            
命中 http://cn.archive.ubuntu.com lucid-updates/multiverse Sources             
获取:1 http://ppa.launchpad.net lucid Release.gpg [307B]                      
忽略 http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu/ lucid/main Translation-zh_CN
命中 http://ppa.launchpad.net lucid Release.gpg
命中 http://security.ubuntu.com lucid-security Release.gpg
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/main Translation-zh_CN
忽略 http://ppa.launchpad.net/tortoisehg-ppa/releases/ubuntu/ lucid/main Translation-zh_CN
获取:2 http://ppa.launchpad.net lucid Release [57.3kB]
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/restricted Translation-zh_CN
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/universe Translation-zh_CN
忽略 http://security.ubuntu.com/ubuntu/ lucid-security/multiverse Translation-zh_CN
命中 http://security.ubuntu.com lucid-security Release
命中 http://security.ubuntu.com lucid-security/main Packages
命中 http://security.ubuntu.com lucid-security/restricted Packages
命中 http://security.ubuntu.com lucid-security/main Sources
命中 http://security.ubuntu.com lucid-security/restricted Sources
命中 http://security.ubuntu.com lucid-security/universe Packages
命中 http://security.ubuntu.com lucid-security/universe Sources
命中 http://security.ubuntu.com lucid-security/multiverse Packages
命中 http://security.ubuntu.com lucid-security/multiverse Sources
命中 http://ppa.launchpad.net lucid Release           
获取:3 http://ppa.launchpad.net lucid/main Packages [1,904B]
命中 http://ppa.launchpad.net lucid/main Packages
下载 59.5kB,耗时 3秒 (14.9kB/s)
正在读取软件包列表… 完成

hyh@ubuntu:~$ sudo apt-get install tortoisehg
正在读取软件包列表… 完成
正在分析软件包的依赖关系树       
正在读取状态信息… 完成       
将会安装下列额外的软件包:
  mercurial mercurial-common python-iniparse
建议安装的软件包:
  qct vim emacs kdiff3 tkdiff meld xxdiff python-mysqldb python-pygments
  tortoisehg-nautilus
下列【新】软件包将被安装:
  mercurial mercurial-common python-iniparse tortoisehg
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 4,002kB 的软件包。
解压缩后会消耗掉 11.7MB 的额外空间。
您希望继续执行吗?[Y/n]
获取:1 http://cn.archive.ubuntu.com/ubuntu/ lucid/main python-iniparse 0.3.1-1 [19.0kB]
获取:2 http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu/ lucid/main mercurial-common 1.6.3-0ppa1~lucid1 [1,321kB]
获取:3 http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu/ lucid/main mercurial 1.6.3-0ppa1~lucid1 [54.8kB]                                            
获取:4 http://ppa.launchpad.net/tortoisehg-ppa/releases/ubuntu/ lucid/main tortoisehg 1.1.2-1ppa1 [2,608kB]                                                
下载 4,002kB,耗时 43秒 (92.7kB/s)                                                                                                                          
选中了曾被取消选择的软件包 mercurial-common。
(正在读取数据库 … 系统当前总共安装有 127088 个文件和目录。)
正在解压缩 mercurial-common (从 …/mercurial-common_1.6.3-0ppa1~lucid1_all.deb) …
选中了曾被取消选择的软件包 mercurial。
正在解压缩 mercurial (从 …/mercurial_1.6.3-0ppa1~lucid1_i386.deb) …
选中了曾被取消选择的软件包 tortoisehg。
正在解压缩 tortoisehg (从 …/tortoisehg_1.1.2-1ppa1_all.deb) …
选中了曾被取消选择的软件包 python-iniparse。
正在解压缩 python-iniparse (从 …/python-iniparse_0.3.1-1_all.deb) …
正在处理用于 man-db 的触发器…
正在处理用于 doc-base 的触发器…
Processing 1 added doc-base file(s)…
Registering documents with scrollkeeper…
正在设置 mercurial-common (1.6.3-0ppa1~lucid1) …

正在设置 mercurial (1.6.3-0ppa1~lucid1) …

Creating config file /etc/mercurial/hgrc.d/hgext.rc with new version

正在设置 tortoisehg (1.1.2-1ppa1) …

正在设置 python-iniparse (0.3.1-1) …

正在处理用于 python-support 的触发器…

hyh@ubuntu:~$

 

 

 

 

Ubuntu 9.10下安装Eclipse CDT 6.0

鱼漂(www.eit.name)原创,转载请注明.

安装步骤如下:
1. 安装Jre, Jdk
sudo apt-get install sun-java6-jre
sudo apt-get install sun-java6-jdk

2. 安装Eclipse
sudo apt-get install eclipse
安装完eclipse后,还需要安装以下两个包,否则安装CDT将失败:
sudo apt-get install eclipse-pde
sudo apt-get install eclipse-jdt

3.安装CDT
通过Eclipse的Help -> Install New Software进入安装插件界面;
首先,需要添加一个CDT的下载站点,填写CDT的下载地址:
http://download.eclipse.org/tools/cdt/releases/galileo
(以上下载地址,可以在http://www.eclipse.org/cdt/downloads.php找到)

之后在此站点安装CDT包即可。

 

Ubuntu上Eclipse + CDT 安装指南

Ubuntu上Eclipse + CDT 安装指南

http://timjiang2000.spaces.live.com/blog/cns!390AF4E52022319A!510.entry

 

用apt-get装eclipse + cdt总是出问题,于是打算手动安装配置,找到了这个帖子,很详细。特别是设置方面,以后手动安装软件都可以参考这个了。
另外,上eclipse的官网下载时,发现有集成了eclipse+cdt的包。这样更方便些了。
---------------------------------------------
假定你已安装好java环境!
0. 准备工作,到以下网站找你需要的软件包!
http://www.eclipse.org/downloads/index.php
1. 切换为root用户
zhong@ubuntu:~/Desktop$ sudo -s -H
2. 下载软件包
下载eclipse集成开发环境软件包(支持java开发)[必须安装]:
http://ftp.daum.net/eclipse/technology/epp/downloads/release/ganymede/SR1/
下载cdt插件(支持C/C++开发) [可选安装]:
root@ubuntu:/home/zhong/Desktop # wget -c http://update.eclipse.org/tools/cdt/releases/new/zips/2.1.1/org.eclipse.cdt.sdk-2.1.1-linux.x86.zip
下载cdt中文语言包 [可选安装]:
root@ubuntu:/home/zhong/Desktop # wget -c http://download.eclipse.org/tools/cdt/releases/new/zips/2.0NL/NLpack-org.eclipse.cdt.sdk-2.0.x-linux.x86.zip
下载UML2插件(支持UML2开发) [可选安装]:
root@ubuntu:/home/zhong/Desktop # wget -c http://download.eclipse.org/tools/uml2/scripts/download.php?viewer=true&dropFile=../downloads/drops/1.1.0/R200507070914/uml2-SDK-1.1.0.zip
下载GEF – Graphical Editor Framework插件 [可选安装]:
root@ubuntu:/home/zhong/Desktop # wget -c http://www.eclipse.org/downloads/download.php?file=/tools/gef/downloads/drops/R-3.1-200507071758/GEF-ALL-3.1.zip&url=http://eclipse.mirrors.tds.net/tools/gef/downloads/drops/R-3.1-200507071758/GEF-ALL-3.1.zip&mirror_id=52
下载EMF插件 [可选安装]:
root@ubuntu:/home/zhong/Desktop # wget -c http://eclipse.org/downloads/download.php?file=/tools/emf/downloads/drops/2.1.0/R200507070200/emf-sdo-xsd-SDK-2.1.0.zip&url=http://eclipse.mirrors.tds.net/tools/emf/downloads/drops/2.1.0/R200507070200/emf-sdo-xsd-SDK-2.1.0.zip&mirror_id=52
下载VE插件 [可选安装]:
root@ubuntu:/home/zhong/Desktop # wget -c http://download.eclipse.org/tools/ve/downloads/drops/R-1.0.2.2-200506291842/VE-SDK-1.0.2.2.zip
3. 解压到/opt目录下
[必须操作]
root@ubuntu:/home/zhong/Desktop # tar zxvf eclipse-SDK-3.1-linux-gtk.tar.gz -C /opt
[可选操作]
root@ubuntu:/home/zhong/Desktop # unzip org.eclipse.cdt.sdk-2.1.1-linux.x86.zip -d /opt
[可选操作]
root@ubuntu:/home/zhong/Desktop # unzip NLpack-org.eclipse.cdt.sdk-2.0.x-linux.x86.zip -d /opt
[可选操作]
root@ubuntu:/home/zhong/Desktop # unzip uml2-SDK-1.1.0.zip -d /opt
[可选操作]
root@ubuntu:/home/zhong/Desktop # unzip GEF-ALL-3.1.zip -d /opt
[可选操作]
root@ubuntu:/home/zhong/Desktop # unzip emf-sdo-xsd-SDK-2.1.0.zip -d /opt
[可选操作]
root@ubuntu:/home/zhong/Desktop # unzip VE-SDK-1.0.2.2.zip -d /opt
4. 目录设置权限
root@ubuntu:/home/zhong/Desktop # chown -R root:root /opt/eclipse
5. 创建/usr/bin/eclipse文件
root@ubuntu:/home/zhong/Desktop # cat > /usr/bin/eclipse << “EOF”
> #!/bin/sh
> export MOZILLA_FIVE_HOME=”/usr/lib/mozilla/”
> export ECLIPSE_HOME=”/opt/eclipse”
> $ECLIPSE_HOME/eclipse $*
> # End /usr/bin/eclipse
> EOF
6. 设置/eclipse/bin/eclipse为可执行文件
root@ubuntu:/home/zhong/Desktop # chmod +x /usr/bin/eclipse
7. 增加菜单项
root@ubuntu:/home/zhong/Desktop # cat > /usr/share/applications/eclipse.desktop << “EOF”
> [Desktop Entry]
> Encoding=UTF-8
> Name=Eclipse Platform
> Comment=Eclipse IDE
> Exec=eclipse
> Icon=/opt/eclipse/icon.xpm
> Terminal=false
> Type=Application
> Categories=GNOME;Application;Development;
> StartupNotify=true
> EOF
8. 退出root用户
root@ubuntu:/home/zhong/Desktop # exit
zhong@ubuntu:~/Desktop$
9. 应用程序–> 编程 –> Eclipse Platform

安装eclipse
(1)把eclipse-SDK-3.3解压到某个目录中,俺解压到的是/opt下,得到/opt/eclipse目录
如果想把eclipse目录的更改为root拥有,可以执行下面的命令
sudo chown -R root:root /opt/eclipse
当然也可以不用。
(2)在/usr/bin目录下创建一个启动脚本eclipse,执行下面的命令来创建:
sudo vi /usr/bin/eclipse
如果不熟悉vi命令的可以用Ubuntu自带的简单文本编辑器gedit,用下面的命令来创建:
sudo gedit /usr/bin/eclipse
然后在该文件中添加以下内容:
#!/bin/sh
export MOZILLA_FIVE_HOME=”/usr/lib/mozilla/”
export ECLIPSE_HOME=”/opt/eclipse”
$ECLIPSE_HOME/eclipse $*
(3)让修改该脚本的权限,让它变成可执行,执行下面的命令:
sudo chmod +x /usr/bin/eclipse
3、在桌面或者gnome菜单中添加eclipse启动图标
(1)在桌面或者启动面板上添加图标:
在桌面(右键单击桌面->创建启动器)或面板(右键单击面板->添加到面板 ->定制应用程序启动器)上创建一个新的启动器,然后添加下列数据:
名称:Eclipse Platform
命令:eclipse
图标: /opt/eclipse/icon.xpm
(2)在Applications(应用程序)菜单上添加一个图标
用文本编辑器在/usr/share/applications目录里新建一个名为eclipse.desktop的启动器,如下面的命令:
sudo vi /usr/share/applications/eclipse.desktop
或者
sudo gedit /usr/share/applications/eclipse.desktop
然后在文件中添加下列内容:
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse Platform
Comment=Eclipse IDE
Exec=eclipse
Icon=/opt/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
保存文件。完成整个安装过程。可以双击桌面eclipse的图标来运行eclipse

 

附送一个QT插件配置:

 

ubuntu 8.10下安装eclipse qt可视化开发环境

2009-01-05 02:06

首先,到eclipse主页上下载eclipse的c/c++版本,越新越好。
然后,下载qt-eclipse-integration,下gcc4版本的。
开始安装。最好切换到root权限下。
将Eclipse的压缩包解压到/opt,命令如下:
tar -xzvf eclipse-cpp-ganymede-SR1-linux-gtk.tar.gz -C /opt
进入eclipse目录:
cd /opt/eclipse
新建一个qt文件夹:
mkdir qt
回到存放qt插件的目录,将插件解压到/opt/eclipse/qt:
tar -xzvf qt-eclipse-integration-linux.x86-1.4.3.tar.gz -C /opt/eclipse/qt
再次进入Eclipse目录,新建文件夹links:
cd /opt/eclipse
mkdir links
进入links文件夹,新建文件qt.link,将如下内容写入qt.link:
path=/opt/eclipse/qt
保存即可。
最后,启动eclipse,就可以看到qt插件了。

Ubuntu 中的编程资料简介,来自wiki.ubuntu.org

Android Cupcake源码编译笔记

 一直在想下份Android 的源代码来编译,学习。在http://android.git.kerner.org/下了好多天都没下完,repo sync老出错,而且出错就退出,不会自动重试,
正郁闷中,发现www.androidin.com下载恢复了,赶整下了个,还有点小大,压缩包1G,解压后将近2G,编译了一天,终于得到了3个文件:ramdisk.img,system.img
,userdata.img,现在将编译的过程记下来做个参考。
编译环境:VMware Workstation5中装ubuntu 8.10
  1. 首先,要安装JDK 5或6,下载地址http://java.sun.com/javase/downloads/index.jsp,安装完后设置好JAVA环境变量。
  2. 去www.androidin.com下载Android Cupcake源码
  3. 解压下载的cupcake.tar.gz
  4. 我的ubuntu没有安装g++,安装g++: apt-get install g++
  5. 安装库文件
     apt-get install flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev curl libncurses5-dev zlib1g-dev libx11-dev build-essential  
python libdevice-serialport-perl imagemagick
  
  6. 进入cupcake文件夹,make
  
  7. 过一会,编译出错,都是却少了头文件引用,vim打开出错的文件,手动添加头文件,继续make,出错,加头文件,多次重复,大概有20次,具体数没数,不确定有多少次
报错。添加头文件要点:
       提示缺strcpm,strdup等声明的,添加  #include<string.h>
       提示缺exit,malloc等声明的,添加  #include<stdlib.h>
       提示缺sort声明的,添加  #include<algorithm>
       提示缺unlink声明的,添加  #include <unistd.h>
  8.  我编译时,unlink是最后一处错误,改了这个后又编译了2个小时,终于结束。
编译完会产生OUT目录,要运行,好象还要make sdk,我在这一步,java库报错了,没有完成,将“ramdisk.img,system.img,userdata.img”在下载的android SDK开发包的模拟
器中可以正常运行。

SDK终于编译好了,原来是要用JAVA SDK 5,我以前装的是SDK6,操作:
1) apt-get install sun-java5-jdk
2) update-alternatives –config java
update-alternatives –config javac
update-alternatives –config javadoc

3)去掉PATH里SDK 6的路径,我以前装SDK 6设置了路径,试了多次2)的操作,一直不成功,搞了好久才想到这点

 

来自:http://blog.csdn.net/Harrison_zhu/archive/2009/04/02/4042756.aspx

 

Android项目中编译 C的模块

Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一 标准的Android.mk. Android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了Android自身编译系统的很多处理,因此要真正理清 楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的Android.mk来给Android增加一个新的Component会比较简单。 编译Java程序可以直接采用Eclipse的集成环境来完成,这里就不重复了。我们主要针对C/C++来说明,下面通过一个小例子来说明,如何在 Android 中增加一个C程序的Hello World:
1. 在$(YOUR_ANDROID)/ development 目录下创建hello目录,其中$(YOUR_ANDROID)指Android源代码所在的目录。
– # mkdir $(YOUR_ANDROID)/development/hello
2. 在$(YOUR_ANDROID)/external/hello/目录编写hello.c文件,hello.c的内容当然就是经典的HelloWorld程序:
#include <stdio.h>

int main(int argc, char **argv)
{
    printf(“Hello World!”n”);

return 0;
}
 

 
3. 在$(YOUR_ANDROID)/external/hello/目录编写Android.mk文件。这是Android Makefile的标准命名,不要更改。Android.mk文件的格式和内容可以参考其他已有的Android.mk文件的写法,针对 helloworld程序的Android.mk文件内容如下:
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

 

LOCAL_SRC_FILES:= “

    hello.c

 

LOCAL_MODULE := helloworld

include $(BUILD_EXECUTABLE)
 

注意上面LOCAL_SRC_FILES用来指定源文件;,LOCAL_MODULE指定要编译的模块的名字,下一步骤编译时就要用 到;include $(BUILD_EXECUTABLE)表示要编译成一个可执行文件,如果想编译成动态库则可用BUILD_SHARED_LIBRARY,这些可以 在$(YOUR_ANDROID)/build/core/config.mk查到。
4. 回到Android源代码顶层目录进行编译:
# cd $(YOUR_ANDROID) && make helloworld
 

注意make helloworld中的目标名helloworld就是上面Android.mk文件中由LOCAL_MODULE指定的模块名。编译结果如下:
target thumb C: helloworld <= development/hello/hello.c

target Executable: helloworld (out/target/product/generic/obj/EXECUTABLES/helloworld_intermediates/LINKED/helloworld)

target Non-prelinked: helloworld (out/target/product/generic/symbols/system/bin/helloworld)

target Strip: helloworld (out/target/product/generic/obj/EXECUTABLES/helloworld_intermediates/helloworld)

Install: out/target/product/generic/system/bin/helloworld
 

 
5.如上面的编译结果所示,编译后的可执行文件存放在out/target/product/generic/system/bin/helloworld目录

 

启动Android模拟器,用如下命令将文件push到Android模拟器上:

    注意:  要把SDK目录里的tools目录放到PATH环境变量中.

adb shell mkdir /dev/sample
adb push hello /dev/sample/hello

adb shell chmod 777 /dev/sample/hello

先创建 /dev/sample目录,再将编译好的hello上传上去,最后将hello改成可执行的。

再进入命令行模式,进入Android的shell环境:

adb shell

#cd /dev/sample

#./hello

来自:http://blog.csdn.net/Harrison_zhu/archive/2009/04/08/4057738.aspx

 

Android的源代码结构

Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:
.
|– Makefile        
(全局的Makefile
|– bionic         
Bionic含义为仿生,这里面是一些基础的库的源代码)
|– bootloader      
(引导加载器)
|– build           
build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具) 
|– dalvik         
JAVA虚拟机)
|– development     
(程序开发所需要的模板和工具)
|– external        
(目标机器使用的一些库)
|– frameworks      
(应用程序的框架层)
|– hardware        
(与硬件相关的库)
|– kernel         
Linux2.6的源代码)
|– packages        
Android的各种应用程序)
|– prebuilt        
Android在各种平台下编译的预置脚本)
|– recovery        
(与目标的恢复功能相关)
`– system         
Android的底层的一些库)

bionic目录展开一个级别的目录如下所示:
bionic/
|– Android.mk
|– libc
|– libdl
|– libm
|– libstdc++
|– libthread_db
`– linker

bootloader目录展开的两个级别目录:
bootloader/
`– legacy
    |– Android.mk
    |– README
    |– arch_armv6
    |– arch_msm7k
    |– fastboot_protocol.txt
    |– include
    |– libboot
    |– libc
    |– nandwrite
    `– usbloader

build目录展开的一个级别的目录如下所示:
build/
|– buildspec.mk.default
|– cleanspec.mk
|– core                       
(各种以mk为结尾的文件,它们是编译所需要的Makefile
|– envsetup.sh
|– libs
|– target                     
(包含boardproduct两个目录,为目标所需要文件)
`– tools                     
(编译过程中主机所需要的工具,一些需要经过编译生成)

其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。
envsetup.sh
是一个在使用仿真器运行的时候,用于设置环境的脚本。
dalvik
目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。
development
目录展开的一个级别的目录如下所示:
development
|– apps                       
Android应用程序的模板)
|– build                     
(编译脚本模板)
|– cmds
|– data
|– docs
|– emulator                  
(仿真相关)
|– host                       
(包含windows平台的一些工具)
|– ide
|– pdk
|– samples                    
(一些示例程序)
|– simulator                  
(大多是目标机器的一些工具)
`– tools

emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。
samples
中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。
external
目录展开的一个级别的目录如下所示:
external/
|– aes
|– apache-http
|– bluez
|– clearsilver
|– dbus
|– dhcpcd
|– dropbear
|– elfcopy
|– elfutils
|– emma
|– esd
|– expat
|– fdlibm
|– freetype
|– gdata
|– giflib
|– googleclient
|– icu4c
|– iptables
|– jdiff
|– jhead
|– jpeg
|– libffi
|– libpcap
|– libpng
|– libxml2
|– netcat
|– netperf
|– neven
|– opencore
|– openssl
|– oprofile
|– ping
|– ppp
|– protobuf
|– qemu
|– safe-iop
|– skia
|– sonivox
|– sqlite
|– srec
|– strace
|– tagsoup
|– tcpdump
|– tinyxml
|– tremor
|– webkit
|– wpa_supplicant
|– yaffs2
`– zlib

external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:
opencore
PVPacketVideo),它是Android多媒体框架的核心。
webkit
Android网络浏览器的核心。
sqlite
Android数据库系统的核心。
openssl
Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。
frameworks
目录展开的一个级别的目录如下所示:
frameworks/
|– base
|– opt
`– policies

frameworksAndroid应用程序的框架。
hardware
是一些与硬件相关的库
kernel
Linux2.6的源代码

packages目录展开的两个级别的目录如下所示:
packages/
|– apps
|   |– AlarmClock
|   |– Browser
|   |– Calculator
|   |– Calendar
|   |– Camera
|   |– Contacts
|   |– Email
|   |– GoogleSearch
|   |– HTMLViewer
|   |– IM
|   |– Launcher
|   |– Mms
|   |– Music
|   |– PackageInstaller
|   |– Phone
|   |– Settings
|   |– SoundRecorder
|   |– Stk
|   |– Sync
|   |– Updater
|   `– VoiceDialer
`– providers
    |– CalendarProvider
    |– ContactsProvider
    |– DownloadProvider
    |– DrmProvider
    |– GoogleContactsProvider
    |– GoogleSubscribedFeedsProvider
    |– ImProvider
    |– MediaProvider
    `– TelephonyProvider

packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(在Android中的一个数据源)。
packages
中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。
prebuilt
目录展开的一个级别的目录如下所示:
prebuilt/
|– Android.mk
|– android-arm
|– common
|– darwin-x86
|– linux-x86
`– windows

system目录展开的两个级别的目录如下所示:
system/
|– bluetooth
|   |– bluedroid
|   `– brfpatch
|– core
|   |– Android.mk
|   |– README
|   |– adb
|   |– cpio
|   |– debuggerd
|   |– fastboot
|   |– include            
(各个库接口的头文件)
|   |– init
|   |– libctest
|   |– libcutils
|   |– liblog
|   |– libmincrypt
|   |– libnetutils
|   |– libpixelflinger
|   |– libzipfile
|   |– logcat
|   |– logwrapper
|   |– mkbootimg
|   |– mountd
|   |– netcfg
|   |– rootdir
|   |– sh
|   `– toolbox
|– extras
|   |– Android.mk
|   |– latencytop
|   |– libpagemap
|   |– librank
|   |– procmem
|   |– procrank
|   |– showmap
|   |– showslab
|   |– sound
|   |– su
|   |– tests
|   `– timeinfo

`– wlan

 

来自:http://blog.csdn.net/Harrison_zhu/archive/2009/04/09/4058682.aspx

Android 学习之四 一切软件大同小异,就是一个模型

 

软件基本大同小异,就是一个模型,模型也没什么变化。如果以类为单位,那么说简单点,就是一些不同层面的类,以及类与类间的关系。

不管实际情况如何,以视觉数的概念来理解这个复杂的世界,当让包括软件,是一个屡试不爽的方法。万事皆有源,所谓源,就是根。软件框架基本源于一个类,就比如.net,所有类都继承自Object,以它为根,发展出了Windows、Forms、Media、Control等等对象(类)。把握了这棵树,那么你对.net的框架也有了一个立体的认识。我们可以借助一些工具,比如MindManager,来帮助我们记录和分析这些树。