运行vs2010时一直出错无法启动程序httplocalhost1227

运行vs2010时一直出错无法启动程序httplocalhost1227

运行VS2010时一直出错"无法启动程序

httplocalhost1227"

解决方案:1、打开注册表(开始-》运行-》regedit)可是使用快捷键WIN + R 打开运行窗口

2、找到如下键值

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Window s\CurrentVersion\App Paths

3、右击App Paths -> 新增选项名称为iexplore.exe 将它的键值更改为C:\Program Files\Internet

Explorer\IEXPLORE.EXE

4、新建-> 字符串值-> 名称为:Path 值为:

C:\Program Files\Internet Explorer;

OK 现在VS2008就可以正常调试啦!

或者在Tests文件下,右击引用文件夹添加引用,选择

“项目”,选择项目,确定,即可。

启动过程以及各个脚本的作用

开机自检-----MBR引导-----GRUB菜单------加载内核-----允许init进程 -----读取inittab(该文件中有运行级别,初始化文件,某个运行级别所要读取的文件,然后就执行/etc/rc.d/rcn.d向对应的文件) ----/etc/rc.d/rc.sysinit(由init进程调用执行,完成设置网络主机名加载文件系统等初始化工作------/etc/rc.d/rc(由init进程调用执行,根据指定的运行级别加载或终止相应的系统服务)------/etc/rc.d/rc.nd(是个目录,目录中有级别关闭和开启的服务K S 后的数字表示启动或关闭服务的优先级,越小越好----执行/etc/rc.d/rc.local(由rc脚本执行调用,保存用户定义的所需开机后自动执行的命令,可以开启某些服务,但是却不能关闭服务,因为关机时不读取该脚本,是最后读取的文件) -----启动mingetty(启动一个虚拟终端) init进程和inittab引导指令 init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。 init程序需要读取/etc/inittab文件作为其行为指针,inittab是以行为单位的描述性(非执行性)文本,每一个指令行都具有以下格式: id:runlevel:action:process其中id为入口标识符,runlevel为运行级别,action为动作代号,process为具体的执行程序。 id一般要求4个字符以内,对于getty或其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。 runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留,0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。 在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。 initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault 项,init将在控制台上请求输入 runlevel。

U-BOOT下使用bootm引导内核方法

U-BOOT下使用bootm引导内核方法 注: u-boot使用的是打上: https://www.360docs.net/doc/ff2826441.html,/cgi-bin/topic.cgi?forum=3&topic=651&show=0 上keety大侠提供的补丁生成的u-boot-1.1.3 这段时间不断有人问我u-boot启动内核的问题,记得在上次提供的u-boot源码中提到了go的方案,不过其实u-boot本来有一种更好的方案:bootm 花了不少时间,查看了论坛上不少的帖子,认真阅读了bootm的源码,终于使用bootm把内核给跑起来了,现把解决方法介绍如下: 一、在开始之前先说明一下bootm相关的东西。 1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把flash中的内核镜像复制到sdram中。 2、-a参数后是内核的运行地址,-e参数后是入口地址。 3、 1)如果我们没用mkimage对内核进行处理的话,那直接把内核下载到0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag建议是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 2)如果使用mkimage生成内核镜像文件的话,会在内核的前头加上了64byte的信息,供建立tag之用。bootm命令会首先判断bootm xxxx 这个指定的地址xxxx是否与-a指定的加载地址相同。

linux grub 引导启动过程详解

linux grub 引导启动过程详解 2008-01-08 17:18 这几天看了很多文档,算是对linux的启动过程有了比较细致的了解. 网上有很多文章谈到这方面的内容,但总觉得没有一篇完全的解析linux启动的 细节,下面是我小弟在学习的过程中总结出来的一些东东.这个是完整的linux启动过程, 不涉及内核,但是我觉得比较详细哦. (由于本人比较懒,这一段是从网上抄的) 机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘 设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查 软驱或者光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可移动的设 备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区, 寻找用于装载操作系统的指令。装载操作系统的这个程序就是boot loader. linux里面的boot loader通常是lilo或者grub,从Red Hat Linux 7.2起,GRUB( GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。那么启动的时候grub是如何被载入的呢 grub有几个重要的文件,stage1,stage2,有的时候需要stage1.5.这些文件一般都 在/boot/grub文件夹下面.grub被载入通常包括以下几个步骤: 1. 装载基本的引导装载程序(stage1),stage1很小,网上说是512字节,但是在我的系统上用du -b /boot/grub/stage1 显示的是1024个字节,不知道是不是grub版本不同的缘故还是我理解有误.stage1通常位于主引导扇区里面,对于硬盘就是MBR了,stage1的主要功能就是装载第二引导程序(stage2).这主要是归结于在主引导扇区中没有足够的空间用于其他东西了,我用的是grub 0.93,stage2文件的大小是107520 bit. 2. 装载第二引导装载程序(stage2),这第二引导装载程序实际上是引出更高级的功能, 以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。由于stage2很大,所以它一般位于文件系统之中(通常是boot所在的根 分区). 上面还提到了stage1.5这个文件,它的作用是什么呢你到/boot/grub目录下看看, fat_stage_1.5 e2fs_stage_1.5 xfs_stage_1.5等等,很容易猜想stage1.5和文件系统 有关系.有时候基本引导装载程序(stage1)不能识别stage2所在的文件系统分区,那么这 时候就需要stage1.5来连接stage1和stage2了.因此对于不同的文件系统就会有不同的stage1.5.但是对于grub 0.93好像stage1.5并不是很重要,因为我试过了,在没有stage1.5 的情况下, 我把stage1安装在软盘的引导扇区内,然后把stage2放在格式化成ext2或者fat格式的软盘内,启动的时候照常引导,并不需要e2fs_stage_1.5或者fat_stage_1.5. 下面是我的试验: #mkfs.ext2 /dev/fd0 #mount -t ext2 /dev/fd0 /mnt/floppy #cd /mnt/floppy #mkdir boot #cd boot #mkdir grub (以上三步可用mkdir -p boot/grub命令完成) #cd grub #cp /boot/grub/{stage1,stage2,grub.conf} ./ #cd; umount /mnt/floppy

应用程序无法正常启动(0xc0000142)的解决办法

应用程序无法正常启动(0xc0000142)的解决办法 风险提示:修改注册表有风险,您需要提前备份数据并在专业人士指导下慎重操作。 故障现象: 在电脑运行中,有时报错提示,如下图所示,以该报错信息为例,说明如何解决此类问题。 解决方案: 一、确认报错提示的错误文件,是属于哪个应用模块: 1、先找到“标题栏”的提示信息,记录下报错的文件名,这个报错的文件名就是“CWCleantools.exe”。如下图: 2、到搜索引擎(如:百度)上搜索该文件名,下面以百度为例,如下图:

3、在搜索结果中查找该文件是哪个具体应用程序报错,在搜索界面中没有具体的位置显示我们需要的信息,需要自行查看。 如下图所示, ,“CWCleantools.exe” 是 “中国电信3G无线宽带最新连接客户端2.1版本”中的文件,也就是说这个报错提示与 “中国电信3G无线宽带连接客户端”有关。 二、根据搜索结果决定解决方案 通过搜索引擎查询的目的是,找到报错提示的文件是属于哪个应用模块。(如:驱动程序、应用软件、操作系统等)根据文件属于不同的模块,建议如下: (A)如果报错提示文件属于某个明确应用程序:建议升级、重装、卸载这个应用程序测试。 (B)如果报错提示文件属于某个明确驱动程序:建议访问官方网站,下载并安装对应的官方驱动程序测试。 (C)如果报错提示文件属于操作系统文件:建议使用Windows系统还原功能测试。 注:百度等搜索引擎中提供的解决方案为网络共享资料,并非联想官方提供,对解决方案的有效性与可靠性联想不做任何保证。 三、关机时报错:0xc0000142

删除注册表项[HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionAeDebug] 下的相关键值。(提示:修改注册表有风险,您需要提前备份数据并在专业人士指导下慎重操作。)

应用程序打不开 exe文件关联修复器 打开方式还原 所有应用程序打不开

摘要:有时我们的操作错误会导致exe文件关联错误,使所有的应用程序文件都以不正确的方式打开,例如Win7的Windows Media Center,记事本,浏览器等等,从而无法使用应用程序。那么,怎样进行exe打开方式还原,解决应用程序打不开的问题呢? 关键词:应用程序打不开 exe文件关联修复器打开方式还原所有应用程序打不开 各系统在应用程序打不开时的打开方式还原方式是不同的。下面我们就针对不同的情况进行详细介绍。 如果是XP等系统,解决应用程序打不开的方式非常简单。我们可以用导入注册表文件,更改文件类型关联,命令行等方式进行修改。这里列举一种最为直观、不容易误操作的方式。 打开“我的电脑”,点击上方的“工具”菜单,点击文件夹选项,点击“文件类型”,点击“新建”,在弹出的输入框中输入EXE,点击“高级”,将“关联的文件类型”选为“应用程序”,确定。

此时返回前一窗口,看到下方的打开方式信息,点击右下角的“还原”按钮,然后关闭即可。 但是当遇到vista,Win7这种对系统文件、注册表保护的非常严密的系统,由于权限问题,这些常规方法以及网上较为普遍的exe文件关联修复器都不能起作用了。 那么,Win7,vista下该怎样解决应用程序打不开的问题,进行打开方式还原呢? 第一种方法是在开始-控制面板-用户账户和家庭安全中新建一个管理员账户,在新的账户由于使用了新的用户配置,应用程序打不开的问题就可以解决了。

如果不想新建账户,我们可以利用内核软件达到解决应用程序打不开的目的。首先,打开计算机,找到左上角的“组织”-文件夹和搜索选项。

点击查看,把“隐藏已知文件的扩展名”前的对号去掉。 尝试打开浏览器,一般是可以打开的。如果打不开,找到浏览器的原始目录(比 如.C:\Program Files\Internet Explorer\Iexplore.exe),找到浏览器主程序,重命名,将.exe后缀改为.com。然后去网上下载一个XueTr软件。解压前面下载到的XueTr运行。此时把解压出来的XueTr.exe重命名为https://www.360docs.net/doc/ff2826441.html,,确定两次。打开https://www.360docs.net/doc/ff2826441.html,,转到“系统杂项”,对任意一项,点右键-修复所有,确定。此时exe打开方式还原并恢复正常。

操作系统的启动流程

1、预引导(Pre-Boot)阶段 2、引导阶段 3、加载内核阶段 4、初始化内核阶段 5、登陆 每个启动阶段的详细介绍 一、预引导阶段在按下计算机电源使计算机启动, 并且在Windows XP操作系统启动之前这段时间, 我们称之为预引导(Pre-Boot)阶段, 在这个阶段里,计算机首先运行Power On Self Test(POST), POST检测系统的总内存以及其他硬件设备的现状。 如果计算机系统的BIOS(基础输入/输出系统)是即插即用的, 那么计算机硬件设备将经过检验以及完成配置。 计算机的基础输入/输出系统(BIOS)定位计算机的引导设备, 然后MBR(Master Boot Record)被加载并运行。 在预引导阶段,计算机要加载Windows XP的NTLDR文件。 二、引导阶段 Windows XP Professional引导阶段包含4个小的阶段。 首先,计算机要经过初始引导加载器阶段(Initial Boot Loader), 在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。 在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存, 而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。 接着,NTLDR启动内建的mini-file system drivers, 通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区, 以便发现以及加载Windows XP Professional, 到这里,初始引导加载器阶段就结束了。 接着系统来到了操作系统选择阶段, 如果计算机安装了不止一个操作系统(也就是多系统), 而且正确设置了boot.ini使系统提供操作系统选择的条件下, 计算机显示器会显示一个操作系统选单, 这是NTLDR读取boot.ini的结果。 三、加载内核阶段在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnl.exe。 系统加载了Windows XP内核但是没有将它初始化。 接着ntldr加载硬件抽象层(HAL,hal.dll),然后, 系统继续加载HKEY_LOCAL_MACHINE\system键, NTLDR读取select键来决定哪一个Control Set将被加载。 控制集中包含设备的驱动程序以及需要加载的服务。 NTLDR加载HKEY_LOCAL_MACHINE\system\service\...下start键值为0的最底层设备驱动。当作为Control Set的镜像的Current Control Set被加载时, ntldr传递控制给内核,初始化内核阶段就开始了。 四、初始化内核阶段在初始化内核阶段开始的时候, 彩色的Windows XP的logo以及进度条显示在屏幕中央, 在这个阶段,系统完成了启动的4项任务: 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了

Linux内核启动流程分析(一)

很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下。由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩, 带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o init/built-in.o --start-group arch/arm/mach-s3c2410/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o drivers/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o 2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息的linux内核,Image的大小约 3.2MB; 命令:arm-linux-gnu-objcopy -O binary -S vmlinux arch/arm/boot/Image 3.将 arch/arm/boot/Image 用gzip -9 压缩生成arch/arm/boot/compressed/piggy.gz大小约 1.5MB;命令:gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz 4. 编译arch/arm/boot/compressed/piggy.S 生成arch/arm/boot/compressed/piggy.o大小约1.5MB,这里实 际上是将piggy.gz通过piggy.S编译进piggy.o文件中。而piggy.S文件仅有6行,只是包含了文件piggy.gz; 命令:arm-linux-gnu-gcc -o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/piggy.S 5. 依据arch/arm/boot/compressed/vmlinux.lds 将arch/arm/boot/compressed/目录下的文件head.o 、piggy.o 、misc.o链接生成arch/arm/boot/compressed/vmlinux,这个vmlinux是经过压缩且含有自解压代码的内核, 大小约1.5MB; 命 令:arm-linux-gnu-ld zreladdr=0x30008000 params_phys=0x30000100 -T arch/arm/boot/compressed/vmlinux.lds a rch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/misc.o -o arch/arm /boot/compressed/vmlinux

WIN7下QQ打不开,应用程序无法正常启动(0xc0150002)

WIN7下QQ打不开,应用程序无法正常启动(0xc0150002)(2010-07-19 09:10:17)转载 标签:it WIN7下QQ打不开,应用程序无法正常启动(0xc0150002) 有的网友在装完WIN7后,会立即安装QQ,但是在装完QQ后才发现,QQ根本打不开,出现:应用程序无法正常启动(0xc0150002)的错误信息,笔者也遇到了这个情况,不管是QQ2010还是QQ2009,均出现上述错误提示!可尝试以下2种方法: 1:开始菜单-重启系统,不要按机箱上的重启按钮强制重启。重启完毕后再打开QQ看看。 ps:在重启的时候,屏幕会显示正在安装已下载的更新,在这些更新中,可能会包含下面链接的更新,也就是支持QQ运行的VC库,等我们安装完这个更新并重启后,QQ就能打开了! 2:如果上述方法仍未解决,点击下面的链接下载VC库,下载安装后,再重启系统就能打开QQ了! https://www.360docs.net/doc/ff2826441.html,/s/blog_5d2ced280100isvs.html 有一位网友给笔者来信问道:是不是一定要让电脑联网完成更新之后,才可装其它软件? 其实这个担心也是有一定道理的,比如某些软件需要VC库和.Net的支持,但是像这样的需要安装系统的某一个更新才能使用的软件毕竟还是少数,所以大家在装完WIN7后,可以立即安装其他软件!! 强烈推荐:优盘已不再中毒,三步打造彻底防毒的优盘 https://www.360docs.net/doc/ff2826441.html,/s/blog_5d2ced280100k6f0.html 桌面图标不能删除的解决方法 https://www.360docs.net/doc/ff2826441.html,/s/blog_5d2ced280100itle.html

应用程序无法正常启动0xc0000005解决方法

应用程序无法正常启动0xc0000005解决方法 最近老有人文关于应用程序无法正常启动的问题,引起问题的原因可能有很多,仅列一下解决方案: 1 内存条坏了更换内存条 2 双内存不兼容使用同品牌的内存或只要一条内存 3 内存质量问题更换内存条 4 散热问题加强机箱内部的散热 5 内存和主板没插好或其他硬件不兼容重插内存或换个插槽 6 硬件有问题更换硬盘 7 驱动问题重装驱动,如果是新系统,应先安装主板驱动 8 软件损坏重装软件 9 软件有BUG 打补丁或更新到最新版本 10 软件和系统不兼容给软件打上补丁或是试试系统的兼容模式 11 软件和软件之间有冲突如果最近安装了什么新软件,卸载了试试 12 软件要使用其他相关的软件有问题重装相关软件,比如播放某一格式的文件时出错,可能是这个文件的解码器有问题 13 病毒问题杀毒 14 杀毒软件与系统或软件相冲突由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试 15 系统本身有问题有时候操作系统本身也会有BUG,要注意安装官方发行的更新程序,象SP的补丁,最好打上.如果还不行,重装系统,或更换其他版本的系统。在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。另外,如果你用的是ATI 显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。〔微软NET.Framework升级到1.1版应该没问题了〕

基于Grub 2.00的x86内核引导流程

基于Grub 2.00的x86内核引导流程--源代码情景分析目前Linux中使用最广泛的的bootloader是Grub(GRand Unified Bootloader)。如今Grub 2已经替换了早期的0.9x系列版本的Grub Legacy,而且Grub Legacy已经不再开发维护。虽然Grub 2从名字上看像是Grub的升级版,但其源代码实际被完全重构了。现从源代码角度分析基于Grub 2.00的x86内核引导流程。 1. 磁盘简介 由于在Grub进行内核引导的过程中涉及到磁盘操作,先简介一下磁盘为后续引导流程分析作铺垫。磁盘三要素:由所有盘面上相同半径的同心圆形磁道(Track)组成的柱面(Cylinder), 磁头(Head), 扇区(Sector)之间的关系如下图所示: 对于磁盘,其最小存储单位为扇区(Sector),在相当长的一段时间里,扇区的大小固定在512 bytes[1]. 但是从2009年开始出现扇区大小为4096

bytes的磁盘,即Advanced Format disks。 对于扇区的编址,早期的方案是CHS编址(Cylinder-Head-Sector),即用数据元组CHS tuples (c,h,s)的形式表示一个扇区的位置,但是在CHS编址时,扇区号是从1开始的,没有扇区0,但磁头和柱面编号都是从0开始的,即CHS编址起始于地址(0,0,1)。另外一种编址方案是LBA编址(Logical Block Addressing),把整个磁盘的所有扇区资源统一分配序号。在2003年发布的ATA-6标准中,LBA采用48-bit地址。 CHS数据元组(c, h, s)根据如下公式转换成相应的LBA逻辑地址: LBA= (c×Nheads + h)×Nsectors + (s ? 1) 其中:Nheads是硬盘中的磁头数目,Nsectors是每条磁道上可以划分的最大的扇区数目。上面的公式意味着LBA对扇区的编址是从0开始的,所以在Grub 的boot.S源代码中,当磁盘不支持LBA模式,代码执行流回退至CHS模式继续进行处理时,会将编址的起始地址调整成从1开始。 [1]Floppydisks and controllers use physical sector sizes of 128, 256, 512 and 1024 bytes(e.g., PC/AX), whereby formats with 512 bytes per physical sector becamedominant in the 1980s. 磁盘在使用过程中总是会涉及到分区方案,其中一个典型的四分区MBR磁盘结构如下所示:

LINUX启动流程详解

2008-11-27 11:04:06 收藏 | 打印 | 投票(7) | 评论(1) | 阅读(30264) ◇字体:[大中小]linux系统引导过程简介 首先,主板的BIOS会读取硬盘的主引导记录(MBR),MBR中存放的是一段很小的程序,他的功能是从硬盘读取操作系统核心文件并运行,因为这个小程序太小了,因此通常这个小程序不具备直接引导系统内核的能力,他先去引导另一个稍微大一点的小程序,再由这个大一点的小程序去引导系统内核.在linux系统中这样的小程序有LILO和GRUB.在这个项目中,我决定用LILO来做系统引导程序.在软盘上启动linux系统的过程和在硬盘上启动的过程相似. Linux系统内核被引导程序装入内核并运行后,linux内核会检测系统中的各种硬件.并做好各种硬件的初始化工作,使他们在系统正式运行后能正常工作.之后内核做的最后一个工作是运行 /sbin下的init程序,init是英文单词initialization(初始化)的简称,init程序的工作是读取/etc/inittab文件中描述的指令,对系统的各种软硬件环境做最初化设定.最后运行mingetty等待用户输入用户名登录系统.所有的工作就这么简单,虽然linux启动的时候有很多内容,看上去十分高深,但是都不过是对这个过程的扩充.明白了这个道理,你可以写一些脚本程序让他在系统启动的特定时间运行完成任务.事实上系统内核并不关心/sbin下的init是不是真的init,只要是放 在/sbin下名叫init的可执行程序他都可以执行. Red Hat Enterprise Linux在电脑的启动阶段,一共经历以下两个阶段: 1.启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。 2.执行程序init.(系统初始化).装入内核并初始化设备后,运行init程序。init程序处理所有程序的启动,包括重要系统精灵程序和其它指定在启动时装入的软件。 开机---BIOS自检---载入启动程序---加载内核---启动init服务---加载/etc/inittab---Run level---rc.sysinit---rc--- mingetty---rc.local 一.BIOS自检 当电脑开机的时候,电脑会进入BIOS,在PC机中引导LINUX是从BIOS中的地址0xFFFF0处开始的.BIOS的第一个步骤是加电自检,即所谓的POST(Power On Self Test),BIOS的第二个步骤是进行本地设备的枚举和初始化,侦测电脑周边配套设备是否工作正常,如cpu的类型,速度,缓存等;主板类型,内存的速度,容量,硬盘的大小,类型和工作模式,风扇速度等,主要是为了检查这些设备在开机的时候是否能通过检测,说明电脑可以正常的工作.BIOS由两部分组成:POST代码和运行时的服务.当POST完成之后,它被从内存中清理了出来,但是,BOIS运行时服务依然保留在内存中,目标操作系统可以使用这些服务 二.载入启动程序 BIOS自检完成后,BIOS会根据用户设置的启动顺序来由哪个设备启动电脑的操作系统,设备需是处于活动状态并且可以引导的,(引导设备可以是软盘,CD-ROM,硬盘上的某个分区,网络上的某个设备,甚至是USB闪存),对于linux这个设备一般是硬盘.也就是进入硬盘的MBR区域,(master boot record,位于磁盘上的第一个扇区中,0道0柱面1扇区),这个区域中有512个字节的大小,其中前446个字节中保存的就是启动程 序,(446个字节包含可执行代码和错误消息文本,接下来的64个字节是分区表,其中4个分区的记录,每个记录的大小是16个字节,MBR以两个特殊数字的字节0xAA55结束,这个数字用来进行MBR的有效性检查,当MBR被加载到RAM中之后,BIOS就会将控制权交给MBR),然后由这个小程序来加载存储在其他位置的操作系统,也就是启动grub程序.(grub不像lilo一样使用裸扇区,而是可以从ext2或ext3文件系统中加 载LINUX内核). 要看MBR的内容,请使用下面的命令 #从/dev/sda上读取前512个字节的内容,并将其写入mbr.bin文件中 [root@localhost ~]# dd if=/dev/sda of=mbr.bin bs=512 count=1 #以十六进制和ASCII码格式打印这个二进制文件的内容 [root@localhost pam.d]# od -xa mbr.bin grub程序的这个配置文件是保存在:/boot/grub/grub.conf这个文件中,如果修改这个文件后,设置会立刻生效.

SD卡引导Linux内核在ARM11中的实现

Jishu Tantao ◆技术探讨 1引言 传统的ARM嵌入式系统大多采用Nor Flash或Nand Flash这2种非易失闪存来存储程序和数据并且引导和启动系统的。而本文采用的是已经普遍应用于数字产品的SD存储卡。 SD卡较传统的Flash具有明显的优势: 首先,价格便宜,随着SD卡技术的发展和SD卡生产厂商的不断增加,SD卡的价格不断下降,已经和Flash的价格相差无几。 其次,存储容量大,尤其是SDHC卡的出现,目前已经能够达到32GB,并且增大趋势日益明显。再次,读写方便,我们可以通过读卡器读写SD卡,比起仿真价格便宜,读写速度快。 最后,易插拔、更换和携带方便。 从上述分析可知,SD卡在今后ARM嵌入式的应用会逐渐增加,且很多厂家的芯片已经外扩了SD卡接口。 2系统组成及启动方式 ARM-Linux嵌入式系统包括硬件平台和软件平台2大部分。我个人在学习和研究ARM-Linux嵌入式系统时使用的平台如下:硬件平台采用Samsung公司的S3C6410处理器、128M的mobile SDRAM、2G的SD卡及其他外部接口设备。软件平台系统包括引导程序(u-boot)、嵌入式操作系统内核(Kernel)、文件系统(File System)。由于Linux的开源和使用的广泛性,我选择了Linux内核。S3C6410是一种兼容性比较好的ARM11处理器。S3C6410的SD/MMC接口模块可以兼容MMC卡4.2协议和SD卡2.0协议。这样目前市场上流行的SD/MMC卡和SDHC卡基本就都可以兼容使用了。 S3C6410启动模式有多种方式,分别由XSELNAND,OM[4: 0],GNP[15:13]管脚控制。图1是系统引导的框图。系统引导的整个过程是先通过OM管脚确定系统通过什么器件启动。当把OM[4:1]设置为1111时,表明系统从iROM启动。iROM启动后要把外围设备的代码拷贝到Stepping Stone中运行。此时GPN[15:13]用于识别设备的类型。当GPN[15:13]设置为111时,即从SD/MMC(CH1)设备中拷贝代码。Stepping Stone执行结束后要把BL2中代码拷贝到SDRAM中,继续执行BL2中的程序。 3SD卡引导Linux内核过程 3.1BL1的引导 整个系统上电或复位后,PC指针指向iROM的起始地址,即0x08000000位置,此段程序称为BL0,大小为32kB。这段代码是Samsung公司在做芯片的时候固化到芯片中去的。BL0执行最后的 SD卡引导Linux内核在ARM11中的实现 孙伟忠吴庆洪 (辽宁科技大学,辽宁鞍山114044) 摘要:对目前非常流行的ARM-Linux嵌入式系统的组成进行了介绍,并针对Samsung公司的S3C6410处理器分析了ARM-Linux嵌入式系统从SD卡启动系统的过程,突出该系统从SD卡引导的技术难点,同时针对当下流行的Linux内核进行引导并取得成功。 关键词:ARM;Linux;S3C6410;SD卡 41 机电信息2010年第24期总第270期

应用程序正常初始化0xc0000142失败

“应用程序正常初始化0xc失败,请单击确定,终止应用程序”解决办法 偶尔出现无所谓 我所熟悉的0X该内存不能为read的解决方法 硬件: 电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。 二、如果都没有,那就从软件方面排除故障了。 原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,

电脑启动过程详解|计算机硬件的引导过程

电脑启动过程 本文就来介绍一下从打开电源到出现桌面之前,计算机到底都干了些什么事情。 第一阶段:计算机硬件的引导过程 首先让我们来了解一些基本概念。第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是计算机硬件启动的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。 第二个基本概念是内存的地址,我们的机器中一般安装有32MB、64MB内存,甚至2G 或者4G等等。这些内存的每一个字节都被赋予了一个地址,以便CPU访问内存。32MB的地址范围用十六进制数表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB内存非常特殊,因为最初的8086处理器能够访问的内存最大只有1MB,这1MB的低端640KB被称为基本内存,而A0000H~BFFFFH要保留给显示卡的显存使用,C0000H~FFFFFH则被保留给BIOS使用,其中系统BIOS一般占用了最后的64KB或更多一点的空间,显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的BIOS在C8000H~CBFFFH处。 第一步:当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMIBIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。 第二步:系统BIOS的启动代码首先要做的事情就是进行POST(Power-On SelfTest,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,我们几乎无法感觉到它的存在,POST结束之后就会调用其它代码来进行更完整的硬件检测。 第三步:接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

解决explorer.exe 应用程序错误,内存不能为“read”或“written”

解决explorer.exe 应用程序错误,内存不能为“read”或“written” 内存不能为“read”或“written”的解决方案 有些人运行飚车程序的时候会弹出该内存不能为“read”的错误提示。希望以下文章能对大家有所帮助。 使用Windows操作系统的人有时会遇到这样的错误信息,运行某些程序的时候,有时会出现内存错误的提示,然后该程序会自动关闭或点击后关闭,严重的会无法关闭。 “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。 “0x????????”指令引用的“0x????????”内存,该内存不能为“written”。 不知你出现过类似这样的故障吗?(0x后面内容有可能不一样。) 散一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。 1、微软IE缓冲溢出漏洞引起 2、内存或虚拟内存地址使用冲突造成程序的运行需要分配一定的内存地址给程序使用,当程序结束时释放留出空间让给新的程序使用,win是多任务的系统有时前程序未结束又有新的任务开始到底要多少内存或虚拟内存来保证我们同时运行的工作任务呢?也许win在这个问题上没弄好,所以有此错误常常发生,一般运行大型软件或多媒体后出现这种情况 3、劣质内存条也会出现这个问题一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。

Linux内核启动过程分析

1、Linux内核启动协议 阅读文档\linux-2.6.35\Documentation\x86\boot.txt 传统支持Image和zImage内核的启动装载内存布局(2.4以前的内核装载就是这样的布局): | | 0A0000 +------------------------+ | Reserved for BIOS | Do not use. Reserved for BIOS EBDA. 09A000 +------------------------+ | Command line | | Stack/heap | For use by the kernel real-mode code. 098000 +------------------------+ | Kernel setup | The kernel real-mode code. 090200 +------------------------+ | Kernel boot sector | The kernel legacy boot sector. 090000 +------------------------+ | Protected-mode kernel | The bulk of the kernel image. 010000 +------------------------+ | Boot loader | <- Boot sector entry point 0000:7C00 001000 +------------------------+ | Reserved for MBR/BIOS | 000800 +------------------------+ | Typically used by MBR | 000600 +------------------------+ | BIOS use only | 000000 +------------------------+ 当使用bzImage时,保护模式的内核会被重定位到0x1000000(高端内存),内核实模式的代码(boot sector,setup和stack/heap)会被编译成可重定位到0x100000与低端内存底端之间的任何地址处。不幸的是,在2.00和2.01版的引导协议中,0x90000+的内存区域仍然被使用在内核的内部。2.02版的引导协议解决了这个问题。boot loader应该使BIOS 的12h中断调用来检查低端内存中还有多少内存可用。 人们都希望“内存上限”,即boot loader触及的低端内存最高处的指针,尽可能地低,因为一些新的BIOS开始分配一些相当大的内存,所谓的扩展BIOS数据域,几乎快接近低端内存的最高处了。 不幸的是,如果BIOS 12h中断报告说内存的数量太小了,则boot loader除了报告一个错误给用户外,什么也不会做。因此,boot loader应该被设计成占用尽可能少的低端内存。对zImage和以前的bzImage,这要求数据能被写到x090000段,boot loader应该确保不会使用0x9A000指针以上的内存;很多BIOS在这个指针以上会终止。 对一个引导协议>=2.02的现代bzImage内核,其内存布局使用以下格式:| Protected-mode kernel | 100000 +------------------------+ | I/O memory hole | 0A0000 +------------------------+ | Reserved for BIOS | Leave as much as possible unused ~ ~

相关文档
最新文档