bootloader.doc_第1页
bootloader.doc_第2页
bootloader.doc_第3页
bootloader.doc_第4页
bootloader.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引导程序bootloaderl 在操作系统内核或用户应用程序之前运行的一段小程序;通过这个程序,可以初始化硬件设备、建立内存空间的映射图,从而将目标系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序运行准备好正确的环境l 初始化硬件,特别是内存控制器l 提供linux内核的启动参数l 启动linux内核l 存储在targer的ROM或flash中(地址为0),包含第一条可执行指令系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。比如ARM是从地址0x00000000取第一条指令l 初始化处理器以及外设的硬件资源配置,CPU片内和片外设备,如SDRAMl 初始化I/O芯片,可能有的设备有:串口,报告BOOTLOADER的结果(成功/失败)。网络或FLASH接口,引导操作系统串口通讯是最简单也是最廉价的一种双机通讯设备,所以在Bootloader中主机和目标机之间常常通过串口建立连接。Bootloader在执行时会通过串口来进行I/O,比如:输出打印信息到串口,从串口获取用户控制字符等。当然为了提高效率,也可以网口来建立通讯,这样在Bootloader中就需要启用网口的驱动l 执行系统自检,报告检测结果l 通过用户命令行提供特定应用程序l 使用TFTP协议从网口接收,或者xmodem协议从串口接收操作系统镜像文件到RAM,将文件烧录到FLASH中,重启后负责找到镜像,解压缩到RAM中,并跳转到解压位置处执行,或直接跳转到RAM处执行该镜像l 多阶段的Bootloader能提供更为复杂的功能,以便更好的可移植性。从固态存储设备上(如flash)启动的Bootloader大多都是2阶段的启动过程。l 两种加载模式 启动加载模式:也称为自主模式(Autonomous),即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入Bootloader的正常工作模式 下载模式:在这种模式下目标机上的Bootloader将通过串口连接或网络连接等从主机上下载文件,比如:下载应用程序、数据文件、内核映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机的固态存储设备中。l Bootloader生命周期 初始化硬件 设置UART 设置网口 检测并初始化存储器 设置启动参数 内核硬件信息 通信波特率 跳转到linux kernel的首地址 消亡l Bootloader的功能 烧写FLASH 烧写内核 烧写文件系统 使用JTAG 口或其他bootloadermonitordescriptionX86ARMPowerPCLILONoMain disk bootloader for linuxyesNoNoGRUBNoGnus successor to LILOYesNoNoLoadinNoLoads linux from DOSYesNoNOBLOBNoLoader from the LART hardware projectNoYesNoU-bootYesUniversal loaderYesYesYesredbootYeseCos-based loaderYesYesYesLILOLILO(LInux LOader),LILO代表Linux加载程序。LILO是一个在系统启动时运行的程序,它允许选择用于引导计算机的操作系统。可以用LILO引导几个不同的操作系统,如Linux和MSDOS。用LILO可以定义一个默认的要引导的操作系统和一个引导该操作系统的延迟时间。例如,如果在计算机上有MSDOS和Linux,可以配置LILO引导二者中的任何一个,然后告诉LILO,如果30秒后没有键盘介入,就引导二者中的MSDOS;如果在30秒之内,键盘的Ctrl、Alt、Shift、Caps Lock中的任一键按下,就会出现boot:,此时按下Tab键,能获得LILO引导的操作系统的清单。配置LILO时,可以指定所有这些操作。大多数新电脑都为Microsoft Windows或Mac OS的一些版本安装了引导加载程序。如果计算机使用Linux操作系统,就必须安装一个特殊的引导加载程序。LILO在那些将Linux作为他们主要或唯一的操作系统的用户间很流行。当以通常的方式安装LILO的电脑启动或重新启动时,基本输入输出系统(BIOS)就会进行一些初步的测试,然后转移控制LILO所在的主启动记录(MBR)。LILO的主要优点是,它可以快速启动安装在主启动记录中的Linux操作系统。LILO的主要局限是,并不是所有的电脑都能容忍修改主启动记录(MBR)。在这种情况下,可以用其他的方法来使用LILO,但这需要花费较长的时间。有几种引导加载(boot loader)程序可以用来启动Linux系统,如LOADLIN(LOAD LINux)和GRUB(GRand Unified Bootloader)。BLOB的含义BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。U-Boot1 U-Boot简介U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk以下简称W.D本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。选择U-Boot的理由: 开放源码; 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS; 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; 较高的可靠性和稳定性; 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等; 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等; 较为丰富的开发调试文档与强大的网络技术支持;2 U-Boot主要目录结构* board 目标板相关文件,主要包含SDRAM、FLASH驱动;* common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;* cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;* driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)* doc U-Boot的说明文档;* examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c;* include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;* lib_xxx 处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件;* net 与网络功能相关的文件目录,如bootp,nfs,tftp;* post 上电自检文件目录。尚有待于进一步完善;* rtc RTC驱动程序;* tools 用于创建U-Boot S-RECORD和BIN镜像文件的工具;3 U-Boot支持的主要功能U-Boot可支持的主要功能列表* 系统引导 支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统* 支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;* 基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤* Linux支持最为强劲;* 支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;* CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好;* 设备驱动 串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;* 上电自检功能 SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;* 特殊功能 XIP内核引导;RedbootRedboot (Red Hat Embedded Debug and Bootstrap)是Red Hat公司开发的一个独立运行在嵌入式系统上的BootLoader程序,是目前比较流行的一个功能、可移植性好的BootLoader。Redboot是一个采用eCos开发环境开发的应用程序,并采用了eCos的硬件抽象层作为基础,但它完全可以摆脱eCos环境运行,可以用来引导任何其他的嵌入式操作系统,如Linux、Windows CE等。Redboot除了一般BootLoader的硬件初始化和引导内核的功能外,还支持以下功能:1.支持引导脚本,可方便启动应用程序或嵌入式操作系统内核。2.提供完整的命令行接口,方便用户进行各种系统操作。3.支持串行通信协议和网络通信协议。4.支持GDB调试,内嵌GDB stub。5.支持FLASH映像文件系统。6.通过BOOTP协议支持网络引导,也可以配置静态IP。GRUBGNU GRUB(简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。一.了解一下x86的引导过程 二.grub下的设备名称 三.GRUB的根文件系统 四.grub的接口 1. (一)菜单接口 2. (二)命令接口五.Menu.lst的命令 六.例子 七.用WinGrub来引导Linux安装 1. 1.安装wingrub 2. 2.在LINUX下安装grub 3. 13.软件使用 4. 4.编辑menu.lst一.了解一下x86的引导过程 二.grub下的设备名称 三.GRUB的根文件系统 四.grub的接口 1. (一)菜单接口 2. (二)命令接口五.Menu.lst的命令 六.例子 七.用WinGrub来引导Linux安装 1. 1.安装wingrub 2. 2.在LINUX下安装grub 3. 13.软件使用 4. 4.编辑menu.lst一.了解一下x86的引导过程由硬盘启动时,BIOS通常是转向第一块硬盘最初的几个扇区,即主引导记录。装载GRUB和操作系统的过程,包括以下几个操作步骤:1、装载主引导记录。基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。 2、装载Grub。这第二引导装载程序实际上是引出更高级的功能,以允许用户装载入一个特定的操作系统。3、装载在一个特定分区上的操作系统,如linux内核。GRUB把机器的控制权移交给操作系统。不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。 二.grub下的设备名称硬盘都是用hd开始。软盘用fd开头。命名和linux不大一样。是从0算起。(hd0,0)。表示C盘。(hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,x、y都是从0开始计数的,x表示硬盘号,y表示分区号。由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。 光盘用(cd)表示,第一软驱用(fd0)表示。文件的表示:( , ) /path/to/file 三.GRUB的根文件系统一些用户常困惑于GRUB中根文件系统(root filesystem)这一术语的用法。GRUB的根文件系统与Linux的根文件系统是没有关系的! 四.grub的接口当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。 (一)菜单接口在菜单接口上,按e键,对高亮菜单项中的命令进行编辑。按c键载入一个命令行接口。 添加(加在当前行后面,用o键;加在当前行前,用0),编辑(用e键),删除(用d键)。在所有的改变都完成后,用键来执行这些命令,并引导操作系统。Esc键来放弃命令行接口 (二)命令接口以下是几个常用命令:boot - 引导先前已经被指定并载入的操作系统或链式装载程序。 chainloader - 将指定的文件作为一个链式装载程序载入。为了获取在一个指定分区第一 扇区内的文件,使用+1作为文件名。 displaymem - 显示当前内存的使用情况,这个信息是基于BIOS的。这个命令有助于确定系统在引导前有多少内存。 initrd - 使用户能够指定一个在引导时可用的初始RAM盘。当内核为了完全引导而需要某些模块时,这是必需的。 install p - 安装GRUB到系统的主引导记录。这个命令允许系统重启时出现GRUB接口。 (警告:install命令将覆盖主引导扇区中的其他信息。如果命令被执行,那么除了GRUB信息之外的其他用于引导其他操作系统的信息都将丢失。在执行这条命令前,确定你对它有正确的了解。)kernel - 当使用直接载入方式引导操作系统时,kernel命令指定内核从GRUB的根文件系统中载入 。比如 kernel /vmlinuz root=/dev/hda5Vmlinuz是内核。它从GRUB的根文件系统载入的,如(hd0,0)。同时,后面一个选项被传给内核。它指出当Linux内核载入时,内核的根文件系统应该是位于hda5,第一个IDE硬盘的第五个分区。 五.Menu.lst的命令color - 设定在菜单中使用的颜色,一种是作为前景色,一种作为背景色。可以简单地使用颜色名称,如red/black。比如: color red/black green/blue default - 默认项目的标题名称。如果菜单接口超时,那它将被载入。 fallback - 当这个命令被使用时,如果第一次尝试失败,那么这个项目的标题名称将被使用。 hiddenmenu - 这个命令被使用时,它不显示GRUB菜单接口,在超时时间过期后载入默认项。用户通过按Esc键,可以看到标准的GRUB菜单。 timeout - 这个命令设定了在GRUB载入由default命令指定的项目前的时间间隔,以秒为单位。 splashimage - 它指定在GRUB引导时所使用的屏幕图像的位置。 title - 设定用来装载一个操作系统的一组特定命令的标题。 字符#用来在菜单配置文件放置注释。 张翔johnvikey 六.例子这是个非常基本的用于引导Red Hat Linux或Microsoft Windows 2000的GRUB菜单配置文件可能如下所示: default=linux timeout=10 color=green/black light-gray/blue # section to load linux title linux root (hd0,1) 这里制定了 grub的根。并且挂载。kernel /vmlinuz root=/dev/hda5 内核是grub根下的vmlinuz。并且内核载入后,内核的根是在/dev/hda5boot # section to load Windows 2000 title windows rootnoverify (hd0,0) rootnoverify就是指定根,但是不要挂载。chainloader +1 使用(hd0,0)的第一扇区来引导。 七.用WinGrub来引导Linux安装 1.安装wingrub在安装软件到机器中时,就直接按它默认的安装,下一步、下一步就好了在安装过程中会出现一个Base Setup的提示窗口,ChooseDrive即是grub配置文件的存放位置,一定要选一个(一般选择第一个,提醒你注意软件的标题栏,不同的选择会显 示的不一样),如果你选择cancel,则不会有menu.lst 文件产生(这个文件很重要),Base Setup提示窗口下面的copy stage files和keep old directory不点击也可以,它们的区别就是前者把grub文件夹中的文件和menu.lst一起放在新产生的grub文件夹下,而后者新产生的 grub文件夹中只有menu.lst ,如果不点击则只会产生只含menu.lst文件的grub文件夹,都点击则是copy stage files那种情况。 2.在LINUX下安装grubGRUB的一个重要的特性是安装它不需依附一个操作系统;但是,这种安装需要一个Linux副本。由于单独工作,GRUB实质上是一个微型系统,通过链式启动的方式,它可以启动所有安装的主流操作系统。与LILO不同,修改GRUB的配置文件后,不必把GRUB重新安装到MBR或者某个分区中。在Linux中,“grub-install”命令是用来把GRUB的步骤1安装到MBR或者分区中的。GRUB的配置文件、步骤2以及其它文件必须安装到某个可用的分区中。如果这些文件或者分区不可用,步骤1将把用户留在命令行界面。GRUB配置文件的文件名和位置随系统的不同而不同;如在Debian和OpenSUSE中,这个文件为/boot/grub/menu.lst, 而在Fedora和Gentoo中为/boot/grub/grub.conf。Fedora提供了一个从/etc/grub.conf到/boot/grub/grub.conf的符号链接。除了硬盘外,GRUB也可安装到光盘、软盘和闪存盘等移动介质中,这样就可以带起一台无法从硬盘启动的系统。 13.软件使用打开wingrub程序,选择 tools菜单,然后点击Install grub ,弹出一个对话框;如下图所示: 这里面有两个方法供选择; A) 直接单击Boot From Partion ,然后单击右边的下拉菜单;选择要把inux系统安装在哪个分区中,再单击最下边install按钮。在下拉列表框中,如果看到(hd0,0)或者(hd0,1)等,则选(hd0,0);如果只看到(hd0,1),说明计算机硬盘的第一个分区是NTFS的文件格式,如果看不到什么下拉列表框,就使用下面的办法,B)选择Systerm Device ,在右边的下拉列表框中,选C:然后再选中BOOT FROM 下的BOOT.INI 单选按钮,在Title 中输入mygrub ;最后在 Time OUT 中输入;单击Install按钮,这样grub就安装好了。grub的配置文件在c:grub中(如果你的不是,则可以从wingrub的标题栏看出),配置文件名为menu.lst ,这个配置文件起到决定性作用;所以一定要编辑好。A和B还是有一些区别,A的方法是开机就能看到所有在menul.lst中的系统;而B,则必须按一下刚才所填写的mygrub ,然后才能看到在menu.lst所提到的系统。【个人首选B项,因为A安装的grub会覆盖掉原有的启动引导程序,即重写了MBR,而B则是把原有的引导程序修改了,加了一个启动项。如果你想安 装两个系统,Windows为主,Linux为副,那么B就可以更好的实现。当然,在安装Linux时也要注意安装程序中有一个“配置高级引导装载程序选 项”就是对grub的安装位置进行设置。】配置启动文件 运行wingrub,单击菜单中的tools菜单选择artitionist(分区列表),在这里能了解到硬盘的分区情况,比如可能看到 的分区是(hd0,)等,要把inux的光盘映像文件保存在fat32分区中;通过这个能知道把光盘存放到(hd,)了,也能知 道(hd,)所对应的indows分区是,是,还是。 配置启动文件的过程如下:1先找一个FAT 32的分区,把下载下来的ISO直接放到分区的下面,不要放在任何目录中,这个分区里也不要存放其他文件。 2在这个分区中,再新建一个文件夹,命名为linux,从下载的第一张inux系统安装ISO文件isolinux中抽取 vmlinuz 和 initrd.img 两个文件,放到linux目录中: 注意只放这两个文件,不要再存放其他内容,如果放进其他的内容,有可能出现安装程序中途退出的情况。注意:抽取文件可以使用in软件,另外,输入文件夹时文件夹名是小写;在输入menu.lst 文件名时,要用半角英文,标点之类的全是半角;title root kernel initrd 全是小写的英文;如果文件夹或文件名输入出错,在安装时安装程序会提示找不到文件。 4.编辑menu.lst当打开menul.lst 时,可能里面已经有内容了,比如有个 timeout 10 ,如果没有则可以自己写上(这是开机等待进入系统的时间,为时秒)。title WindowsXP # 计算机中已经安装了windows系统 ,用来启动windows的,这四行代码如下所示。title WindowsXProot (hd0,0)makeactivechainloader +1menu.lst 文件的配置引导说明,通过menu.lst ,可以配置 Linux的启动和引导:也可以引导已经安装好的Linux系统。语法结构有以下的四条,举例如下:总共有两个书写格式,任选其一;格式一:最简单:title fc4installroot (hd0,1)kernel (hd0,1)/linux/vmlinuzinitrd (hd0,1)/linux/initrd.imgtitle 行是在在开机时所看到的菜单,现在显示的就是 fc4install ,它要加在 title 的后面。title是必须保留的,它是grub的语法的标签,可以在title 后面写入想要添加的东西,这是可以自己定义的,比如 title fc4setup也是可以的。root (hd0,1) 行使用root开头,然后加一个空格,至于用户把vmlinuz和initrd.img 放在哪个分区了,可以打开 wingrub,单击tools菜单选择partioinlist (分区列表),在打开的对话框中查到。kernel 命令行以kernel 开头,然后加一个空格,并在其后给定vmlinuz文件存放路径,这个命令行的作用是告诉计算机将使用(hd0,1)分区下的linux目录中的kernel 内核来启动;initrd 行和 kernel 行类似;主要用于指明安装的文件放在哪个分区和哪个目录中,即在该命令后指定文件的安装目录。格式二:比较麻烦一点:理解着看吧;title fc4installroot (hd0,1)kernel /linux/vmlinuz ro root=/dev/hda2initrd /linux/initrd.imgtitle 这行就是我们在开机时,所看到的菜单 ,显示的就是 FC4install ,要加在 title 的后面,title是必须保留的,是grub的语法的标签 ,我们可以在title 后面写我们想要加的东西,这是自己可以定义的,比如 title fc4setup也是可以的;root 这行,在本例中是 root (hd0,1),这行就是我们打开 wingrub,点tools =partioinlist (分区列表) 中查到的;我们通过这个知道我们把解压出来的 vmlinuz和initrd.img 所处的分区和路径;比如我的机器,我查到的是 (hd0,1),对应的Windows FAT 32分区是D,事实上,我的确把四个光盘映象都放在了 (hd0,1),也就是win中所看到的D盘; 并且我同样也把提取出来vmlinuz 和initrd.img 放在了(hd0,1)中的linux目录中; 不知道自己存放提取出来的内容放在哪个分区了,就用 打开 wingrub,点tools =partioinlist (分区列表) 中查看;kernel 这行;注意在 kernel后面有个空格,接着写 vmlinuz所处的位置 ,在哪里呢?在 /dev/hda2,这个/dev/hda2是怎么来的?是由(hd0,1)而来的,如果您的显示的是 (hd0,2),那root=/dev/hda3,明白了吧,就是(hdX,Y)中的Y+1=Z,就是/dev/hdaZ ,再举一例:比如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论