『壹』 求教重新安裝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一般特指在操作系統下:
在操作系統運行之前運行的一段或多段程序;』
初始化硬體設備、建立系統的內存空間映射圖,將系統的軟體硬體環境帶到一個合適的狀態,為調用操作系統內核准備好正確的環境;
把操作系統內核映像載入到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 裡面的內核其他數據目錄裡面會有一些內容連接到這里的。這個規劃具體看發行版的設計。不過一般大家的習慣是這里必然有內核源代碼,所以很多驅動程序和內核有關的一些應用程序,都會直接來這里找開發數據。所以現在大部分系統偏向於這里保存一些內容。