文档库 最新最全的文档下载
当前位置:文档库 › GRUB和LILO的区别

GRUB和LILO的区别

GRUB和LILO的区别
GRUB和LILO的区别

GRUB和LILO的区别

lyfrank发布于2005-12-12 | 3153次阅读字号: 大中小 (网友评论1条) 我要评论

从普通的桌面用户到Linux?系统管理员,大部分Linux 用户都使用过一种名为引导加载程序的工具。此类工具的不同变种会提供不同层次的支持和功能。在很多情况下,Linux 发行版默认安装的引导加载程序并不总是适合需要;每个引导加载程序的默认设置也是如此。在本文中,Laurence Bonney 讨论了两个流行的引导加载程序—— LILO 和GRUB ——的优点和缺点,并建议了很多配置,以充分发掘机器的潜力。

在不考虑他们的工作或专业情况下,所有Linux 用户都会使用的是哪个工具?引导加载程序。通过本文了解引导加载程序的工作原理,认识两个流行的引导加载程序LILO(LInux LOader)和GNU GRUB(GRand Unified Boot loader),并研究两者各自的优点和缺点。

什么是引导加载程序?

最简单地讲,引导加载程序(boot loader)会引导操作系统。当机器引导它的操作系统时,BIOS 会读取引导介质上最前面的512 字节(即人们所知的主引导记录(master boot record,MBR))。在单一的MBR 中只能存储一个操作系统的引导记录,所以当需要多个操作系统时就会出现问题。所以需要更灵活的引导加载程序。

主引导记录本身要包含两类内容——部分(或全部)引导加载程序以及分区表(其中包含有关于介质其余部分如何划分为分区的信息)。当BIOS 引导时,它会寻找硬盘驱动器第一个扇区(MBR)中存储的数据;BIOS 使用存储在MBR 中的数据激活引导加载程序。

由于BIOS 只能访问很少量的数据,所以大部分引导加载程序分两个阶段进行引导。在引导的第一个阶段中,BIOS 引导一部分引导加载程序,即初始程序加载程序(initial program loader,IPL)。IPL 查询分区表,从而能够加载位于不同介质上任意位置的数据。首先通过这步操作来定位第二阶段引导加载程序(其中包含加载程序的其余部分)。

第二阶段引导加载程序是引导加载程序的主体;很多人认为这才是引导加载程序的真正部分。它包含有加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。从简单的命令行到绘声绘色的GUI,这些用户界面的范围很广泛。

引导加载程序通常配置为两种方式的其中之一:要么是作为主引导加载程序(primary boot loader),要么是作为二级引导加载程序(secondary boot loader)。主引导程序是安装在MBR 上的第一阶段引导加载程序(见先前的描述)。二级引导加载程序是安装在可引导分区的第一阶段引导加载程序。必须在MBR 上安装单独的引导加载程序,并配置它将控制权转交给二级引导加载程序。

很多较新的Linux 引导加载程序特别实用,因为它们提供了不同程度的交互,比如高级的GUI 和加密的口令,以及通过选择操作系统进行引导的能力。这样,可以在具有多个物理磁盘的同一机器上共存多个操作系统。这种设置越来越常见,因为它帮助很多用户在安装新的Linux 时,能够保留先前由Windows?机器所生成的宝贵数据资料。我个人认为这种设置非常美妙;只使用一台机器就可同时拥有Linux 和Windows。

随着时间的推移,引导加载程序已经得到了增强,为用户引入了大量的功能。各个引导程序的功能和配置存在差异,但基本的目标是相同的。

现在来看两个较为流行的引导加载程序:LILO 和GRUB。

LILO

LInux LOader(LILO)已经成为所有Linux 发行版的标准组成部分。作为一个较老的/最老的Linux 引导加载程序,它那不断壮大的Linux 社区支持使它能够随时间的推移而发展,并始终能够充当一个可用的现代引导加载程序。有一些新的功能,比如增强的用户界面,以及对能够突破原来1024-柱面限制的新BIOS 功能的利用。

虽然LILO 仍在不断地发展,但LILO 工作原理的基本概念保持不变。

使用LILO 作为引导加载程序

要使用LILO 作为引导加载程序,需要做的事情取决于是要进行全新安装还是要让已经安装的Linux 改为使用LILO。如果是要进行全新安装,那么直接跳转到配置LILO 那一节。如果已经安装了某个Linux 发行版,那么通常可以选择安装并配置LILO(并可以将机器引导到新的Linux 安装)。

要将现有的Linux 迁移到LILO,首先必须获得最新版本的LILO(见参考资料)。在做任何其他事情之前,建议您确保在手边拥有一张Linux 引导盘——如果偶而弄错了某些地方,它可以提供很大的帮助,能够恢复到初始的Linux 配置!将LILO 安装到系统中之后,让它接管MBR 非常简单。以root 用户身份输入:

CODE:

[Copy to clipboard]

# /sbin/lilo -v -v

这将使用当前的LILO 默认值,抹去MBR 中当前所有内容。不过,请阅读配置LILO,以确保能够按预期引导起来。也要注意,如果想要在同一机器上运行Windows 和Linux,那么应该先安装Windows OS,然后再安装Linux OS,这样,在Linux 安装中所选择的引导加载程序就不会被Windows 引导加载程序所覆盖。与Linux 引导加载程序不同,多数Window 引导加载程序不支持引导Linux。如果已经先安装了Linux,那么只需要自己创建一张Linux 引导盘,这样就可以在安装完Windows 之后,回到Linux 安装中并重写MBR。

配置LILO

LILO 的配置都是通过位于/etc/lilo.conf 的一个配置文件来完成的。清单1 给出了一个示例配置,使用的是我的家用机器,支持Linux 和Windows 机器的双重引导。了解我的工作站的基本配置,就可以想像出这些配置是如何与实际机器相关联的:主HDD(物理磁盘1)上安装了Windows XP(最初机器上只有它)。在Linux 术语中,这个HDD 是/dev/hda(在GRUB 术语中是hd0,0)。从HDD(物理磁盘2)上安装了Red Hat Linux;root 分区位于这个硬盘驱动器的第三个分区,即/dev/hdb3(在GRUB 术语中是

hd1,3)。

清单1. lilo.conf 示例文件

CODE:

[Copy to clipboard]

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=100

compact

default=Linux

image=/boot/vmlinuz-2.4.18-14

label=Linux

root=/dev/hdb3

read-only

password=linux

other=/dev/hda

label=WindowsXP

清单1 中的选项:

QUOTE:

boot= 行告诉LILO 在哪里安装引导加载程序。在上面的示例中,将把它安装到第一块硬盘的MBR。也可以选择将LILO 安装到/dev/hdb3(示例中的Linux 分区),这样需要向/dev/hda 安装另一个引导加载程序,并令其指向LILO 引导加载程序;然后只需要让LILO 作为二级引导加载程序。通常,引导加载程序应该位于/dev/hda。还可以将这个参数指向软盘驱动器(最常见的是/dev/fd0),来制做LILO 软盘引导磁盘。map= 指向引导期间LILO 内部使用的映射文件。当使用/sbin/lilo 命令安装LILO 时,它会自动生成这个文件,其中包含有描述符表(还有其他内容)。建议不要改动这个文件!

install= 是LILO 在引导过程中内部使用的文件之一。它同时包含有引导加载程序的主要部分和二级部分。boot.b 文件的一个片段被写入到MBR(引导加载程序的主要部分),它会指向那个映射,接下来指向二级引导加载程序。同样,不要改动它!

prompt= 告诉LILO 使用用户界面(本例中给出了两个选择—— Linux 和WindowsXP)。除了使用prompt/user 界面以外,在适当情况下还可以为Linux 内核等指定具体的参数。如果不在配置文件中指定此选项,那么LILO 将引导到默认的OS,不发生任何用户交互,也不会等待。(但是请注意,如果在引导时按下了SHIFT,那么还是可以得到提示,当不想把引导加载程序暴露给普通用户时,这非常有用)。

timeout= 是引导提示在自动引导默认OS(本例中是Linux)之前的等待时间(以十分之一秒为单位)。如果在lilo.conf 没有指定prompt,那么这个参数就会被忽略。

compact 选项可以大大加速引导过程,它会将连续的读磁盘的请求合并为一个单独的请求。不过,这可能是一件祸福参半的事情,因为我在论坛上看到过很多贴子提到了关于此选项的问题。当希望从软盘引导时,这个选项尤其有用。

default= 选项告诉LILO 默认使用哪个映像进行引导,比如在等待超时之后。这与

lilo.conf 文件中的某个映像的标签相关联。如果没有在配置文件中指定此选项,那么它将引导文件中指定的第一个映像。

对于允许用户引导到的每一个Linux 版本,都应该指定image= 及以下三个选项。image 选项指定希望引导到的内核版本。label= 标明了在运行期间希望能够从用户界面引导的不同OS。另外,这个标签用于指定引导的默认OS。(注意:标签名称中避免出现空格;否则,引导那个文件时会出现无法预期的错误。)

root= 告诉LILO OS 文件系统实际所在的位置。在我们的示例中为/dev/hdb3,即第二块硬盘上的第三个分区。

read-only 告诉LILO 以只读的方式初始引导到文件系统。OS 一旦完全引导起来,就会以读写方式挂载。

password= 允许您为将要引导到的特定OS 设置口令。不幸的是,这个口令是以可读文本的方式保存在lilo.conf 文件中,所以,所有人都能够读取它。如果需要,还可以对想要引导自的每个操作系统设置口令(在我们的示例中,只为Linux 的引导设置了一个口令)。

other= 的动作类似于image 和root 选项的组合,但是用于除了Linux 以外的其他操作系统。在我们的示例中,它告诉LILO 到哪里去找到Windows OS(位于第一块硬盘的第一个分区)。如果先安装Windows,后安装Linux,通常会是这样。

label= 与所有其他label 选项相同。

在lilo.conf 文件中可以使用很多其他参数,不过清单1 中的参数就足以让机器可用了。要获得关于lilo.conf 的这些以及其他参数的进一步资料,请参考手册页(man lilo.conf)。由于在引导时不会读取lilo.conf,所以,当这个文件有改动时,需要“更新”MBR。如果不完成此步骤就重新引导,那么对lilo.conf 的修改不会在启动中反映出来。与先前将LILO 写入MBR 类似,需要运行:

CODE:

[Copy to clipboard]

$ /sbin/lilo -v -v

-v -v 标记会为您给出非常详细的输出。当像我们那样运行LILO 时,有很多参数可以指定。参阅手册页以获得更进一步的信息(man lilo)。

初始引导过程

当LILO 初始引导时,它会按次序打印出每个字母—— L-I-L-O。如果所有字母都显示出

来,那么第一阶段引导就成功了。缺少任何内容都表示出现了问题:L:第一阶段引导加载程序已经被加载。如果LILO 停止在这里,那么是在引导第二阶段引导加载程序时出现了问题。这通常会伴随有一个错误代码。在这个阶段的常见问题是介质问题,或者在lilo.conf 文件中指定了不正确的磁盘参数。

QUOTE:

LI:第二阶段引导加载程序已经被加载。LILO 在此处停止表示第二阶段引导加载程序不能被执行。同样,这可能是因为出现了与只显示L 类似的问题:正在加载,或者因boot.b 文件被破坏、移动或删除而不能加载。

LIL:第二阶段引导加载程序正在被执行。此时,可能会再次出现介质问题,或者映射文件(如lilo.conf 文件中所指定的)在寻找描述符表时可能会出现问题。

LIL?:加载到与上面相同的阶段。这通常意味着加载第二阶段引导加载程序使用了错误的地址,最常见的原因是boot.b 所在的位置与lilo.conf 文件所指定的不同。

LIL-:加载到与上面相同的阶段。加载描述符表时出现问题,最常见的原因是描述符表错误。

LILO:LILO 成功被加载,没有出现任何错误。

引导时的附加配置

LILO 被成功加载后,将看到LILO 提示符。还是使用前面的示例lilo.conf 文件,此时将有两个选择,可能对LILO 新手来说并不直观。首先,可以让LILO 超时(10 秒后),这将引导/dev/hdb3,即Linux 分区。另外,可以按下TAB 键,这将列出将要引导的操作系统选项。在我们的示例lilo.conf 中,将得到的选项是“Linux” 和“Windows”。输入哪一个,就会引导到哪个OS。指定加载Linux 选项,会提示输入一个口令,在本例中是linux。如果输入的口令有误,则会返回LILO 提示符。

不幸的是,LILO 不支持引导期间的交互式配置,所以,只能在lilo.conf 中或者运行

/sbin/lilo 时指定选项。

关于第一次尝试LILO 的最后一点建议是:我发现使用软盘引导磁盘比使用硬盘实现LILO 配置更为安全。为此,必须在lilo.conf 文件中使用boot=/dev/fd0 替换

boot=/dev/hda。那样,如果弄乱了lilo.conf 文件中的任何配置,都可以取出引导磁盘并像先前一样引导到Linux。当使用软盘进行引导一切正常以后,可以将lilo.conf 修改回

boot=/dev/hda,然后最后一次运行/sbin/lilo 来上传修改。

GNU GRUB

近来,GRand Unified Boot loader(通常称为GRUB)似乎要取代LILO 在引导加载程序方面的统治地位。GNU GRUB 基于原来的GRUB 程序(最初由Erich Stefan Boleyn 所创建),正在由自由软件基金会(Free Software Foundation)进行积极开发。

使用GRUB 作为引导加载程序

与使用LILO 相同,使用GRUB 作为活动的引导加载程序所需要的步骤,取决于是安装全新的OS 还是已经安装了Linux 并计划转移到GRUB。如果是进行全新安装,那么可以直接跳转到配置GRUB 那一节。如果已经安装了某个Linux 发行版,那么通常可以选择安装并配置GRUB(并可以将机器引导到新的Linux 安装)。

计划迁移到GRUB 的当前Linux 用户需要去获得最新版本的GRUB(见参考资料)。同样,与LILO 相同,在做任何其他事情之前,需要在手边准备一张Linux 引导盘。使用交互模式(后面将描述)则不需要这张磁盘,不过最好拥有一张以备急需时使用。将LILO 安装到系统中之后,让它接管MBR 非常简单。以root 用户身份输入:

CODE:

[Copy to clipboard]

# /boot/grub/grub

这样将加载一个类似于BASH 的命令提示符,可以在这里使用GRUB 命令:

CODE:

[Copy to clipboard]

grub>; install (hd1,3)/boot/grub/stage1 (hd0) (hd1,3)/boot/grub/stage2 p

(hd1,3)/boot/grub/menu.conf

这个命令使用了GRUB 安装命令,需要为它给出第一阶段映像的位置以及MBR 的位置(install (hd1,3)/boot/grub/stage1 (hd1))。也要给出第二阶段映像的位置

((hd1,3)/boot/grub/stage2)。最后,可选项p (hd1,3)/boot/grub/menu.conf 告诉GRUB GUI 菜单配置文件的位置。

在前面的示例中,hd1 是我的Linux Disk,hd0 是我的Windows 磁盘。这样将使用当

前GRUB 默认值,并抹去MBR 中当前所有内容(请阅读配置GRUB,以确保能够按预期引导起来)。

配置GRUB

GRUB 的配置都是通过位于/boot/grub/grub.conf 的一个配置文件来完成的。清单2 给出了一个示例配置,使用的是我的家用机器,支持Linux 和Windows 机器的双重引导:

清单2. grub.conf 示例文件

CODE:

[Copy to clipboard]

default=0

timeout=10

splashimage=(hd1,3)/grub/splash.xpm.gz

password --md5 $opeVt0$Y.br.18LyAasRsGdSKLYlp1

title Red Hat Linux

password --md5 peVt0$Y.br.18LyAasRsGdSKLYlp1

root (hd1,3)

kernel /vmlinuz-2.4.18-14 ro root=LABEL=/

initrd /initrd-2.4.18-14.img

title Windows XP

password --md5 peVt0$Y.br.18LyAasRsGdSKLYlp1

rootnoverify (hd0,0)

chainloader +1

清单2 中的选项:

QUOTE:

default= 选项通知GRUB 在超时之后默认使用哪个映像进行引导。这一选项与

grub.conf 文件中的某个映像相关联。0 表示指定了第一个,1 表示指定了第二个,依次类推。如果没有在配置文件指定此选项,那么它将引导文件中指定的第一个映像。

timeout= 是在自动引导默认OS(在本例中是Red Hat Linux)之前引导提示会等待多少秒。

splashimage= 是用作GRUB GUI 背景的图片所在的位置。

password 选项指定了使用MD5 加密的口令,用于访问GRUB 的交互式引导选项。注意,这不会阻止用户选择引导已经定义的OS;需要为每一个-title 设置它。为了生成一个md5 口令,请运行GRUB 所附带的grub-md5-crypt 工具(以root 身份)。它将提示输入一个希望加密的口令。然后输出使用MD5 加密的口令。将这个口令拷贝到grub.conf 中password -md5 之后,但是要在同一行上。通常这个口令可以设置为root 口令,因为无论如何也只有root 才可以读取grub.conf 文件。

title 标明了在运行期间能够从用户界面引导的具体OS。与LILO 不同,在这个名称中可以有空格。

password 的设置方式与前面的password 相同。如果计划与其他用户共享此机器,那么不要将这个口令设置为root 口令。

root 告诉GRUB OS 文件系统的实际位置。可见,GRUB 引用介质的方式与LILO 不同。在LILO 示例中,/dev/hdb3 是第二块硬盘中的第三个分区。Grub 将此硬盘引用为(hd1,3),即第二块硬盘的第三个分区(disk 0 是第一块硬盘)。

kernel:vmlinuz-X.X.XX-XX 是root 目录中默认引导映像的名称。

initrd:initrd-X.X.XX-XX.img 是root 目录中默认initrd 映像的名称。

title 与所有其他title 选项相同。

password:见其他口令选项。

rootnoverify 告诉GRUB 不要尝试去改变OS 的root。这样,当文件系统不被GRUB 所支持时,不会出现引导错误。

chainloader +1 告诉GRUB 使用一个链式加载程序来加载这个OS,加载Windows 时需要这个选项。

在grub.conf 文件中可以使用很多其他参数,不过清单2 中的参数就足以让机器可用了。要获得关于grub.conf 的这些以及其他参数的进一步资料,请参考手册页(man

grub.conf)。

与LILO 的配置文件不同,grub.conf 会在引导时被读取,当被修改时不必去更新MBR。

初始引导过程

与LILO 类似,当GRUB 初始加载时,从MBR 加载第一阶段程序。加载后,它进入第一阶段和第二阶段引导加载程序之间的中间阶段(为了方便讨论,可称为第1.5 阶段)。之所以存在第1.5 阶段,是为了能够对/boot/grub 中的GRUB 配置文件进行常规的文件系统访问,而不是去访问磁盘块。然后进入引导加载程序的第二阶段,GRUB 加载grub.conf 文件。

现在应该能够看到GRUB GUI 了。对于熟悉Windows 的用户来说,这看起来感觉比LILO 更友好。不过,不要因为GRUB 拥有GUI 就认为它是一个不能处理数据的引导加载程序。可选项多得惊人。(见引导时的附加配置中的提示。)

如果像我那样配置,那么现在应该能看到屏幕中有两个选项:引导到Red Hat Linux 或者引导到Windows XP。默认情况下,它将加载Linux。选择任意一个的结果不言而喻。

现在来看一些好东西。

引导时的附加配置

在GRUB GUI 中,按下任何键都会停止超时的计时。然后按下P 键,可以输入GRUB 口令,并获得对GRUB 交互式引导选项的完全访问权限。按下以下其中一个键,应该能够使用三个选项之中的一个:

要在引导之前编辑命令,请按下E。这将让您能够为当前选中的OS 编辑具体的选项。GRUB 只会显示出与那个OS 的引导相关的选项,然后您可以恰当地进行编辑。当为root 文件系统指定了错误的HDD 时,这尤其有用。如果需要以单用户模式访问机器(不需要指定口令就能够让您获得root 访问权限!),那么在GRUB 主屏幕上选择Linux OS。然后与前面一样,按下E,并移到内核那一行(在我的示例中是kernel

/vmlinuz-2.4.18-14 ro root=LABEL=/)。然后在那一行最后添加single,并按下B 来使用修改过的grub.conf 进行引导。在编辑模式下所做的任何修改都不会保存到grub.conf 文件中。

要修改内核参数,请按下A。如果您是一位经验丰富的Linux 用户,可以根据需要调整内核参数。要获得类似于BASH 的命令行界面,请按下C。这个小型的命令行界面允许您在系统中查找GRUB 配置文件,加载另外的配置文件,编辑配置文件中的行,以及直接输入GRUB 命令。如果配置的变化(比如删除了某个分区)让系统无法引导,那么可

能会用到这个界面。如果需要将系统引导为单用户模式,或者要让运行级别为3 而不是普通的运行级别,也可能会使用到它。

这些选项有很多用途,但超出了本文的范围。

可见,GRUB 真正开放了引导期间的可能性。不过,这可能是一件好坏参半的事情,因为GRUB 也潜在地允许攻击者在OS 加载之前访问系统。会被误用的主要开放领域是:

访问单用户模式。所有加载到单用户模式的人都会得到root 访问权限,使得Linux 可被随意滥用。

访问其他操作系统。任何配置为不需要口令的可引导操作系统,比如DOS,都将是开放的。

访问GRUB 编辑器。这允许用户获得修改GRUB 配置的完全访问权限。

在GRUB 配置中,设置安全性非常重要;设置口令,并使用MD5 加密,可以保证整个系统的安全。

GRUB 的未来

GRUB 将要被GRUB2 所取代。原来的GRUB 将要被重新命名为GRUB Legacy;除了修复bug 以外,不会再对它进行积极开发。GRUB2 将是对原来GRUB 的完全重写。到目前为止,以下特性是变化的核心部分:

通过创建压缩的核心映像取代了第1.5 阶段

支持核心映像的动态加载

争取让整个GRUB 框架成为面向对象的

支持国际化,比如非-ASCII 字符集

支持不同硬件体系结构和不同平台(不同于Linux 的平台)

GRUB 与LILO 的比较

如本文开始处所述,所有引导加载程序都以类似的方式工作,满足共同的目的。不过,LILO 和GRUB 之间有很多不同之处:

LILO 没有交互式命令界面,而GRUB 拥有。

LILO 不支持网络引导,而GRUB 支持。

LILO 将关于可以引导的操作系统位置的信息物理上存储在MBR 中。如果修改了LILO 配置文件,必须将LILO 第一阶段引导加载程序重写到MBR。相对于GRUB,这是一个更为危险的选择,因为错误配置的MBR 可能会让系统无法引导。使用GRUB,如果配置文件配置错误,则只是默认转到GRUB 命令行界面。

结束语

与所有软件相同,对某个用户来说是最好的选择,并不是对所有人来说都是最好的。至于这里所涉及的两个引导加载程序,我个人喜欢的是GNU GRUB。它是一个非常好的全面的加载程序,组合了灵活的用户界面和大量的功能。但是,还有很多使用过并忠爱LILO 的人仍然选择LILO 作为引导加载程序。幸运的是,如果您刚刚开始接触Linux 引导加载,使用哪个都不会有太大问题。

关于安全性,任何可以接触到引导磁盘/CD 的人,只需要使用没有设置安全性的grub.conf 或lilo.conf,就可以绕过本文中提及的所有安全措施。特别是使用GRUB 时,因为能够引导到单用户模式,所以是一个严重的安全漏洞。解决此问题的一个简单方法是在机器的BIOS 中禁止通过CD 和软盘进行引导,并确保为BIOS 设置了一个口令,使得其他人不能修改这些设置。

STM32启动文件详解

STM32启动文件详解 (2012-07-28 11:22:34) 转载▼ 分类:STM32 标签: stm32 启动 在<>,用的是STM32F103RBT6,所有的例程都采用了一个叫STM32F10x.s的启动文件,里面定义了STM32的堆栈大小以及各种中断的名字及入口函数名称,还有启动相关的汇编代码。STM32F10x.s是MDK提供的启动代码,从其里面的内容看来,它只定义了3个串口,4个定时器。实际上STM32的系列产品有5个串口的型号,也只有有2个串口的型号,定时器也是,做多的有8个定时器。比如,如果你用的 STM32F103ZET6,而启动文件用的是STM32F10x.s的话,你可以正常使用串口1~3的中断,而串口4和5的中断,则无**常使用。又比如,你TIM1~4的中断可以正常使用,而5~8的,则无法使用。 而在固件库里出现3个文件 startup_stm32f10x_ld.s startup_stm32f10x_md.s startup_stm32f10x_hd.s 其中,ld.s适用于小容量产品;md.s适用于中等容量产品;hd适用于大容量产品; 这里的容量是指FLASH的大小.判断方法如下: 小容量:FLASH≤32K 中容量:64K≤FLASH≤128K 大容量:256K≤FLASH ;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** ;* File Name : startup_stm32f10x_hd.s ;* Author : MCD Application Team ;* Version : V3.5.0 ;* Date : 11-March-2011 ;* Description : STM32F10x High Density Devices vector table for MDK-ARM ;* toolchain. ;* This module performs: ;* - Set the initial SP ;* - Set the initial PC == Reset_Handler ;* - Set the vector table entries with the exceptions ISR address ;* - Configure the clock system and also configure the external ;* SRAM mounted on STM3210E-EVAL board to be used as data ;* memory (optional, to be enabled by user) ;* - Branches to __main in the C library (which eventually ;* calls main()). ;* After Reset the CortexM3 processor is in Thread mode,

电脑启动过程详解!!!

电脑启动过程详解 1.当按下电源开关时,电源就开始向主板和其它设备供电,这时电压还不太稳定,主板上的控制芯片组会向CPU发生并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在些刻不会马上执行指令,当芯片组检查到电源已经开始稳定供电了(当然从不稳定,到稳定的过程只是一瞬间的事情)它便撤去RESET信号(如果是手工按下电脑面板上的RESET按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号)CPU马上从地址FFFF0H处开始执行指令,这个地址实际在系统BIOS的地址范围内, 无论是Award BIOS,还是AMI BIOS,在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。 2.系统BIOS的启动代码首先要做的事情就进行POST(Power-On Self Test,加电后自检),POST的主要任务是检查系统中一些关键设备是否存在和是否正常工作,例如内存和显卡等设备.由于POST是最早进行的检查过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了些致命错误,例如没有找到内存或内存有问题 (此时只会检查640KB常规内存),那么系统BIOS就会直接控制嗽叭发生声音来报告错误,声音的长短和次数代表了错误的类型.在正常情况下,POST过程进行的非常快,我们几乎无法感觉到它的存在,POST结束之后就会调用其它代码来进行更完整的硬件检测。 3.接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的超始地址通常设在 C0000H,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码来初始化显卡,此时多数显卡都在屏幕上显示出一些初始化信息,介绍生产厂商,图形芯片类型等内容,不过这个画面几乎是一闪而过,系统BIOS接着会查找其它设备的BIOS程序,找到之后同样会调用这些BIOS内部的初始化代码来初始化相关的设备。 4.查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BISO的类型,序列号和版本号等内容. 5.接着系统BIOS将检查和显示CPU的类型和工作频率,然后开始测试所有RAM,并同时在屏莫显示内存测试的速度,用户可以在CMOS设置中自行决定使用简单耗时少或详细耗时多的测试方式. 6.内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘,CD-ROM,串口,并口,软驱等设备,另外绝大数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数,硬盘参数和访问模式等. 7.标准设备检查完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中安装的的即插即用设备,每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断,DMA通道和I/O端口等资源。 8.到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其它概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。 9.接下来系统BIOS会更新ESCD(Extended system configuration data,扩展系统配置数据.)ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS之中,通常ESCD数据只在系统配置发生改变后才会更新,所以不是每次启动电脑时都能够看到"updata ESCD … Success"这样的信息, 不过某些主板的系统BIOS在保存ESCD数据时使用了与widnwos 9x不相同的数据格式,于是widnwos 9x在启动过程中会把ESCD数据修改成自己的格式,但在下一次启动时,既使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式修改回来,如此循环,将会导致在每次启动电脑时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。 10.ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软件,硬件或光驱启动,以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的引导记录,而分区引导记录将负责读取并执行 IO.SYS这是DOS和widnows 9x的IO.SYS(或NT的NTLDR)首先要初始化一些重要的系统数据,然后将显示出我们熟悉的蓝天白云,在这幅画面之下,widnwos 将继续进行DOS部分和GUI(图形用户界面)部分的引导和初始化工作. 上面介绍的便是电脑在打开电源开关(或按RESET)进行冷启动时所要完成的各种初始化工作,如果在DOS 下按Ctrl Alt DEL组合键,(或从windows中选择重新启动电脑)来进行热启动,那么POST过程将被跳过去,

黑客技术入门教程

你好朋友 百度收索看【紫风剑客黑客入门教程】 是由黑基团队10个黑客高手呕心沥血编写的教程 包括从入门到精通全三套高清视频教程和高手进阶脚本电子书! 全套还包括我们团队全套内部vip黑客工具 工具包包括编,壳,攻,防所有类型的黑客软件! 听说紫风剑客黑客教程都是视频形式的,课程通俗易懂只要会打字就能学会不需要基础,由浅入深, 很火。并且课程的内容会随着技术的更新而更新,因为没有课程终结这个说法。并且他们有YY讲课,有不懂的地方24小时为你服务 学习黑客需要有耐心,要有全套的教程,才可以学会,首先要有视频 讲解,靠个人的参悟是很难学会的,下面了解下学习黑客的步骤: 一、前期 1、了解什么是黑客,黑客的精神是什么。当然了解一下几大着 名黑客或骇客的“发家史”也是很有必要的。 2、黑客必备的一些基础命令,包括DOS命令,以及UNIX / Linux 下的命令。 3、远程扫描、远程刺探技术。包括通过系统自带命令的信息刺 探以及使用工具扫描等。 4、密码破解。了解现在的密码破解的适用范围,以及操作技巧 等等。 5、溢出攻击。溢出工具的使用方法。 6、注入攻击。注入攻击只是一个简称,这里还要包括XSS、旁注 、远程包含等一系列脚本攻击技巧。 7、学会各种编译工具的使用方法,能编译所有ShellCode。 8、学会手动查杀任何木马、病毒,学会分析Windows操作系统, 以使自己百毒不侵。 二、中期 1、学习所有Windows下服务器的搭建步骤(ASP、PHP、JSP)。 2、掌握例如Google黑客、cookies 、网络钓鱼、社会工程学等 等等等。 3、学习HTML、JavaScript、VBScript。 4、学习标准SQL语言,以及大多数数据库的使用。 5、学习ASP,并拥有发掘ASP脚本漏洞的能力。 6、学习PHP,并拥有发掘PHP脚本漏洞的能力。 7、学习JSP,并拥有发掘JSP脚本漏洞的能力。 8、学习掌握最新脚本的特性性以及发掘漏洞的方法,例如眼下 的WEB2.0。 三、后期 1、确定自己的发展方向

keil下C51启动代码详解

由于CPU和程序启动代码文件STARTUP.a51的重要性,一些8051派生的CPU产品要求初始化CPU来满足设计中的相应的硬件,因此,有时候用户需要对STARTUP.a51进行修改,所以进行注释一下: ;--------------------------------------------------- ;startup.A51: 用户上电初始化程序 ;---------------------------------------------------- ; ;使用以下EQU命令可定义在CPU复位时需要用0进行初始化的内存空间 ; ;IDA TA存储器的空间的绝对起始地址总是零 IDA TALEN EQU 80H ;需用0进行初始化的IDA TA存储器空间的字节数 ; XDA TASTART EQU 0H ;XDA TA存储器空间的绝对起始地址 XDA TALEN EQU 0H ;需用0进行初始化的XDA TA存储器的空间字节数 ; PDA TASTART EQU 0H ;PDA TA存储器的空间的绝对起始地址 PDA TALEN EQU 0H ;需用0进行初始化的PDA TA存储器的空间字节数 ;注意:IDA TA存储器的空间在物理上包括了8051单片机的DA TA和BIT存储空间 ;至少要保证与C51编译器运行库有关的存储器的空间进行0初始化 ; ;再入函数模拟初始化 ;----------------------------------------------------------- ;以下用EQU指令定义了再入函数模拟堆栈指针的初始化 ; ;使用SMALL存储器模式时再入函数的堆栈空间 IBPSACK EQU 0 ;使用SMALL存储器模式再入函数时将其设置成1 IBPSTACKTOP EQU 0FFH+1 ;将堆栈顶设置为最高地址加1 ; ;使用LARGE存储器模式时再入函数的堆栈空间 XBPSTACK EQU 0 ;使用LARGE存储器模式再入函数时将其设置成1 XBPSTACKTOP WQU 0FFFFH+1 ;将堆栈顶设置为最高地址加1 ; ;使用COMPACT存储器模式时再入函数的堆栈空间 PBPSTACK EQU 0 ; 使用COMPACT存储器模式再入函数时将其设置成1 PBPSTACKTOP WQU 0FFFFH+1 ;将堆栈顶设置为最高地址加1 ;;---------------------------------------------------- ;使用COMPACT存储器模式时,64KB X DA TA存储器空间的分页定义 ; ;以下用EQU指令定义PDA TA类型变量在XDA TA存储器空间的页地址 ;使用EQU指令定义PFAGE时必须与L51连接定位器PDA TA指令的控制参数一致 ; PPAGEENABLE EQU 0 ;使用PDA TA类型变量时将其设置成1 PPAGE EQU 0 ;定义页号 ; ;------------------------------------------------ NAME ? C_STARTUP ;模块名为? C_STARTUP ? C_51STARTUP SEGMENT CODE ;代码段 ? STACK SEGMENT IDA TA;堆栈段 RSEG ? STACK ;堆栈 DS 1 EXTRN COE(? C_START) ;程序开始地址

[黑客必学] 最基本的入侵步骤——送给新手

第一步 下载必备的工具软件。1号软件就是端口扫描工具“网络刺客II”,2号软件就是著名的国产木马冰河2.2的控制端。 下载完毕并解压缩之后跟我进行第二步! 第二步 运行1号软件,首先出现的是“网络刺客II注册向导”,别理它,点击“稍后(Q)”就进入了网络刺客II的主界面。 第三步 在网络刺客II的主界面里选“工具箱(U)”-》“主机查找器(H)”,就进入了“搜索因特网主机”界面。 第四步 进入“搜索因特网主机”界面后,“起始地址”栏填XXX.XXX.0.0其中XXX.XXX自己去选 “结束地址”栏填XXX.XXX.255.255其中XXX.XXX 择了,比如你可以选61.128或选61.200等等, 的选择要和前面一样。“端口”栏填7626,其他栏保持默认不动。 好了,以上设置就是要搜索从XXX.XXX.0.0到XXX.XXX.255.255这一段IP地址中有冰河木马的计算机了,再检查一下填对没有?如果一切OK,请点击“开始搜索”。 第五步 观察“总进度”和“段进度”是否在走动。如果没有走动,那一定是IP地址设置不对,请认真检查。如果两个进度都在走动,呵呵,你就成功一半了,至少你会使用网络刺客II 扫描网上开放某一端口的计算机了。 下面你要作的就是静静的等待,学用黑客软件是需要耐心的。大约20-30分钟后,最下面的记录栏里就应该出现记录了(一般情况下,应该有5、6条记录)。每一条记录代表找到的中了冰河木马的一台计算机,前面是该计算机的IP地址,后面是7626(冰河木马端口)。 第六步 点击“停止搜索”,但不要退出程序,到第十二步时还要用。运行2号软件冰河,进入冰河主界面。选“文件[F]”-》“添加主机[A]”进入添加主机窗口。 第七步 在“添加主机”窗口,“显示名称”里填入第五步里搜索到的第一条IP地址,当IP地址填入“显示名称”里后,“主机地址”里就自动填入相同的IP了。“访问口令”不填,“监听端口”保持默认的7626。 好了,检查一下IP有没有填错,如果OK,点击“确定”,在冰河主界面的“文件管理器”里就出现了刚才填入的IP地址了。 第八步 这一步和下一步最重要,请认真看清楚!在冰河的主界面里,点击“文件管理器”里的“我的电脑”,这时“文件管理器”右边的框里就会出现你自己的硬盘分区。比如,如果你的硬盘分的是四个区,“文件管理器”右边的框里就会从上往下依次出现C:、D:、E:、F:,如果你的硬盘分的是两个区,就会出现C:、D:。 第九步 点击“文件管理器”里刚才输入的第一条IP地址,稍等片刻(网速慢的情况下约10-30秒),在“文件管理器”右边的框里就会出现对方计算机的硬盘分区了。看到了吗?看到了?呵呵,祝贺你,你已经成功地进入对方的计算机了!!!!! 第十步 你发现没有出现对方计算机的硬盘分区!!呵呵,别急,看看冰河主界面最下端的状态栏里有什么提示,如果是下面两种情况,就放弃,返回第七步,填入搜索到的第二条IP地址:

黑客入门新手特训 中

7 ! ! Step2? q ?r? ē? q r ? d q r?q r?q ?? r??ēω q ?? rd ? ?? q? r?q r d Step3??q ?? r? ē ?q r ē q ? C O M r ē ? q ?r? ē ? ? d ? ? DCOM ? ?135 ? 2. ?137 138 ? Windows 137 ?? ? ? ?IIS Samba Lotus Notes ?? ?? ? I P ? 137 ? ? 137 ? ǜ ? Windows ?NetBIOS over TCP/IP?NBT?? 137 ? ? ? ??? ? ?? ? IIS ? ? ? ? ? 138 NetBIOS ? ?? ? ?? 137 ? ? ?? 138 ? NetBIOS ? ? NetBIOS ? ? ? ? ? ? ?? ? ? ? ? NetBIOS ? ? 138 137 ? ? ? ? 137 138 ? ? ?NetBIOS ? ? ?? 6-3? 137/138 ? ? ? TCP/IP ? NetBIOS ? ? ǖ Tufq2! ? ? Tufq!3! ?? ! ?

7 ! ! Tufq!4! ?!OfuCJPT 3. ?139 445 139 445 137 138 I P ? ? 139 445 SMB? ? ? DNS ? ? ? IP ? ?Windows2000 ?? Windows NetBIOS ? WINS NetBIOS ? IP ? Windows ?? CIFS DNS ? CIFS SMB ? ?SMB NetBIOS WINS ? CIFS DNS? ? Windows ? ? ?139 445 ? ?? 6-4? ?139/445 Tufq!2! ?? ? ?

电脑启动过程详解

电脑从按完开关加电开始直到进入到系统桌面的整个过程详解本文以Windows2000/xp和Windows Vista/7两个内核做讲解 电脑从加电到进桌面可以分为两大部分: 无论是Windows2000/XP还是Windows Vista/7,在硬件自检方面都是想同的,不同的是在系统加截。 硬件部分: 在讲解前,我们先来了解几个概念: BIOS:即“Basic Input/Output System”(基本输入输出系统),它是一组被“固化”在计算机主板上的一块 ROM 中直接关联硬件的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序,其主要功能是为计算机提供最底层的、最直接的硬件设置和控制,它包括系统 BIOS(主板 BIOS).其它设备 BIOS(例如 IDE 控制器 BIOS、显卡 BIOS 等)其中系统 BIOS 占据了主导地位.计算机启动过程中各个 BIOS 的启动都是在它的控制下进行的。 CMOS:即“Complementary Metal-Oxide-Semiconductor”(互补金属氧化物半导体),它本是计算机系统内一种重要的芯片,保存了系统引导最基本的资料。 内存地址:我们知道,内存空间的最基本单位是位,8 位视为一个字节,即我们常用的单位 B,内存中的每一个字节都占有一个地址(地址是为了让 CPU 识别这些空间,是按照 16 进制表示的),而最早的 8086 处理器只能识别 1MB(2 的 20 次方 B)的空间,这 1MB 内存中低端(即最后面)的 640KB 就被称为基本内存,而剩下的内存(所有的)则是扩展内存。这 640KB 的空间分别由显存和各 BIOS 所得。 我们来看一下硬件部分的流程图:

coolfire 黑客入门8篇(6)

coolfire黑客入门教程系列之(六) 这不是一个教学文件, 只是告诉你该如何破解系统, 好让你能够将自己的系统作安全的保护, 如果 你能够将这份文件完全看完, 你就能够知道电脑骇客们是如何入侵你的电脑, 我是CoolFire, 写 这篇文章的目的是要让大家明白电脑安全的重要性, 并不是教人Crack Password 若有人因此文件 导致恶意入侵别人的电脑或网路, 本人概不负责!! 在昨天, 我们的首页造访人数破万了~~ 应该是增加了很多人, 而不是有人故意灌水的吧? 希望新 朋友们能喜欢我们的内容, 有人问到: 有没有跟我们首页性质相近的中文站台? 很遗憾的是目前 我还没有找到.... 看得到的大多是软体, 注册机之类的破解站台. 如果你也有这样的站台的话, 欢迎你写信给我们进行连结. 有很多网友报怨档案抓不下来, 先前我们已经尽了很大的努力将档 案放在国内Server 中, 我想, 由HiNet 连这边应该很快吧? 还是水管塞住的问题?? 如果有人 的位址在.edu.tw 附近的, 欢迎来信要求Mirror~~ 我很乐意将档案Mirror 给你, 让其它网 友更方便取这些档案. 好久没有再弄出一些文章出来了, 不过最近倒是回了蛮多关於Hacker 方面的问题, 也收到了许多 的回应信件, 有许多的问题在这一篇文章中都会有答案, 甚至到现在还有很多的网友们询问甚么https://www.wendangku.net/doc/4015166630.html, 是shadow password 的, 请各位多翻翻以前的文章吧!! 在CGI Holes 方面的问题也很多, 所以在 这一篇之後我会找个时间写一写System Holes #2 来让大家对一些网路上常见的程式漏洞有一些基 本的认识. 最近有许多软体更新了, 最令我们注意的当然就是NT 4.0 罗, 因为它的更新肯定会带来很多的 人更新系统, 当然这样先进的作业系统我们还是很期待有人会很快的将它的Bugs 找出来的啦!! UpYours 这套重量级的MailBomb 也出现的新的版本, 这次的V4.0 Beta 2 经试用後发现实在是 改进了很多, 但是相对的危险性也跟著提高, 其改用Delphi 来设计, 使得安装更为方便, 不过

GRUB2启动代码详解

GRUB2的介绍 目前Grub1已经停止开发了,不再增加新的功能,所有的开发都转移到Grub2上了,Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:1.模块化设计 不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。 2.支持多体系结构Grub 2可支持PC(i386), MAC(powerpc)等不同的体系结构,而且支持最新的EFI架构。 3.国际化的支持Grub 2 可以支持非英语的语言。 4.内存管理Grub 2 有真正的内存管理系统。 5.脚本语言Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。 当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。 如果你熟悉Grub2,应该可以看明白里面的内容。要注意的是: a、timeout, default等参数用变量来储存 b、菜单项由menuentry定义 c、第1个分区是(hd0,1)而不是(hd0,0) 理论的东西说多了大家估计也晕,举个简单的例子:在grub1中,要改变启动背景的时候只能选择支持640X480分辨率并且格式也只能是.xpm的图片,分辨率稍微大点的图就显示不出来了,但grub2不存在这个问题,它有更绚丽的菜单界面,grub2默认.png .tga .jpeg等很多种格式的图片都支持,而且支持的图片分辨率也更大。

GRUB2启动代码分析 # # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then #如果“$prefix/grubenv”目录不为空 load_env #从grubenv文件中加载环境变量 fi set default="0" #启动第1项# if [ ${prev_saved_entry} ]; then #如果prev_saved_entry的值不为空 set saved_entry=${prev_saved_entry} #将saved_entry的值设置成变量prev_saved_entry的值。 save_env saved_entry #将变量saved_entry保存到grubenv文件中。 set prev_saved_entry= #将prev_saved_entry的值设置为空 save_env prev_saved_entry #将prev_saved_entry保存到grubenv文件中 set boot_once=true #将boot_once的值设置为真(貌似是为了标志已经设置过启动的相关环境变量了)fi function savedefault {

coolfire黑客入门教程系列之(一)

CoolHC Volume 1 By CoolFire 这不是一个教学文件, 只是告诉你该如何破解系统, 好让你能够将自己的系统作安全的保护, 如果你能够将这份文件完全看完, 你就能够知道电脑骇客们是如何入侵你的电脑, 我是 CoolFire, 写这篇文章的目的是要让大家明白电脑安全的重要性, 并不 是教人 Crack Password 若有人因此文件导致恶意入侵别人的电脑或网路, 本人概不负责 !! #1 甚麽是 Hacking ? 就是入侵电脑! 有甚麽好解释的! 大部份有关介绍 Hacker 的书籍或小说及文件 等都有清楚的介绍, 沉迷於电脑的人... 破坏... 唉! 一大堆怪解释就是了, 最 好不要成为一个 "骇客", 我... 不是! #2 为甚麽要 Hack ? 我们只是为了要了解更多关於系统的技术, 入侵它, 了解它是如何运作的, 试试 它的安全性, 然後学著去使用它, 读取系统中有关操作的说明, 学习它的各项操 作 !! 为了安全性而作革命! #3 Hack 守则 1. 不恶意破坏任何的系统, 这样作只会给你带来麻烦. 恶意破坏它人的软体将导致法律刑责, 如果你只是使用电脑, 那仅为非法使 用!! 注意: 千万不要破坏别人的软体或资料 !! 2. 不修改任何的系统档, 如果你是为了要进入系统而修改它, 请在答到目的後 将它改回原状. 3. 不要轻易的将你要 Hack 的站台告诉你不信任的朋友. 4. 不要在 bbs 上谈论你 Hack 的任何事情. 5. 在 Post 文章的时候不要使用真名. 6. 正在入侵的时候, 不要随意离开你的电脑. 7. 不要侵入或破坏政府机关的主机. 8. 不在电话中谈论你 Hack 的任何事情. 9. 将你的笔记放在安全的地方. 10. 想要成为 Hacker 就要真正的 Hacking, 读遍所有有关系统安全或系统漏洞 的文件 (英文快点学好)! 11. 已侵入电脑中的帐号不得清除或修改. 12. 不得修改系统档案, 如果为了隐藏自己的侵入而作的修改则不在此限, 但仍须 维持原来系统的安全性, 不得因得到系统的控制权而将门户大开 !! 13. 不将你已破解的帐号分享与你的朋友. #4 破解之道 1. 进入主机中 2. 得到 /etc/passwd 3. 得到系统帐号 4. 得到最高权限 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- How 1. 进入主机有好几种方式, 可以经由 Telnet (Port 23) 或 SendMail (Port 25) 或 FTP 或 WWW (Port 80) 的方式进入, 一台主机虽然只有一个位址, 但是它可能 同时进行多项服务, 所以如果你只是要 "进入" 该主机, 这些 Port 都是很好的进 行方向. 当然还有很多 Port, 但是 DayTime 的 Port 你能拿它作甚麽??? 我不知

uboot启动代码详解

·1 引言 在专用的嵌入式板子运行GNU/Linux 系统已经变得越来越流行。一个嵌入式Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。固化在固件(firmware)中的boot 代码,也就是Boot Loader,它的启动通常分为两个阶段。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于Flash 内存设备之上文件系统,root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI 有:MicroWindows 和MiniGUI 等。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下PC 的体系结构我们可以知道,PC 机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR 中的OS Boot Loader(比如,LILO 和GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘MBR 中的Boot Loader 读到系统的RAM 中,然后将控制权交给OS Boot Loader。Boot Loader 的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 而在嵌入式系统中,通常并没有像BIOS 那样的固件程序(注,有的嵌入式CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader 来完成。比如在一个基于ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址 0x00000000 处开始执行,而在这个地址处安排的通常就是系统的Boot Loader 程序。·2 bootloader简介 简单地说,Boot Loader (引导加载程序)就是在操作系统内核运行之前运行的一段小程序,它的作用就是加载操作系统, 实现硬件的初始化,建立内存空间的映射图,为操作系统内核准备好硬件环境并引导内核的启动。如上图所示的那样在设备的启动过程中bootloader位于最底层,首先被运行来引导操作系统运行,很容易可以看出bootloader是底层程序所以它的实现严重地依赖于硬件,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,一些功能强大、支持硬件环境较多的BootLoader也被广大的使用者和爱好者所支持,从而形成了一些被广泛认可的、较为通用的的bootloader实现。 2.1 Boot Loader 所支持的CPU 和嵌入式板 每种不同的CPU 体系结构都有不同的Boot Loader。有些Boot Loader 也支持多种体系结构的CPU,比如U-Boot 就同时支持ARM 体系结构和MIPS 体系结构。除了依赖于CPU 的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上,通常也都需要修改Boot Loader 的源程序。 2.2 Boot Loader 的安装媒介(Installation Medium)

成为一名优秀黑客的12个基本步骤(精)

成为一名优秀黑客的 12个基本步骤 黑客攻防是一个极具魅力的技术领域, 但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度, 具备很深的计算机系统、编程语言和操作系统知识, 并乐意不断地去学习和进步。 如果你想成为一名优秀的黑客,下面是 12种最重要的基础条件,请认真阅读: 1. 学习 UNIX/LINUX UNIX/LINUX是一种安全性更高的开源操作系统, 最早由 AT&T实验室开发, 并在安全界里广泛使用。不懂 UNIX/LINUX,不可能成为一名黑客。 2. C语言编程 UNIX/LINUX这种操作系统就是用 C 语言写的,是最强大的计算机语言,于上世纪 70年由丹尼斯?瑞切开发。想成为一名黑客,必须掌握 C 语言。 3. 学习使用多种编程语言 对于一名黑客而言,要学习使用不只一种编程语言。比如 Python 、 JAVA 、 C++等。网上有很多免费的电子书、学习指南,关键在于你的坚持和努力。 4. 学习了解网络知识 这是另一个必不可少的基础条件, 学习网络知识, 理解网络的构成。懂得不同类型网络之间的差异之处, 清晰的了解 TCP/IP和 UDP 协议。这都是在系统中寻找漏洞的必不可少的技能。理解局域网、广域网, VPN 和防火墙的重要性,精通Wireshark 和 NMAP 这样的网络扫描和数据包分析工具等,多去了解思科、联软、华为国家信息安全厂商的一些新兴技术。 5. 学习使用多种操纵系统 除了 Windows 以外,还有 UNIX/LINUX, Mac 等不同类型和版本的操作系统,而每种操作系统都有自己的漏洞,黑客需要了解这些系统,才能发现其中的漏洞。

stm32启动文件详解

STM32启动文件详解 一、启动文件的作用 1.初始化堆栈指针SP; 2.初始化程序计数器指针PC; 3.设置堆、栈的大小; 4.设置异常向量表的入口地址; 5.配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板可没有外部SRAM); 6.设置C库的分支入口__main(最终用来调用main函数); 7.在版的启动文件还调用了在文件中的SystemIni()函数配置系统时钟。

二、汇编指令

三、启动代码 ----- 栈 Stack_Size EQU 0x00000400 ; 栈的大小 AREA STACK, NOINIT, READWRITE,ALIGN=3 Stack_Mem SPACE Stack_Size ; 分配栈空间 __initial_sp ; 栈的结束地址(栈顶地址) 分配名为STACK,不初始化,可读可写,8(2^3)字节对齐的1KB空间。 栈:局部变量,函数形参等。栈的大小不能超过内部SRAM大小。 AREA:汇编一个新的代码段或者数据段。STACK段名,任意命名;NOINIT表示不初始化;READWRITE可读可写;ALIGN=3(2^3= 8字节对齐)。 __initial_sp紧挨了SPACE放置,表示栈的结束地址,栈是从高往低生长,结束地址就是栈顶地址。

----- 堆 Heap_Size EQU 0x00000200 ; 堆的大小(512Bytes) AREA HEAP, NOINIT, READWRITE,ALIGN=3 __heap_base ; 堆的起始地址 Heap_Mem SPACE Heap_Size ; 分配堆空间 __heap_limit ; 堆的结束地址 分配名为HEAP,不初始化,可读可写,8(2^3)字节对齐的512字节空间。__heap_base堆的起始地址,__heap_limit堆的结束地址。堆由低向高生长。动态分配内存用到堆。 PRESERVE8 -- 指定当前文件的堆/栈按照8 字节对齐。 THUMB-- 表示后面指令兼容THUMB 指令。THUBM 是ARM 以前的指令集,16bit;现在Cortex-M 系列的都使用THUMB-2 指令集,THUMB-2 是32 位的,兼容16 位和32 位的指令,是THUMB 的超级。 3.向量表 AREA RESET, DATA, READONLY EXPORT __Vectors E XPORT __Vectors_End E XPORT __Vectors_Size 定义一个名为RESET,可读的数据段。并声明__Vectors、__Vectors_End 和__Vectors_Size 这三个标号可被外部的文件使用。 __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler

coolfire 黑客入门8篇(1)

coolfire黑客入门教程系列之(一) 这不是一个教学文件, 只是告诉你该如何破解系统, 好让你能够将自己的系统作安全 的保护, 如果你能够将这份文件完全看完, 你就能够知道电脑骇客们是如何入侵你的 电脑, 我是 CoolFire, 写这篇文章的目的是要让大家明白电脑安全的重要性, 并不 是教人Crack Password 若有人因此文件导致恶意入侵别人的电脑或网路, 本人概不 负责 !! #1 甚麽是 Hacking ? 就是入侵电脑! 有甚麽好解释的! 大部份有关介绍Hacker 的书籍或小说及文件 等都有清楚的介绍, 沉迷於电脑的人... 破坏... 唉! 一大堆怪解释就是了,最 好不要成为一个 "骇客", 我... 不是! #2 为甚麽要 Hack ? 我们只是为了要了解更多关於系统的技术, 入侵它, 了解它是如何运作的, 试试 它的安全性, 然後学著去使用它, 读取系统中有关操作的说明, 学习它的各项操 作 !! 为了安全性而作革命! #3 Hack 守则 1. 不恶意破坏任何的系统, 这样作只会给你带来麻烦. 恶意破坏它人的软体将导致法律刑责, 如果你只是使用电脑, 那仅为非法使 用!! 注意: 千万不要破坏别人的软体或资料 !! 2. 不修改任何的系统档, 如果你是为了要进入系统而修改它, 请在答到目的後将它改回原状. 3. 不要轻易的将你要 Hack 的站台告诉你不信任的朋友. 4. 不要在 bbs 上谈论你 Hack 的任何事情. 5. 在 Post 文章的时候不要使用真名. 6. 正在入侵的时候, 不要随意离开你的电脑.

7. 不要侵入或破坏政府机关的主机. 8. 不在电话中谈论你 Hack 的任何事情. 9. 将你的笔记放在安全的地方. 10. 想要成为 Hacker 就要真正的 Hacking, 读遍所有有关系统安全或系统漏洞 的文件 (英文快点学好)! 11. 已侵入电脑中的帐号不得清除或修改. 12. 不得修改系统档案, 如果为了隐藏自己的侵入而作的修改则不在此限, 但仍须 维持原来系统的安全性, 不得因得到系统的控制权而将门户大开 !! 13. 不将你已破解的帐号分享与你的朋友. #4 破解之道 1. 进入主机中 2. 得到 /etc/passwd 3. 得到系统帐号 4. 得到最高权限 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-How 1. 进入主机有好几种方式, 可以经由 Telnet (Port 23) 或 SendMail (Port 25)或 FTP 或 WWW (Port 80) 的方式进入, 一台主机虽然只有一个位址, 但是它可能 同时进行多项服务, 所以如果你只是要 "进入" 该主机, 这些 Port 都是很好的进行方向. 当然还有很多 Port, 但是 DayTime 的 Port 你能拿它作甚麽??? 我不知 道, 你知道吗?! 底下的示范并不是像写出来的那麽容易, 只不过是要让你了解如何进入,当然其 中还有很多问题, 如打错指令...... 等等的毛病... 没有出现在课堂上, 但是我为了 面子.... 一定要删掉这些不堪入目的东西嘛... 示范进入主机的方法: (By CoolFire) (首先要先连上某一台你已经有帐号的Telnet 主机, 当然最好是假的, 也

Android系统启动过程详解

Android系统启动过程详解 Android系统启动过程 首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。 启动的过程如下图所示:(图片来自网上,后面有地址)

下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结, 以下学习过程中代码片段中均有省略不完整,请参照源码。

一Init进程的启动 init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行, 并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。 启动过程就是代码init.c中main函数执行过程:system\core\init\init. c 在函数中执行了:文件夹建立,挂载,rc文件解析,属性设置,启动服务,执行动作,socket监听…… 下面看两个重要的过程:rc文件解析和服务启动。 1 rc文件解析 .rc文件是Android使用的初始化脚本文件(System/Core/Init/readm e.txt中有描述: four broad classes of statements which are Actions, Commands, Services, and Options.) 其中Command 就是系统支持的一系列命令,如:export,hostname,mkdir,mount,等等,其中一部分是linux 命令, 还有一些是android 添加的,如:class_start :启动服务,class_stop :关闭服务,等等。 其中Options是针对Service 的选项的。 系统初始化要触发的动作和要启动的服务及其各自属性都在rc脚本文件中定义。具体看一下启动脚本:\system\core\rootdir\init.rc 在解析rc脚本文件时,将相应的类型放入各自的List中: \system\core\init\Init_parser.c :init_parse_config_file( )存入到 action_queue、action_list、service_list中,解析过程可以看一下parse_config函数,类似状态机形式挺有意思。 这其中包含了服务:adbd、servicemanager、vold、ril-daemon、deb uggerd、surfaceflinger、zygote、media…… 2 服务启动 文件解析完成之后将service放入到service_list中。 文件解析完成之后将service放入到service_list中。 \system\core\init\builtins.c

最简单的黑客入门教程大全

最简单的黑客入门教程大全 目录 1 黑客简介 (3) 2 保护自己电脑绝对不做黑客肉鸡 (4) 3 抓肉鸡的几种方法 (8) 4 防止黑客通过Explorer侵入系统 (17) 5 SQL注入详解 (19) 5.1 注入工具 (20) 5.2 php+Mysql注入的误区 (21) 5.3 简单的例子 (23) 5.4 语句构造 (26) 5.5 高级应用 (42) 5.6 实例 (50) 5.7 注入的防范 (55) 5.8 我看暴库漏洞原理及规律1 (56) 5.9 我看暴库漏洞原理及规律2 (61) 6 跨站脚本攻击 (65) 6.1 跨站脚本工具 (65) 6.2 什么是XSS攻击 (66)

6.3 如何寻找XSS漏洞 (66) 6.4 寻找跨站漏洞 (67) 6.5 如何利用 (67) 6.6 XSS与其它技术的结合 (71) 7 XPath注入 (71) 7.1 XPath注入介绍 (71) 7.2 XPath注入工具 (76) 声明:文章来源大多是网上收集而来,版权归其原作者所有。

1黑客简介 "黑客"(hacker)这个词通常被用来指那些恶意的安全破坏者。关于"黑客"一词的经典定义,最初来源于麻省理工学院关于信息技术的一份文档,之后便被新闻工作者们长期使用。但是这个在麻省理工被当做中性词汇的术语,却逐渐被新闻工作者们用在了贬义的环境,而很多人也受其影响,最终导致了"黑客"一词总是用于贬义环境。有些人认为,我们应该接受"黑客"一词已经被用滥并且有了新的意义。他们认为,如果不认可这种被滥用的词汇,那么将无法与那些不懂技术的人进行有效的交流。而我仍然认为,将黑客和恶意的骇客(cracker)分开表述,对交流会更有效,比如使用"恶意的安全骇客"会更容易让对方理解我所指的对象,从而能够达到更好的沟通交流效果,也避免了对"黑客"一词的滥用。之所以要区分黑客和恶意骇客,是因为在某些情况下,我们讨论的对象是那些毫无恶意并且不会对安全防御或者用户隐私造成损害的对象,这些人只有用"黑客"这个词来描述才最贴切。如果你只是简单的将"黑客"和"恶意的安全骇客"划等号,将无法在与人交流安全技术问题时,轻松的分辨别人所指的到底是哪种类型的人。黑客和骇客的区别是,黑客仅仅对技术感兴趣,而后者则是通过技术获取职业发展或者谋生。很多黑客和骇客都具有技术天赋,有些骇客据此进行职业发展。当然,并不是每个有技术天赋的人都必须沿着黑客或者骇客的方向发展。黑客这个术语的经典意义是指那些对于事物如何工作非常感兴趣的人,他们修理,制作或者修改事物,并以此为乐。对于某些人来说,这个词并不准确,而对于另一些人来说,黑客意味着最终能完全掌握某些事情。根据RFC1392的记载,互联网用户词汇将"黑客"定义为:迷恋于获取某些系统尤其是计算机和计算机网络系统内部运作机制的人。而这个词经常被错误的用于贬义环境。在贬义环境中,正确的用词应该是"骇客"。TheJargonWiki对于"黑客"的首次定义为:迷恋于探知可编程系统细节以及如何扩展其功能的人,与大多数只需了解系统基本知识的人

相关文档