朴实无华、寓意深邃—史蒂夫·乔布斯“现身说法”留给世人的经典演讲 … …

苹果公司创始人史蒂夫·乔布斯尽管已经辞世,但他给世人留下了宝贵的物质和精神财富。我曾看过不少名人演讲,但像乔布斯那样率真朴实、振聋发聩的实属鲜见。这,就是六年前他在斯坦福大学毕业典礼上的讲演(视频 + 译文)。其中最为经典的就是:“你的时间有限,所以最好别把它浪费在模仿别人这种事上。”还有那句著名的“Stay Hungry. Stay Foolish.”(求知若饥,虚心若愚)—— [flash]http://player.youku.com/player.php/sid/XMjYzNTE0MTA4/v.swf[/flash]我今天很荣幸能和你们一起参加毕业典礼,斯坦福大学是世界上最好的大学之一。我从来没有从大学中毕业。说实话,今天也许是在我的生命中离大学毕业最近的一天了。今天我想向你们讲述我生活中的三个故事。不是什么大不了的事情,只是三个故事而已。

第一个故事是关于如何把生命中的点点滴滴串连起来。

我在Reed大学读了六个月之后就退学了,但是在十八个月以后——我真正的作出退学决定之前,我还经常去学校。我为什么要退学呢?

故事从我出生的时候讲起。我的亲生母亲是一个年轻的、没有结婚的大学毕业生。她决定让别人收养我,她十分想让我被大学毕业生收养。所以在我出生的时候,她已经做好了一切的准备工作。所以我的养父母突然在半夜接到了一个电话:“我们现在这儿有一个不小心生出来的男婴,你们想要他吗?”他们回答道::“当然!”但是我亲生母亲随后发现,我的养母从来没有上过大学;我的养父甚至从没有读过高中。她拒绝签这个收养合同。只是在几个月以后,我的,父母答应她一定要让我上大学,那个时候她才勉强同意。

在十七岁那年,我真的上了大学。但是我很愚蠢的选择了一个几乎和你们斯坦福大学一样贵的学校。我父母还处于蓝领阶层,他们几乎把所有积蓄都花在了我的学费上面。在六个月后,我已经看不到其中的价值所在。我不知道我真正想要做什么,我也不知道大学能怎样帮助我找到答案。但是在这里,我几乎花光了我父母这一辈子的全部积蓄。所以我决定要退学,我觉得这是个正确的决定。不能否认,我当时确实非常的害怕,但是现在回头看看,那的确是我这一生中最棒的一个决定。在我做出退学决定的那一刻,我终于可以不必去读那些令我提不起丝毫兴趣的课程了。然后我可以开始去修那些看起来有点意思的课程。

但是这并不是那么浪漫。我失去了我的宿舍,所以我只能在朋友房间的地板上面睡觉,我去捡可以换5美分的可乐罐,仅仅为了填饱肚子,。在星期天的晚上,我需要走七英里的路程,穿过这个城市到Hare Krishna神庙(注:位于纽约Brooklyn下城),只是为了能吃上好饭——这个星期唯一一顿好一点的饭,我喜欢那里的饭菜。

我跟着我的直觉和好奇心走,遇到的很多东西此后被证明是无价之宝。让我给你们举一个例子吧:Reed大学在那时提供也许是全美最好的美术字课程。在这个大学里面的每个海报, 每个抽屉的标签上面全都是漂亮的美术字。因为我退学了不必去上正规的课程, 所以我决定去参加这个课程,去学学怎样写出漂亮的美术字。我学到了san serif 和serif字体,,我学会了怎么样在不同的字母组合之中改变空白间距,,还有怎么样才能作出最棒的印刷式样。那种美好、历史感和艺术精妙,是科学永远不能捕捉到的,。我发现那实在是太迷人了。

当时看起来这些东西在我的生命中,好像都没有什么实际应用的可能。但是十年之后,当我们在设计第一台Macintosh电脑的时候,就不是那样了。我把当时我学的那些东西全都设计进了Mac。那是第一台使用了漂亮的印刷字体的电脑。如果我当时没有退学,就不会有机会去参加这个我感兴趣的美术字课程,Mac就不会有这么多丰富的字体,以及赏心悦目的字体间距。因为Windows只是照抄了Mac,所以现在个人电脑才能有现在这么美妙的字型。

当然我在大学的时候,还不可能把从前的点点滴滴串连起来,但是当我十年后回顾这一切的时候,真的豁然开朗了。

再次说明的是,你在向前展望的时候不可能将这些片断串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片断会在你未来的某一天串连起来。你必须要相信某些东西:你的勇气、目的、生命、因缘……这个过程从来没有令我失望,只是让我的生命更加地与众不同。

我的第二个故事是关于爱和失去。

我非常幸运,因为我在很早的时候就找到了我钟爱的东西。Woz和我在二十岁的时候,就在父母的车库里面开创了苹果公司。我们工作得很努力,十年之后,这个公司从那两个车库中的穷小子发展到了超过四千名的雇员、价值超过二十亿的大公司。在公司成立的第九年,我们刚刚发布了最好的产品——那就是Macintosh。我也快要到三十岁了。在那一年,我被炒了鱿鱼。你怎么可能被你自己创立的公司炒了鱿鱼呢?嗯,在苹果快速成长的时候,我们雇用了一个很有天分的家伙和我一起管理这个公司。在最初的几年,公司运转得很好。但是后来我们对未来的看法发生了分歧, 最终我们吵了起来。当争吵到不可开交的时候,董事会站在了他的那一边。所以在三十岁的时候,我被炒了。在这么多人目光下我被炒了。在而立之年,我生命的全部支柱离自己远去,这真是毁灭性的打击。

在最初的几个月里,我真是不知道该做些什么。我觉得我很令上一代的创业家们很失望,我把他们交给我的接力棒弄丢了。我和创办惠普的David Pack、创办Intel的Bob Noyce见面,并试图向他们道歉。我把事情弄得糟糕透顶了。但是我渐渐发现了曙光,我仍然喜爱我从事的这些东西。苹果公司发生的这些事情丝毫的没有改变这些,一点也没有。我被驱逐了,但是我仍然钟爱我所做的事情。所以我决定从头再来。

我当时没有觉察。但是事后证明:从苹果公司被炒是我这辈子发生的最棒的事情。因为,作为一个成功者的负重感被作为一个创业者的轻松感觉所重新代替! 没有比这更确定的事情了。这让我觉得如此自由,进入了我生命中最有创造力的一个阶段。

在接下来的五年里,我创立了一个名叫NeXT的公司,还有一个叫Pixar的公司。然后和一个后来成为我妻子的优雅女人相识。Pixar制作了世界上第一个用电脑制作的动画电影——“玩具总动员”,Pixar现在也是世界上最成功的电脑制作工作室。

在后来的一系列运转中,Apple收购了NeXT,然后我又回到了Apple公司。我们在NeXT发展的技术,在Apple的今天的复兴之中发挥了关键的作用。而且,我还和Laurence 一起建立了一个幸福完美的家庭。

我可以非常肯定:如果我不被Apple开除的话,这些事情一件也不会发生的。这个良药的味道实在是太苦了,但是我想病人需要这个药。有些时候,生活会拿起一块砖头向你的脑袋上猛拍一下。不要失去信仰。我很清楚唯一使我一直走下去的,就是我做的事情令我无比钟爱。你需要去找到你所爱的东西。对于工作是如此,对于你的爱人也是如此。你的工作将会占据生活中很大的一部分。你只有相信自己所做的是伟大的工作,你才能怡然自得。如果你现在还没有找到,那么继续找、不要停下来,只要全心全意的去找,在你找到的时候,你的心会告诉你的。就像任何真诚的关系,随着岁月的流逝只会越来越紧密。所以继续找,直到你找到它,不要停下来!

我的第三个故事是关于死亡的。

当我十七岁的时候, 我读到了一句话:“如果你把每一天都当作生命中最后一天去生活的话,那么有一天你会发现你是正确的。”这句话给我留下了一个印象。从那时开始过了33 年,我在每天早晨都会对着镜子问自己:“如果今天是我生命中的最后一天,你会不会完成你今天想做的事情呢?”当答案连续多天是“No”的时候,我知道自己需要改变某些事情了。

“记住你即将死去”是我一生中遇到的最重要箴言。它帮我指明了生命中重要的选择。因为几乎所有的事情,包括所有的荣誉、所有的骄傲、所有对难堪和失败的恐惧,这些在死亡面前都会消失。我看到的是留下的真正重要的东西。你有时候会思考你将会失去某些东西,“记住你即将死去”是我知道的避免这些想法的最好办法。你已经赤身裸体了,你没有理由不去跟随自己内心的声音。

大概一年以前,我被诊断出癌症。我在早晨七点半做了一个检查,检查清楚的显示在我的胰腺有一个肿瘤。我当时都不知道胰腺是什么东西。医生告诉我那很可能是一种无法治愈的癌症, 我还有三到六个月的时间活在这个世界上。我的医生叫我回家,然后整理好我的一切,那是医生对临终病人的标准程序。那意味着你将要把未来十年对你小孩说的话在几个月里面说完.;那意味着把每件事情都安排好, 让你的家人会尽可能轻松的生活;那意味着你要说“再见了”。

我拿着那个诊断书过了一整天,那天晚上我作了一个活切片检查,医生将一个内窥镜从我的喉咙伸进去,通过我的胃,然后进入我的肠子,用一根针在我的胰腺上的肿瘤上取了几个细胞。我当时是被麻醉的,但是我的妻子在那里。后来告诉我:当医生在显微镜下观察这些细胞的时候他们开始尖叫,因为这些细胞最后竟然是一种非常罕见的可以用手术治愈的胰腺癌症细胞。我做了这个手术,现在我痊愈了。

那是我最接近死亡的时候。我希望这也是以后的几十年最接近的一次。从死亡线上又活了过来,我可以比以前把死亡只当成一 种想象中的概念的时候,更肯定一点地对你们说:没有人愿意死。即使人们想上天堂,也不会为了去那里而死。但是死亡是我们每个人共同的终点。从来没有人能够逃脱它。也应该如此。因为死亡就是生命中最好的一个发明。它将旧的清除以便给新的让路。你们现在是新的,但是从现在开始不久以后,你们将会逐渐的变成旧的然后被送离人生舞台。我很抱歉这很戏剧性,但是这十分的真实。

你们的时间很有限,所以不要将它们浪费在重复其他人的生活上。不要被教条束缚,那意味着你和其他人思考的结果一起生活。不要被其他人喧嚣的观点掩盖你真正的内心的声音。还有最重要的是,你要有勇气去听从你直觉和心灵的指示——它们在某种程度上知道你想要成为什么样子,所有其他的事情都是次要的。

当我年轻的时候,有一本叫做《整个地球的目录》振聋发聩的杂志,它是我们那一代人的圣经之一。它是一个叫Stewart Brand的家伙在离这里不远的Menlo Park编辑的,他象诗一般神奇地将这本书带到了这个世界。那是六十年代后期,在个人电脑出现之前,所以这本书全部是用打字机,、剪刀还有偏光镜制造的。有点像用软皮包装的Google。在Google出现三十五年之前:这是理想主义的,其中有许多灵巧的工具和伟大的想法。

Stewart和他的伙伴出版了几期的《整个地球的目录》,当它完成了自己使命的时候,他们做出了最后一期的目录。那是在七十年代的中期,我正是你们的年纪。在最后一期的封底上是清晨乡村公路的照片(如果你有冒险精神的话,你可以自己找到这条路的),在照片之下有这样一段话:“求知若饥,虚心若愚”(stay hungry,stay foolish)。这是他们停止了发刊的告别语。“求知若饥,虚心若愚”,我总是希望自己能够那样。现在,在你们即将毕业,开始新的旅程的时候,我也希望你们能这样:求知若饥,虚心若愚。非常感谢你们!

菊子曰 我用菊子曰写博客,你呢?

【转】过犹不及的“勤奋、坦诚、刚正”传统美德——福兮祸兮、双刃剑及其它 …

 【转】过犹不及的“勤奋、坦诚、刚正”传统美德——福兮祸兮、双刃剑及其它

       “勤奋、坦诚、刚正”堪称美德但是不可无度。“度”是质和量的统一,是“质”(良好效果)对“量”的界限、幅度和范围。量变之于质变的根本标志就在于:事物的变化是否超出了“度”。在实践过程中,必须注意把握适“度”原则,学会审时度势、三思后行权衡为人处世分寸,一定要避免和防止“过犹不及”。

        坦诚、刚正是把“双刃剑”。对于坦诚、刚正的无度释放,只能带来事与愿违的后果。在世风日下、人心不古的当今社会,传统意义的坦诚、刚正美德,已与当今世俗观念产生矛盾。务必清醒认识:我们可以改变自己(个性调整),但是很难改变外部环境(社会认知)。俗话“适者生存”,就是阐发了这样一个真理。

        甲子回眸有感:其一,要勤奋,但是不能过于勤奋。过于勤奋,这是要以“生命透支”为代价的。其二,要刚正,但是不能过于刚正。过于刚正,就可能与环境不时发生冲突。其三,要坦诚,但是不能过于坦诚。过于坦诚,肯定会招致意想不到的种种祸端。以上之“过于”,就是超出了“适度”的界限:过犹则不及!

菊子曰 我用菊子曰写博客,你呢?

测试一下插入视频

功能有待加强,貌似插入源码才成功啊

菊子曰 写博客,就用菊子曰

复习高数,线代,概率

1.高数 6.73%

    1)→极限存在准则 p64 2011年11月13日(复习:2011年11月14日)

    2)→p105导数的概念(2011-11-15)

    3 ) →p123高阶导数(2011-11-19)

2.线代 0%

3.概率 0%

菊子曰 我用菊子曰写博客,你呢?

计划 bis 2012年3月31日

1.复习高数,线代,概率

2.复习理力材力   

3.复习英语,德语

4.论文

 

菊子曰 我用菊子曰写博客,你呢?

ubuntu环境下编译内核详解

声明:本文是个人参考网上有关资料,编译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桌面版.

菊子曰 我用菊子曰写博客,你呢?

如何设置/配置 SunPinYin ?

Ubuntu,在用SunPinYin,比较智能的拼音,就是默认不能-/=翻页(默认PgUp/PgDn),很不习惯,又找不到相关设置(在ibus里面没有sunpinyin的首选项)。
找了好一阵子才找到: /usr/lib/ibus-sunpinyin/ibus-setup-sunpinyin    ,是shell脚本。
运行后就可以设置/配置 sunpinyin了
菊子曰 我用菊子曰写博客,你呢?

解决在无法启动家庭组的错误

菊子曰 我用菊子曰写博客,你呢?

[ZT]Ubuntu下设置自己的“超级计算机集群”

在本文中我将一步一步指导大家设置自己的“超级计算机集群”,通过Ubuntu MPI Cluster平台,借助John the Ripper实现在多台计算机上对加密过的目标进行暴力破解。当然这一切应以学术研究为目的。

计算机上具备四核处理器的朋友有福了。尽管Ubuntu 软件库中的”john”二进制代码原本只针对于单核运行,但我的设置将尝试使其在四核计算机上运行效率更高,耗时更少。

本文的出发点是将问题表达得通俗易懂,以使普通用户便于理解掌握,因此我决定不在其中涉及NIS,NFS,BIND或诸如此类的复杂技术。读者应该不必花费数天时间阅读有关Linux系统管理员知识的教材或手册,也能在家中轻松建立并玩转计算机集群系统。我制作的应用基于Ubuntu 10.04 Server,因为它是迄今为止最常用的Linux工具,同时也是一种蕴涵长效机制的版本,在2015年之前可以一直适用。

前言

本文中谈到的集群实施方案并不会对具备高实用性及安全性的运行环境构成威胁。

背景

我发现不得不从破解自己设置的一个尘封多年早已忘却的老密码开始着手。在搜集了几台手边的计算机之后,我开始尝试让它们协同工作。

本文的诞生,是极端沮丧的心情、过量的咖啡因加上一整个不眠之夜的产物。

基本要求

需要至少两台可运行Ubuntu Linux 10.04版本且已联网的计算机。

“John”并不需要太大的带宽。

服务器配置

服务器要求

一个静态IP地址或DHCP中保留的IP。

需要用到的软件包

以下软件包是必备的:

•libmpich1.0 – dev- MPICH静态库和开发文件

•libmpich – mpd1.0 – dev- MPICH静态库和开发文件

• libmpich – shmem1.0 – dev- MPICH静态库和开发文件

• openssh-server — 安全框架 (SSH) 工具, 保障远程计算机的安全访问

• mpich2 — 实施MPI信息传递接口标准

• mpich2-doc — MPICH2相关文档

• john — 强力的密码破解工具

• build-essentials – 必备软件包的信息统计清单

petur@server:~$ sudo apt-get install libmpich1.0-dev libmpich-mpd1.0-dev libmpich-shmem1.0-dev mpich2 mpich2-doc john openssh-server build-essentials


 

网络配置

默认情况下,/etc/hosts文件应如下所示:

127.0.0.1 localhost 127.0.1.1 server.petur.eu server #下列内容是采用IPv6协议的主机 fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

首先把你的IP地址修改为127.0.1.1。

处应为你的FQDN,而处应为你的计算机主机名。

通过执行下列命令查找你的IP:

petur@server:~$ ifconfig|grep “inet addr” inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0 inet addr: 127.0.0.1 Mask:255.0.0.0

修改后/etc/hosts下的内容应如下所示:

127.0.0.1 localhost 10.0.0.1 server.petur.eu server #下列内容是采用IPv6协议的主机 ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

 

用户配置

新建一个名为“cluster”(集群)并在其路径中加入~/bin/代码。

我发现在每台计算机上都对’cluster’采取相同的设置步骤是最便捷的做法。

petur@server:~$ sudo useradd -m -s /bin/bash cluster petur@server:~$ sudo passwd cluster Enter new UNIX password:(输入新的UNIX密码) Retype new UNIX password:(再次输入新的UNIX密码) passwd: password updated successfully(密码:密码更改成功) petur@server:~$ sudo su – cluster -c “mkdir ~/bin;export PATH=~/bin:$PATH”

MPICH设置

MPI的应用基于以下配置文件:

• ~/.mpd.conf

注:此文件以a开头且必须配合chmod 600才能生效。

此文件在你的密码中包含一个单独的命令行“secretword= (replace  ,其内容必须与集群中所有~/.mpd.conf中的相关内容相同。

• ~/mpd.hosts

此文件中包含所有集群节点及服务器的列表,其格式为“host:number-of-cpu-cores”, fx。如果您的计算机具备四核心处理器,则将10.0.0.2设置为10.0.0.2:4。

如果你只是想使用MPICH的功能而不在乎可用处理器核心的数量,那么该数值可以设置得低于实际情况。

举例说明,如果服务器具备四核心处理器,你可能希望将数值设置为:3,而不是:4,这样服务器可以同时处理其它一些运算。

千万不要预设localhost或127.0.0.1这类你必须连接网络才能使用的IP。

检查处理器核心数量,并创建配置文件。

cluster@server:~$ touch ~/.mpd.conf cluster@server:~$ chmod 600 ~/.mpd.conf cluster@server:~$ echo secretword=pass>~/.mpd.conf cluster@server:~$ /sbin/ifconfig|grep “inet addr” cluster@server:~$ /sbin/ifconfig|grep “inet addr” inet addr:127.0.0.1 Mask:255.0.0.0 cluster@server:~$ cat /proc/cpuinfo|grep processor|wc –l cluster@server:~$ echo 10.0.0.1: 1 >~/mpd.hosts

设置完成后,通过执行以下指令检查是否运行正常:

• mpdboot – 启动集群

• mpdtrace – 列出群体的所有节点

• mpdallexit – 关闭集群

mpdallexit – shut down the cluster cluster@server:~$ mpdtrace cluster@server:~$ mpdallexit

如果设置方面没有任何错误,那么你的指令将全部被正确执行。如果出现问题,请检查你的~/.mpd.cof的权限设置及/etc/hosts和~/mpd.hosts的内容是否正确。

 

安装John the Ripper

在www.bindshell.net/tools/johntheripper处可以获取具备MPI补丁版本的John the Ripper。

cluster@server:~$ mkdir source cluster@server:~$ cd source cluster@server:~/source$ wget http://www.bindshell.net/tools/johntheripper/john-1.7.2-bp 17-mpi8.tar.gz

从src目录中解压并运行make指令(若你的计算机分辨率不足,请尝试使用make|less指令)。

cluster@server:~/source$ tar -zxf john-1.7.2-bp17-mpi8.tar.g cluster@server:~/source$ cd john-1.7.2-bp17-mpi8/src/ cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ make

此时你会看到一个选项清单。

要创建John the Ripper,键入

保持系统清空

运行所需的系统如下所示:

linux-x86-mmx Linux, x86 with MMX linux-x86-sse Linux, x86 with SSE2 (推荐) linux-x86-any Linux, x86 linux-x86-64 Linux, AMD x86-64, 64-bit native w/SSE2 (推荐) linux-x86-64-mmx Linux, AMD x86-64, 32-bit with MMX

我发现linux-x86-sse2在我基于Intel架构的工作站上运行效果最好。

cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ make clean linux-x86-sse2

如果程序编译过程没问题,测试一下它能否正常工作。

cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ ../run/john -format=DES –test Benchmarking: Traditional DES [128/128 BS SSE2]… DONE Many salts: 1994K c/s real, 1994K c/s virtual Only one salt: 1658 c/s real, 1654K c/s virtual

将你新编译出的可执行文件移动至~/bin下。

运行John程序并确保它是_mpi版本。

如果仍然无法正确执行,那一定是你设置的路径出了问题。

cluster@server:~/source/john-1.7.2-bp17-mpi8/src$ john|grep version John the Ripper password cracker, version 1.7.2_bp17_mpi

 

配置额外的节点

每次在集群中新增节点,都需要遵循下列操作:

该节点的IP地址为10.0.0.2

前期准备

一个静态IP地址或DHCP中保留的IP。

网络配置

遵循服务器配置中的相同步骤,但注意过程中要使用正确的IP地址。

必备的软件包。

与服务器设置时的要求相同。

用户配置

为集群选择与你在服务器上所设置的相同的密码。

petur@node1:~$ sudo useradd -m -s /bin/bash cluster petur@node1:~$ sudo passwd cluster Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully petur@node1:~$ sudo su – cluster -c “mkdir ~/bin;export PATH=~/bin:$PATH”

MPICH配置

下列命令应被从服务器上而非新节点上执行。

节点上的密码设置与服务器相比,减少了SSH环节。

cluster@server:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/cluster/.ssh/id_rsa): Created directory ‘/home/cluster/.ssh’ Enter passpharse (empty for no passpharse): Enter same passpharse again: Your identification has been saved in /home/cluster/.ssh/id_rsa. Your public key has been saved in /home/cluster/.ssh/id_rsa.pub. The key fingerprint is: 0f:d7:c4:14:cf:06:11:d5:80:ec:1f:c3:f3:3b:7f:22 cluster@server The key’s randomart image is(随机密钥图片如下): [picture omitted(图片省略)] cluster@server:~$ ssh cluster@10.0.0.2 mkdir -p .ssh cluster@10.0.0.2′s password: cluster@server:~$ cat .ssh/id_rsa.pub | ssh cluster@10.0.0.2 ‘cat>>.ssh/authorized_keys’ cluster@10.0.0.2′s password: cluster@server:~$ ssh cluster@10.0.0.2 ‘cat /proc/cpuinfo|grep processor|wc -l’ 2 cluster@server:~$ echo 10.0.0.2:2 >> ~/mpd.hosts cluster@server:~$ for i in `cut –delimiter=: -f1 ~/mpd.hosts`;do scp ~/.mpd.conf cluster@$i:~;scp ~/mpd.hosts cluster@$i:~;done The authenticity of host ’10.0.0.1 (10.0.0.1)’ can’t be established. RSA key fingerprint is 2d:94:c6:40:b0:02:04:d9:86:c8:16:f3:e6:a7:9f:35. Are you sure you want to countinue connecting (yes/no)? Yes Warning: Permanently added ’10.0.0.1′ (RSA) to the list of known hosts. cluster@10.0.0.1′s password: mpd.conf 100% 16 0.0KB/s 00:00. cluster@10.0.0.1′s password: mpd.hosts 100% 22 0.0KB/s 00:00 mpd.conf 100% 16 0.0KB/s 00:00. mpd.hosts 100% 22 0.0KB/s 00:00

现在将以下新命令行添加至服务器上/etc/hosts下的文件中:

10.0.0.2 node1

最后一步,将所有节点计算机上的/etc/hosts下的内容替换为服务器上/etc/hosts下的新内容。如果这一步没有完成,那么当你尝试启动群集时,将会提示以下错误:

mpdboot_server (handle_mpd_output 407): failed to handshake with mpd on 10.0.0.2; recvd

安装John the Ripper

与服务器上的过程相同。

基本命令

使用‘ mpdboot –verbose –ncpus=1 -n 2′指令启动群集

• –verbose ::当发生错误时,更好地向我们提供当前运行状况的概述。

 –ncpus=1 ::通知服务器计算机将一个核心分配给集群。

• -n 2 ::使用两台计算机(一台服务器加一台节点)。

cluster@server:~$ mpdboot –verbose –ncpus=1 -n 2 running mpdallexit on server LAUNCHED mpd on server via RUNNING: mpd on server LAUCNHED mpd on 10.0.0.2 via server RUNNING: mpd on 10.0.0.2 检查集群是否处于工作状态 mpdtrace –列出集群中的所有节点 mpiexec -np 3 hostname,意思是使用三个处理器核心运行hostname指令。 cluster@server:~$ mpdtrace server node1 cluster@server:~$ mpiexec -np 3 hostname server node1 node1 mpdallexit – 关闭集群 cluster@server:~$ mpdallexit

借助MPI集群破解密码

我将以一个简单的MD5散表为例:

cluster@server:~$ echo user:47584a15f1ba6c65da3a2ef8e43e606b > crackme1.md5 cluster@server:~$ mpdboot –ncpus=2 -n 2

下面两行指令必须在一个命令行中输入

cluster@server:~$ for i in `cut –delimiter=: -f1 ~/mpd.hosts`;do scp ~/crackme1.mp5 cluster@$1:~;done

上述命令被用来编写易于集群执行的文件。

— distributer.sh begins — #!/bin/bash # usage: ./distributer.sh filename for x in `cut –delimiter=: -f1 ~/mpd.hosts`;do scp $1 cluster@$i:~;done — distributer.sh ends — 一旦找到密码立刻使用Ctrl+C中止程序。 cluster@server:~$ mpiexec -np 3 john –format:raw-MD5 crackme1.md5 Loaded 1 password hash (Raw MD5 [raw-md5 SSE2]) Loaded 1 password hash (Raw MD5 [raw-md5 SSE2]) Loaded 1 password hash (Raw MD5 [raw-md5 SSE2]) petur1 (user) Process 2 completed loop. Threat: 2 guesses: 1 time 0:00:00:02 (3) c/s: 5616K trying: petciL – petusc ^Ccluster@server:~$

使用之后,一定记得及时关闭集群服务器。

cluster@server:~$ mpdallexit

菊子曰 我用菊子曰写博客,你呢?

如何制作星际译王Stardict词典

许多人现在在Windows或Linux电脑上使用Stardict。
他们中有些人想要制作属于自己的词典。
现在,我就来告诉你怎么制作词典。
1.你必须安装一个支持 UTF-8 编码格式的文本编辑器。
2.星际译王的词典编译器Startdict-Editor 软件以及 GTK+ 运行时库。
3.当你安装完上述软件后,运行文本编辑器,并将编码模式切换到 UTF-8。
4.照下面框框里输入词条
————————————
Word   [wә:d]\n词语\n话语\n\nThat word is not spelled correctly. \n那个词拼得不正确.\n\nHe couldn’t put his feelings into words, ie express them verbally. \n他无法把自己的感情用言语说清楚.
————————————
也就是说,每行开头,是一个单词;接著,是一个Tab符(如果你的文本编辑器有 “Tab=空格” 选项,勿选之);接下来是单词音标及释义。\n 表示换行,\\ 表示斜线 \。词典文件的最后一行,必须是一空行。
5.将你的词典文件保存为UTF-8格式的纯文本文件。
6.开启 Startdict-Editor,选择 “Compile” 标签页,在窗口底端的下拉菜单框中选择  ”Tab file”。
7.按 “Browse” 按来打开你的词典文本文件。
8.按 “Build” 来编译你的词典文件。
9.会生成与词典文件同名的  .dict,  .idx 以及 .ifo 文件各一个,把他们拷贝到 “Stardict安装目录/dic/你的词典的名称”目录中去,并重启 Stardict。
10.大功告成!
菊子曰 我用菊子曰写博客,你呢?

无觅相关文章插件,快速提升流量