七个方法培养立即行动的习惯

各行业中首屈一指的成功人士都有一个共同的优点--他们办事言出即行。这种能力会取代智力,才能和社交能力,来决定你的工资范围和晋升速度。

虽然这个观念很简单,但擅于取得成果的人士总是缺乏的。行动习惯,也就是立即把思想付诸行动的习惯,这对完成事情来说是必不可少的。这里有七个方法能让你培养立即行动的习惯。

1. 不要等到条件都完美了才开始行动--如果你想等条件都完美了才开始行动,那很可能你永远都不会开始。因为总是会有些事情不是那么好。或是错过时机,行情不好,或是竞争太激烈。现实世界中没有完美的开始时间。你必须在问题出现的时候就行动起来并把它们处理好。开始行动的最佳时间就是去年。其实便是现在。

2. 做一个实干家--要实践,而不要只是空想。你想开始实践吗?你有没有好的创意要告诉老板?今天就行动起
来吧。一个没被付诸行动的想法在你的脑子里停留得越久越会变弱。过些天后其细节就会随之变得模糊起来。几星期后你就会把它给全忘了。在成为一个实干家的同
时,你可以实现更多的想法,并在其过程中产生更多新的想法。

3. 记住,想法本身不能带来成功--想法是很重要,但是它只有在被执行后才有价值。一个被付诸行动的普通想法,要比一打被你放着"改天再说"或"等待好时机"的好想法来得更有价值。如果你有一个觉得真的很不错的想法,那就为它做点什么吧。如果你不行动起来,那么这个想法永远不会被实现。

4. 用行动来克服恐惧、担心--你有没有注意到公共演讲最困难的部分就是等待自己演讲的过程呢?即使是专业
的演讲者和演员也会有表演前焦虑担心的经历。但是一旦开始表演,恐惧也就消失了。行动是治疗恐惧的最佳方法。万事开头难。一旦行动起来,你就会建立起自
信,事情也会变得简单。通过行动来克服恐惧,建立自信。

5. 机械地发动你的创造力--人们对创造性工作最大的误解之一就是认为只有灵感来了才能工作。如果你想等灵
感给你一记耳光,那么你能工作的时间就会很少。与其等待,不如机械地发动你的创造力马达。如果你需要写点东西,那么强制自己坐下来写。落笔,灵机一动,乱
图乱画。通过移动双手来刺激思绪,激发灵感。

6. 先顾眼前--把注意力集中在你目前可以做的事情上。不要烦恼上星期理应做什么,也不要烦恼明天可能会做什么。你可以左右时间只有现在。如果你过多思考过去或将来,那么你将一事无成。明天或下周的事经常是永远都不会发生的。

7. 立即谈正事(立即切入正题)--人们在开会前一般都会做些社交活动或聊聊天。独自工作者也是如此。在真
正开始工作前你多久会检查一次email或RSS
feeds呢?如果你不避开这些让人分心的事情来开始谈正事,那它们会花掉你很多时间。一旦开始谈正事,那就会变得更有创造力,而且别人也会把你当领佳节又重阳导者
看。

没有上级的指示就开始行动,这是需要勇气的。或许这就是为何主动性是一种优秀品质的原因,而且是让各地的经理主管们都垂涎的一种品质。当你有一个想
法的时候,不要等别人来告诉你就要把它给执行了。一旦人们看到你很认真地完成事情,他们就会想要加入你。成功人士不会让别人来告诉他们该做什么。如果你想
加入他们,那就该习惯独立行动。

Powered by ScribeFire.

Posted in 生活, 转贴 | Leave a comment

七个方法培养立即行动的习惯

各行业中首屈一指的成功人士都有一个共同的优点--他们办事言出即行。这种能力会取代智力,才能和社交能力,来决定你的工资范围和晋升速度。

虽然这个观念很简单,但擅于取得成果的人士总是缺乏的。行动习惯,也就是立即把思想付诸行动的习惯,这对完成事情来说是必不可少的。这里有七个方法能让你培养立即行动的习惯。

1. 不要等到条件都完美了才开始行动--如果你想等条件都完美了才开始行动,那很可能你永远都不会开始。因为总是会有些事情不是那么好。或是错过时机,行情不好,或是竞争太激烈。现实世界中没有完美的开始时间。你必须在问题出现的时候就行动起来并把它们处理好。开始行动的最佳时间就是去年。其实便是现在。

2. 做一个实干家--要实践,而不要只是空想。你想开始实践吗?你有没有好的创意要告诉老板?今天就行动起
来吧。一个没被付诸行动的想法在你的脑子里停留得越久越会变弱。过些天后其细节就会随之变得模糊起来。几星期后你就会把它给全忘了。在成为一个实干家的同
时,你可以实现更多的想法,并在其过程中产生更多新的想法。

3. 记住,想法本身不能带来成功--想法是很重要,但是它只有在被执行后才有价值。一个被付诸行动的普通想法,要比一打被你放着"改天再说"或"等待好时机"的好想法来得更有价值。如果你有一个觉得真的很不错的想法,那就为它做点什么吧。如果你不行动起来,那么这个想法永远不会被实现。

4. 用行动来克服恐惧、担心--你有没有注意到公共演讲最困难的部分就是等待自己演讲的过程呢?即使是专业
的演讲者和演员也会有表演前焦虑担心的经历。但是一旦开始表演,恐惧也就消失了。行动是治疗恐惧的最佳方法。万事开头难。一旦行动起来,你就会建立起自
信,事情也会变得简单。通过行动来克服恐惧,建立自信。

5. 机械地发动你的创造力--人们对创造性工作最大的误解之一就是认为只有灵感来了才能工作。如果你想等灵
感给你一记耳光,那么你能工作的时间就会很少。与其等待,不如机械地发动你的创造力马达。如果你需要写点东西,那么强制自己坐下来写。落笔,灵机一动,乱
图乱画。通过移动双手来刺激思绪,激发灵感。

6. 先顾眼前--把注意力集中在你目前可以做的事情上。不要烦恼上星期理应做什么,也不要烦恼明天可能会做什么。你可以左右时间只有现在。如果你过多思考过去或将来,那么你将一事无成。明天或下周的事经常是永远都不会发生的。

7. 立即谈正事(立即切入正题)--人们在开会前一般都会做些社交活动或聊聊天。独自工作者也是如此。在真
正开始工作前你多久会检查一次email或RSS
feeds呢?如果你不避开这些让人分心的事情来开始谈正事,那它们会花掉你很多时间。一旦开始谈正事,那就会变得更有创造力,而且别人也会把你当领佳节又重阳导者
看。

没有上级的指示就开始行动,这是需要勇气的。或许这就是为何主动性是一种优秀品质的原因,而且是让各地的经理主管们都垂涎的一种品质。当你有一个想
法的时候,不要等别人来告诉你就要把它给执行了。一旦人们看到你很认真地完成事情,他们就会想要加入你。成功人士不会让别人来告诉他们该做什么。如果你想
加入他们,那就该习惯独立行动。

Powered by ScribeFire.

Posted in 生活, 转贴 | Leave a comment

Linux中的Ramdisk与Initrd

Ramdisk简介

先简单介绍一下ramdisk,Ramdisk是虚拟于RAM中的盘(Disk)。对于用户来说,可以把RAM disk与通常的硬盘分区(如/dev/hda1)同等对待来使用,例如:

redice # mkfs.ext2 /dev/ram0mke2fs 1.38 (30-Jun-2005)Filesystem label=OS
type: LinuxBlock size=1024(log=0)Fragment size=1024 (log=0)2048 inodes,
8192 blocks409 blocks (4.99%) reserved for the super
userFirst data block=11 block group8192 blocks per group, 8192 fragments
per group2048 inodes per group
Writing inode tables: doneWriting superblocks and filesystem
accounting information: done
This filesystem will be automatically checked every 24 mounts or180 days,
whichever comes first.
 Use tune2fs -c or -i to override.
redice # mount /dev/ram0 /mnt/rdredice # ls /mnt/rdlost+foundredice
# mount/dev/hda2 on / type ext3proc
 on /proc type proc (rw)/dev/ram0 on /tmp/xxx type ext2 (rw)

当然,Ramdisk与硬盘分区有其不同的地方,例如RAM
disk不适合作为长期保存文件的介质,掉电后Ramdisk的内容会随内存内容的消失而消失。Ramdisk的其中一个优势是它的读写速度高,可以被用
作需要高速读写的文件。但在2.6版本后,Ramdisk的这一作用开始被tmpfs(Virtual memory file system
support)取代。

回到上面的例子,我们格式化了一个ramdisk(/dev/ram0)并且将其mount到/mnt/rd目录下,那么这个Ramdisk有多大呢?先看一下:

redice # df -h /dev/ram2Filesystem
容量   已用 可用 已用% 挂载点/dev/ram0
7.8M   1.0K   7.4M    1% /mnt/rd

从上面的信息看出,ramdisk有大约7.8M的可用空间。我们再试一下另外的文件系统,重新格式化成minix分区并挂接试一下:

redice # umount /mnt/rdredice # mkfs.minix /dev/ram02752 inodes8192
blocksFirstdatazone=90 (90)
Zonesize=1024Maxsize=268966912
redice # mount /dev/ram0 /mnt/rdredice # df -h /dev/ram0Filesystem
容量   已用 可用 已用% 挂载点/dev/ram0
 8.0M   1.0K   8.0M    1% /mnt/rd

现在看出来了,的确是8M(这同时说明,EXT2文件系统本身要占用一定的存储空间,相比之下minix文件系统要少些),这个空间是在编译核心时就确定下来了,在配置Ramdisk时,有一个叫 Default RAM disk size 的参数决定默认情况下Ramdisk的大小。可以通过核心命令行参数(ramdisk_size)来改变这个值,例如要设置Ramdisk的大小为16M,在grub中可以用:

# grub.conf -default=0timeout=10splashimage=(hd0,0)/grub/splash.xpm.gztitle
Redice Linuxroot (hd0,0)
kernel /vmlinuz ro root=LABEL=/ hdc=ide-scsi ramdisk_size=16384
initrd /initrd

这样,Ramdisk的大小就变成16M了。这个参数是Ramdisk直接编译到核心时才能使用的,如果Ramdisk编译为模块,则应该使用模块参数来设置Ramdisk的大小:

redice # insmod rd rd_size=16384

Note 编译到核心时,可以通过下面的一些核心命令行参数来配置Ramdisk:
  • ramdisk_size - ramdisk的大小(Kbytes);
  • ramdisk - 与ramdisk_size的作用相同;
  • ramdisk_blocksize - ramdisk的块大小,默认情况为1024;

当以模块的形式译时,模块支持以下几个加载参数:

  • rd_size - 同上面的ramdisk_size或ramdisk参数;
  • rd_blocksize - 同上面的ramdisk_blocksize;

initrd

上面已经提到,Ramdisk需要先格式化然后理能使用。那么,如果核心希望使用ramdisk该如何做呢?于是initrd产生了,initrd全称是 initial RAM disk ,它提供一种让核心可以简单使用Ramdisk的能力,简单的说,这些能力包括:

  1. 格式化一个 Ramdisk;
  2. 加载文件系统内容到Ramdisk;
  3. 将Ramdisk作为根文件系统;

我们可以将initrd形像的比作Norton Ghost
份的硬盘分区,而Linux启动阶段的Ramdisk相当于一个未格式化的硬盘分区,核心可以直接将initrd的内容释放到一个未初始化的
Ramdisk里,这个过程与Ghost恢复一个分区的过程十分相似。于是,相应的内容被加载到相应的Ramdisk中,同时,这个Ramdisk也被格
式化成某种由initrd格式所表达的分区格式。

initrd与Ghost备份的分区有许多相似之处,例如,它有一定的大小,包含分区上的文件系统格式等。initrd支持的格式包括:

  • Ext2文件系统;
  • Romfs文件系统;
  • cramfs文件系统;
  • minix文件系统;

如果核心选择了Gzip支持(通常这是默认的,在init/do_mounts_rd.c中定义的BUILD_CRAMDISK宏)还可以使用Gzip压缩的initrd。相关的代码可以在核心源码 drivers/block/rd.c:identify_ramdisk_image 中找到。

制作initrd

制作initrd传统的作法是通过软盘(显然过时了,不介绍了)、ramdisk或loop设备(/dev/loop)。通过ramdisk来制作的方法比较简单(以ext2文件系统为例):

redice # mkfs.ext2 /dev/ram0redice
# mount /dev/ram0 /mnt/rdredice
# cp _what_you_like_   /mnt/rd
# 把需要的文件复制过去redice # dd if=/dev/ram0 of=/tmp/initrdredice
# gzip -9 /tmp/initrd

这个过程也最能够解释initrd的本质,对于Linux来说,Ramdisk的一个块设备,而
initrd是这个块设备上所有内容的“克隆”(由命令dd来完成)而生成的文件。核心中加载initrd相关的代码则用于完成
将相反的过程,即将这一个文件恢复到Ramdisk中去。

通过loop设备来制作initrd的过程:

redice # dd if=/dev/zero of=/tmp/initrd bs=1024 count=4096 # 制作一个4M的空白文件
redice # losetup /dev/loop0 /tmp/initrd
# 映射到loop设备上;redice # mkfs.ext2 /dev/loop0
# 创建文件系统;redice # mount /dev/loop0 /mnt/rdredice # cp _what_you_like_ /mnt/rd
# 复制需要的文件;redice # umount /mnt/rdredice # losetup -d /dev/loop0redice
# gzip -9 /tmp/initrd

不过,现在已经有了一些更好的工具来完成这些工作,包括genromfs(uClinux里常用的工
具),genext2fs,mkcramfs等。这些工具提供了一些方便开发的新特性,例如,不需要上面烦索的过程,只要将文件复制到某个目录中,将其作
为根目录,即可生成initrd;另一个重要的改进是,这些工具都可以以普通用户的身份来生成initrd。

未完,待续…(补充有关如何加载|ARM中如何使用initrd作为根文件系统等)

链接和参考文档

文档

  • Linux文档中关于ramdisk的介绍,核心目录里 Documentation/ramdisk.txt;
  • Linux文档中关于initrd的介绍,核心目录 Documentation/initrd.txt;
  • Linux文档中关于tmpfs的介绍,核心目录 Documentation/filesystems/tmpfs.txt;
  • How to use a Ramdisk for Linux;

资源

  • genromfs - genromfs is a space-efficient, small, read-only filesystem originally for Linux and used by some Linux based projects.
  • genext2fs
    - Simply, it generates an ext2 filesystem as a normal (i.e. non-root)
    user. It doesn't require you to mount the image file to copy files on
    it. It doesn't even require you to be the superuser to make device
    nodes or set group/user ids.
  • cramfs
    - cramfs is a Linux filesystem designed to be simple, small, and to
    compress things well. It is used on a number of embedded systems and
    small devices.

使用ram disk初始化(initrd)
initrd提供了在boot loader下加载ram disk的方法。该ram disk可以被作为根文件系统挂载进来,里面的程序也可以运行。然后,新的根文件系统可以从其他设备挂载。之前的根(来自initrd)可以被转移到一个目录然后被卸载。

initrd主要设计用来使系统启动于两个条件,一个是内核来自于非常小的驱动器,一个是额外的模块需要从initrd中加载。

本文给出initrd的概要描述,更具体的可以参考[1]。

操作

当使用initrd,典型的系统启动顺序如下:

1. boot loader加载内核并初始化ram disk

2. 内核把initrd转化成正常的ram disk 并释放initrd使用的内存

3. initrd作为root被挂载,赋予读写权限。

4. /linuxrc被执行(这可以是任何可执行文件,如脚本,运行在uid 0,可以做任何初始化)。

5. linuxrc挂载真正的根文件系统

6. linuxrc使用pivot_root系统调用把根文件系统放在根目录。

7. 正常的启动序列(/sbin/init)在根文件系统上执行。

8. initrd文件系统被移去。

注意,改变根目录不牵扯卸载他。

挂载在initrd的文件系统仍然可以被访问。

启动命令选项

initrd添加了如下新的选项:

initrd=<path> (e.g. LOADLIN)

加载特定的文件作为初始的ram disk。当使用lilo,你应该在/etc/lilo.conf中指定

ram disk镜像文件位置,使用INITRD变量。

noinitrd

initrd数据被保留却不转化成ram disk,正常的根文件系统被加载。initrd的数据可以 从/dev/initrd中读取。注意,在initrd中的数据可以是任意结构的,不一定要是文件系统镜像。该选项多用于调试。

注意:/dev/initrd是只读的,而且只能被使用一次。只要最后一个进程关闭它,所有的数据将会释放掉,而/dev/initrd将不再被打开。

root=/dev/ram0 (without devfs)
root=/dev/rd/0 (with devfs)

initrd作为根文件系统被挂载,随后正常的启动顺序中,ram disk 仍然作为root。

安装

首先,用于initrd文件系统的目录在根文件系统上被创建:

#mkdir /initrd

名字不是很重要。更多的可以参考pivot_root(2)的man。

在启动过程中,如果根文件系统被创建(如果你有软盘启动),那么根文件系统应该创建/initrd目录。

如果initrd没有被挂载,他里面的内容仍然可以被访问,通过以下的方法(注意,这在使用devfs时不可用):

# mknod /dev/initrd b 1 250
# chmod 400 /dev/initrd

第二步,内核编译的时候必须支持ram disk并启动ram disk使能。所有从initrd中执行的程序必须被编译到内核中。

第三步,你必须创建ram disk镜像。这可以通过在块设备上创建文件系统实现,把所需的文件拷贝,然后把文件拷贝到initrd文件。根据最新的内核,至少三种设备可以用:

l 软盘(慢,却随处可用)

l ram disk(快,需要物理内存)

l loopback device(最高档)

我将介绍loopback device方法:

保证loopback device被内核支持

创建一个空的文件系统,拥有合适的大小:

# dd if=/dev/zero of=initrd bs=300k count=1
# mke2fs -F -m0 initrd

如果空间不多,你可以用minix fs而不是ext2

挂载文件系统

# mount -t ext2 -o loop initrd /mnt

创建控制台设备(如果用devfs,就没必要)

# mkdir /mnt/dev
# mknod /mnt/dev/console c 5 1

拷贝initrd环境需要的所有文件。不要忘掉最重要的文件/linuxrc.

注意,/linuxrc必须有执行权限。

正确的initrd环境可以不用重启就可以通过命令行测试:

# chroot /mnt /linuxrc

卸载文件系统

# umount /mnt

现在initrd被保存在initrd文件中。还可以压缩他。

# gzip -9 initrd

为了试验initrd,你可以创建一个急救盘,只需创建/linuxrc到/bin/sh的符号链接。

你还可以试着把initrd更小。

最后,你要启动内核并加载initrd.几乎所有的boot loader都支持initrd.

虽然启动进程兼容老的机制,下面的启动命令行还是得给出:

root=/dev/ram0 init=/linuxrc rw
如果不使用devfs.或者

root=/dev/rd/0 init=/linuxrc rw

如果使用devfs.

使用 LOADLIN,只要执行

LOADLIN <kernel> initrd=<disk_image>
e.g. LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0
init=/linuxrc rw

使用LILO,你添加选项INITRD=<path>到/etc/lilo.conf中,使用APPEDN命令即可。

image = /bzImage
initrd = /boot/initrd.gz
append = "root=/dev/ram0 init=/linuxrc rw"

然后运行 /sbin/lilo

对于其他的启动程序,请参考相应的文档。

现在你可以启动并享受使用initrd的乐趣了

Powered by ScribeFire.

Posted in linux, 转贴 | Leave a comment

嵌入式Linux文件系统详细介绍

Linux支持多种文件系统,包括ext2ext3vfatntfsiso9660jffsromfsnfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。

  Linux下的文件系统结构如下:

  Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。

  不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

  1. 基于FLASH的文件系统

  Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。

  闪存主要有NORNAND两种技术(简单比较见附录)Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。

  在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。

  顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。

  (1) jffs2

  JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。

  Jffs2: 日志闪存文件系统版本2 (Journalling Flash FileSystem v2)

  主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。

  目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt

  jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时间。

   (2) yaffsYet Another Flash File System

  yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了LinuxeCos,还支持WinCE, pSOSThreadX等。

  yaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTDVFS,直接对文件系统操作。当然,yaffs也可与MTD驱动程序配合使用。

  yaffsyaffs2的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页(2KB) NAND闪存。同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。

  (3) CramfsCompressed ROM File System

  CramfsLinux的创始人 Linus Torvalds参与开发的一种只读的压缩文件系统。它也基于MTD驱动程序。

  cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储相同的文件,从而降低系统成本。

  Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。

  另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。

  由于以上特性,Cramfs在嵌入式系统中应用广泛。

  但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。

  Cramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback 设备可以把它安装别的文件系统里。

  (4) Romfs

  传统型的Romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以XIP(eXecute In Place,片内运行)方式运行,在系统运行时,节省RAM空间。uClinux系统通常采用Romfs文件系统。

  其他文件系统:fat/fat32也可用于实际嵌入式系统的扩展存储器(例如PDA, Smartphone, 数码相机等的SD),这主要是为了更好的与最流行的Windows桌面操作系统相兼容。ext2也可以作为嵌入式Linux的文件系统,不过将它用于FLASH闪存会有诸多弊端。

  2. 基于RAM的文件系统

  (1) Ramdisk

  Ramdisk是将一部分固定大小的内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。

  Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。

  (2)ramfs/tmpfs

  RamfsLinus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)

  Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。

  Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化。

  Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。

  3. 网络文件系统NFS (Network File System)

  NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。

  以上讨论的都是基于存储设备的文件系统(memory-based file system),它们都可用作Linux的根文件系统。实际上,Linux还支持逻辑的或伪文件系统(logical or pseudo file system),例如procfs(proc文件系统),用于获取系统信息,以及devfs(设备文件系统)sysfs,用于维护设备文件。

  附录:NOR闪存与NAND闪存比较

 

NOR FLASH

NAND FLASH

接口时序同SRAM,易使用

地址/数据线复用,数据位较窄

读取速度较快

读取速度较慢

擦除速度慢,以64-128KB的块为单位

擦除速度快,以832KB的块为单位

写入速度慢(因为一般要先擦除)

写入速度快

随机存取速度较快,支持XIP(eXecute In Place,芯片内执行),适用于代码存储。在嵌入式系统中,常用于存放引导程序、根文件系统等。

顺序读取速度较快,随机存取速度慢,适用于数据存储(如大容量的多媒体应用)。在嵌入式系统中,常用于存放用户文件系统等。

单片容量较小,132MB

单片容量较大,8128MB,提高了单元密度

最大擦写次数10万次

Powered by ScribeFire.

Posted in linux, 转贴 | 1 Comment

使用 /proc 文件系统来控制系统

 /proc 文件系统Linux 的优秀特性之一,本文向您详细讲述了它的一些最实用的基础知识。使用 /proc,您再也不用关闭并重新引导机器来管理操作系统的许多细节问题,这对那些要求系统的可用性尽可能高的管理员来说非常有用。


任何管理过具有商业重要性的系统的人都知道计算机正常运行时间的价值 —
或者反过来讲,知道用户因故障时间会给您带来诸多头痛问题。公司采用 UNIX
服务器的主要原因之一是由于它的可靠性和稳定性。如果仔细管理,通常可以很长时间不需重启这些服务器。为了做到尽善尽美,您可以实时执行一些管理任务,甚
至是内核这一级别的任务,从而保持服务器的可用性。虽然因升级硬件或因某人踢掉电源线而仍需要重启系统,但了解到许多管理任务可以在不干扰服务的情况下执
行,总是有益的。


本文提供了不需要重新引导就能够执行关于各种管理任务和更改系统的提示和技巧。Linux 提供了各种方法,用以在保持系统正常运行的情况下,更改底层操作系统的值和设置。这些方法有两种基本形式,一种形式对于所有 Linux 系统都是通用的,并在 Linux 内核中提供这一形式(您可以在 Linux Kernel Archives 上查找更多关于 Linux 内核的信息和下载内核源代码;请参阅参考资料,里面有至 Linux Kernel Archives 的链接),还有一种形式是各分发版所独有的,并且由供应商提供。本文将讨论这两种方法。


更改运行中的内核的参数

Linux 向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核/系统。这是通过 /proc 虚拟文件系统实现的。Linux Gazette 给出了一份有关 /proc 的参考,它是我所看到过的最简单且最容易的参考之一。(请参阅参考资料,其中有至这篇文章的链接。)/proc 文件系统主要可以让您查看运行中的内核,这一点对于监控性能、查找系统信息、了解系统是如何配置的以及更改该配置很有用。该文件系统被称为虚拟文件系统,因为它实际上根本不是一个文件系统。它只是内核提供的一个映射,被附加在通常的文件系统结构之上,从而使您能够访问它。


我们可以采用某种方法在系统正常运行的同时更改运行中的内核的参数,这一事实赋予了系统管理员在更改内核设置方面强大的能力和高的灵活性。这种实现是出自部分 Linux 内核开发人员富有灵感的想法。但能力太大会是一件坏事吗?有时确实如此。如果准备更改 /proc 文件系统中的任何内容,您必须确保自己知道在更改什么以及这会对系统产生什么影响。这些技术确实有用,但错误的举动会带来完全不希望得到的结果。如果您不熟悉这方面的内容,或者不确定您所做的某项更改会带来什么影响,那么请在一台对您或您公司不重要的机器上进行实践。


如何更改

首先,考虑怎样做不会对内核进行更改。有两条充分的理由说明了为什么不能直接切换至 /proc 文件系统,用文本编辑器打开一个文件,做一系列更改,然后保存该文件,再退出。这两条理由是:


1.数据完整性:所有这些文件描述了运行中的系统,由于内核可以随时更改这些文件中的任何一个,因此如果打开一个编辑器,然后更改某些数据,而同时,系统也正在底层更改这些数据,那么无论您保存下来的任何内容都不可能是内核所期望的内容。

2.虚拟文件:所有这些文件实际上都不存在。如何使保存的数据同步,等等?


所以,解决办法是,不使用编辑器来更改任何这些文件。每当更改 /proc 文件系统中的任何内容时,应该使用 echo 命令,然后从命令行将输出重定向至 /proc 下所选定的文件中。例如:


echo "Your-New-Kernel-Value" > /proc/your/file


类似的,如果希望查看 /proc 中的信息,应该使用专门用于此用途的命令,或者使用命令行下的 cat 命令。


更改什么

要很好地使用 /proc 不需要您是一位内核方面的高手,只需基本了解这个文件系统的结构就可以极大地帮助您。直到有一天用户向您询问某些特定的功能,使您很高兴曾下功夫了解过在哪里进行更改,您才可能会觉得有必要知道关于 /proc 中的任何事情。在这方面,/proc 文件系统通过其结构和文件许可权帮助系统管理员。


/proc 中的每个文件都有一组分配给它的非常特殊的文件许可权,并且每个文件属于特定的用户标识。这一点实现得非常仔细,从而提供给管理员和用户正确的功能。下面这个列表汇总了各个文件上有哪些特定的许可权:


只读:任何用户都不能更改该文件;它用于表示系统信息

root 写:如果 /proc 中的某个文件是可写的,则通常只能由 root 用户来写

root 读:有些文件对一般系统用户是不可见的,而只对 root 用户是可见的

其它:出于各种原因,您可能会看到不同于上面常见的三种许可权的组合


关于 /proc,您会发现最通常的情况是,它的大多数文件是只读的,除了 /proc/sys 目录。该目录下存放着大多数的内核参数(而不是信息),并且设计成可以在系统运行的同时进行更改。因此这个目录是本文的主旨所在。


就更改 /proc 中什么内容而言,要了解的最后一点是,应该向这些文件实际写些什么。当查看 /proc
中各种文件时,会发现其中一些文件对我们来说是可读的,一些文件是数据文件。通过用特定的实用程序(譬如 top、lspci 和
free),这些数据文件仍然也可读。您还会注意到,对我们来说可读文件有两种不同格式:一些是二进制开关,另一些包含其它信息。二进制开关文件只包含代
表特定内核功能的 0(关)或 1(开)。


进行更改

详细介绍有关 /proc 中每个文件的用法和确切信息超出了本文所涉及的范围。要获得任何关于本文没有涉及到的 /proc 文件的其它信息,一个最佳来源就是 Linux 内核源代码本身,它包含了一些非常优秀的文档。对于系统管理员,/proc 中的以下文件较有用。这不意味着它是一份详尽的说明,而只是日常使用中便于查阅的参考。


/proc/scsi

/proc/scsi/scsi

作为系统管理员,需要了解的最有用内容是,在有热交换驱动器情况下,如何不重启系统就可以添加更多磁盘空间。假使不使用 /proc,您可以插入驱动器,但为了使系统识别新磁盘,必须随即重新引导系统。这里,可以用以下命令来使系统识别新的驱动器:


echo "scsi add-single-device w x y z" > /proc/scsi/scsi


为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示:


w 是主机适配器标识,第一个适配器为零(0)

x 是主机适配器上的 SCSI 通道,第一个通道为零(0)

y 是设备的 SCSI 标识

z 是 LUN 号,第一个 LUN 为零(0)


一旦将磁盘添加到系统中之后,可以挂装任何先前已格式化的文件系统,也可以开始对它进行格式化等。例如,如果不确定磁盘是什么设备,或者想检查任何先前已有的分区,则可以用如 fdisk -l 这样的命令来向您报告这方面的信息。


相反的,在不重新引导系统的情况下将设备从系统中除去的命令是:


echo "scsi remove-single-device w x y z" > /proc/scsi/scsi


在输入这条命令并将热交换 SCSI 磁盘从系统中除去之前,请确保首先卸下已从该磁盘安装的任何文件系统


/proc/sys/fs/

/proc/sys/fs/file-max

该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。


缺省设置:4096


/proc/sys/fs/file-nr

该文件与 file-max 相关,它有三个值:


已分配文件句柄的数目

已使用文件句柄的数目

文件句柄的最大数目

该文件是只读的,仅用于显示信息。


/proc/sys/fs/inode-*

任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关。


/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid

这两个文件分别保存那些支持 16 位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)。可以更改这些值,但如果您确实觉得需要这样做,那么您可能会发现更改组和密码文件项更容易些。


缺省设置:65534


/proc/sys/fs/super-max

该文件指定超级块处理程序的最大数目。挂装的任何文件系统需要使用超级块,所以如果挂装了大量文件系统,则可能会用尽超级块处理程序。


缺省设置:256


/proc/sys/fs/super-nr

该文件显示当前已分配超级块的数目。该文件是只读的,仅用于显示信息。


/proc/sys/kernel

/proc/sys/kernel/acct

该文件有三个可配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记帐:


如果可用空间低于这个百分比值,则停止进程记帐

如果可用空间高于这个百分比值,则开始进程记帐

检查上面两个值的频率(以秒为单位)

要更改这个文件的某个值,应该回送用空格分隔开的一串数字。


缺省设置:2 4 30


如果包含日志的文件系统上只有少于 2% 的可用空间,则这些值会使记帐停止,如果有 4% 或更多可用空间,则再次启动记帐。每 30 秒做一次检查。


/proc/sys/kernel/ctrl-alt-del

该文件有一个二进制值,该值控制系统在接收到 ctrl+alt+delete 按键组合时如何反应。这两个值表示:


零(0)值表示捕获 ctrl+alt+delete,并将其送至 init 程序。这将允许系统可以完美地关闭和重启,就好象您输入 shutdown 命令一样。

壹(1)值表示不捕获 ctrl+alt+delete,将执行非干净的关闭,就好象直接关闭电源一样。


缺省设置:0


/proc/sys/kernel/domainname

该文件允许您配置网络域名。它没有缺省值,也许已经设置了域名,也许没有设置。


/proc/sys/kernel/hostname

该文件允许您配置网络主机名。它没有缺省值,也许已经设置了主机名,也许没有设置。


/proc/sys/kernel/msgmax

该文件指定了从一个进程发送到另一个进程的消息的最大长度。进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。


缺省设置:8192


/proc/sys/kernel/msgmnb

该文件指定在一个消息队列中最大的字节数。


缺省设置:16384


/proc/sys/kernel/msgmni

该文件指定消息队列标识的最大数目。


缺省设置:16


/proc/sys/kernel/panic

该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位)。零(0)秒设置在发生内核严重错误时将禁止重新引导。


缺省设置:0


/proc/sys/kernel/printk

该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请阅读 syslog(2) 联机帮助页。该文件的四个值为:


控制台日志级别:优先级高于该值的消息将被打印至控制台

缺省的消息日志级别:将用该优先级来打印没有优先级的消息

最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)

缺省的控制台日志级别:控制台日志级别的缺省值


缺省设置:6 4 1 7


/proc/sys/kernel/shmall

该文件是在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)。


缺省设置:2097152


/proc/sys/kernel/shmax

该文件指定内核所允许的最大共享内存段的大小(以字节为单位)。


缺省设置:33554432


/proc/sys/kernel/shmmni

该文件表示用于整个系统共享内存段的最大数目。


缺省设置:4096


/proc/sys/kernel/sysrq

如果该文件指定的值为非零,则激活 System Request Key。


缺省设置:0


/proc/sys/kernel/threads-max

该文件指定内核所能使用的线程的最大数目。


缺省设置:2048


/proc/sys/net

/proc/sys/net/core/message_burst

写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内所接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”您系统的人所使用的拒绝服务(Denial of Service)攻击。


缺省设置:50(5 秒)


/proc/sys/net/core/message_cost

该文件存有与每个警告消息相关的成本值。该值越大,越有可能忽略警告消息。


缺省设置:5


/proc/sys/net/core/netdev_max_backlog

该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。


缺省设置:300


/proc/sys/net/core/optmem_max

该文件指定了每个套接字所允许的最大缓冲区的大小。


/proc/sys/net/core/rmem_default

该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)。


/proc/sys/net/core/rmem_max

该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)。


/proc/sys/net/core/wmem_default

该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。


/proc/sys/net/core/wmem_max

该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。


/proc/sys/net/ipv4

所有 IPv4 和 IPv6 的参数都被记录在内核源代码文档中。请参阅文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。


/proc/sys/net/ipv6

同 IPv4。


/proc/sys/vm

/proc/sys/vm/buffermem

该文件控制用于缓冲区内存的整个系统内存的数量(以百分比表示)。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。


用于缓冲区的内存的最低百分比

如果发生所剩系统内存不多,而且系统内存正在减少这种情况,系统将试图维护缓冲区内存的数量。

用于缓冲区的内存的最高百分比


缺省设置:2 10 60


/proc/sys/vm/freepages

该文件控制系统如何应对各种级别的可用内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。


如果系统中可用页面的数目达到了最低限制,则只允许内核分配一些内存。

如果系统中可用页面的数目低于这一限制,则内核将以较积极的方式启动交换,以释放内存,从而维持系统性能。

内核将试图保持这个数量的系统内存可用。低于这个值将启动内核交换。


缺省设置:512 768 1024


/proc/sys/vm/kswapd

该文件控制允许内核如何交换内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值:


内核试图一次释放的最大页面数目。如果想增加内存交换过程中的带宽,则需要增加该值。

内核在每次交换中试图释放页面的最少次数。

内核在一次交换中所写页面的数目。这对系统性能影响最大。这个值越大,交换的数据越多,花在磁盘寻道上的时间越少。然而,这个值太大会因“淹没”请求队列而反过来影响系统性能。


缺省设置:512 32 8


/proc/sys/vm/pagecache

该文件与 /proc/sys/vm/buffermem 的工作内容一样,但它是针对文件的内存映射和一般高速缓存。


使内核设置具有持久性

这里提供了一个方便的实用程序,用于更改 /proc/sys 目录下的任何内核参数。它使您可以更改运行中的内核(类似于上面用到的 echo 和重定向方法),但它还有一个在系统引导时执行的配置文件。这使您可以更改运行中的内核,并将这些更改添加到配置文件,以便于在系统重新引导之后,这些更改仍然生效。


该实用程序称为 sysctl,在 sysctl( 8) 的联机帮助页中,对这个实用程序进行了完整的文档说明。sysctl 的配置文件是 /etc/sysctl.conf,可以编辑该文件,并在 sysctl.conf( 下记录了该文件。sysctl 将 /proc/sys 下的文件视为可以更改的单个变量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 为例,它表示系统中所允许的文件句柄的最大数目,这个文件被表示成 fs.file-max。


这个示例揭示了 sysctl 表示法中的一些奇妙事情。由于 sysctl 只能更改 /proc/sys 目录下的变量,并且人们始终认为变量是在这个目录下,因此省略了变量名的那一部分(/proc/sys)。另一个要说明的更改是,将目录分隔符(正斜杠 /)换成了英文中的句号(点 .)。


将 /proc/sys 中的文件转换成 sysctl 中的变量有两个简单的规则:


去掉前面部分 /proc/sys。

将文件名中的正斜杠变为点。


这两条规则使您能将 /proc/sys 中的任一文件名转换成 sysctl 中的任一变量名。一般文件到变量的转换为:


/proc/sys/dir/file --> dir.file

dir1.dir2.file --> /proc/sys/dir1/dir2/file


可以使用命令 sysctl -a 查看所有可以更改的变量和其当前设置。


用 sysctl 还可以更改变量,它所做的工作与上面所用的 echo 方法完全一样。其表示法为:


sysctl -w dir.file="value"


还是用 file-max 作为示例,使用下面两种方法中的一种将该值更改为 16384:


sysctl -w fs.file-max="16384"


或者:


echo "16384" > /proc/sys/fs/file-max


不要忘记 sysctl 不会将所做的更改添加到配置文件中;这要您用手工来完成。如果您希望在重新引导之后,前面所做的更改仍然有效,则必须维护这个配置文件。


注:不是所有的分发版都提供 sysctl 支持。如果您的特定系统属于这种情况,则可以用上面所描述的 echo 和重定向方法,将这些命令添加到启动脚本中,这样系统每次引导时,都会执行它们。


用于设置系统的命令


在系统运行的同时更改其它非内核系统参数,而且在不重新引导系统的情况下使这些设置生效,这种做法是可能的。在 /etc/init.d
目录中列出了包含这些参数的文件,它们主要按服务、守护程序和服务器来分类。由于越来越多各方面的脚本可以罗列在这个目录下,所以这里不可能讨论所有各种
配置。不过,下面列举了一些示例,这些示例讨论了如何在不同的 Linux 分发版上操作 /etc/init.d 下的脚本。这里的示例可能很有用,其中讨论了更改守护程序,然后在不重新引导系统的情形下重新装入配置:


更改 Web 服务器配置,然后重新装入 Apache

除去不需要的 inetd 登录服务

操作网络设置

通过 NFS 导出新的文件系统

启动/停止防火墙


首先,常见的方法是,直接通过 /etc/init.d 中的脚本来操作系统服务。这些脚本用参数来操作它们所控制的服务;可以通过输入脚本名但不带任何参数这种方法来查看有哪些有效的选项。常见的参数有:


start:启动已停止的服务

stop:停止正在运行的服务

restart:停止正在运行的服务,然后再重启该服务;它将启动已停止的服务

reload:在不中断任何连接的情况下,重新装入服务配置

status:报告服务处于运行状态,还是停止状态


例如,下面这条命令将在不终止任何已连接的用户会话的情形下,重新装入 xinetd 配置(如果您更改了 /etc/xinetd.conf,那么这条命令很有用):


/etc/init.d/xinetd reload


Red Hat 提供了 service 这条命令,它可以为您操作服务。service 命令提供的功能与输入脚本名本身的功能一样。它的语法如下所示:


service script-name [parameter]


例如:


service xinetd reload


SuSE 也提供名为 rc 的命令。该命令类似于上面的 service 命令,但该命令与脚本名之间没有空格。它的语法如下所示:


rc{script-name} parameter


例如:


rcapache start


与更改内核参数类似,一旦重新引导系统,则对这些服务的更改将会丢失。现在越来越多的分发版开始采用 chkconfig 命令,它管理在各种运行级别下(包括引导时)启动的服务。在撰写本文时,chkconfig 命令的语法会因 Linux 版本的不同而略有差异,不过如果输入不带任何参数的命令 chkconfig,则会显示一个如何使用该命令的列表。也可以通过 chkconfig( 8) 的联机帮助页找到更多有关 chkconfig 的信息。


结束语

使用 /proc 文件系统实时配置 Linux 内核不是一件轻松的事情,然而一旦了解了该文件系统的结构,以及掌握了如何操作各种文件和参数,则您就拥有了一个功能强大的工具,使您的服务器在任何时候都可用。

Powered by ScribeFire.

Posted in linux, 转贴 | Leave a comment

欧洲杯将没有英格兰???

北京时间10月13日23:00(俄罗斯当地时间19:00),2008欧洲足球锦标赛预选赛E组一场焦点战在莫斯科中央体育场展开争夺, 英格兰客场1比2不敌俄罗斯。鲁尼漂亮地凌空抽射先拔头筹,但替补出场的帕夫柳琴科4分钟内逆转战局。多赛一场的英格兰仅领先俄罗斯2分,出线命运已不能 把握在自己手中。图为坎贝尔与鲁尼。

Posted in 生活 | Leave a comment

五花八门 之 交通事故

作者:Jason

不管你是开车,开船还是开飞机的,都可以看到一个不慎,你就可能碰到的惊险。

所以,哪怕你开的是战斗机,也不能太横冲直撞啊……

链接 | 来源

Powered by ScribeFire.

Posted in 生活, 转贴 | Leave a comment

改变你世界观的10个视频

作者:阿企 原帖 http://jandan.net/2007/10/17/the-ten-videos-to-change-how-you-view-the-world.html


相信,有用信息的标志是它能够促使你思考。如果阅读、听演讲或者观看视频不能改变你是怎么想的,那它们很可能没有多大意义。但如果你遇到了一些迫使你改变
观念的东西,——即使你不完全同意它们——你就找到了一些有价值的信息。

问题是你从哪里找到这些观念?还有就是,你从哪里抽到时间来消化这些信息?

最近我找到了一个很不错的入门捷径。TED(Technology, Entertainment,
Design)是一个每年举办一次的大型会议,最好的思想家门共聚一堂来分享他们的想法。他们的网站是:www.ted.com,上面已经有成千上万免费
观看的演讲视频。下面这十段演讲很可能会改变你对世界的看法:

1) 暴力的神话 - Steven Pinker
2) 毁灭世界的十种方式 - Stephen Petranek
3) 另眼看全球的贫困和生命问题 - Hans Rosling
4) 玩具创造了世界- Will Wright
5) 技术的长尾- Chris Anderson
6) 我们为什么幸福和不幸福- Daniel Gilbert
7) 宇宙比我们能够想象的更加奇特- Richard Dawkins
8 ) 被切开的面包 - Seth Godin
9) 重定义词典 - Erin McKean
10) 网络乐事有哪些? - Ze Frank

推荐看一下&Lang;我们为什么幸福和不幸福&Rang;,演讲者是畅销书&Lang;幸福的困惑&Rang;(Stumbling on Happiness)的作者丹尼尔·吉尔伯特,他在演讲中阐述了一些令人惊讶的关于幸福的知识。

链接 | 来源

Powered by ScribeFire.

Posted in IT技术, 生活, 转贴 | Leave a comment

实战Gutsy的Tracker搜索

转帖TualatriX的一篇文章
原帖地址http://linuxdesktop.cn/2007/10/17/tracker-search#comment-3276

作者:TualatriX

大家都知道Ubuntu 7.10 Gutsy默认集成了Tracker这个基于索引的文件搜索工具,今天我就将其介绍一下。

Gutsy明天就要发布了,未来的几篇文章可能都是与Gutsy的新特性有关。给在正在观望中的朋友一个参考,呵呵。

————————————–

Gutsy桌面环境集成并打开了Tracker,这个从面版的图标就可以看出来:

Tracker默认情况下只索引你的主目录,如果需要加入其他文件夹,如“/usr/share”,就可以在
“系统”“首选项”“Indexing Preference”中进行配置:

除了这个首选项以外,点击面版图标,还可以为Tracker启用更多的扩展,这里我启用了Devhelp的搜索扩展。

现在开始用Tracker来实战一下吧!

默认的快捷键是Alt+F3,也可以点击那个图标来打开Tracker:

这次我不演示Tracker的文件搜索功能,因为Tracker做的非常好,没必要演示了。哈哈。

搜索网络

我的Firefox没设定主页,现在我想以最快的速度进入LDCN,简单,用Tracker搜索LDCN吧。

搜索出来好多哇,随便点击一个,就打开Firefox进去了。

如果想搜索这个关键词呢? 点击网络搜索,连Wikipedia的搜索也有哦

搜索API

写软件时,突然不知道一个方法怎么用了,得查查API文档。直接用Tracker来搜索吧!它会自动调用Devhelp来找相应的API,非常准确!

启用程序

想启动一个软件,但是它在“应用程序”里找不到,用Tracker来搜索关键字吧!比Alt+F2好用多了,后者可只能匹配前缀。

搜索tweak,把“Ubuntu Tweak”搜索出来了:

简单地通过搜索这些东西,发现Tracker非常适合日常使用!

这就是Ubuntu Gutsy把Tracker集成进来的原因吧!

Powered by ScribeFire.

Posted in linux, 转贴 | 1 Comment

使用ubuntu的推荐一个网址

getdeb.net 这个网站

它提供一些最新软件的 deb 包(一般都比 Ubuntu 官方新很多),不用自己再去编译。

比如经常刚新pidgin的用户 这个很有用

Posted in linux | 2 Comments