当前位置:首页 » 网页前端 » bootloader合并脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

bootloader合并脚本

发布时间: 2022-06-11 02:58:29

‘壹’ 求教重新安装linux bootloader grub的命令。

首先用 rpm -q grub 看看 GRUB 是否已安装。如果尚未安装,可以用 urpmi grub 完成安装。

然后,以‘root’身份运行命令:

grub-install /dev/[device]

‘device’是要用的启动扇区的设备名。大多数情况下是‘hda’,也就是 MBR ( the master boot record of the first IDE hard drive)。

接下来,您将看到的信息类似于:

[some text]
(fd0) /dev/fd0
(hd0) /dev/hda

位于第一个控制器(controller)的软驱,和第一个 IDE 主通道(master channel)上的硬盘。当然,在您的机器下显示可能有所不同。第一部分标识的是 GRUB 的语法,其次是该设备在 Linux 下的表示。GRUB 不区分 SCSI 和 IDE 硬盘,只要将其启动顺序放入帐号就可以了。用一块 SCSI 硬盘的系统的条目如下:

(fd0) /dev/fd0
(hd0) /dev/sda

如果系统有 SCSI 和 IDE 硬盘,且 BIOS 设置为从 SCSI 硬盘启动的话,就是:

(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/hda

如果您您改变了硬盘的启动顺序,那就得修改‘/boot/grub/devices.map’。

万一‘grub-install’脚本出错,您可以用 GRUB shell 来安装启动扇区:

grub
[some text]
grub> root (hdw,x)
[some text]
grub> setup (hdy,z)

其中,‘w’、‘x’、‘y’和‘z’都是数字。‘w’标识硬盘,‘x’是目录‘/boot/grub’所在的分区,‘y’是启动扇区所在的硬盘,如果您不想将启动扇区安装到‘y’的 MBR ,就需要‘z’。请注意:GRUB 以‘0’开始计数。
例子一、将 GRUB 安装到第一块 IDE 硬盘的 MBR 上。‘/boot’目录在相同硬盘上:‘/dev/hda3’。

grub> root (hd0,2)
grub> setup (hd0)

例子二、将 GRUB 安装到根分区的启动扇区上。根分区在后于 IDE 硬盘启动的 SCSI 硬盘上:‘/dev/sda1’。

grub> root (hd1,0)
grub> setup (hd1,0)

基本上,就是这样。重启后,您将看到 grub> 提示符。键入 help ,将列出所有的可用命令(GRUB 提供了一个全功能的 boot shell ,有命令行历史记录和自动补齐),而 help [command] 将显示指定命令的帮助说明。

如何启动 Linux 呢?显然,您得告诉 GRUB 根分区和内核在哪里。然后您得添加一个参数,用来告诉 Linux 的 init哪里去找内核(情记住:GRUB 和 Linux 对分区的表示语法不同!)。假设根分区是 IDE 硬盘上的第一个主分区,用 kernel 命令就是:

kernel (hd0,0)/boot/vmlinuz root=/dev/hda1

是不是记不清内核所在的分区?很简单,用 find /boot/vmlinuz 就可以了。现在键入 boot ,再按 ENTER ,您的系统就可以启动了。

‘贰’ AVR单片机如何合并bootloader程序和Flash程序为一个HEX文件,我想同时烧写进单片机。用什么方法

把bootloader和Flash都转换为BIN文件格式,然后把Bootloader放在flash文件后面第120K开始的位置。然后把这合并的文件少写进单片机。

‘叁’ reboot bootloader是什么意思

reboot bootloader 中文译为:引导引导程序。

REBOOT BOOTLOADER :重启手机进入BootLoader模式人们通常说的bootloader一般特指在操作系统下:

  1. 在操作系统运行之前运行的一段或多段程序;’

  2. 初始化硬件设备、建立系统的内存空间映射图,将系统的软件硬件环境带到一个合适的状态,为调用操作系统内核准备好正确的环境;

  3. 把操作系统内核映像加载到RAM中,并将系统控制权交给它。

(3)bootloader合并脚本扩展阅读:

常见的Bootloader

Redboot

Redboot是Redhat公司随eCos发布的一个BOOT方案,是一个开源项目。

当前Redboot的最新版本是Redboot-2.0.1,Redhat公司将会继续支持该项目。

Redboot支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一个完善的嵌入式系统Boot Loader。

Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、稳定可靠等品质优点。它可以使用X-modem或Y-modem协议经由串口下载,也可以经由以太网口通过BOOTP/DHCP服务获得IP参数,使用TFTP方式下载程序映像文件,常用于调试支持和系统初始化(Flash下载更新和网络启动)。Redboot可以通过串口和以太网口与GDB进行通信,调试应用程序,甚至能中断被GDB运行的应用程序。Redboot为管理FLASH映像,映像下载,Redboot配置以及其他如串口、以太网口提供了一个交互式命令行接口,自动启动后,REDBOOT用来从TFTP服务器或者从Flash下载映像文件加载系统的引导脚本文件保存在Flash上。

参考资料:BootLoader --网络

‘肆’ u-boot与 bootloader的区别是什么啊

Bootloader 即引导加载程序,是系统加电后运行的第一段软件代码。简单的说它们都是bootloader,所完成的任务也大同小异。
vivi是mizi开发的用于s3c241x/s3c244x 的linux bootloader,友善之臂移植了USB 下载功能后就成了现在看到的supervivi;u-boot是一个广泛用于ARM平台的bootloader, 目前也支持s3c241x/s3c244x,可以用来启动Linux;Eboot是WinCE平台下的bootloader。uboot就是通过usb来下载os image文件的bootloader; eboot就是通过ethernet下载os image的bootloader
熟悉x86体系结构的朋友肯定知道,x86平台上bootloader 是由 BIOS和位于硬盘MBR中的OS Bootloader(比如Lilo 和 Grub)组成的。BIOS完成硬件的检测和资源的分配后,将硬盘MBR中的bootloader读到系统RAM中,之后此bootloader 就会开始进行主导,将内核搬到内存中以及进行一些必要的初始化工作,之后跳到内核的入口地址来执行,这样内核就开始启动,也就是系统就启动起来了。
而嵌入式平台上就跟x86不一样了,但是很类似,而且因为不同的平台架构本身的特点,每种平台对应的bootloader做得事情会有所不同,相对x86平台,一般不会有bios(但是这些都不是绝对的,有一些平台也会有内嵌类似bios的启动程序),整个系统的引导加载都由存放在flash,rom等存储设备特定位置的bootloader来完成。如arm平台中的2410,2440,bootloader存在在flash中的0x0的地方,板子加电后,系统会将bootloader的最前面的4k代码通过硬件逻辑自动的装载到SRAM中,之后从SRAM中的0开始执行,在这4k的程序中会完成基本的硬件的初始化,将完整的bootloader搬到内存中,并跳转到ram中的bootloader来进行继续执行。
这里不得不插入一个话题,通过上面的介绍,细心的朋友就会产生一个疑问:为什么要有bootloader?既然bootloader只是作硬件的初始化并将内核引导起来,那为什么不直接将这段代码加到内核中,直接启动内核就完成所有的工作?实际上要将bootloader与内核整合在一起是完全可以做到的,但是如果这样作的话,内核就会失去他的通用性和灵活性,并且将bootloader与内核分开会更有利于开发和管理,将启动过程中与平台硬件相关的代码集合成bootloader,内核就可以集中处理那些平台通用的部分了(当然实际上并没有这么严格的划分,内核中还是会有一些平台相关的代码,不过已经算是比较通用的了)。
回到之前所说的,bootloader启动起来之后,通常会有两种操作模式:
启动加载模式就是一上电,bootloader进行相关的初始化之后就马上把内核启动起来,注意关键的地方在整个过程中没有用户的参与,这种其实也就是bootloader的默认处理,一般的产品设计ok进行最后的发布时,就会处于此种状态。
下载模这种模式,大家肯定非常熟悉,就是大家在进行开发的时候所处的环境,我们经常使用的tftp, erase, cp.b 等命令将相关的bin,img文件烧到板子上,这种情况下其实就是处于bootloader的执行环境下,所以一定意义来说,大多的bootloader其实就是一个嵌入式操作系统,只是它的功能不强,不像linux的结构那么复杂,而且也不会支持多进程多线程处理。
bootloader 种类和分类
这里的分类实际上是依据上面的bootloader的操作模式来进行划分的,根据一个系统是否支持上面的下载模式我们这里将bootloader划分为bootloader和monitor(这不是我划分的,恩,是从别人的文章中引述过来的,不过我觉得他说的很有道理), 这里”bootloader”是指只是引导设备与执行主程序的固件,而”monitor”是指不仅拥有bootloader功能的,还能够进入下载模式的固件。
从上面的表可以看出,很多的bootloader都不是monitor。现在国内进行开发大部分还是使用u-boot的,因此下面我们所说的bootloader都是指的u-boot。
对于每种体系结构,都有一系列开放源码Bootloader可以选用。
(1)X86
X86的工作站和服务器上一般使用LILO和GRUB。LILO是Linux发行版主流的Bootloader。不过Redhat Linux发行版已经使用了GRUB,GRUB比LILO有更有好的显示界面,使用配置也更加灵活方便。
在某些X86嵌入式单板机或者特殊设备上,会采用其他Bootloader,例如:ROLO。这些Bootloader可以取代BIOS的功能,能够从FLASH中直接引导Linux启动。现在ROLO支持的开发板已经并入U-Boot,所以U-Boot也可以支持X86平台。
(2)ARM
ARM处理器的芯片商很多,所以每种芯片的开发板都有自己的Bootloader。结果ARM bootloader也变得多种多样。最早有为ARM720处理器的开发板的固件,又有了armboot,StrongARM平台的blob,还有S3C2410处理器开发板上的vivi等。现在armboot已经并入了U-Boot,所以U-Boot也支持ARM/XSCALE平台。U-Boot已经成为ARM平台事实上的标准Bootloader。
(3)PowerPC
PowerPC平台的处理器有标准的Bootloader,就是ppcboot。PPCBOOT在合并armboot等之后,创建了U-Boot,成为各种体系结构开发板的通用引导程序。U-Boot仍然是PowerPC平台的主要Bootloader。
(4)MIPS
MIPS公司开发的YAMON是标准的Bootloader,也有许多MIPS芯片商为自己的开发板写了Bootloader。现在,U-Boot也已经支持MIPS平台。
(5)SH
SH平台的标准Bootloader是sh-boot。Redboot在这种平台上也很好用。
(6)M68K
M68K平台没有标准的Bootloader。Redboot能够支持m68k系列的系统。
值得说明的是Redboot,它几乎能够支持所有的体系结构,包括MIPS、SH、M68K等体系结构。
Redboot是以eCos为基础,采用GPL许可的开源软件工程。

‘伍’ 安卓刷机高手进

不用去客服,宰死你,要玩就来的彻底些把,给你些刷机名词解释,看完再去玩。虽然是摩托罗拉帖子里找的,但道理一样。
刷机名词解释

1.底包
         官方的系统包,相当于我们的Windows的操作系统,事实上它相当于一个纯净版或者内核版的系统包,是最底层的东西。扩展名为sbf,底包通常是官方发布的,ROM作者直接拿来用的,可以选择的版本不会太多,通常更新也不会频繁。底包通常使用PC端刷机工具(RSD)配合Bootloader的工程模式完成刷入。

2.升级包 (镜像包)
广大玩家制作的底包增强包,通常表现为一个update.zip文件。升级包是对底包的扩展和增强,包含一系列的辅助工具和服务,没有中文的底包通过升级包可以实现中文。当然,很多功能也是通过升级包来实现的。可以说,在刷新了底包后,配合刷新相应的升级包,这样才形成一个完整系统。升级包通常通过Recovery工具,从SD卡读取刷入。

3.Bootloader  
相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。

4.Recovery  
Moto 手机内置的一个独立备份恢复工具,类似电脑上的一些一键还原系统,既是在系统出现问题的时候仍然可以打开的一个模式。Moto 的 Recovery 主要提供了WIPE(硬启,清除数据,恢复出厂设置)和Update(通常用于安装升级包,update.zip)功能。 Recovery是不能直接刷新的底包的,通常它刷新的升级包(update.zip)的方式是:自动寻找SD卡上的特定文件,然后写入。

5.基带(Baseband)
是手机中的一块专门的代码,或者可以理解成为一个专门负责通讯的BIOS,负责完成移动网络中无线信号的解调、解扰、解扩和解码工作。基带的不同会造成信号效果的不同。因为各地、各网络实际情况不同,需要大家自己选择适合自己的基带。

6.WIPE
wipe后就恢复了出厂设置,包括联系人、短信、安装的软件等全部删除。俗称硬启,恢复出厂设置。注意,wipe后app2sd和root权限需要重新做。而且app2sd重要的分区步骤也要重新来过。某些说法提到在刷新底包或者升级包前需要进行WIPE操作,我对此操作的必要性不是很确定。

7.OpenRecovery(简称OR)
由于MOTO很蛋疼的在update.zip上做了一个大小**(也许还存在其他**),这些**影响到了升级包的制作。于是高手们就搞出了一个OpenRecovery,这其实就一个第三方的增强版的Recovery工具,某些OpenRecovery已经发展成为一个具有很多功能的小系统了(类似WindowsPE),在这个OR中,可以完成很多东西,我们完全可以把OR想象成电脑上用的应急PE系统,在上面可以调整超频、基带、app2sd、更换启动画面、wipe、改变时区、调整键盘布局,甚至链接USB当读卡器等等,凡是recovery能做的,OR都可以做,recovery不能做到,OR可以做到。

一般OpenRecovery在sd卡上有两个部分存在:update.zip和OpenRecovery目录,最新的GOT底包添加了新的一个OpenRecovery-CFG目录,用来存放各种个人文件。update.zip就是用来坑MOTO一个标准的的zip升级包,而真正的升级包要放在/sdcard/OpenRecovery/updates目录下。

8.App2sd
说白了,其实很简单,就是把APK文件安装到sd卡上,android是Linux脱胎而来,App2sd的原理就是对SD卡进行分区,然后把SD上划分出来的某个分区合并到系统分区中去(听不懂,不要紧),划分出来的分区是Ext2格式,一般Windows不能识别,不要惊慌,正常现象。App2sd对sd卡要求比较高,如果感觉app2sd后比较慢,可以试试换一张C4的sd卡。
因为在2.1的环境下,app2sd需要对sd进行分区,操作比较复杂,E文不好的小白或者电脑基础薄弱的小白容易失误。建议对Android非常熟悉了再做App2sd。

9.Root
大家都知道android系统脱胎自Linux,也正是这个开源的内核让广大玩家可以自由发挥。Root是Linux系统下的系统级账号,拥有系统的全部权限,Android设计上的不开放这个用户的,目的是为了保护系统安全,但是这个保护似乎也带来很多不便。于是就一些工具和方法来开放这个账号。开放Root账号的方法似乎有很多,这里就不再细说。原理上分析,root的**,应该通过在Android系统安装某个系统级别的服务,该服务具有root权限,然后其它需要root权限的程序再向这个服务请求root权限。WIPE、刷机都有可能会造成root权限失效,需要重新root权限。

其它说明:

1、从原理上分析,通常 底包,Bootloader,Recovery,基带都是可以刷新替换的,升级包当然更可以。但是底包、Bootloader很少会有第三方开发或者修改的,一般都使用官方发布的。现在我们听到的Defy的2.21和2.51这两个版本号其实对应的就是Moto官方发布的两个底包。

2、底包有时候会内置Bootloader、Recovery,这样的底包刷新时会连上述两者一起更新(推测结果,不确定偶)。更新这样的底包是有危险的,有可能会造成Bootloader损坏,这个东西损坏了,基本就是变砖了,只有这个东西没坏,就不是砖。

3、我们通常所说的刷机ROM实际是升级包,升级包是对应于特定的底包制作的,所以刷机时务必确保使用的底包和升级包版本上保持一致。

4、需要注意版本号的还有:Bootloader版本、基带版本、Recovery版本

5、目前有些OpenRecovery工具支持底包、升级包一起从SD卡读取刷入

6、似乎刷机前确保系统干净整洁是很重要的,很多教程提到要通过 WIPE - 刷底包 -刷升级包 的步骤来确保刷机前的干净,实际上如果底包版本没有变化,刷底包似乎、也许、大概、可能是不必要的(需要进一步求证)

4、神马是BL等级

BL是手机的安全等级
Bootloader(BL)
相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。
BL等级
BL等级也称为安全等级,是指moto机器的SBF中间的CG31.SMG和CG39.SMG的版本。
BL等级肉眼不可见.进入BL看到的那个版本与此无关。
在未解锁的机器上,BL等级只可升级不可降级。在刷写SBF的时候,机器BL会验证所刷入包的BL等级,并决定是否拒绝写入。在刷写SBF的时候
如果错误刷写低等级的底包的话,将会导致机器开机黑屏无显示。该故障可以通过开机盲操作进入BL后用RSD刷写正确版本的底包解决。

另外 BL等级并不是越高越好,现在一般都是4 5 6的rom,7的rom比较少。

注意:ZIP包一般不升级BL等级,只有刷官方底包的时候,会有可能升级BL等级,BL等级只能升不能降

刷错BL等级的后果:

情况一:刷了比自己等级低的底包,那么就假转了,情况就是黑屏开不了机

情况二:绿头刷到BL7,那么相机就彻底悲剧了,BL7无2.2底包,只能刷2.3内核的包

结论:

无论是红头还是绿头,BL<7都是安全的,可以刷任何内核的包

BL7绿头悲剧,BL7红头无法刷2.2内核的包

如何救砖:找一个BL等级高一点的,别高过BL6,拔掉电池,装上电池,按电源键 音量键像上键进入刷底包模式,连接数据线(前提是你有驱动),无视连接情况,点击开始,刷完即可
总结:defy基本是刷不死的,除非硬件坏了!~

5、神马是内核

Android内核提供了用于支持Android平台的设备驱动

正因为内核提供了设备驱动,刷错内核及刷错内核的包容易导致卡M

目前刷机主要都是2.2内核和2.3内核,刷官方sbf底包后,版本为2.3.4或者2.3.6的都为2.3内核

下面的建议前提是BL等级<7的:

绿头:建议刷2.2内核的包,相机可用

红头defy:都可,刷了defy 的包的话,需要刷电池补丁

红头defy :建议刷2.3内核的包

6、神马充电问题

充电问题:

由于目前defy和defy 的电池容量不一样,电池的测量文件都不一样,这个和内核关联,在很多情况下,机油刷机后无法充满电

情况一:defy的机器刷了defy 的包,导致无法充满电,这个刷defy的电池补丁即可恢复

情况二:defy 的机器刷了defy的包,导致无法充满电,这个刷defy的电池补丁可以视觉上充满电,但实际电压是到不了满电状态4300V 的

总结:

defy的机器刷defy 的包是可以的,刷电池补丁即可

defy 的机器刷defy的包(一般是2.2内核)是无法充满电的,推荐刷2.3内核的包

7、刷机包分类

刷机包目前分3种

sbf官方刷机包,RSD工具刷入,这个是有可能升级BL等级的,刷了BL高的,BL等级就升高,所以要尽量避免刷sbf

镜像包:应该可以叫做备份包,只要不带内核,一般是不会升级BL的

zip刷机包:这个绝大部分情况下是不升级BL等级的,所以推荐大家刷zip形式的包

8、刷机问题

刷机最多的问题就是卡M

前提条件是刷机包无问题

如何避免卡M,及卡M的解决办法

第一:查看是否刷错了内核版本的包,加刷相应内核即可解决

第二:是否刷错了包,BL6、7的机器,如果是2.3底包的话,刷2.2内核的包,是肯定卡M的

‘陆’ GRUB 怎么知道硬盘上有哪些操作系统

本人没有经过专业系统学习,完全是自己摸索学习和总结,就我的经验和理解随便说下,有说的不规范或者有歧义的,请自行纠正:

1:grub需要知道有哪些系统,在什么位置等等这些信息,才能列出一个表,选择后才启动某一个系统。那么这些信息都存在哪里?
win系统通常会在所安装的分区PBR(Partition Boot Record分区引导记录)里有记录,grub脚本会搜索PBR找到安装的系统,或者搜索分区找到linux的内核文件添加系统启动项。

2:重装grub不会破坏破坏操作系统吗?
不会,但有可能需要自己更新grub配置文件以便找到已安装的系统,看下一个问题解答。

3:多装一个操作系统就在grub里多一项选择吗?
需要运行脚本,如update-grub,或者自行编辑grub配置文件手动添加引导启动项

4:grub前半段是菜单选择,后半段不在MBR内,这后半段就是传统意义上的bootloader把?
MBR里的是主引导程序,负责加载分区引导记录或者是其它loader,如果MBR是grub,通常是指grub stage1,后面的grub stage1.5部分,位于MBR后面的62个扇区里,还有分区/boot/grub下面的grub stage2部分才是负责装载系统的。
所以可以说后半段才是真正的loader,至于是不是统意义的bootloader,这个概念我也不清楚,因为现在搜索bootloader,大都是指嵌入式系统的loader。

5:不装类似grub这些多系统选择程序,那么MBR前面那400多字节就是bootloader吗?还是只是bootloader的一部分?
MBR按字面意思为 Master Boot Record(主引导记录),位于硬盘第一个物理扇区,通常说的MBR主要是指这个扇区前面的446字节代码,也就是引导代码,还不能称为一个完整的loader,主要功能是负责装载活动分区的PBR或指向另一个loader。

6:BIOS要初始化硬件,bootloader里也要初始化硬件,有什么区别?
bios初始化通常包括自检、初始化硬件,主要是设置中断及初始化硬件参数,最后装载mbr里的引导代码;
loader初始化硬件设备主要是建立内存空间的映射图以便装载系统内核。
具体的区别真心不懂。

‘柒’ 华为手机16位解锁码 解bootloader 穷举法 bat脚本

首先我阅读了另一位网友的答案 他说的不是没有道理 但是这其中有个错误 现在的解锁码已经是字母和数字混合的 也就是说每一位有36个可能 16位就是36^16=7958661109946400884391936个可能
然后我们借用您的数据 0.003s一个可能 约整数23875983329839204532224 也就是397933055497320071168 分钟 6632217591622001664小时 276342399650916736天 757102464797032年 7571024647970世纪 忽略闰年等特殊情况 全部结果四舍五入约整数
到这里我开始敬佩您的勇气 当然这个结果是不准确的 因为五次连续错误 设备就会重启
重启时间我们取10s吧 实际上要长一些 于是总共重启1591732221989280123191296次 耗费15917322219892801231912960秒 现在总共的时间就是15941198203222640436445184秒 265686636720377336692736分钟 4428110612006289014784小时 184504608833595375616天 505492078996151744年 5054920789961517世纪 仍然是全部结果四舍五入约整数
到这里我对您的勇气有了新的认识 但是这个结果仍然是不准确的 因为华为非正常重启四次(好像是三次 这里算四次吧)就会进入erec
这时候就需要你自己手动重启 这里的重启还是正常进入系统而不是fastboot 所以需要更多时间 正常开机我们取30s 手动操作取5s 这样就是45s的时间 那么一共需要进入erec并重启397933055497320030797824次 消耗时间17906987497379401385902080秒 这样总时间就变成33848185700602041822347264秒 564136428343367376568320分钟 9402273805722789609472小时 391761408571782922240天 1073318927593925760年 10733189275939258世纪 还是全部结果四舍五入约整数 而且要注意到 每试20个解锁码 也就是46秒 您就需要手动操作一次 所以如果需要无人值守 我建议您先去做一个可以自动识别屏幕内容并且点击的机器人
不过更让我震撼的不是您做机器人的决心 而是您的勇气 不过在您接着看我的回答之前 我希望您自行搜索关于手机的寿命问题 我们这里把电池寿命当作您手机的寿命 2年 由于是24小时开机而且无时无刻不在充电 所以这个数字可能实际上要小一些 那么参考我们上面的运算结果
您需要536659463796962880部手机
我们设一部手机1000r吧 虽然是华为 但是我觉得批发可能会便宜一些 总共需要536659463796962880000元 不计运费等 可能您没有概念 我来把他读出来
五万三千六百六十五亿九千四百六十三万七千九百六十九亿六千二百八十八万
这时候 我们想到 这么多手机应该放在哪里呢? 经过搜索 我们发现一部手机的体积约是40立方厘米(当然实际上可能大得多 比如我的朋友的手机体积约67立方厘米) 这些手机总共体积21466378551878515200立方厘米 也就是21466378551879立方米 结果四舍五入约整数
简单搜索了一下我们发现运-20运输机的最大载重量是66吨 我简单用自己的手机估算了一下 手机密度大约是2805.9kg/m³ 这里我们取2806kg/m³ 你的这536659463796962880台手机总重60234658216572474kg 也就是约60234658216572t 需要运-20往返912646336614次才能运到你家 当然你都能叫得动运-20了让华为在你家旁边开个厂应该也不是什么大事 当然那容积21466378551879m³ 的仓库肯定也不是什么难事 但是要运送到你的电脑旁边 需要一个很精密的仓库管理团队 或者您要自己研究全自动化的仓库也可以 这肯定不是什么难事 毕竟您五万三千六百六十五亿九千四百六十三万七千九百六十九亿六千二百八十八万随随便便拿出手
这时候我们想到 您都能买这么多手机了 为什么不再买这么多电脑呢?下面我们不进行计算了 因为毫无意义 您可以随随便便解决一切难题 毕竟有钱能使鬼推磨
所以最终结果是2年
谢谢您 让我体验到了在知道答知乎的感觉
下面是您可能用到的程序源码
是C#写的

using System;
using System.IO;
using System.Text;

namespace blboom.net
{
class Program
{
StringBuilder now = new StringBuilder();

static void Main(string[] args)
{
var This = new Program();
var to = "";
Console.Write("input from>");
This.now.Append(Console.ReadLine());
Console.Write("input to>");
to = Console.ReadLine();
do
{
This.NextKey(15);
This.TestKey();
} while (This.now.ToString() != to);
}

void NextKey(int on)
{
if (now[on] == 'Z')
{
NextKey(on - 1);
now[on] = '0';
}
else if (now[on] == '9')
{
now[on] = 'A';
}
else
{
now[on]++;
}
}

void TestKey()
{
Console.WriteLine("testing for " + now);
Console.WriteLine(RunCmd("fastboot oem unlock " + now));
}

string RunCmd(string Command)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();

p.StandardInput.WriteLine(Command + " & exit");

p.StandardInput.AutoFlush = true;

string output = p.StandardOutput.ReadToEnd();

p.WaitForExit();
p.Close();

if (output.IndexOf("FAILED") == -1)
{
Console.WriteLine("SUCCESS");
Console.WriteLine(now);
File.WriteAllText(".\\KEY.TXT", now.ToString());
}

return output;
}
}
}
不过为什么您不直接买下华为 这样要什么都行

‘捌’ 关于bootloader的一些问题。高手确定的回答。

简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次: 1、 引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。 2、 Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3、 文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。 4、 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。 引导加载程序是系统加电后运行的第一段软件代码。PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。
编辑本段常见bootloader
Redboot
Redboot是Redhat公司随eCos发布的一个BOOT方案,是一个开源项目。 当前Redboot的最新版本是Redboot-2.0.1,Redhat公司将会继续支持该项目。 Redboot支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一个完善的嵌入式系统Boot Loader。 Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、稳定可靠等品质优点。它可以使用X-modem或Y-modem协议经由串口下载,也可以经由以太网口通过BOOTP/DHCP服务获得IP参数,使用TFTP方式下载程序映像文件,常用于调试支持和系统初始化(Flash下载更新和网络启动)。Redboot可以通过串口和以太网口与GDB进行通信,调试应用程序,甚至能中断被GDB运行的应用程序。Redboot为管理FLASH映像,映像下载,Redboot配置以及其他如串口、以太网口提供了一个交互式命令行接口,自动启动后,REDBOOT用来从TFTP服务器或者从Flash下载映像文件加载系统的引导脚本文件保存在Flash上。当前支持单板机的移植版特性有: - 支持ECOS,Linux操作系统引导 - 在线读写Flash - 支持串行口kermit,S-record下载代码 - 监控(minitor)命令集:读写I/O,内存,寄存器、 内存、外设测试功能等 Redboot是标准的嵌入式调试和引导解决方案,支持几乎所有的处理器构架以及大量的外围硬件接口,并且还在不断地完善过程中。
ARMboot
ARMboot是一个ARM平台的开源固件项目,它特别基于PPCBoot,一个为PowerPC平台上的系统提供类似功能的姊妹项目。鉴于对PPCBoot的严重依赖性,已经与PPCBoot项目合并,新的项目为U-Boot。 ARMboot发布的最后版本为ARMboot-1.1.0,2002年ARMboot终止了维护。 ARMboot支持的处理器构架有StrongARM ,ARM720T ,PXA250 等,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。 ARMboot的目标是成为通用的、容易使用和移植的引导程序,非常轻便地运用于新的平台上。ARMboot是GPL下的ARM固件项目中唯一支持Flash闪存,BOOTP、DHCP、TFTP网络下载,PCMCLA寻线机等多种类型来引导系统的。特性为: -支持多种类型的FLASH -允许映像文件经由BOOTP、DHCP、TFTP从网络传输; -支持串行口下载S-record或者binary文件 -允许内存的显示及修改 -支持jffs2文件系统等 Armboot对S3C44B0板的移植相对简单,在经过删减完整代码中的一部分后,仅仅需要完成初始化、串口收发数据、启动计数器和FLASH操作等步骤,就可以下载引导uClinux内核完成板上系统的加载。总得来说,ARMboot介于大、小型Boot Loader之间,相对轻便,基本功能完备,缺点是缺乏后续支持。
U-Boot
U-Boot是由开源项目PPCBoot发展起来的,ARMboot并入了PPCBoot,和其他一些arch的Loader合称U-Boot。2002年12月17日第一个版本U-Boot-0.2.0发布,同时PPCBoot和ARMboot停止维护。 U-Boot自发布以后已更新6次,最新版本为U-Boot-1.1.1,U-Boot的支持是持续性的。 U-Boot支持的处理器构架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等, U-Boot(Universal Bootloader)从名字就可以看出,它是在GPL下资源代码最完整的一个通用Boot Loader。 U-Boot提供两种操作模式:启动加载(Boot loading)模式和下载(Downloading)模式,并具有大型Boot Loader的全部功能。主要特性为: -SCC/FEC以太网支持 -BOOTP/TFTP引导 -IP,MAC预置功能 -在线读写FLASH,DOC, IDE,IIC,EEROM,RTC -支持串行口kermit,S-record下载代码 -识别二进制、ELF32、pImage格式的Image,对Linux引导有特别的支持 -监控(minitor)命令集:读写I/O,内存,寄存器、内存、外设测试功能等 -脚本语言支持(类似BASH脚本) -支持WatchDog,LCD logo,状态指示功能等 U-Boot的功能是如此之强大,涵盖了绝大部分处理器构架,提供大量外设驱动,支持多个文件系统,附带调试、脚本、引导等工具,特别支持Linux,为板级移植做了大量的工作。U-Boot1.1.1版本特别包含了对SA1100和44B0芯片的移植,所以44B0移植主要是针对Board 的移植,包括FLASH、内存配置以及串口波特率等等。U-Boot的完整功能性和后续不断的支持,使系统的升级维护变得十分方便。
Blob
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw发布的,是专门为StrongARM 构架下的LART设计的Boot Loader。 Blob的最后版本是blob-2.0.5。 Blob支持SA1100的LART主板,但用户也可以自行修改移植。 Blob也提供两种工作模式,在启动时处于正常的启动加载模式,但是它会延时 10 秒等待终端用户按下任意键而将 Blob 切换到下载模式。如果在 10 秒内没有用户按键,则 Blob 继续启动 Linux 内核。其基本功能为: 初始化硬件(CPU速度,存储器,中断,RS232串口) -引导Linux内核并提供ramdisk - 给LART下载一个内核或者ramdisk -给FLASH片更新内核或者ramdisk -测定存储配置并通知内核 -给内核提供一个命令行 Blob功能比较齐全,代码较少,比较适合做修改移植,用来引导Liunx,目前大部分S3C44B0板都用Blob修改移植后来加载uClinux。
Bios-lt
Bios-lt是专门支持三星(Samsung)公司ARM构架处理器S3C4510B的Loader,可以设置CPU/ROM/SDRAM/EXTIO,管理并烧写FLASH,装载引导uClinux内核。这是国内工程师申请GNU通用公共许可发布的。 Bios-lt的最新版本是Bios-lt-0.74,另外还提供了S3C4510B的一些外围驱动。
Bootldr
Bootldr是康柏(Compaq)公司发布的,类似于compaq iPAQ Pocket PC,支持SA1100芯片。它被推荐用来引导Llinux,支持串口Y-modem协议以及jffs文件系统。 Bootldr的最后版本为Bootldr-2.19。

‘玖’ 在skyeye上移植bootloader有意义吗

嵌入式系统移植三部曲

一、 BootLoader的移植

二、 Linux内核的移植

三、 根文件系统的移植
准备工作:安装SkyEye

SkyEye可以仿真出多种嵌入式开发板和外设,在安装SkyEye的过程中,就等于是在模拟出一个开发板。

SkyEye的安装过程:

1、下载skyeye-1.2.6_rc1,对其进行解压;

[root@localhost Desktop]# tar -xjvf skyeye-1.2.6_rc1.tar.bz2 -C ./

2、编译安装skyeye-1.2.6;

[root@localhost Desktop]# cd skyeye-1.2.6_rc1

[root@localhost skyeye-1.2.6_rc1]# gedit INSTALL //编译安装信息

[root@localhost skyeye-1.2.6_rc1]# ./configure //配置

[root@localhost skyeye-1.2.6_rc1]# make //编译

[root@localhost skyeye-1.2.6_rc1]# make install //安装

[root@localhost skyeye-1.2.6_rc1]# ll /usr/local/bin/skyeye

出现 -rwxr-xr-x 1 root root 2544308 05-17 17:59 /usr/local/bin/skyeye

则安装成功。

一、BootLoader的移植

BootLoader是加电后的第一个运行程序,它可以初始化开发板的硬件设备,将内核映像从硬盘上读到RAM中,从而跳转到linux的内核入口去执行程序,这样就可以启动操作系统了。由于BootLoader是第一个执行的程序,所以它和开发板的体系结构有很大的关系。

BootLoader的移植过程:

所需文件:交叉编译器:arm-linux-gcc2.95.3.tar.bz2,

Bootloader:u-boot-1.1.4.tar.bz2

1.解压u-boot-1.1.4.tar.bz2 和gcc2.95.3编译器

[root@localhost Desktop]# tar -xjvf u-boot-1.1.4.tar.bz2 -C ./

[root@localhost Desktop]# tar -xjvf arm-linux-gcc-2.95.3.tar.bz2 -C /usr/local/arm

2.编辑u-boot根目录中的Makefile文件

[root@localhost u-boot-1.1.4]# gedit Makefile



ifeq ($(ARCH),arm)

CROSS_COMPILE = arm-linux-

endif

改为

ifeq ($(ARCH),arm)

CROSS_COMPILE=/usr/local/arm/2.95.3/bin/arm-linux-

endif



smdk2410_config : unconfig

@./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

后面添加

ok2410_config : unconfig

@./mkconfig $(@:_config=) arm arm920t ok2410 NULL s3c24x0

3.复制必要的文件,编辑ok2410.h头文件

[root@localhost u-boot-1.1.4]# mkdir board/ok2410

[root@localhost u-boot-1.1.4]# cp board/smdk2410/* board/ok2410/

[root@localhost u-boot-1.1.4]# mv board/ok2410/smdk2410.c board/ok2410/ok2410.c

[root@localhost u-boot-1.1.4]# cp include/configs/smdk2410.h include/configs/ok2410.h

[root@localhost u-boot-1.1.4]# gedit include/configs/ok2410.h



#define CFG_PROMPT "SMDK2410 # " /* Monitor Command Prompt */

改为

#define CFG_PROMPT "OK2410 # " /* Monitor Command Prompt */

4.编辑board/ok2410/Makefile文件

[root@localhost u-boot-1.1.4]# gedit board/ok2410/Makefile



OBJS := smdk2410.o flash.o

改为

OBJS := ok2410.o flash.o

5.配置、编译u-boot

[root@localhost u-boot-1.1.4]# make ok2410_config

[root@localhost u-boot-1.1.4]# make

6.编辑skyeye.conf文件

[root@localhost u-boot-1.1.4]# gedit skyeye.conf

# skyeye config file for S3C2410X

cpu: arm920t

mach: s3c2410x

# physical memory

mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000, file=./u-boot.bin ,boot=yes

mem_bank: map=M, type=RW, addr=0x30000000, size=0x00800000

mem_bank: map=M, type=RW, addr=0x30800000, size=0x00800000

mem_bank: map=M, type=RW, addr=0x31000000, size=0x03000000

# all peripherals I/O mapping area

mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000

mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020

net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=08:00:3E:26:0A:5B, ethmod=tuntap, hostip=10.0.0.1

nandflash: type=s3c2410x,name=K9F1208U0B,mp=./nand.mp

#lcd:type=s3c2410x, mod=gtk

dbct:state=on
7.执行skyeye1.2.6

[root@localhost u-boot-1.1.4]# skyeye1.2.6

出现结果:

************************ WARNING ****************************

If you want to run ELF image, you should use -e option to indicate

your elf-format image filename. Or you only want to run binary image,

you need to set the filename of the image and its entry in skyeye.conf.

*************************************************************

Your elf file is little endian. //省略部分信息

In: serial

Out: serial

Err: serial

OK2410 #

8.移植nand

[root@localhost u-boot-1.1.4]# gedit cpu/arm920t/start.S

9.修改board/ok2410/Makefile

[root@localhost u-boot-1.1.4]# gedit board/ok2410/Makefile



OBJS := ok2410.o flash.o

改为

OBJS := ok2410.o flash.o nand_read.o

10.创建board/ok2410/nand_read.c文件

[root@localhost u-boot-1.1.4]# gedit board/ok2410/nand_read.c

11.编辑include/configs/ok2410.h文件

[root@localhost u-boot-1.1.4]# gedit include/configs/ok2410.h

12.编译u-boot,测试u-boot是否可以从nand启动

[root@localhost u-boot-1.1.4]# make

[root@localhost u-boot-1.1.4]# skyeye1.2.6 //再次执行skyeye1.2.6

13.对u-boot添加nand指令的支持

[root@localhost u-boot-1.1.4]# gedit include/configs/ok2410.h

[root@localhost u-boot-1.1.4]# gedit board/ok2410/ok2410.c

[root@localhost u-boot-1.1.4]# gedit common/cmd_nand.c
14.编译、测试

[root@localhost u-boot-1.1.4]# make

[root@localhost u-boot-1.1.4]# ./mknandflashmp u-boot.bin nand.mp 0

[root@localhost u-boot-1.1.4]# skyeye1.2.6

出现如第7步结果;

到目前为止,BootLoader的移植完毕;

二、Linux内核的移植

内核作为操作系统的核心,管理系统的进程、存储设备、文件系统等。内核移植是至关重要的一部分;

linux内核移植的过程:

需要文件:linux-2.6.14.7.tar.bz2 cs8900.c和cs8900.h

arm-linux-gcc3.4.1.tar.bz2

在移植之前要搭建tftp服务器:

查看tftp的配置文件:

[root@localhost Desktop]# gedit /etc/xinetd.d/tftp

[root@localhost Desktop]#chmod -R 755 /tftpboot

[root@localhost Desktop]#service xinetd restart

1.解压linux-2.6.14.7.tar.bz2

[root@localhost Desktop]# tar -xjvf linux-2.6.14.7.tar.bz2 -C ./

[root@localhost Desktop]#tar -xjvf arm-linux-gcc3.4.1.tar.bz2 -C ./

2.编辑Makefile文件

[root@localhost Desktop]# cd linux-2.6.14.7

[root@localhost linux-2.6.14.7]# gedit Makefile



ARCH ?= $(SUBARCH)

CROSS_COMPILE ?=

改为

ARCH ?= arm

CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-

3、对cs8900网卡的移植

[root@localhost linux-2.6.14.7]# cp ../cs8900/cs8900.c drivers/net/arm/

[root@localhost linux-2.6.14.7]# cp ../cs8900/cs8900.h drivers/net/arm/

[root@localhost linux-2.6.14.7]# gedit drivers/net/arm/Kconfig

[root@localhost linux-2.6.14.7]# gedit drivers/net/arm/Makefile

4.编辑arch/arm/mach-s3c2410/mach-smdk2410.c文件

[root@localhost linux-2.6.14.7]# gedit arch/arm/mach-s3c2410/mach-smdk2410.c

5.在include/asm-arm/arch-s3c2410/目录下创建smdk2410.h文件

[root@localhost linux-2.6.14.7]# gedit include/asm-arm/arch-s3c2410/smdk2410.h

6.设置Flash分区

要编辑3个文件:devs.c、mach-smdk2410.c、s3c2410.c。

[root@localhost linux-2.6.14.7]# gedit arch/arm/mach-s3c2410/devs.c

[root@localhost linux-2.6.14.7]# gedit arch/arm/mach-s3c2410/mach-smdk2410.c

[root@localhost linux-2.6.14.7]# gedit drivers/mtd/nand/s3c2410.c



chip->eccmode = NAND_ECC_SOFT;

改为

chip->eccmode = NAND_ECC_NONE;

7.配置内核

[root@localhost linux-2.6.14.7]# gedit fs/Kconfig

[root@localhost linux-2.6.14.7]# cp arch/arm/configs/smdk2410_defconfig .config

[root@localhost linux-2.6.14.7]# make smdk2410_defconfig

[root@localhost linux-2.6.14.7]# make menuconfig

8.编译内核,创建uImage,将uImage复制到tftp服务器的根目录(/tftpboot/)

[root@localhost linux-2.6.14.7]# make

[root@localhost linux-2.6.14.7]# cp arch/arm/boot/compressed/vmlinux ../u-boot-1.1.4/tools/

[root@localhost linux-2.6.14.7]# cd ../u-boot-1.1.4/tools/

[root@localhost tools]# ./mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008000 -n linux-2.6.14.7 -d vmlinux uImage

[root@localhost tools]# cp uImage ../

[root@localhost tools]# cp initrd.img ../

[root@localhost tools]# cp uImage /tftpboot/

[root@localhost tools]# cp initrd.img /tftpboot/

[root@localhost tools]# cp ../u-boot.bin /tftpboot/

[root@localhost tools]# cp initrd.img /tmp/nfs/

[root@localhost tools]# iptables -F

[root@localhost tools]# cd ..
9.执行skyeye1.2.6,通过u-boot-1.1.4引导linux-2.6.14.7

[root@localhost u-boot-1.1.4]# skyeye1.2.6

**************************** WARNING ***************************

If you want to run ELF image, you should use -e option to indicate

your elf-format image filename. Or you only want to run binary image,

you need to set the filename of the image and its entry in skyeye.conf.

*****************************************************************

Your elf file is little endian.

arch: arm //省略部分信息;

*** Warning - bad CRC, using default environment

In: serial

Out: serial

Err: serial

Hit any key to stop autoboot: 0

OK2410 #setenv bootargs noinitrd mem=64M root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

OK2410 # tftp 0x31000000 uImage

OK2410 # bootm 31000000

## Booting image at 31000000 ...

//此时应该进行第三步,根文件系统的移植;

三、根文件系统的移植

linux启动后第一个必须挂载的是根文件系统,若不能挂载根文件系统,则系统会出错自动退出;

根文件系统移植的过程:
移植根文件系统所需文件:busybox-1.13.4.tar.bz2

1.解压busybox-1.13.4.tar.bz2

[root@localhost Desktop]# tar -xjvf busybox-1.13.4.tar.bz2 -C ./
2.编辑Makefile文件

[root@localhost busybox-1.13.4]# gedit Makefile



CROSS_COMPILE ?=

改为

CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-



ARCH ?= $(SUBARCH)

改为

ARCH ?= arm

3.进行默认配置

[root@localhost busybox-1.13.4]# make defconfig //恢复默认配置

4.对配置信息进行修改

[root@localhost busybox-1.13.4]# make menuconfig
5.编译

[root@localhost busybox-1.13.4]# make
6.对配置信息进行修改

1)在/tmp/nfs中创建所需的目录

[root@localhost nfs]# mkdir -p bin sbin lib/moles etc/init.d dev usr/bin usr/sbin usr/lib proc sys home root boot mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp var/lib var/lock var/log var/run var/tmp tmp

注意:其中bin、dev、etc、lib、proc、sbin、sys、usr是必备的8个目录。

[root@localhost nfs]# chmod 1777 tmp

[root@localhost nfs]# chmod 1777 var/tmp

[root@localhost dev]# mknod -m 600 console c 5 1

[root@localhost dev]# mknod -m 666 null c 1 3

(2)复制文件到/tmp/nfs中

[root@localhost _install]# cp -a bin /tmp/nfs/

[root@localhost _install]# cp -a sbin /tmp/nfs/

[root@localhost _install]# cp -a linuxrc /tmp/nfs/

[root@localhost _install]# cd ..

[root@localhost busybox-1.13.4]# cp -a examples/bootfloppy/etc/* /tmp/nfs/etc/

7.创建配置文件

(1)编写etc/inittab文件、修改其权限

[root@localhost nfs]# gedit etc/inittab

[root@localhost nfs]# chmod 755 etc/inittab

(2)编写etc/init.d/rcS文件、修改其权限

[root@localhost nfs]# gedit etc/init.d/rcS

[root@localhost nfs]# chmod 755 etc/init.d/rcS

(3)编写etc/fstab文件、修改其权限

[root@localhost nfs]# gedit etc/fstab

[root@localhost nfs]# chmod 755 etc/fstab

(4)编写etc/proflie文件、修改其权限

[root@localhost nfs]# gedit etc/proflie

(5)创建密码文件、修改其权限

[root@localhost nfs]# cp /etc/passwd etc/ ;cp /etc/shadow etc/ ;cp /etc/group etc/

[root@localhost nfs]# chmod 600 etc/shadow

[root@localhost nfs]# gedit etc/passwd

[root@localhost nfs]# gedit etc/shadow

(6)为mdev创建配置文件

[root@localhost nfs]# gedit etc/mdev.conf

(7)删除备份文件

[root@localhost nfs]# rm etc/*~ etc/init.d/*~
8.复制常用的库文件

编写脚本文件_lib.sh。

[root@localhost nfs]# gedit _lib.sh

[root@localhost nfs]# chmod a+x _lib.sh

[root@localhost nfs]# cp _lib.sh /usr/local/arm/3.4.1/arm-linux/lib/

[root@localhost nfs]# cd /usr/local/arm/3.4.1/arm-linux/lib/

[root@localhost lib]# ./_lib.sh

[root@localhost lib]# cd -

完整的启动过程:

通过tftp将操作系统内核下载到开发板,内核引导时通过NFS挂载根文件系统。

(1)重启tftp服务器

[root@localhost Desktop]# service xinetd restart

(2)编辑/etc/exports文件

[root@localhost Desktop]# gedit /etc/exports

/tmp/nfs *(rw,sync,no_root_squash)

(3)重启NFS服务器

[root@localhost u-boot-1.1.4]# service nfs restart

[root@localhost u-boot-1.1.4]# exportfs

[root@localhost u-boot-1.1.4]# exportfs -ra //重新扫描配置文件

(4)完整的启动过程(u-boot、内核、文件系统、用户程序),使用NFS文件系统

[root@localhost u-boot-1.1.4]# skyeye1.2.6

‘拾’ 一个linux系统里面能有多个kernel吗如果可以应该怎么添加呢

能有多个 kernel 但这是启动系统的东西,只能用一个。
内核在 /boot 里面,vmlinuz 那些个就是,其他的文件都是辅助用的。其中还有用的是 initrd ,这东西是随内核一起被引导器——现在基本就是 GRUB ——一起读取到内存中,内核启动后会读取这里的文件,并且把它作为临时的根文件系统,之后再过渡启动到硬盘。不过 initrd 不是必须存在的,他因为在启动内核时一同读取到内存,所以他的硬件限制很少,可以作为提供驱动的数据文件,也可以实现一些挂载你的硬盘跟分区前的检测工作。

/lib/moles/ 里面都是按内核版本号分别保存的其他内核需要和提供的文件,主要是内核模块。以及针对这个内核的开发需要的相应文件(不光是头文件,虽然开发主要是需要 C Header)。

模块目录具体结构请看一些专业的介绍资料吧。

题外:/usr/src 里面一般存放内核的源代码,如果是自己编译的内核,或者某些特殊情况的内核。这里也会放一些东西。/lib/moles 里面的内核其他数据目录里面会有一些内容连接到这里的。这个规划具体看发行版的设计。不过一般大家的习惯是这里必然有内核源代码,所以很多驱动程序和内核有关的一些应用程序,都会直接来这里找开发数据。所以现在大部分系统偏向于这里保存一些内容。