雪山40级级别限制级别 那33~40做什么呢

( Mon, 29 Sep 2008 15:24:11 +0800 )
Description:
我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。
嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解linux内核。 关键字
:linux,嵌入式,启动,bootloader
作为一名嵌入系统开发者,你一定遇到过下面的情景:
在某论坛上看到一篇帖子,上面贴着嵌入式linux开发板启动时的有关信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:
Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3
20010315 (release)(ColdFire patches - 20010318 from http://f
(uClinux XIP and shared lib patches from http://www. apgear.com/)) #20 三 6月 1
8 00:58:31 CST 2003
Proce or: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 4096
zone(0): 0 pages.
zone(1): 4096 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 49.76 BogoMIPS
Memory: 16MB = 16MB total
Memory: 14348KB available (1615K code, 156K data, 40K init)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1,
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swa ea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial optio en
ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B
ttyS01 at 0x3ffe000 (irq = 7) is a S3C451
Blkmem copyright 1998,1999 D. Jeff Dio e
Blkmem copyright 1998 Ke eth Albanowski
Blkmem 1 disk images:
0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) mac@os.nctu.edu.tw
eth0: 00:40:95:36:35:34
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 1024)
VFS: Mounted root (romfs
Freeing init memory: 40K
上面的这些输出信息,也可能包括你自己正在做的嵌入式linux开发板的输出信息,其中的每一行,每一个字的含义,你是否深究过,或者说大部分的含义你能确切地知道的?本人想在这里结合本人在实践中一些体会来和广大嵌入式linux的开发者一起读懂这些信息。
我们在这里将以一个真实的嵌入式linux系统的启动过程为例,来分析这些输出信息。启动信息的原始内容将用标记标出,以区别与注释。 嵌入式linux的启动主要分为两个阶段:
① 第一部分bootloader启动阶段
② 第二部分linux 内核初始化和启动阶段
第一节:start_kernel
第二节:用户模式( user_mode )开始,start_kernel结束
第三节:加载linux内核完毕,转入cpu_idle进程 第一部分 : bootloader
Boot loader v0.12
NOTE: this boot loader is designed to boot kernels made with the
2.4.xx releases
bootloader for XV
Built at Nov 20 2005 10:12:35
Bootloader头信息,版本,编译时间等,这个因不同的bootloader的设计而有所不同,由此你能看出bootloader的版本信息,有很多使用的是通用的bootloader,如u-boot,redboot等。
Loaded to 0x90060000
将bootloader加载到内存ram中的0x90060000处,即将bootloader加载到内存的高端地址处。
Linux内核将被bootloader加载到0x90090000处。 Found boot configuration
查找到了启动boot的配置信息 Booted from parallel flash
从flash中启动代码,此处的flash为并行闪存。Flash的分类列举如下:
闪存分三类:并行,串行,不可擦除。
①并行Parallel flash
 NOR Flash,Intel于1988年发明.随机读取的速度比较快,随机按字节写,每次可以传输8Bit。一般适合应用于数据/程序的存贮应用中.NOR还可以片内执行(execute-in-place)XIP.写入和擦除速度很低。
 NAND Flash,1989年,东芝公司发明.是以块和页为单位来读写的,不能随机访问某个指定的点.因而相对来说读取速度较慢,而擦除和写入的速度则比较快,每次可以传输16Bit,一般适用在大容量的多媒体应用中,容量大。如:CF,SM.
②串行Serial Flash 是以字节进行传输的,每次可以传输1-2Bit.如:MMC,SD,MS卡.串行闪存器件体积小,引脚也少,成本相对也更低廉。 
③不可擦除Mask Rom Flash的特点是一次性录入数据,具有不可更改性,经常运用于游戏和需版权保护文件等的录入。其显著特点是成本低。
注意:
任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。
从上面的信息,我们可以对flash类型特点有个比较明确的了解。 CPU clock rate: 200 MHz
开发板上所使用的CPU的主频为200MHZ. DRAM size is 128MB (128MB/0MB)
动态内存ram大小为128M。这里我们列举一下内存的类型及工作原理。
根据内存的工作原理可以划分出两种内存:DRAM和SRAM
①DRAM表示动态随机存取存储器。这是一种以电荷形式进行存储的半导体存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成。数据存储在电容器中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。为了将数据保存在存储器中,DRAM器件必须有规律地进行刷新。
②SRAM是静态的,因此只要供电它就会保持一个值。一般而言,SRAM 比DRAM要快,这是因为SRAM没有刷新周期。每个SRAM存储单元由6个晶体管组成,而DRAM存储单元由一个晶体管和一个电容器组成。相比而言,DRAM比SRAM每个存储单元的成本要高。照此推理,可以断定在给定的固定区域内DRAM的密度比SRAM 的密度要大。 SRAM常常用于高速缓冲存储器,因为它有更高的速率;而DRAM常常用于PC中的主存储器,因为其拥有更高的密度。
在嵌入式系统中使用DRAM内存的设计比较广泛。 地址辅助说明:
先说明一下内存地址数字情况,主要是为了方便记忆。
可以访问的内存为4G。
0x40000000是1GB处;0x00040000是256K处,0x00020000是128K处,0x90000000是2GB多的地方。
1M-0x00100000,
2M-0x00200000,
8M-0x00800000
16M-0x01000000,
32M-0x02000000
256M-0x10000000
64K-0x00010000
4K-0x00001000
这个是个快速记忆的方法,你可以根据地址中1的位置和其后0的个数来快速知道换算后的地址是在多少兆的地方。比如,1的后面5个0,代表1M的大小,6个0,代表16M,以此类推。 ROMFS found at 0x46040000, Volume name = rom 43f291aa
romfs,只读文件系统所在的地址为:0x46040000 (flash映射后的第3分区)。
卷名为rom。
romfs和rootfs概念上有所区别。 flash在内存中的的起始地址为0x46000000,而ROMFS在flash分区上的起始位置为0x00040000,所以ROMFS在内存地址中的位置就为0x46040000。这个细节的部分可以参考flash分区时的地方,Creating 3 MTD partitio 。 romfs中包括kernel和a 应用,不包括bootloader和firmware信息头。romfs只读文件系统里的内容有很多种分类方法,我们可以将kernel和a 同时放里面,作为根文件系统下的一个文件,也可以在flash上另外划分区域来分别存放。 VFS
虚拟文件系统交换器
在linux系统中,目前已经开发出多种文件系统,那么如何让这些文件系统能共存在一个系统中呢,从linux 2.0开始,引入了虚拟文件系统管理器 VFS的概念。
Linux 下的文件系统主要可分为三大块:
① 一是上层的文件系统的系统调用,
② 二是虚拟文件系统交换器 VFS(Virtual Filesystem Switch),
③ 三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。
VFS的确切叫法是Virtual Filesystem Switch虚拟文件系统交换器,这里的VFS中的“S”是指的switch,这个需要强调一下的,它很容易被混淆成“system”,如果理解成“system”将是不正确的,请多加注意。
VFS是具体文件系统filesystem的一个管理器。
VFS是Linux内核中的一个软件层,一种软件机制,它也提供了内核中的一个抽象功能,允许不同的文件系统共存,可以称它为 Linux 的文件系统管理者,与它相关的数据结构只存在于物理内存当中。所以在每次系统初始化期间,Linux 都首先要在内存当中构造一棵 VFS 的目录树。VFS 中的各目录其主要用途是用来提供实际文件系统的挂载点。而rootfs将是这个目录树的根结点的(root),即 "/"目录,VFS的结构就是从这个rootfs开始的。有了VFS,那么对文件的操作将使用统一的接口,将来通过文件系统调用对 VFS 发起的文件操作等指令将被 rootfs 文件系统中相应的函数接口所接管。 注意:
rootfs并不是一个具体的文件系统类型,如jffs。它只是一个理论上的概念。在具体的嵌入系统实例中,可以将某种具体的文件系统设置为根文件系统rootfs,如我们可以设置romfs为根文件系统,也可以设置jffs为根文件系统。 这里的ROMFS只读文件系统只是一种具体的文件系统类型,也是在嵌入系统中经常使用到的类型。 看完了上面的内容,以后你对出现的类似“kernel Panic:VFS:Unable to mount root fs on 0:00”的含义应该已经了解了。其中“VFS:”就是虚拟文件系统管理器操作时的输出信息了。
File linux.bin.gz found
linux kernel内核文件名,它是在只读文件系统romfs上的一个组成部分。
Unzi ing image from 0x4639DE60 to 0x90090000, size = 1316021
将romfs中的linux kernel解压缩到0x90090000,之后会从这个内存地址启动内核。romfs为压缩格式文件,使用压缩的只读文件系统,是为了保持制作出来的整个系统所占用的flash空间减小。这个内核的大小为1.3M左右,这也是目前大多数嵌入系统所使用的方法。
I tr = 0x00000014(20)
Inflating....
释放,解压中。。。(变大,充气, 膨胀)
Outcnt = 0x0030e7c8(3205064)
Final I tr = 0x001414ad(1316013)
Original CRC = 0xcbd73adb
Computed CRC = 0xcbd73adb
做释放后的CRC检查
Boot kernel at 0x90090000 with ROMFS at 0x46040000
kernel已经被从romfs中释放到内存地址0x90090000处,可以跳转到此处启动kernel了,这里是指定的kernel的起始地址
Pre 'enter' to boot
系统等待启动,后面将看到linux kernel的启动过程了。 第二部分 : linux
内核初始化以及启动
第一节:start_kernel
Linux的源代码可以从
得到,或者你可以查看linux代码交叉引用网站:
进行在线的代码查看,这是一个很好的工具网站。
在start_kernel中将调用到大量的init函数,来完成内核的各种初始化。如:
page_addre _init();
sched_init();
page_alloc_init();
init_IRQ();
softirq_init();
co ole_init();
calibrate_delay();
vfs_caches_init(num_phy ages);
rest_init();
具体内容可以参考[http://lxr.linux.no/source/init/main.c]
Linux version 2.4.22-uc0 (root@local) (gcc version 2.95.3 20010315 (release)) #33 .?1.. 20 12:09:106
上面的代码输出信息,是跟踪linux代码分析后得到的,进入init目录下的main.c的start_kernel启动函数.
嵌入式linux使用的是linux内核版本为2.4.22
linux source code代码中start_kernel中输出的linux_ba er信息。这个信息是每个linux kernel都会打印一下的信息,如果你没有把这句去掉的话。 Found bootloader memory map at 0x10000fc0.
bootloader经过内存映射后的地址为:0x10000fc0, 按上面的地址换算方法,1后面有7个0,那么虚拟地址256M左右处。
Proce or: ARM pt110 revision 0
pT110是ARM微处理器arm核的一种,另一种为pT100。此处为显示ARM的类型。
On node 0 totalpages: 20480
zone(0): 20480 pages.
zone(0): Set minimum memory threshold to 12288KB
Warning: wrong zone alignment (0x90080000, 0x0000000c, 0x00001000)
zone(1): 0 pages.
zone(2): 0 pages.
预留内存大小,在节点0上总共20页, zone(0) 设置最小内存为12MB, zone(1)和zone(2)为0页。警告:对齐不正确
Kernel command line: root=/dev/mtdblock3
Kernel 启动命令设为:/dev/mtdblock3(在后面的说明中会看到mtdblock3是指的flash上的romfs分区。),用来指定根文件系统所在的位置,kernel会将块设备mtdblock3当作文件系统来处理。
也就是说,内核会根据上面的kernel命令行,知道只读文件系统romfs将是根文件系统rootfs。
start_kernel(void)中输出的上面的这句信息。
这行命令是在linux内核启动过程中都会输出的一句。
Co ole: colour dummy device 80x30
代码中co ole_init()的输出信息, 显示控制台属性:一般使用VGA text co ole,标准是80 X 25行列的文本控制台,这里是对属性进行了设置。
serial_xx: setup_co ole @ 115
串口设置值为115200,此为波特率输出信息。对串口设置的信息做一个打印的动作,在调试时会非常有用。
Calibrating delay loop... 82.94 BogoMIPS
Calibrate:校准, 进入时延校准循环。检查CPU的MIPS(每秒百万条指令),Bogo是Bogus(伪)的意思。这里是对CPU进行一个实时测试,来得到一个大体的MIPS数值
Bogomi ,是由linus Torvalds写的, 是Linux操作系统中衡量计算机处理器运行速度的一种尺度。提供这种度量的程序被称为BogoMi ,当启动计算机时,BogoMi 能显示系统选项是否处于最佳性能。
linux内核中有一个函数calibrate_delay(),它可以计算出cpu在一秒钟内执行了多少次一个极短的循环,计算出来的值经过处理后得到BogoMIPS值
你可以将计算机的bogomi 与计算机处理器的bogomi 进行比较。Torvalds称这个程序为BogoMi 来暗示两台计算机间的性能度量是错误的,因为并非所有起作用因素都能被显示出来或被认可。尽管计算机基准中经常用到MIPS,但环境的变化容易导致度量的错误。Bogomi 能测出一秒钟内某程序运行了多少次。
察看/proc/cpuinfo文件中的最后一行也能得到这个数值。
上面这个输出,在所有的linux系统启动中都会打印出来。 进入内存初始化
mem_init(void), [arch/i386/mm/init.c]
Memory: 80MB = 80MB total
Memory: 76592KB available (1724K code, 2565K data, 72K init)
当前内存使用情况,将列出总的内存大小, 及分配给内核的内存大小:包括代码部分,数据部分,初始化部分,总共刚好4M。请留意此处的内核的内存大小的各个值。 进入虚拟文件系统VFS初始化
vfs_caches_init()
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
名词:
① Dentry:目录数据结构
② Inode:i节点
③ Mount cache:文件系统加载缓冲
④ buffer cache:内存缓冲区
⑤ Page Cache:页缓冲区
Dentry目录数据结构(目录入口缓存),提供了一个将路径名转化为特定的dentry的一个快的查找机制,Dentry只存在于RAM中;
i节点(inode)数据结构存放磁盘上的一个文件或目录的信息,i节点存在于磁盘驱动器上;存在于RAM中的i节点就是VFS的i节点,dentry所包含的指针指向的就是它;
buffer cache内存缓冲区,类似kupdated,用来在内存与磁盘间做缓冲处理;
Page Cache 用来加快对磁盘上映像和数据的访问。
在内存中建立各个缓冲hash表,为kernel对文件系统的访问做准备。
VFS(virtual filesystem switch)虚拟文件切换目录树有用到类似这样的结构表。
上面的输出信息,在一般的linux启动过程中都会看到。
POSIX conformance testing by UNIFIX
conformance:顺应, 一致。即POSIX适应性检测。UNIFIX是一家德国的技术公司,Linux 原本要基于 POSIX.1 的, 但是 POSIX 不是免费的, 而且 POSIX.1 ***相当昂贵. 这使得 Linux 基于 POSIX 开发相当困难. Unifix公司(Brau chweig, 德国) 开发了一个获得了 FIPS 151-2 ***的 Linux 系统. 这种技术用于 Unifix 的发行版 Unifix Linux 2.0 和 Lasermoon 的 Linux-FT。
在2.6的内核中就将上面的这句输出给拿掉了。 第二节:用户模式( user_mode )开始,start_kernel结束
PCI: bus0: Fast back to back tra fers disabled
PCI: Configured XX as a PCI slave with 128MB PCI memory
PCI: Each Region size is 16384KB
PCI: Reserved memory from 0x10080000 to 0x15080000 for DMA and ma ed to 0x12000000
设备的初始化 init()---do_basic_init()---> ci_init(),初始化PCI,检测系统的PCI设备。
Linux NET4.0 for Linux 2.4
Based upon Swa ea University Computer Society NET3.039
英国威尔士,斯旺西大学的NET3.039, TCP/IP 协议栈
此信息,在linux启动过程中都会出现。
Initializing RT netlink socket
对Socket的初始化,socket_init(),Netlink 一种路由器管理协议(linux-2.4.22\net\core\Rtnetlink.c,Routing netlink socket interface: protocol independent part。 其中RT是route路由的意思。这句输出是在create产生rtnetlink的socket套接字时的一个调试输出。)
此信息,在linux启动过程中都会出现。
Starting kswapd
启动交换守护进程kswapd,进程IO操作例程kpiod
kswapd可以配合kpiod运行。进程有时候无事可做,当它运行时也不一定需要把其所有的代码和数据都放在内存中。这就意味着我们可以通过把运行中程序不用的内容切换到交换分区来更好的是利用内存。大约每隔1秒,kswapd醒来并检查内存情况。如果在硬盘的东西要读入内存,或者内存可用空间不足,kpiod就会被调用来做移入/移出操作。kswapd负责检查,kpiod负责移动。
Journalled Block Device driver loaded
加载日志块设备驱动。
日志块设备是用来对文件系统进行日志记录的一个块设备。日志文件系统是在传统文件系统的基础上,加入文件系统更改的日志记录。
它的设计思想是:跟踪记录文件系统的变化,并将变化内容记录入日志。日志文件系统在磁盘分区中保存有日志记录,写操作首先是对记录文件进行操作,若整个写操作由于某种原因(如系统掉电)而中断,系统重启时,会根据日志记录来恢复中断前的写操作。在日志文件系统中,所有的文件系统的变化都被记录到日志,每隔一定时间,文件系统会将更新后的元数据及文件内容写入磁盘。在对元数据做任何改变以前,文件系统驱动程序会向日志中写入一个条目,这个条目描述了它将要做些什么,然后它修改元数据。
devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_optio : 0x1
Devfs模块的输出信息。
设备文件系统devfs,版本1.12c,
pty: 256 Unix98 ptys configured
Pty模块的输出信息,与控制台操作有关的设置。
将通过 devpts 文件系统使用 Unix98 PTYs,(Pseudo-ttys (telnet etc) device是伪ttys设备的缩写。
① TTY(/dev/tty)是TeleTYpe的一个老缩写,为用户输入提供不同控制台的设备驱动程序。它的名字来源于实际挂接到 UNIX系统的、被称为电传打字机(teletype)的终端。在Linux下,这些文件提供对虚拟控制台的支持,可以通过按<Alt-F1>到<Alt-F6>键来访问这些虚拟控制台。这些虚拟控制台提供独立的、同时进行的本地登录对话过程
② ttys(/dev/ttys)是计算机终端的串行接口。/dev/ttyS0对应MS-DOS下的 COM1。 使用 make dev脚本MAKEDEV来建立pty文件。这样系统内核就支持Unix98风格的pty了。在进行Telnet登录时将要用到/dev/pty设备。 pty是伪终端设备,在远程登录等需要以终端方式进行连接,但又并非真实终端的应用程序中必须使用这种设备,如telnet或xterm等程序。Linux 2.2以后增添了UNIX98风格的Pty设备,它使用一个新的文件系统(devpts针对伪终端的文件系统)和一个克隆的设备cloning device来实现其功能。
linux-2.4.22\drivers\char\Pty.c, 在devfs_mk_dir (NULL, "pts", NULL);时会输出上面的信息。 loop: loaded (max 8 devices)
加载返还块设备驱动,最多支持8个设备 8139too Fast Ethernet driver 0.9.27
eth0: RealTek RTL8139 at 0x60112000, 00:10:0d:42:a0:03, IRQ 14
eth0: Identified 8139 chip type 'RTL-8100B/8139D'
网卡驱动,基地址为:0x60112000, MAC地址:00:10:0d:42:a0:03, 中断号:14
RTL8139 的接收路径设计成一个环形缓冲区(一段线性的内存,映射成一个环形内存)。当设备接收到数据时,数据的内容就保存在这个环形缓冲区内并更新下个存储数据的地址(第一个数据包的开始地址+第一个数据包的长度)。设备会一直保留缓冲区内的数据直到整个缓冲区耗尽。这样,设备会再次重写缓冲区内起始位置的内容,就像一个环那样。
从 2.2 版内核升级到 2.4 版时, RTL-8139 支持模块已不再叫 rtl8139,而叫它 8139too,现在你再看到8139too就不会不明白它的来由了吧。
SCSI su ystem driver Revision: 1.00
USB设备信息,USB会被当做SCSI来处理。
mumk_register_tasklet: (1) tasklet 0x905bf9c0 status @0x9025e974
软中断信息输出。Tasklet是在2.4中才出现,它是为了更好地利用多CPU。 Probing XX Flash Memory
探测 XX的闪存(Flash Memory),"NOR NAND Flash Memory Technology" Amd/Fujitsu Extended Query Table v1.3 at 0x0040
number of CFI chi : 1
AMD与富士通合资设立的Flash供货商Spa ion。AMD因获利不佳,已经退出Flash市场,后续由Spa ion合资公司经营.主要生产NOR类型的flash,特点是容量小,速度快。Spa ion商标的flash,在我们开发中会经常看到。以后大家看到Spa ion的芯片,就能了解到它和AMD还有富士通的来龙去脉了。
Common flash Interface (CFI)是指一个统一的flash访问接口,表示这种flash是这种接口类型的。
Using buffer write method
使用flash写缓冲方式
flash提供了写BUFFER的命令来加快对flash上块的操作。对Flash擦除和写数据是很慢的。如果用写BUFFER的命令会快一点。据手册上说,会快20倍。Buffer Size :5 bytes的buffer缓冲不是每个块都有,是整个flash只有一个5 bytes的buffer,用写BUFFER命令对所有的块进行写操作,都要用同一个buffer,写Buffer是主要检查buffer是否available,其实buffer起缓冲作用,来提高工作效率。
比如某flash有128个128K字节块。允许用户对任意块进行字节编程和写缓冲器字节编程操作,每字节编程时间为210μs;若采用写缓冲器字节编程方式,32字节编程共需218μs,每字节编程时间仅为6.8μs。芯片的块擦除时间为1s,允许在编程或块擦除操作的同时进行悬挂中断去进行读操作,待读操作完成后,写入悬挂恢复命令,再继续编程或块擦除。 Creating 3 MTD partitio on "XX ma ed flash":
0x00000000-0x00020000 : "BootLoader"
0x00020000-0x00040000 : "Config"
0x00040000-0x01000000 : "Romfs"
此处为重要信息部分,需要特别留意。
在内存中映射过的flash,创建三个MTD分区:
flash上的内容将被映射到内存中的对应地址
前128K为BootLoader---0x00000000-0x00020000
接着的128K为系统配置信息Config存放的位置---0x00020000-0x00040000
再后面的 16M - 2X128K 为romfs的存放处.---0x00040000-0x01000000
上面的内容,大家可以根据前面的换算公式得到。 A 编译的bootloader一般大小约50K左右;
B 在此处就知道了配置信息config是放在第2分区中的;
C 制作的romfs的大小,一般为8M或10M左右,所以能放得下; 嵌入式Linux
内核的块设备驱动:
对于linux 的根文件系统,目前有三种块设备的驱动可以选择,它们分别是:
a) Blkmem 驱动
b) MTD 驱动
c) RAM disk 驱动
Blkmem 驱动是专门为嵌入式linux 开发的一种块设备驱动,它是嵌入式linux系统中最为古老和通用的块设备驱动。它原理相对简单但是配置比较复杂,需要根据你即的Flash的分区使用情况来修改代码。当然修改的结果是它可以对一些NOR型的Flash进行读写操作。不过目前支持的Flash类型不够多。如果新加入对一种Flash的支持需要作的工作量比较大。
Linux的MTD驱动是标准Linux的Flash驱动。它支持大量的设备,有足够的功能来定义Flash的分区,进行地址映射等等。使用MTD你可以在一个系统中使用不同类型的Flash。它可以将不同的Flash组合成一个线性的地址让你来使用。
在标准的Linux 2.4内核中MTD有一系列的选项,你可以根据个人系统的需要来选择,定制。
另外一种选择就是RAM disk 驱动。在PC上它经常用于没有硬盘的Linux的启动过程。它和Flash没有直接的关系。不过当Flash上启动的是经过压缩的内核时。RAM disk 可以作为根文件系统。
MTD 驱动提供了对Flash强大的支持,你通过它甚至可以在Flash上运行一个可以读写的真正的文件系统,比如JFFS2。而Blkmem驱动则望尘莫及。
NET4: Linux TCP/IP 1.0 for NET4.0
调用inet_init [ linux-2.4.22\net\ipv4\Af_inet.c ]时的输出信息, 在启动过程中被socket.c调用到。
IP Protocols: ICMP, UDP, TCP, IGMP
列出可以支持的IP协议,此处为kernel源代码inet_add_protocol(p);的输出。
在linux启动过程中,都会看到这句的输出。
IP: routing cache hash table of 512 buckets, 4Kbytes
IP路由代码的输出信息。
ip_rt_init [ linux-2.4.22\net\ipv4\Route.c ],Set the IP module up,路由缓冲hash表
TCP: Hash tables configured (established 8192 bind 8192)
TCP协议初始化输出信息。tcp_init [ linux-2.4.22\net\ipv4\Tcp.c ],
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
UNIX网络协议信息。
af_unix_init[ linux-2.4.22\net\unix\Af_unix.c ], 多种连接的一种(IPv4, UNIX domain sockets, IPv6和IrDA). SMP 对称多处理器—Symmetrical Multi Proce ing,这里主要是指UNIX的一些网络协议. 上面的关于网络的输出信息是在linux启动信息中都会出现的。
加载各种文件系统
cramfs: wrong magic
会出现“cramfs: wrong magic”,别担心这没有什么害处,这个是kernel的书写bug,在2.6中有修改之,它是一个警告信息,用来检查cramfs的superblock超级块的。superblock也是VFS要用到的数据结构。
代码linux-2.4.22\fs\cramfs\Inode.c:
cramfs_read_super(。。。)
/* Do sanity checks on the superblock */ if (super.magic != CRAMFS_MAGIC) { /* check at 512 byte offset */ memcpy(&am uper, cramfs_read( , 512, sizeof(super)), sizeof(super)); if (super.magic != CRAMFS_MAGIC) { printk(KERN_ERR "cramfs: wrong magic\n"); goto out; } } 2.6
if (super.magic != CRAMFS_MAGIC) { if (!silent) printk(KERN_ERR "cramfs: wrong magic\n"); goto out; }
超级块是文件系统的“头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,这样也就不能***它了,即使采用e2fsck 命令也不能处理这个问题。 Cramfs
文件系统:
cramfs 是 Linus Torvalds 本人开发的一个适用于嵌入式系统的小文件系统。由于它是只读的,所以,虽然它采取了 zlib 做压缩,但是它还是可以做到高效的随机读取。 cramfs 不会影响系统读取文件的速度,又是一个高度压缩的文件系统。
我们制作image文件之后,我们还要考虑怎样才能在系统运行的时候,把这个 image 文件 mount 上来,成为一个可用的文件系统。由于这个 image 文件不是一个通常意义上的 block 设备,我们必须采用 loo ack 设备来完成这一任务,如:
mount -o loop -t cramfs /usr.img /usr
这样,就可以经由 loo ack 设备,把 usr.img 这个 cramfs 的 image 文件 mount 到 /usr 目录上去了。内核中需要对loo ack这个设备的支持。
cramfs 的压缩效率一般都能达到将近 50%。
Cramfs通过优化索引节点表的尺寸和除去传统文件系统中文件之间的空间浪费来达到节约空间的目的。它还使用了zlib压缩,实现优于2:1的压缩比例。解压缩过程的系统开销并不是很大,因为Cramfs支持指定单块的解压,而并不必解压缩整个文件。
Cramfs不仅能节省空间,还能避免非正常关机导致的等待fsck或手工进行fsck的麻烦。它通过只读的方式达到这一目的。
RamDisk
有三种实现方式:
在Linux中可以将一部分内存mount为分区来使用,通常称之为RamDisk,分为:
Ramdisk, ramfs, tmpfs.
① 第一种就是传统意义上的,可以格式化,然后加载。
这在Linux内核2.0/2.2就已经支持,其不足之处是大小固定,之后不能改变。
为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是initrd的支持。
如果对Ramdisk的支持已经编译进内核,我们就可以使用它了:
首先查看一下可用的RamDisk,使用ls /dev/ram*
首先创建一个目录,比如test,运行mkdir /mnt/test;
然后对/dev/ram0 创建文件系统,运行mke2fs /dev/ram0;
最后挂载 /dev/ram0,运行mount /dev/ram /mnt/test,就可以象对普通硬盘一样对它进行操作了。
② 另两种则是内核2.4才支持的,通过Ramfs或者Tmpfs来实现:
它们不需经过格式化,用起来灵活,其大小随所需要的空间而增加或减少。
Ramfs顾名思义是内存文件系统,它处于虚拟文件系统(VFS)层,而不像ramdisk那样基于虚拟在内存中的其他文件系统(ex2fs)。
因而,它无需格式化,可以创建多个,只要内存足够,在创建时可以指定其最大能使用的内存大小。
如果你的Linux已经将Ramfs编译进内核,你就可以很容易地使用Ramfs了。创建一个目录,加载Ramfs到该目录即可:
# mkdir /testRam
# mount -t ramfs none /testRAM
缺省情况下,Ramfs被限制最多可使用内存大小的一半。可以通过maxsize(以kbyte为单位)选项来改变。
# mount -t ramfs none /testRAM -o maxsize=2000 (创建了一个限定最大使用内存为2M的ramdisk)
③ Tmpfs是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs。
Tmpfs可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟内存资源由物理内存(RAM)和交换分区组成,这些资源是由内核中的虚拟内存子系统来负责分配和管理。
Tmpfs向虚拟内存子系统请求页来存储文件,它同Linux的其它请求页的部分一样,不知道分配给自己的页是在内存中还是在交换分区中。同Ramfs一样,其大小也不是固定的,而是随着所需要的空间而动态的增减。
使用tmpfs,首先你编译内核时得选择"虚拟内存文件系统支持(Virtual memory filesystem su ort)" 。
然后就可以加载tmpfs文件系统了:
# mkdir -p /mnt/tmpfs
# mount tmpfs /mnt/tmpfs -t tmpfs
同样可以在加载时指定tmpfs文件系统大小的最大限制:
# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m
FAT: bogus logical sector size 21072
具体的文件系统FAT格式。
虚拟逻辑扇区大小为20K,linux-2.4.22\fs\fat\Inode.c。
在初始化MS-DOS文件系统时,读MS-DOS文件系统的superblock,函数fat_read_super中输出的上面的信息。
UMSDOS: msdos_read_super failed, mount aborted.
UMSDOS:一种文件系统,特点容量大但相对而言不大稳定。是Linux 使用的扩展了的DOS文件系统。它在 DOS 文件系统下增加了长文件名、 UID/GID、POSIX 权限和特殊文件 (设备、命名管道等)功能,而不牺牲对 DOS 的兼容性。允许一个普通的msdos文件系统用于Linux,而且无须为它建立单独的分区,特别适合早期的硬盘空间不足的硬件条件。
VFS: Mounted root (romfs filesystem) readonly
虚拟文件系统VFS(Virtual Filesystem Switch)的输出信息。
再次强调一下一个概念。VFS 是一种软件机制,也可称它为 Linux 的文件系统管理者,它是用来管理实际文件系统的挂载点,目的是为了能支持多种文件系统。kernel会先在内存中建立一颗 VFS 目录树,是内存中的一个数据对象,然后在其下挂载rootfs文件系统,还可以挂载其他类型的文件系统到某个子目录上。
Mounted devfs on /dev
加载devfs设备管理文件系统到dev***点上。
/dev是我们经常会用到的一个目录。
在2.4的kernel中才有使用到。每次启动时内核会自动挂载devfs。
devfs提供了访问内核设备的命名空间。它并不是建立或更改设备节点,devfs只是为你的特别文件系统进行维护。一般我们可以手工mknod创件设备节点。/dev目录最初是空的,里面特定的文件是在系统启动时、或是加载模组后驱动程序载入时建立的。当模组和驱动程序卸载时,文件就消失了。
Freeing init memory: 72K
释放1号用户进程init所占用的内存。 第三节:加载linux内核完毕,转入cpu_idle进程 系统启动过程中进程情况:
①init进程
一般来说, 系统在跑完 kernel bootstra ing 内核引导自举后(被装入内存、已经开始运行、已经初始化了所有的设备驱动程序和数据结构等等), 就去运行 init『万proce 之父』, 有了它, 才能开始跑其他的进程,因此,init进程,它是内核启动的第一个用户级进程,它的进程号总是1。
你可以用进程查看命令来验证
PID Uid VmSize Stat Command
1 0 SW init
2 0 SW [keventd]
3 0 SWN [ksoftirqd_CPU0]
4 0 SW [kswapd]
5 0 SW [bdflush]
6 0 SW [kupdated]
7 0 SW [rbwdg]
9 0 SW [mtdblockd]
10 0 SW [khubd]
80 0 SW [loop0]
另外 Linux 有两个 kernel 类的 proce 也开始跑了起来,一个是 kflushd/bdflush,另一个是 kswapd;
只有这个 init 是完全属于 user 类的进程, 后两者是 kernel假借 proce 进程之名挂在进程上。
init有许多很重要的任务,比如象启动getty(用于用户登录)、实现运行级别、以及处理孤立进程。
init 一开始就去读 /etc/inittab (init初始化表),初始化表是按一定格式排列的关于进程运行时的有关信息的。init程序需要读取/etc/inittab文件作为其行为指针。这个 inittab 中对于各个runlevel运行级别要跑哪些 rc 或 awn 生出什么有很清楚的设定。
一般, 在Linux中初始化脚本在/etc/inittab 文件(或称初始化表)中可以找到关于不同运行级别的描述。inittab是以行为单位的描述性(非执行性)文本,每一个指令行都是固定格式
inittab中有re awn项,但如果一个命令运行时失败了,为了避免重运行的频率太高,init将追踪一个命令重运行了多少次,并且如果重运行的频率太高,它将被延时五分钟后再运行。
② kernel进程
A 请注意init是1号进程,其他进程id分别是kflushd/ bdflush, kupdate, kpiod and kswapd。这里有一个要指出的:你会注意到虚拟占用(SIZE)和实际占用(RSS)列都是0,进程怎么会不使用内存呢?
这些进程就是内核守护进程。大部分内核并不显示在进程列表里。守护进程在init之后启动,所以他们和其他进程一样有进程ID,但是他们的代码和数据都存放在内核占有的内存中。在列表中使用中括号来区别与其他进程。
B 输入和输出是通过内存中的缓冲来完成的,这让事情变得更快,程序的写入会存放在内存缓冲中,然后再一起写入硬盘。守护进程kflushd和kupdate 管理这些工作。kupdate间断的工作(每5秒)来检查是否有写过的缓冲,如过有,就让kflushd把它们写入磁盘。
C 进程有时候无事可做,当它运行时也不一定需要把其所有的代码和数据都放在内存中。这就意味着我们可以通过把运行中程序不用的内容切换到交换分区来更好的是利用内存。把这些进程数据移入/移出内存通过进程IO管理守护进程kpiod和交换守护进程kswapd,大约每隔1秒,kswapd醒来并检查内存情况。如果在硬盘的东西要读入内存,或者内存可用空间不足,kpiod就会被调用来做移入/移出操作。
D bdflush - BUF_DIRTY, 将dirty缓存写回到磁盘的核心守护进程。 对于有许多脏的缓冲区(包含必须同时写到磁盘的数据的缓冲区)的系统提供了动态的响应。它在系统启动的时候作为一个核心线程启动,它叫自己为“kflushd”,而这是你用 显示系统中的进程的时候你会看得的名字。即定期(5秒)将脏(dirty)缓冲区的内容写入磁盘,以腾出内存;
E ksoftirqd_CPUx 是一个死循环, 负责处理软中断的。它是用来对软中断队列进行缓冲处理的进程。当发生软中断时,系统并不急于处理,只是将相应的cpu的中断状态结构中的active 的相应的位,置位,并将相应的处理函数挂到相应的队列,然后等待调度时机来临,再来处理.
ksoftirqd_CPUx是由cpu_raise_softirq()即cpu触发中断,唤醒的内核线程,这涉及到软中断,ksoftirqd的代码参见 [kernel/softirq.c]
F keventd,它的任务就是执行 scheduler 调度器队列中的任务,keventd 为它运行的任务提供了可预期的进程上下文。
G khubd, 是用来检测USB hub设备的,当u 有动态插拔时,将交由此内核进程来处理。在检测到有hub事件时会有相应的动作(u _hub_events())
H mtdblockd是用来对flash块设备进行写操作的守护进程。
NAND类型的Flash需要MTD(Memory Technology Devices 内存技术驱动程序)驱动的支持才能被linux所使用。
NAND的特点是不能在芯片内执行(XIP,eXecute In Place),需要把代码读到系统RAM中再执行,传输效率不是最高,最大擦写次数量为一百万次,但写入和擦除的速度很快,擦除单元小,是高数据存储密度的最佳选择。
NAND需要I/O接口,因此使用时需要驱动程序。
I loop0 是负责处理loop块设备的(回环设备)。loo ack device指的就是拿文件来模拟块设备, 在我们这里,loop设备主要用来处理需要mount到板上的文件系统,类似mount /tmp/rootfs /mnt -o loop。.我们的实例有:mount -o loop -t cramfs /xxx.bin /xxx 也就是将xxx.bin这个文件mount到板上来模拟cramfs压缩ram文件系统。loop0进程负责对loop设备进行操作。
loo ack设备和其他的块设备的使用方法相同。特别的是,可以在该设备上建立一个文件系统,然后利用mount命令把该系统映射到某个目录下以便访问。这种整个建立在一个普通磁盘文件上的文件系统,就是虚拟文件系统 (virtual file system)。 总结:
在对嵌入式linux的启动过程做了一个详细注释后,大家会对涉及到嵌入系统的各个概念有了一个更加明确的认识,并能对嵌入系统的软硬件环境的有关设置更加清楚。当你自己动手结合linux源代码来分析时,将会有一个清楚的全局观。
( Thu, 13 Mar 2008 14:37:41 +0800 )
Description:
网上看到的一篇文章,觉得很不错,转载过来——
我是2005年毕业的,偶尔来这里看看,不常灌水。
今天来随意写下一些,如果对各位有任何的帮助,是我衷心所愿。
1。考研与就业:
2004年的暑假,我和大多数人一样,艰难的抉择,究竟是考研还是找工作。
凭良心说,如果我选择考研并不是因为我真得很想读书很想深造,而是我害怕接触社会,
想再窝在学校几年。
所以,虽然我非常不喜欢我这个专业,我还是决定做个鸵鸟,情愿去干我唯一最擅长的事情-读书。
现在想起来,当时太不了解自己。呵呵。
我们寝室4个女生,两个决定考研并且每天早出晚归,整天也见不到人。
我决定效仿她们,每天大包小包的拎着啃书。
不喜欢终究是不喜欢,2个月以后,我在镜子面前看到一个憔悴的自己,
想起我这些日子以来的生活状态,究竟是为了什么?我不是一个聪明的小孩,
我没有本领过目不忘,我又没有自己想象的那么勤奋,我怕这怕那,天哪,忽然觉得,自己一无是处。。。
2004年9月,我很没志气放弃了考研。
两个字,怕苦。
2004年9月,我在51job上填了我完整的信息,等待工作的降临。
2004年9月中旬,我的第一份实习经验开始了。。。
2004年9月中旬,一个很甜美的声音从我的手机传来,约我在徐家汇美罗城面试。
我无比激动地。。真的是我比激动地。。。去借了正装,提早了半个多小时到。
到了以后我才发现,是一家人寿保险公司。
那个面试我的经理居然是同济毕业的,
有些人就是有这种魅力,寥寥几句话,就让周围的人围着转。
像我这样没见过世面的人,轻易的,魂就被勾走了。
在我走出那里的时候,我已经答应要留下来做做看了。
我没有考证,所以不可以接单,我就是在里面接触他们是怎样工作的。
接下来的1个多月里,我亲眼看到一群斗志高昂的人在没有任何签单以后是如何被经理骂的狗血林头。
我也亲眼看到,上海滩上一些有钱人的嘴脸。
说实在的,以前我是鄙视做保险的人的,我认为他们素质低下只会粘人。
现在,我对他们多了一份理解。
并且,他们之中确实有就算是放到任何行业也光彩夺目的精英。
也许是看出了我不是这块料,一个月以后,我被委婉的驱逐了。
呵呵。我是高兴的走的,走了以后还在徐家汇逛了一圈。
第一次社会经历,让我很真实的触摸到了钱和人的关系。
2004年10月中旬,我迎来了第二次实习,
我的一个同学的姐姐,在某知名相机公司做广告的,很急要找人来帮忙处理一个他们举办的赛事。
一行找了好几个想我这般年纪的小孩,做的工作无非是更新数据库之类的。
我当时是抱着希望,最好做着做着就能留下来的。
结果两个礼拜以后,赛事结束,我被驱逐了。。。
我拿到了600多元钱,因为我是她弟弟的同学,她算是特别有待我,给我开了一份实习证明。
上面写得我是如何如何得好,呵呵,我当时心想,我有着么好?这么好你怎么不留我?!
2004年的10月下旬,
我迎来了最好一次实习经历,这次实习决定了我的工作。
大家都有这个经验,网申一般没用。
我在51job上申请过n多网申,统统石沉大海。
有礼貌一点地会给我回一封信,说我的资料已经到了数据库,他们会慢慢核对。。。
所以我真得确实没有印象,我曾经投过这一家公司。
某天早晨当***通的那头传来,她是某某名气很大的公司的HR的时候,我确实是呆了。
因为我根本不记得我投过什么职位。
我一路支支吾吾的,居然她也没说什么特别的,最后报了一个很远很远的地方的地址,叫我明天去面试。
我挂了***以后想,这种公司我是肯定没戏的,那就去一次算是锻炼一下我的抗打击能力。
第2天面试,没有程序考卷,没有英语面试,什么都没有。两个经理坐在会议室里面,一个在打***很忙的样子,一个笑容可掬。
那个笑容可掬的就问了一句话,你在XX公司(就是那个相机公司)实习过对么?
我点点头
OK, 就是你了,我们这里时薪10元钱,三个月,有问题么?
没问题。
好,明天来上班。
走出去的时候我彻底晕。
接下去的日子我不太记得是怎么过的,就是每天很忙,我就是一个小秘书,什么打杂的都干。
我一直都认为,大公司的门槛很高很高。
牛人中的牛人才有机会进去。
我也一直认为我不是牛人,所以我莫名的对里面所有的人产生敬仰之心。
做事异常小心。
就是复印个文件,我也要核对n次才敢拿去给他们看。
如果被他们抓到了什么错,我会难过半天。。。
我心里想着,我是绝不奢望能留下来。
不过这里的经历对将来找工作会有帮助的,说出去也好听。呵呵
我身边的人变化的也很多。
感觉有很多人一夕之间长大,
22岁之前,我一直觉得学校就是社会,除了食堂的大妈偶尔会摆脸色给我看,没有人会轻视我。
我是家里受重视的小孩,一路顺顺当当,
一直坚信读书是唯一的路。
我到了22岁才明白过来,我真得除了读书,什么都不会。
该说什么呢。。。
2004年冬天,他们到同济来做宣讲,其实我心里明白,他们根本就没有要招这么多人。
可是即便如此,场面还是摆得很大,一幅要招几百人的腔调。
我冷眼旁观着,心里想,何必呢,知道你钱多,别来玩弄我们这些可怜人啊。
居然有人叫我,我在公司里不经常能见得到的高级经理。
他冲我笑了笑,你要应聘不需要到这里来啊,明天到我办公室来好了。
我愣了半天,头一次晚上很没面子的失眠了。
原来,我也并不是那么差?!
第2天出了办公室以后,我忽然感慨万千,
我想在这里说,
你的努力,千万不要担心没有人看到,
如果让你去做很小很小的事情,千万不要认为不屑做,大材小用,
你的价值,点点滴滴的在每一个细微的动作里面体现出来。
2004年12月底,我签好了三方协议。
2004年1月中旬,我面前堆了一大堆的应届生考卷,需要我对着***批改。
我亲眼看到我的同事们是怎样对付这些考卷的-只看***,还看一下字迹和学校,然后了事。
这个世界就是这样,并不是你不优秀,往往差那么一点点,你就和别人走了不一样的路。
所以各位如果谁笔试被刷下来的,千万不要气馁。
关于笔试的问题我发过帖子的,这里就不多说了。
洋洋洒洒才发现写了很多,我没有什么文学功底,好像没什么中心思想。
各位有什么问题可以问我。
我想说,很多失败并不是因为你不够好,有的时候就是差那么一点点。但是你怎么知道接下来埃到你的选择不会比你失去的更好?
所以,请平心静气的对待埃到你的任何一份工作,
你的努力一定会有回报,也许就一点也许早一点。
2。工作
2005年7月,正式加入,
我被分到了一个项目中去,我对项目这个名词没什么概念,貌似就是一份大一点的作业吧
我的leader是个严谨的中年人,
我见到隔壁桌的同事开着MSN和QQ, 于是很没志气也在自个儿的机器上开了。。
结果,被骂了。
在leader分配完任务以后,问我有没有问题,我很诚实的回答,时间不够。
结果,又被骂了。
当时觉得很委屈,为什么别人开m 就没事,我就要挨骂?
为什么我说实话也不行?也要挨骂?
简直莫名其妙嘛!
第2天早上来打开电脑,outlook里面有一封很长很长的信,是leader写给我的。
他罗列了一长串我身上的毛病,比如不应该工作场合用聊天工具,
不应该在办公室吃早饭,
分配的任务应该尽力去完成,确实有困难再提出,不应该一开始就推托,
等等等等。
他说,我是刚毕业的人,是一张白纸,在一开始就不应该有污渍,这样将来才会越走越好。希望我不要怪他。
那天,我把自己关进厕所大哭,
我一直认为我是个到哪里都乖巧的人,真的,从来也没有人会挑剔我这么错。
今天一个职位很高的人,一个和我接触不到几天的人就一口气说出了我身上这么多弱点,并写这样一封长长的信来告诫我,简直让我受宠若惊。
一个人的优秀,不只体现在这个人本身,当他有本领让身边的人惭愧,并且因此而努力的时候,才不愧为精英两字。
自那以后,我对工作有了另一番见解,也慢慢开始会留一个心眼,观察身边的人是如何展现Profe ional的一面。
小节,是体现一个人各方面的表现。
千万不要忽视他。
2005年8月,我第一次加班到深夜
因为带着隐形眼镜,晚上不停的流泪水,时间太久,几乎带了一天了。
加班是件新奇的事情,以前听人说四大有多么多么恐怖,加班有多么多么厉害。
其实,哪里不加班呢?
每个人做事情有他自己的底线,有些人觉得做到80分不够,100分达不到的话至少要95分。
于是,加班成了自愿的事情,其实没有老板在你背后指着说,你,给我留下来加班!
真的没有,但是就是到10点多,仍然有很多人迟迟没有回去。
上海的生活压力大,不努力就不会加工资不会升值,你想要混日子也可以,但是看到别人的幸福生活,难道不会懊恼想当年我再努力一点点再一点点,今天就会比他更出色了?
所以这里的人,加班很正常。他们的背后有妻有子有沉重的房贷,这一切不见得为了老板,只是为了自己,这个理由已经很充分了。
被剥削?奴性?不,这里根本没有愤青,愤青在真实地面对生存的压力之后,我想也会变平和的。
你的底线是多少,做到多少分?
我做不到100分,但是我愿意尽力做到100分。
2005年8月底,我拿到生平第一份工资,
我咧着嘴乐了半天,真的,看到卡上多了这么多钱,无比的兴奋。
于是,第一个月的钱,我全部***给了各种商人。
第一次感觉,有钱真好!
做学生的时候看到稍微贵一点点的东西,是绝对不敢染指的。
现在很豪气的说,买!
我很没气质的想,工作为了啥?不就是为了买起东西来豪气一点么?
对,就是这样。
2005年9月,第一次觉得自己是如此幸运。
9月的时候,进来了一个复旦的实习生,据说编程很强,还有口译***,
总之就是很厉害。
进来做什么?打杂的。。。
由于年龄相仿,我跟她很投缘,于是我鼓励她要好好干,机会无处不在。
她真的很厉害,就是那种跟你说几句话,你就能从她散发的气息中感觉出这是一个聪慧的人。
2个月以后她拜托我去询问leader的意见,看她是否有机会留下来。
leader很简单的说了一句,不好意思,今年不招人。
我身边的同事偷偷拉着我说,像这样的公司,招不招人招多少人,都是有计划有名额的。
他们并不在乎你有多优秀,多出色,对于管理者来说,他不需要天才,他只需要一些肯干,踏实的人。当然,你最好是这批应征者中最棒的,但是为了最棒的你而增加名额是不可能的。
实习生哪里都有,到处有人排队抢着做。他没有必要招成正式员工。
很残酷,当你觉得你的才华被这么多迂腐的条条框框给框住的时候,确实令人抓狂!
我不禁问,可是我当时就是做实习生然后转正的阿?
因为当时正好有人离职,人手不够。
呵呵。不知道该说什么好,当自己意识到幸运多过于自个儿的能力以后,
不知道该哭还是笑。
复旦的那个小女生坚持着没有走,到了第2年春天终于是熬不住了,走了。
之后去了一家咨询公司,但愿她的路一切都好!
一个萝卜一个坑,如果你为自个儿糟糕的运气而懊恼的时候,
一定要对自己说,说不定,下一个坑会更好。
2006年3月,
我一直觉得自己是个兵,我说话不大声,没有威严
我一定不是当领导的料。
所以当我被指定为leader的时候,挺激动地。虽然我的组员是外驻,呵呵,不是外驻也轮不到我管。
我这边的外驻都是我那年毕业的,大多来自于水产,工技大,上大等等。
偶尔会看到几个复旦交大同济的。
挑选外驻的时候是我一个人去的,印象比较深的是其中两个女生,
第一个是华师大的,说话特溜。感觉很精明的样子。
当我问她还有什么问题的时候,她很直接的说,
你们这里的人工资待遇怎么样啊,
你们是不是配笔记本的阿?什么牌子的阿?
你们通常加不加班啊?加班给不给加班费阿。。。
我无语。。
第二个是水产的,看说话的样子,不精明也不很聪明。
可能是受前一个人的影响,我一上来就说,我们这里可能会加班。
她连忙一个劲儿的点头,没问题的,我经常加班的。
当她准备交卷的时候,又前后扫了一遍,然后递给我
卷子上字迹工整,在答不出的题目上写了几个字,抱歉,真的不会。
短短的几分钟,我便决定就是她了。
我从来都是被面试的人,当我今天坐在面试者的角度看待被面试者的时候,
才发现很多东西都是我们面试的时候忽略的,
比如你的眼神,
你的谈吐,
你该关注的问题,
你流露出来的你身上的特质。
对一个初次见面的人来说,别人没有时间来了解你这个人有多么讲哥们义气,有多么见识广博,有多么善解人意。
这是门学问,我们共勉。
2006年4月,
项目中来了一个新外驻,同济的,
在这么多外驻中,她的卷子得分最高,面试的时候也表现最好。
我心想,那是,这是咱们学校的呢。呵呵。
接下来的日子里,他的各方面表现是最好的,
我给他打了最高分。
有一次我偷偷问他,为什么会进那个公司?
他很腼腆的说,呵呵,大学四年天天打游戏,醉生梦死。
到了大肆了才发现自己什么***都没有,什么都不会,极点又低。
但是心高气傲总觉得自己有才华此处不留人自有留人处。
结果到了6月份,实在是没有办法了,随便找了一家公司,就是现在的公司。
工资1000来元钱,现在涨了一点点了。
现在还是打游戏,不过没有以前那么疯了,毕竟还是要努力啊。
最近正在张罗着跳槽,希望会有好消息。
2个月以后,他在m 上告诉我,他进了ebay
我很高兴,走了一小段弯路以后,金子终于还是发光了。
所以你是金子,就一定会发光,这是我坚信的。
说到游戏,我想这里的男生们一定很委屈,
你们女生就可以沉迷于化妆品和衣服的世界里,我们打个游戏找谁惹谁了?
确实是,游戏没怎么样。正常娱乐嘛。
但是你真的只是把它当作正常娱乐嘛?
如果你一天从挣开眼睛到闭上眼睛,都在打游戏,你还觉得这是正常娱乐嘛?
3。激情?
我是个本地小孩,从小,老爸老妈就教导我,读书要考最高分,这样将来才能有出息。
我的老爸老妈是那种天塌下来你都别管,只要给我好好读书就行了的人。
我不才,最高分是不可能的,但是倒也不很差就对了。
高考填志愿的时候,我从来没想过要走出上海,现在想起来,上海的小孩被保护得太好,以至于觉得自己头顶上的这片天是最蓝的。
选专业的时候我彻底晕了,说实在的我根本不知道那些老什子专业出来是干什么的。没有人告诉我,老师也不懂,他就只知道卷子卷子考分考分。
当我真正进入大学知道我接下来的四年将要学习什么的时候,真是很郁闷。
但是当我知道,我的三个室友都是以绝对的高分考进同济并且被调剂进这个专业的时候,我把我所有的不满都小心翼翼的收藏了起来。
外地学生的辛苦我是有耳闻的,但是我真的没有想到竞争这么残酷。
我的室友中,有一个高考的时候外语卷是满分的。
她们每个人在考试上的建树都是厉害的角色,但是在面对专业的选择时,都跟我一样彷徨无知。最后白白的扼杀了潜藏在身上的特质。
我们这一行4个女生,
最痛苦的事情并不是在于我们没有选到心仪的专业。
而是我们根本不知道自己喜欢什么。
并且,直到今天,我对自己的喜好也许有了一些轮廓,但却还是抓不住。
不知道各位有没有这样的感觉,就是对什么都没有什么特别的兴趣,
但是如果老师或者谁谁谁让你做什么,也还是乖乖的去做,做的质量也不错。仅仅这样而已。
我的人生中似乎从未有过一次,因为内心而发的激情碰撞而努力完成一件得意的事情。
不知道该说什么,22岁之前,我就是这样一个没有个性的人,不温不火。
现在我深深为此自卑,随着年龄的增长,深深感觉到没有激情的努力是绝对没有光彩的。
也许你还不赖,但绝不出类拔萃。
我的公司里年轻的孩子很多,让我切实的感受到年轻的活力,
我不能表达,当我见到一个大男生coding的时候居然眉飞色舞着的样子。
我一直认为coding是人世间最悲惨的事情,呵呵。
在看到一张张精神饱满的年轻的脸孔,长指在键盘上敲打怡然自乐的样子。我真地感到很惭愧。
我偶尔也会问同事,是装的吧?写代码很开心么?
他却不以为意:并不喜欢,不喜欢的人多了去了,但还是不得不做。因为你不做有的是人做。既然躲不了,那就坦然一点,去享受它。
很有哲理吧?我不敢相信这是一个像我这般年纪的人说出的话。呵呵。
也许从那时开始,我开始后悔了。
当初是怀着多么沉重的郁闷读着这个专业过完我的大学时光的,现在想想我的郁闷全浪费了。
我偶尔会看到你们之中很多人,跟我一样在郁闷着自个儿的专业。
我觉得大多数人都郁闷,呵呵。
但是既然已经这样了,那就把郁闷转化成别的什么吧。
郁闷是会变成习惯的,
既然一些事情不能改变,那就去享受它。
享受的过程就在酝酿着激情,但你拥有激情的时候,刚好你还拥有一个不错的头脑。那么你一定会成功的。
4。工资
呵呵~~~工资是个敏感话题。
我们这些小孩子理所当然的把工资当作为衡量自己身价的尺码。
大四那年,每当有人签了以后,大家伙儿的问话都浓缩成了两句话:
哪?多少钱?
是啊,钱很重要。
当我偶尔去一下百盛,看到n百元钱的衣服仅仅是因为打了5折以后,n多人簇拥而上疯抢的情景,真是不由得感叹,钱阿,都是钱惹得祸。
2004年找工作的时候,我的心里想,给我2000元就可以了,
住的地方嘛反正我老爸老妈暂时还没有赶我出去的打算,
吃嘛,我一个人吃得也不多,
就是买买衣服化妆品就行了,反正我也不想存钱买房子,事实上我认为不靠父母资助,现在让一个年轻男生买房子娶老婆养家这是不可能的!
但是人既然生活在社会里,真的是不由得自己不去攀比和妒嫉。
我一直认为我是一个心平气和的人,
当我在听到谁谁谁签了个n高的价之后,还是会身不由己的妒嫉。
当然我也只是自个儿生生闷气,呵呵。
那时候我身边有很多人,在和我聊天的时候都会有类似的话题,
你说那个3200的好,还是2800的好?
呵呵,工资成了公司的代名词了。
我不能免俗,当时如果是让我选,我一定是要钱多的了,说出去好听,
我毕业工资3000多呢。
现在,我遇到了很多人,很多已经成家立业,小孩都满街跑了。
加班的时候碰到他们心情好,会聊上几句,
他们常常很感慨地说,他们当年毕业的时候,大学生是多么的值钱。
我说,现在也值钱阿,只是钱增值了而已。
-XX,钱是赚不完的,想要赚钱就不该做技术,做技术不会比做销售赚钱。也许你家门口卖牛肉面的阿姨也比你有钱。既然做技术又不想转行卖牛肉面或者其他什么的话,就不要在乎多1百元还是少1百元钱,其实没有区别。多1000元钱少1000元钱也没什么区别。但是4位数和5位数,那就有区别了。这是一个台阶,一个初级技术员和中级技术员的差别,对读书人来说,这是面子问题,能力问题。想要跨上这个台阶,来日方长。
不知道我转述的这一番话,对各位有没有启发?
我想说,我们大家都在乎钱,呵呵,这个是没办法的。
但其实我们这些理工科刚毕业的都是初级技术员,
少一点多一点只关乎你一个月多吃几顿大餐,多买几件衣服。
就你现在的一点钱买不起房子,买不起车,那还计较什么呢?
如果你想早一些突破下一个零的话,就不要太介意眼前的得失。
不要为了谁谁谁比你多了几百元钱而耿耿于怀,
咱们要竞争的,是几年以后!
5。研究生
对研究生们,我怀着一颗敬仰的心。
这是一条我放弃的路,对坚持到底并取得成功的人,我很钦佩。
我常常看到这样的问题,
要不要考研究生?研究生值钱还是本科生值钱?
正方观点自然是要考,一定要考!这年头本科生都不值钱了,没有个研究生学位怎么镇的住?
反方观点是没必要,反正是骡子是马拿出来遛遛,咱有的是能力不需要靠***锦上添花。
我的见识并不多,
以我有限的见识来说说看我个人的想法。
我始终认为,
只有人跟人的差别,没有学位与学位之间的差别。
如果你是一个牛人,你本科毕业找工作会很出色;你读完研究生找工作会更出色。
如果你不是牛人但是是个勤劳的人,如果你不想读直接去就业的话,前景也会不错的;如果你想读研究生把自己造就成牛人的话,你一定会比本科更出色。
如果你不是牛人但是是个懒惰的人,那我觉得你读了跟没读没有什么区别。你还是不要浪费你的时间了吧。
很多人都会把找不到工作归咎为,
他们只要研究生呀,他们鄙视我们本科生。
我倒不觉得如此,你是不是该考虑一下自己身上是不是出了什么问题?
作为一个管理者,除非真的是只有专业的知识要应用非得要研究生的话,
对他来说,学历低一些反而降低成本。
至于你所认为的硕士毕业比本科毕业多的那么一些钱,
我刚才说过了,4位数和5位数是有区别的,除此以外,
我们都是初级的,没有什么差别。
想读硕士的,我是建议各位读的,做技术嘛,多读点总是好的。
但是希望各位不要太过耿耿于怀你的学历,
不要把自己短暂的不幸全部归咎于你的学历。
你的人生要走怎样的取决于你这个人。
6。心胸
都说学生单纯,这是真的,
学生时代的攀比,嫉妒,甚至是吵架都是单纯的
(当然,除了云南大学那个杀人的。。。)
就像我妒忌隔壁寝室的哪个人工资比我高,我也就活动活动心眼,要不怎样?拿把刀把他砍了工作就归我了?怎么可能。。。
学生时代的谈话也是单纯的,问什么答什么,
顶多不乐意告诉你了就骗骗你,顶多这样。
我们的道德底线都差不多,以至于我也曾经一度认为社会上的人道德底线都这样,如果你现在还和我当初那么想的话,那就请你快醒醒了呵呵
林子大了,各色各样的人也就多了,
很多人的确用着不太正大光明的手段取得了比你辉煌得成就,
这个时候你该怎么办?
走出校门,你的前途不全部由你的实力决定。
校园内,老师可能不太认识你,他也不需要和你打交道,
他只需要知道你这门课及格还是不及格。
老师和学生之间,学生和学生之间是没有或者很少有利益冲突的,
缺少利益冲突的关系是纯净的,
让你想说什么就说什么。
但是校园外,走进公司,是不同的年龄阶层,
无论是你的上司还是你的同事,
都是直接和你有利益冲突的,
利益是什么?就是钱啊,大家都想要买车买房子啊,
一牵涉到这些,人就变得尖锐起来了,
这是人之常情,你,我都一样。
也许你认为某些人工作方面并不如你,
什么都没有你好,
可是他就是八面玲珑,就是有所谓的手段,最后跑在你前面。
这个时候,你身上尖锐得东西会全部都冒了出来,
这些刺扎伤了你自己,也扎伤你身边得人。
你会开始哀怨,
我啊,壮志未酬啊,
生不逢时啊,没有伯乐来相中我啊,
你们这些人都瞎了眼啊,没看到我这个奇才啊。
就着样,慢慢变成怨妇怨夫。。。。
渐渐得,你对任何事情都会缺乏积极性,
心里想着,
反正谁谁谁有后台,他一定会容易就怎么样了,
反正是论不到我得,
反正。。。。
确实,很多人含着金汤匙出身,
很多人很虚伪,为达目的不择手段,
那怎么办?
我就是生下莱没有这么多后台,
我就是没有这么虚伪,
但是谁知到不会三十年河东三十年河西,风水轮流转?
那我跟他们比什么?有什么好比得。
这个时候,一定要心平气和,一定要告诉自己,
他们已经没有被你列做竞争对象了,
他们得行为并不会影响你,
并且他们身上一定还有你需要学习得东西,
即使他实在身无长处,你就学学他得穿着,谈吐也是好得。
把自己尖锐得心沉静下来,就会豁然开朗,
心情愉快自然会做事情得心应手,
这个时候,机会就不远了,心胸宽广得人是受人欢迎和赏识得!
有人提到简历的问题,那我在这里说说我看我的领导是怎么看简历的。
我经常能见到的领导有三个,
对待简历的方式有一点是不约而同地,
他们都不喜欢很长很长的简历。
我曾经见过最长的简历中英文加起来居然有12页。。真是让我感觉象论文。
通常他们看到这种简历,立马out...
一般中英文3页,是他们比较能接受的。
其中有一个领导比较在意学校,
常常也不看,就问,什么学校的,
在我的唠叨下,他现在认为交大和同济是没有区别的^^
本来嘛,本来就没有区别,对吧!
除了学校之外,比较在意你的实习经历,
如果是研究生的话比较关注你曾经跟过的项目,
所以如果你有跟过比较重要的项目,一定要写得详细。
如果你的本科生的话比较在意你曾经实习过哪些东西,
如果你这方面是一张白纸的话,那就要去补补了。
他们三位都不看基点
通常的做法就是面试前做卷子,基点这个东西在他们觉得。。。比较垃圾
因为基点是可以花钱修的很漂亮的,,这个他们知道的。。
你在你的简历上要写上你曾经得的奖学金,
你的实习经历,
这两块是比较重要的!
至于你的个性如何,对自己评价。。。这个。。就少一点吧。
我曾经见过一个,写对自己的评价写了一张纸,跟写作文一样,晕阿。。。
呵呵,今天又一个人的话把我逗乐了
现在找工作弄得跟追女生一样,
好吧,我不得不承认,还真是形容的很贴切。
那你觉得女生好追么?
是不是觉得现在的女生越来越不好追了吧?!
几百年前,女生哪用追得?反正年龄到了就一颗青菜配一个萝卜。
几十年前,一个蛋糕,一部永久牌自行车就可以哄一个女孩子坐在你的车座后面裙角飞扬了。
现在。。。我听到越来越多的人抱怨,现在的女生,怎一个唉字了得。。。唉。。。
呵呵,像不像大学生找工作?
像当年可是怎么着也不愁找不到工作的,
现在是挤破了脑袋争取同一份工作。
好吧,那我们就用谈恋爱的方法来找工作吧,
有很多人恋爱失败败就败在怕丢脸,
为啥呢?因为怕丢脸而不敢表达,怕被那个人笑说,哦,原来你喜欢我啊。。。
其实有什么关系呢?你只管表达自己的,管他呢,
她要是鄙视你,那就别理她,反正这件事情只有她知道你知道;
她要是鄙视你,还告诉别人一起来嘲笑你,那这个人素质有够差的,你该买鞭炮庆祝你没有得到她;
她要是因此而接受了你,那可是苦尽甘来阿,你就偷偷找个地方美上好几天吧;
她要是既不说接受你也不说拒绝你,跟你玩暧昧,这你就。。掂量掂量吧,我个人的意见是,咱不缺这一个!呵呵。
拿出你表白时的勇气吧,不要怕,呵呵~~~
还是说说找工作把
我们大家都一样,找工作的时候,都会有眼看着身边的人一个一个落实了以后的羡慕,都会仿佛从脚底升腾起一股烦躁不安的情绪。
有好些人跟我说,我啊,没什么个性,要是群面,一定轮不到我说;
或者,我啊,没有谁谁谁性格那么活泼,跟别人相处得那么融恰;
很多人都会这样意识无意识的对自己有心理暗示
这样的情绪我是带着很多年了,深有感触。
我也是一个不很活泼的人,就是那种把我丢在人群里面,没有人会注意到我的那种;
如果很多人聚在一起,我常常是聆听的那个人,我不善于也不打算在许多人面前侃侃而谈;
我也会偷偷的想,像我这么没个性,会有公司要我么?
今天我以我这些日子以来的经历转告各位,
真的真的不要把自己的想法套到别人的身上,
以自己以为的东西来庸人自扰,是最傻最傻的。
别人怎么认为你,怎么想你,太微妙了,又岂是你能揣测的完的,
也许你觉得自己这里不好那里不好,但看在别人眼里却是优点,
我是一个闷葫芦,不过,据我的同事说,交给我办事很放心,因为我常常闷声不响的,就把事情给做完了。。。
呵呵。
不要自己给自己心理暗示说,我这个这个是肯定不行的,
你就试一下嘛,实在不行就告诉自己这方面自己不是这块料嘛
也不要给自己暗示说,HR一定不喜欢我这个样子的,你看,我没有那个人能说会道,
你怎么知道他不喜欢?你又不是他?那你瞎猜什么?还烦恼什么?
就做你自己嘛,他不喜欢就不喜欢嘛,你又不跟他过一辈子,总有别人喜欢你这样的,对吧?!
我有好些个大学里认识的学长,研究生快要毕业了呢,
有些问我,面试的时候该注意些什么?
这个。。我之前有讲过面试的问题,
我自己的面试别人的时候,常常是他说话的时候,我喜欢观察他说话时的眼神。
有些人说话喜欢看着地板,
有些人说话眼神闪烁,也许是习惯问题,总觉得有意无意的偷偷看你几眼的感觉,
有些人边说话喜欢边玩东西,或者衣角,或者头发,
有些人说话会下意识的抖脚,
如果你有以上的问题,你一定要练习,纠正。
说话时眼光还是自然向前为好,但也不用直盯盯的看着对方的眼睛,这样显得很凶。。。
最好不要有多余的小动作,这样会显得你似乎很心虚;
说话时可以慢一点但一定要逻辑清晰
有好些人问我,
说,我现在知道错了,我大学四年没有好好努力,
但是,请相信我,我是很强的,我绝对不比别人差,我只不过是没有那些老什子的***而已;现在看着很多人去修改***,做假***,我也想做,否则我便没有了机会呀。。我是不是该做呢?
问我这些话的人还不在少数,
我该说,当你问出这句话的时候可见你早就已了然这是错的,你只是需要有一个人最好肯定一下你的意志,说,这没什么大不了的,大家都这样。然后你便会去做了,是么?
我想我可没有这么大的魅力对你传教中国千百年以来的诚信美德,
毕竟的确有太多太多的人用着不诚信的手段,让我也深陷于无奈,嫉妒,甚至暴躁的情绪中。
我只想说,
当你尝到投机取巧而不劳而获的快感后,你不再会去想回头尝尝努力的滋味了。
当你做了几个伪***以后,你还会去考真***么?
我还想说,我至今所见到的精英并不多,以我有限的见地来说,他们无一例外都有一个共同点,就是踏实。
嗯。。。有点像说教,其实我自己也并不能做得很好,
我一直克制着克制着,希望自己不听不看不想身边发生的那些不劳而获的事情,那就像大麻,我觉得我一旦碰触了,便不由自主了。。。
到底该怎么做,我想每个人心里都有一张普吧。
每当我被嫉妒冲昏了头的时候,我只能这样安慰自己,路遥知马力。
你也可以试试。。。。
有人问我关于英文的问题
英文啊。。。我心中永远的痛。。
我从小学三年级开始就学英文了,学到现在虽然是六级优秀,但是遇到外国人还是结巴
我也曾经考过中级口译***,可惜我花了近两千元钱愣是没考出口语***,T_T
我觉得中国人吧有个习惯,凡事都要有个有把握的***才敢说出口
我以前也是一定要在心里面把一句句子搭建好了才说出口
以至于恩了半天也说不出什么来。。。。
后来工作了以后,遇到很多项目都是由各国人组成的,美国人法国人日本人韩国人。。。
我有的时候要对着这些人说话说上个把小时,根本就容不得我去思考这句话有没有语法,
久而久之造成了我现在想到单词就往外嘣,没有什么语法可言,全场下来就我一个人在那边手舞足蹈
反正能听懂就行了,呵呵。
如果你遇到英文面试,如果是中国人,那好办,你就随便说,他能知道你在说英文就行了,至于内容让他了解个50%你就肯定过了,因为他即使听不懂也不会好意思叫你再说一遍的,呵呵;
如果是外国人,你相反得倒应该讲的慢一点,尽量讲简单句,只要你字正腔圆让他们听明白了你在说什么,就没问题了
语言本身就是一个工具,你又不要去做作家,你管它优美不优美呢,放胆子说吧,呵呵
关于考试,我也经常想,这年头以考试成绩论输赢太傻了,多少人活了这大半辈子,竟是除了考试之外啥都不会。
可是我不得不说,你能想到比考试更好的办法选拔人才么?
我不能,我在招人的时候,不可免俗的,只能先注意他的学校,他的成绩,他的简历。。为什么?因为我根本不认识他,我哪有这么大的本领知道这个人是不是有能力有主见有想法。
就算是面谈上三十分钟,又有谁敢说就看出这个人是什么都有,只是不小心缺了好成绩,缺了好简历呢?
我确实相信,很多很多人,就像你所说的,没有那么高的出奇的基点,没有辉煌的奖学金历史,不乐意为了一场考试使出浑身解数,但他们很有想法,很有能力。这样的人全中国不知道多少多少。
这么多人有几种出路,
一种,就像我说的,金子,一定会发光,也许被世俗所扰,起步不如别人,但加速度一定比别人大,这样的人,你就不要着急嘛,呵呵
一种,金子,觉得自己吃亏了,明明那么优秀却被那些劳什子的教条所束缚,于是每天哀伤啊,为什么教条就不能改改来迎合自己呢?于是一直沉迷在自己幻想出来的游戏规则的社会里面。
金子同志啊,游戏规则永远不可能来迎合你的,那怎么办,你就不过日子啦??
很多人都说,我写得很真。
是啊,因为我,你,咱们大家,都是平凡的人,但是也都希望自己不平凡。。。。
但是,我们往往都在对未来的憧憬中,渐渐迷失自己最初的执著,
我在这里写下的一切,都希望激励我自己,和我母校里所有的兄弟姐妹们,坚持下去!虽然中国的房价那么高,工作那么难找,生活质量那么糟糕。。。。汗。。。
都不可以放弃!那么总有一天我们都会成功的~~
毕业到现在,几年过去了,再次刷新我在这里的帖子,呵呵。
我又要来炫耀一下最近的成果了。。。。
8过请别把我写的鉴定为炫耀贴。。。。
我没办法写别人的经历,我只能写自己的经历,而我的经历就是这样,我只是想所有看到的人都能
得到一点点启发也好,咱们互相激励~争取都能成为成功人士~~哈哈
这里有上班的人么?
我不知道你们和我一样么,
上班很辛苦,并且也许,上班的地方离家会很远,那么基本上等你回到家洗完澡啊什么的,已经很晚了。这个时候,一般我都会打开电脑,开始上网。。。有时候还打打游戏,然后就睡觉。
日子就这样一天一天的过去,
经常会有莫名的空虚,
我在干吗?我想要的生活就是这样?上班,下班,上网,睡觉,再上班。。。?
上班上的久了,人就开始产生惰性,以前很认真做的事情,开始得过且过起来,
不是所有的工作,都像电视剧里面那样,那么富有挑战,让你精神饱满的去面对每一天。
重复的多了,自然觉得没意思起来。
我也一样。
于是,我也开始偷懒起来。。。。
我非常庆幸,我有一个非常严厉的领导。导致我偷懒的不能这么彻底。
我的领导今年30多岁了,他一直挂在嘴上的一句话是:你看看你们这些扩招的大学生。。。。
他经常说,他们当年这些大学生,都是用高中教育的模式培训出来的,
而我们现在这些大学生,考试的时候考点一划,不考的不看,考的就背例题,什么都不懂也能考及格。一点技术含量都没有。。。汗
我是经常被他训的,他的口头禅就是,已经没有水平还不勤奋点?!
我是唯一一个好脾气在他手下干活的小孩,
很多小孩都不愿意跟他,转到别的项目去了,
我倒不是逆来顺受,我其实也是懒,就这么待着吧,也挺好。
今年我独立带了个项目,
艰苦到啥程度。。。
就是我早上7点多跑到公司去,晚上零点左右,打的把我的组员都送回家然后我自己再回家,
因为只有我可以报销出租车费。。。。
就这样的劳动强度,我坚持了1个月。
因为我这么的拼命,我项目里的组员也都愿意跟我一起加班,
其实他们完全可以不加,因为我们公司不给他们加班费的。。
完全出于人道救助精神,即使住得很远的人都愿意主动帮我分担一些。
以至于,我在项目结束后聚餐的时候,差点哭出来。。。。
这个项目结束后,我的领导对我说,
你还不错。。。。。
呵呵。
紧接着的一次国外培训的机会,
我的领导力排众议,让我去。
反对的人的理由是,我太小了,
我的领导说,这小孩有潜质,让她试试看,她如果不行我肯定给你们道歉。
这个事情他没有跟我说过,
我是通过别人的嘴听到的,听到的时候感动得一塌糊涂。。。
我临出发的时候,
他对我说,别丢我的脸,你又不聪明,多花点精力。。
我觉得,从毕业以来,这一路,走的都很顺畅,
以至于我觉得不真实,
还记得我曾经说过的么,
你的努力别怕别人看不到,
也千万别怕自己吃亏,
你的吃亏,别人也看得到。
别计较太多,别抱怨太多,
你的计较和抱怨,别人同样看得到,
你的优点,也许一天两天,
别人看不出来,也感受不到,
但是路遥知马力,
1年2年,只要你坚持,别放弃你最初的执著,
你身边的人一定能感受得到,
这个过程,也许,就是积累机会的过程吧!
上班很无聊吧,
再无聊,也别放弃你的执著,一定一定。
没有一个完全的社会,游戏规则适用于所有人的,当规则不适合于自己的时候,你当然可以坚持自己的理想,就像我们伟大的诸如马克思之类的先驱们,改造这个社会。
不过,我很俗,我只能屈服,呵呵,我是个普通人,过好我的小日子,我就很满足了,不知道你觉得呢?我当然也乐于见到一个伟大的时代的先驱诞生,呵呵。
事实上,我个人觉得,考试是中国现今比较公平的规则了。
你设想一下如果没有考试,穷人家的小孩还会有机会读名牌大学么?
不过千万别被我说的话束缚了思路,我也非常乐于看到来自我们同济的学生发明一个代***试的规则,真的。20分问题力猛1-90级练级地方及级别所穿装备
回答:5 浏览:2873 提问时间:
2006-08-04 10:15
本人乃新手玩家望各位高手指点最好是所要做的任务,垃圾不要发上来,男.女角色选那个好
条评论...
最佳***
此***由提问者自己选择,并不代表爱问知识人的观点
要开新区了,大家可能又要陷入新区做任务冲级的迷惘中了,这里我稍微整理了一下部分我认为有用的资料,希望对你有以帮住。
任务所需物品
一)特殊任务:
★★★高价卖出★★★
条件限制:LV17
触发地点:寿春 吕范(320 5)
不需要物品,就是不停跑。
★★★低价买进★★★
任务限制 LV17
起始NPC位置 汝南 司马朗(287, 10)
1:帮助汝南城中的司马朗(285, 6),寻找汝南城富商史耀前(496, 27)洽购白狐裘。史耀前出售白狐裘的
代价为:兽皮5张及3000两。兽皮到许昌东打豪猪掉。
2:将购得的白狐裘交给汝南城中的司马朗。回答问题,选择500两。
3:为汝南城的司马朗,向大商甄浒仁(10, 10),收购五彩琉璃杯。筹措铜马一个、3000两向甄浒仁购卖五彩
琉璃杯。铜马打流氓、流氓头子掉。
4:将五彩琉璃杯交给汝南城中的司马朗。回答问题,选择500两。
5: 为汝南城的司马朗,前往汝南西境,向商人梅梁馨(146, 4)代购龙纹玉壁。筹措4000两,向梅梁馨购买
龙纹玉壁。
6:将龙纹玉壁交给汝南城中的司马朗。回答问题,选择1000两。
7:完成任务,学得技能:低价买进
★★★箭袋任务★★★
任务限制 LV20
相关NPC:许昌猎人49.14  寿春猎人52.14  新野猎人54.14
所需材料:铁箭250支、锯齿箭100支、技能点1200点
★★★体力回复和技力回复★★★
任务限制 LV23
相关NPC:宛城 华陀(328, 5)
江夏 张昭(500, 1)
1:寻找新野城东→百草林→百草婆
前往猛虎穴,打虎妖爆出鬼目菜
回复张昭,学得技力回复
2:找寻新野城东→百草林→百草公
前往大雪山,打雪熊爆出平虑草
回复华佗,学得体力回复
★★★武将技熟练★★★
条件限制: LV28
起始NPC位置 襄阳 司马徽(437, 8)
1.准备一个凤毛(翎羽)麟角(鹿茸)
2.要到游戏中的晚上,在襄阳青龙道,(688.15~800.15)处出现五彩石。取得五彩石。
3.回襄阳与司马徵对话,把五彩石交给他,习得武将技熟练精通
★★★道具补血★★★
任务限制 LV30
豫章赖昆的大哥(100.15)承接任务。
1.回答问题
Ⅰ.我知道这个人
Ⅱ.在大江之南
2.准备物品:药草*250、药丸*50、药丹*1、包子*250、饭团*50、小笼包*1、技能点数30000
★★★道具补技★★★
任务限制 LV30
长安洪达他大嫂(144.10)承接任务。
1.回答问题
Ⅰ.我知道这个人
Ⅱ.在大河之东
2.准备物品:浊酒*250、老酒*20、蔘茸酒*1、清水*250、冷泉*50、技能点数30000
★★★武将技伤害强化★★★
任务限制 LV 32
起始NPC位置 江夏 丁奉(341,15)
1.前往夏口寻回艨冲设计图:于夜晚时分,撤去兵马,与夏口渡役一同前往夏口,搜查黄巾铁箱,夺
回艨冲设计图。寻回之后,将之交给在江夏等待的丁奉大人。(夏口只有夜间能进入)
★★★合成熟练★★★
任务限制 LV35
起始NPC位置 碧水地穴 炼丹道人葛洪(71,27)
1:找碧水地穴 炼丹道人葛洪(71,27)对话接受任务。
2:将炼丹道人葛洪的飞来石交给江夏的炼丹道人葛玄(30,25)。
3:帮助江夏城中的炼丹道人葛玄,炼成一个斩合金。(配方可在炼造房中购得)
4:将炼丹道人葛玄的朱砂,交给碧水地穴的炼丹道人葛洪。
5:准备水珠及火珠各五十个,准备炼成朱红石及青玉石。收集完成再回报炼丹道人葛洪。
6:炼成朱红石及青玉石各一个,交给碧水地穴的炼丹道人葛洪。
7:将炼丹道人葛洪的口信,带给碧水地穴三层的炼丹道人葛广(31,23)。
8:向碧水地穴三层的炼丹道人葛广学习合成熟练之术。
★★★耗费技力降低★★★(军方40以上任务)
任务限制 LV40
1.前往豫章与祁纤 c交谈,花费三万技能点,进入学习的过程。
2.收集羊角1个、鹿茸1个、牛角1个。
3.收集树皮100个、豹皮1个、虎皮1个。
4.收集鳞片100个、金属鳞50个、龙鳞1个。龙鳞唯有峨嵋山云海的鱼龙有。
5.与祁纤交谈,花费三万技能点,完成学习的过程。
★★★技能点上限提升★★★
条件限制: Lv 40
起始NPC位置长安 闵贡(341,10)
1.讨伐十常侍取回皇帝诏书:讨伐十常侍张让、曹节、夏恽、赵忠、侯览、郭胜、封谞、程旷、宋典、
段珪、蹇硕、徐奉等十二人,取回皇帝诏书。交给长安的闵贡。
★★★道具效果提升★★★
任务限制 LV45
起始NPC位置 左慈山屋 左慈(83,3)
1.到左慈的小屋与左慈对话!接受任务。
2.左慈传送你进峨眉山云海打七彩鹤羽。取得七彩鹤羽(佛光带领下的仙鹤,打仙鹤出鹤羽,仙鹤不强,
不过不能打佛光,佛光太强,没20分钟刷一次,一次逗留10分钟)
3.把七彩鹤羽交给左慈。完成任务。问你是否学习道具效果提升。
4.选择是,付出20000点技能点。学得道具效果提升。
★★★体力上限增加★★★
任务限制 LV50
起始NPC位置 柴桑 张秀(204,14)
1.先到柴桑张秀(205,15)接任务。
2.把他弟弟张靖找250个铁球,送地下洞窟1张靖(961.6)处。他再叫你收集2个火妖之牙,10个虎骨膏。
3.取得2个火妖之牙和10个虎骨膏(虎骨膏在什货郎有换)
4.再与张靖对话,叫你到五丈原伊卫先生(619.5)处
5.到五丈原伊卫先生(619.5)处。与其对话,要你收集2个折断的刀刃、2个弓的断弦,1个圆木棒
6.收集完成后,再与伊卫先生对话,问你是否真要学习体力上限增加.
7.再与伊卫先生对话,确定学习,扣除25000点技能点。习得:体力上限增加
★★★技力上限上升★★★
任务限制 LV55
相关NPC:邺 五斗米天师(115 18)
1.详知五斗米之衷:详细了解五斗米天师创立五斗米教的想法,选择方法是第一个选3,第二个选3,第
三个选2;
2.找寻五斗米教司众:由五斗米天师传送前往天门峰朝阳洞,寻找五斗米司众(36,23)。
3.完成司众交待的试炼:准备金钱 50000、技能点5000、饭团500个。
4.寻访五斗米教司钟:前往天门峰朝阳洞内洞,寻找五斗米司钟(362,86)。
5.取回天师印:打倒朝阳洞中的怪物小鬼,取回五斗米司钟被夺的天师印。
6.回报试炼成果:回到邺城,将完成试炼的成果回报五斗米天师。
7.交换信物:与不同职业的其它玩家交换信物。再将两种不同的信物交给五斗米天师,完成试炼。
★★★回避加成★★★
任务限制 LV60
起始NPC位置 徐州 老杀手(11,4)
所需材料:杀手秘帖1,骷髅头10, 铁20,柳叶镖30,钢40,匕首500,关东粗麻250个,技能点25000。
★★★命疗强化★★★
任务限制 LV65
相关NPC:65级柴桑找 c仲景先生(120,9)
所需材料:佛像3、香炉3、月光布1、参茸酒12、驱寒汤50、虎骨膏100、蚕丝250、痛裂针250、技能20000
以上所有任务所需物品统计:
铁箭250
锯齿箭100
鬼目菜1
平虑草1
五彩石1
药草*250
药丸*50
包子*250
饭团*50
小笼包*1
浊酒*250
老酒*20
蔘茸酒*1
清水*250
冷泉*50
艨冲设计图1
斩合金1
朱砂水珠50
朱红石1
青玉石1个
牛角1个 树皮100
鳞片100
金属鳞50
皇帝诏书1
七彩鹤羽1
铁球250
火妖之牙2
虎骨膏10
折断的刀刃2
弓的断弦2
圆木棒1
饭团500
杀手秘帖1,骷髅头10
柳叶镖30
匕首500
关东粗麻250
月光布1
参茸酒12
驱寒汤50
虎骨膏100
蚕丝250
痛裂针250
有必要做的任务
★★★骑马任务★★★
任务限制 Lv14
起始NPC位置:卢江骑术教官天香(161, 10) 上庸骑术教官刘封(204, 10) 许昌骑术教官曹仁(284, 11)
.向什货郎取得马鞍:马鞍材料璞玉、铁屑各50个,破兽皮20个 2.向骑术教官习得马术:在城中的市集买马匹;
并向什货郎换得马鞍,准备好学费1500两,找骑术教官学习骑术。
★★★六个基本必杀技学习★★★★
1:点穴---LV15、骑术1级---上庸 关平---装备青铜剑,收集30个粗麻
2:斩铁---猛将或豪杰LV24、点穴lV2、骑术5级---新野 吴懿---装备宽刃剑,收集108个山贼铜钱
3:连刺---LV15、骑术1级---卢江 程普---装备红樱***,收集30个兽皮
4:升龙---猛将或豪杰LV24、连刺lV2,骑术5级---寿春 孙匡---装备长顶***,收集50个海贼铜钱

参考资料