Added GRUB docs, Added netboot.xyz
This commit is contained in:
		
							parent
							
								
									637d9037dc
								
							
						
					
					
						commit
						8f9ccbfa39
					
				
					 35 changed files with 6482 additions and 28 deletions
				
			
		|  | @ -1,5 +1,7 @@ | ||||||
| Grubby Data Partition | Grubby Data Partition | ||||||
| ================================================ | ================================================ | ||||||
|  | [Git Source](https://git.deboone.nl/ericteunis/grubby.git) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| If you've found this USB stick, please get in | If you've found this USB stick, please get in | ||||||
|  touch via ericteunis@deboone.nl, |  touch via ericteunis@deboone.nl, | ||||||
|  | @ -35,6 +37,10 @@ mkdir "${DATA_MNT}/boot" | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | Some Funny Things | ||||||
|  | ================================================ | ||||||
|  |  - [Grub invaders](http://www.erikyyy.de/invaders/) | ||||||
|  |  - [netboot.xyz](https://netboot.xyz) A PXE boot environment | ||||||
| 
 | 
 | ||||||
| Inspiration & Links | Inspiration & Links | ||||||
| ================================================ | ================================================ | ||||||
|  |  | ||||||
|  | @ -5,51 +5,155 @@ set timeout=30 | ||||||
| insmod all_video | insmod all_video | ||||||
| set gfxpayload=keep | set gfxpayload=keep | ||||||
| 
 | 
 | ||||||
|  | # ISOs configuration | ||||||
|  | set isoconfig="/boot/isos.cfg" | ||||||
|  | export isoconfig | ||||||
|  | 
 | ||||||
|  | # Persistent folder | ||||||
|  | set persistent="${prefix}/persistent" | ||||||
|  | export persistent | ||||||
|  | 
 | ||||||
| # Enable GUI | # Enable GUI | ||||||
| terminal_output gfxterm | terminal_output gfxterm | ||||||
| 
 | 
 | ||||||
|  | # Get the ROOTUUID of this USB stick | ||||||
| probe -u $root --set=rootuuid | probe -u $root --set=rootuuid | ||||||
| set imgdevpath="/dev/disk/by-uuid/$rootuuid" | set imgdevpath="/dev/disk/by-uuid/$rootuuid" | ||||||
| export imgdevpath rootuuid | export imgdevpath rootuuid | ||||||
| set isopath="/boot/isos" |  | ||||||
| export isopath |  | ||||||
| 
 | 
 | ||||||
|  | # Enable the Pager | ||||||
| set pager=1 | set pager=1 | ||||||
| 
 | 
 | ||||||
| if [ -f "${prefix}/theming.cfg" ]; | # Get theming | ||||||
| 	source "${prefix}/theming.cfg" | if [ -f "${prefix}/theming.cfg" ]; then | ||||||
|  | 	#source "${prefix}/theming.cfg" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| menuentry "Local Boot" { | # Start the menuentries | ||||||
|  | ############## | ||||||
|  | 
 | ||||||
|  | menuentry "[c] CPU info " --hotkey=c { | ||||||
|  | 	if cpuid -l ; then | ||||||
|  | 		echo "This CPU supports 64-bit." | ||||||
|  | 	else | ||||||
|  | 		echo "This CPU does not support 64-bit." | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
|  | 	if cpuid -p ; then | ||||||
|  | 		echo "This CPU supports PAE." | ||||||
|  | 	else | ||||||
|  | 		echo "This CPU does not support PAE." | ||||||
|  | 	fi | ||||||
|  | 	sleep --interruptible 10 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "[l] Local Boot" --hotkey=l { | ||||||
| 	insmod chain | 	insmod chain | ||||||
| 	 | 
 | ||||||
| 	chainloader +1 | 	chainloader +1 | ||||||
| } | } | ||||||
| menuentry "Show Drives" { |  | ||||||
| 	ls  |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| menuentry "Enable LVMs" { |  | ||||||
| 	insmod lvm |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | if [ -f "${isoconfig}" ]; then | ||||||
|  | 	menuentry ' ' { true } | ||||||
| 
 | 
 | ||||||
| if [ -f "${prefix}/isos.cfg" ]; then | 	menuentry "[i] Inspect Isos >" --hotkey=i --default { | ||||||
| 	menuentry ' ' { // Empty Line | 		echo "Loading various ISO configurations" | ||||||
| 		true | 		configfile "${isoconfig}" | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	menuentry "Inspect Isos" { | 	menuentry ' ' { true } | ||||||
| 		echo "Loading Iso Configs" |  | ||||||
| 	    source "${prefix}/isos.cfg" |  | ||||||
| 	} |  | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
|  | submenu "GRUB2 options -> "{ | ||||||
|  | 	menuentry "Show Drives" { | ||||||
|  | 		ls  -l | ||||||
|  | 		sleep --interruptible 9999 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "Enable LVM support" { | ||||||
|  | 		insmod lvm | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "Enable RAID support" { | ||||||
|  | 		insmod dm_nv | ||||||
|  | 		insmod mdraid09_be | ||||||
|  | 		insmod mdraid09 | ||||||
|  | 		insmod mdradi1x | ||||||
|  | 		insmod raid5rec | ||||||
|  | 		insmod raid6rec | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "Enable PATA support" { | ||||||
|  | 		insmod ata | ||||||
|  | 		update_paths | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "Mount encrypted volumnes (LUKS and geli)" { | ||||||
|  | 		insmod luks | ||||||
|  | 		insmod geli | ||||||
|  | 		cryptomount -a | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "Enable Serial Terminal" { | ||||||
|  | 		serial | ||||||
|  | 		terminal_input --append serial | ||||||
|  | 		terminal_output --apend serial | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "Enable USB support *experimental*" { | ||||||
|  | 		insmod ohci | ||||||
|  | 		insmod uhci | ||||||
|  | 		insmod usbms | ||||||
|  | 		update_paths | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| if [ ${grub_platform} == "efi" ]; then | if [ ${grub_platform} == "efi" ]; then | ||||||
| 	# place UEFI-only menu entries here | 	# place UEFI-only menu entries here | ||||||
|  | 	menuentry "Firmware Setup " --class efi { | ||||||
|  | 		fwsetup | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	menuentry "UEFI Shell" --class efi { | ||||||
|  | 		insmod fat | ||||||
|  | 		insmod chain | ||||||
|  | 		search --no-floppy --set=root --file /shellx64.efi | ||||||
|  | 		chainloader /shellx64.efi | ||||||
|  | 	} | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | menuentry ' ' { // Empty Line | ||||||
|  | 	true | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "[i] Invaders" --hotkey=i --class=game --class=invaders { | ||||||
|  | 	echo "Starting Invaders" | ||||||
|  | 	linux16 "${prefix}/persist/invaders/invaders" | ||||||
|  | 	boot | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "[b] netboot.xyz" --hotkey=b --class=netboot { | ||||||
|  | 	echo "Using netboot.xyz" | ||||||
|  | 	if [ ${grub_platform} == "efi" ]; then | ||||||
|  | 		chainloader "${persistent}/netboot.xyz/netboot.xyz.efi" | ||||||
|  | 	else | ||||||
|  | 		linux16 "${persistent}/netboot.xyz/netboot.xyz.lkrn" | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "[d] read Grub2 Documentation" --hotkey=d --class=docs { | ||||||
|  | 	docs="${persistent}/docs" | ||||||
|  | 	export docs | ||||||
|  | 
 | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "[m] MemTest86+" --hotkey=m { | ||||||
|  | 	linux16 "${persistent}/memtest86/memtest+-5.31b.bin" | ||||||
|  | } | ||||||
|  | 
 | ||||||
| menuentry ' ' { // Empty Line | menuentry ' ' { // Empty Line | ||||||
| 	true | 	true | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| if [ -d "${prefix}/isos.d" ]; then |  | ||||||
| 	for conf in isos.d/*.cfg; do |  | ||||||
| 		source "$conf" |  | ||||||
| 	done |  | ||||||
| fi |  | ||||||
							
								
								
									
										540
									
								
								boot/grub/persistent/docs/000_license
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										540
									
								
								boot/grub/persistent/docs/000_license
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,540 @@ | ||||||
|  | 
 | ||||||
|  | Appendix D Copying This Manual | ||||||
|  | ****************************** | ||||||
|  | 
 | ||||||
|  | D.1 GNU Free Documentation License | ||||||
|  | ================================== | ||||||
|  | 
 | ||||||
|  |                       Version 1.2, November 2002 | ||||||
|  | 
 | ||||||
|  |      Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. | ||||||
|  |      51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA | ||||||
|  | 
 | ||||||
|  |      Everyone is permitted to copy and distribute verbatim copies | ||||||
|  |      of this license document, but changing it is not allowed. | ||||||
|  | 
 | ||||||
|  |   0. PREAMBLE | ||||||
|  | 
 | ||||||
|  |      The purpose of this License is to make a manual, textbook, or other | ||||||
|  |      functional and useful document "free" in the sense of freedom: to | ||||||
|  |      assure everyone the effective freedom to copy and redistribute it, | ||||||
|  |      with or without modifying it, either commercially or | ||||||
|  |      noncommercially.  Secondarily, this License preserves for the | ||||||
|  |      author and publisher a way to get credit for their work, while not | ||||||
|  |      being considered responsible for modifications made by others. | ||||||
|  | 
 | ||||||
|  |      This License is a kind of "copyleft", which means that derivative | ||||||
|  |      works of the document must themselves be free in the same sense. | ||||||
|  |      It complements the GNU General Public License, which is a copyleft | ||||||
|  |      license designed for free software. | ||||||
|  | 
 | ||||||
|  |      We have designed this License in order to use it for manuals for | ||||||
|  |      free software, because free software needs free documentation: a | ||||||
|  |      free program should come with manuals providing the same freedoms | ||||||
|  |      that the software does.  But this License is not limited to | ||||||
|  |      software manuals; it can be used for any textual work, regardless | ||||||
|  |      of subject matter or whether it is published as a printed book.  We | ||||||
|  |      recommend this License principally for works whose purpose is | ||||||
|  |      instruction or reference. | ||||||
|  | 
 | ||||||
|  |   1. APPLICABILITY AND DEFINITIONS | ||||||
|  | 
 | ||||||
|  |      This License applies to any manual or other work, in any medium, | ||||||
|  |      that contains a notice placed by the copyright holder saying it can | ||||||
|  |      be distributed under the terms of this License.  Such a notice | ||||||
|  |      grants a world-wide, royalty-free license, unlimited in duration, | ||||||
|  |      to use that work under the conditions stated herein.  The | ||||||
|  |      "Document", below, refers to any such manual or work.  Any member | ||||||
|  |      of the public is a licensee, and is addressed as "you".  You accept | ||||||
|  |      the license if you copy, modify or distribute the work in a way | ||||||
|  |      requiring permission under copyright law. | ||||||
|  | 
 | ||||||
|  |      A "Modified Version" of the Document means any work containing the | ||||||
|  |      Document or a portion of it, either copied verbatim, or with | ||||||
|  |      modifications and/or translated into another language. | ||||||
|  | 
 | ||||||
|  |      A "Secondary Section" is a named appendix or a front-matter section | ||||||
|  |      of the Document that deals exclusively with the relationship of the | ||||||
|  |      publishers or authors of the Document to the Document's overall | ||||||
|  |      subject (or to related matters) and contains nothing that could | ||||||
|  |      fall directly within that overall subject.  (Thus, if the Document | ||||||
|  |      is in part a textbook of mathematics, a Secondary Section may not | ||||||
|  |      explain any mathematics.)  The relationship could be a matter of | ||||||
|  |      historical connection with the subject or with related matters, or | ||||||
|  |      of legal, commercial, philosophical, ethical or political position | ||||||
|  |      regarding them. | ||||||
|  | 
 | ||||||
|  |      The "Invariant Sections" are certain Secondary Sections whose | ||||||
|  |      titles are designated, as being those of Invariant Sections, in the | ||||||
|  |      notice that says that the Document is released under this License. | ||||||
|  |      If a section does not fit the above definition of Secondary then it | ||||||
|  |      is not allowed to be designated as Invariant.  The Document may | ||||||
|  |      contain zero Invariant Sections.  If the Document does not identify | ||||||
|  |      any Invariant Sections then there are none. | ||||||
|  | 
 | ||||||
|  |      The "Cover Texts" are certain short passages of text that are | ||||||
|  |      listed, as Front-Cover Texts or Back-Cover Texts, in the notice | ||||||
|  |      that says that the Document is released under this License.  A | ||||||
|  |      Front-Cover Text may be at most 5 words, and a Back-Cover Text may | ||||||
|  |      be at most 25 words. | ||||||
|  | 
 | ||||||
|  |      A "Transparent" copy of the Document means a machine-readable copy, | ||||||
|  |      represented in a format whose specification is available to the | ||||||
|  |      general public, that is suitable for revising the document | ||||||
|  |      straightforwardly with generic text editors or (for images composed | ||||||
|  |      of pixels) generic paint programs or (for drawings) some widely | ||||||
|  |      available drawing editor, and that is suitable for input to text | ||||||
|  |      formatters or for automatic translation to a variety of formats | ||||||
|  |      suitable for input to text formatters.  A copy made in an otherwise | ||||||
|  |      Transparent file format whose markup, or absence of markup, has | ||||||
|  |      been arranged to thwart or discourage subsequent modification by | ||||||
|  |      readers is not Transparent.  An image format is not Transparent if | ||||||
|  |      used for any substantial amount of text.  A copy that is not | ||||||
|  |      "Transparent" is called "Opaque". | ||||||
|  | 
 | ||||||
|  |      Examples of suitable formats for Transparent copies include plain | ||||||
|  |      ASCII without markup, Texinfo input format, LaTeX input format, | ||||||
|  |      SGML or XML using a publicly available DTD, and standard-conforming | ||||||
|  |      simple HTML, PostScript or PDF designed for human modification. | ||||||
|  |      Examples of transparent image formats include PNG, XCF and JPG. | ||||||
|  |      Opaque formats include proprietary formats that can be read and | ||||||
|  |      edited only by proprietary word processors, SGML or XML for which | ||||||
|  |      the DTD and/or processing tools are not generally available, and | ||||||
|  |      the machine-generated HTML, PostScript or PDF produced by some word | ||||||
|  |      processors for output purposes only. | ||||||
|  | 
 | ||||||
|  |      The "Title Page" means, for a printed book, the title page itself, | ||||||
|  |      plus such following pages as are needed to hold, legibly, the | ||||||
|  |      material this License requires to appear in the title page.  For | ||||||
|  |      works in formats which do not have any title page as such, "Title | ||||||
|  |      Page" means the text near the most prominent appearance of the | ||||||
|  |      work's title, preceding the beginning of the body of the text. | ||||||
|  | 
 | ||||||
|  |      A section "Entitled XYZ" means a named subunit of the Document | ||||||
|  |      whose title either is precisely XYZ or contains XYZ in parentheses | ||||||
|  |      following text that translates XYZ in another language.  (Here XYZ | ||||||
|  |      stands for a specific section name mentioned below, such as | ||||||
|  |      "Acknowledgements", "Dedications", "Endorsements", or "History".) | ||||||
|  |      To "Preserve the Title" of such a section when you modify the | ||||||
|  |      Document means that it remains a section "Entitled XYZ" according | ||||||
|  |      to this definition. | ||||||
|  | 
 | ||||||
|  |      The Document may include Warranty Disclaimers next to the notice | ||||||
|  |      which states that this License applies to the Document.  These | ||||||
|  |      Warranty Disclaimers are considered to be included by reference in | ||||||
|  |      this License, but only as regards disclaiming warranties: any other | ||||||
|  |      implication that these Warranty Disclaimers may have is void and | ||||||
|  |      has no effect on the meaning of this License. | ||||||
|  | 
 | ||||||
|  |   2. VERBATIM COPYING | ||||||
|  | 
 | ||||||
|  |      You may copy and distribute the Document in any medium, either | ||||||
|  |      commercially or noncommercially, provided that this License, the | ||||||
|  |      copyright notices, and the license notice saying this License | ||||||
|  |      applies to the Document are reproduced in all copies, and that you | ||||||
|  |      add no other conditions whatsoever to those of this License.  You | ||||||
|  |      may not use technical measures to obstruct or control the reading | ||||||
|  |      or further copying of the copies you make or distribute.  However, | ||||||
|  |      you may accept compensation in exchange for copies.  If you | ||||||
|  |      distribute a large enough number of copies you must also follow the | ||||||
|  |      conditions in section 3. | ||||||
|  | 
 | ||||||
|  |      You may also lend copies, under the same conditions stated above, | ||||||
|  |      and you may publicly display copies. | ||||||
|  | 
 | ||||||
|  |   3. COPYING IN QUANTITY | ||||||
|  | 
 | ||||||
|  |      If you publish printed copies (or copies in media that commonly | ||||||
|  |      have printed covers) of the Document, numbering more than 100, and | ||||||
|  |      the Document's license notice requires Cover Texts, you must | ||||||
|  |      enclose the copies in covers that carry, clearly and legibly, all | ||||||
|  |      these Cover Texts: Front-Cover Texts on the front cover, and | ||||||
|  |      Back-Cover Texts on the back cover.  Both covers must also clearly | ||||||
|  |      and legibly identify you as the publisher of these copies.  The | ||||||
|  |      front cover must present the full title with all words of the title | ||||||
|  |      equally prominent and visible.  You may add other material on the | ||||||
|  |      covers in addition.  Copying with changes limited to the covers, as | ||||||
|  |      long as they preserve the title of the Document and satisfy these | ||||||
|  |      conditions, can be treated as verbatim copying in other respects. | ||||||
|  | 
 | ||||||
|  |      If the required texts for either cover are too voluminous to fit | ||||||
|  |      legibly, you should put the first ones listed (as many as fit | ||||||
|  |      reasonably) on the actual cover, and continue the rest onto | ||||||
|  |      adjacent pages. | ||||||
|  | 
 | ||||||
|  |      If you publish or distribute Opaque copies of the Document | ||||||
|  |      numbering more than 100, you must either include a machine-readable | ||||||
|  |      Transparent copy along with each Opaque copy, or state in or with | ||||||
|  |      each Opaque copy a computer-network location from which the general | ||||||
|  |      network-using public has access to download using public-standard | ||||||
|  |      network protocols a complete Transparent copy of the Document, free | ||||||
|  |      of added material.  If you use the latter option, you must take | ||||||
|  |      reasonably prudent steps, when you begin distribution of Opaque | ||||||
|  |      copies in quantity, to ensure that this Transparent copy will | ||||||
|  |      remain thus accessible at the stated location until at least one | ||||||
|  |      year after the last time you distribute an Opaque copy (directly or | ||||||
|  |      through your agents or retailers) of that edition to the public. | ||||||
|  | 
 | ||||||
|  |      It is requested, but not required, that you contact the authors of | ||||||
|  |      the Document well before redistributing any large number of copies, | ||||||
|  |      to give them a chance to provide you with an updated version of the | ||||||
|  |      Document. | ||||||
|  | 
 | ||||||
|  |   4. MODIFICATIONS | ||||||
|  | 
 | ||||||
|  |      You may copy and distribute a Modified Version of the Document | ||||||
|  |      under the conditions of sections 2 and 3 above, provided that you | ||||||
|  |      release the Modified Version under precisely this License, with the | ||||||
|  |      Modified Version filling the role of the Document, thus licensing | ||||||
|  |      distribution and modification of the Modified Version to whoever | ||||||
|  |      possesses a copy of it.  In addition, you must do these things in | ||||||
|  |      the Modified Version: | ||||||
|  | 
 | ||||||
|  |        A. Use in the Title Page (and on the covers, if any) a title | ||||||
|  |           distinct from that of the Document, and from those of previous | ||||||
|  |           versions (which should, if there were any, be listed in the | ||||||
|  |           History section of the Document).  You may use the same title | ||||||
|  |           as a previous version if the original publisher of that | ||||||
|  |           version gives permission. | ||||||
|  | 
 | ||||||
|  |        B. List on the Title Page, as authors, one or more persons or | ||||||
|  |           entities responsible for authorship of the modifications in | ||||||
|  |           the Modified Version, together with at least five of the | ||||||
|  |           principal authors of the Document (all of its principal | ||||||
|  |           authors, if it has fewer than five), unless they release you | ||||||
|  |           from this requirement. | ||||||
|  | 
 | ||||||
|  |        C. State on the Title page the name of the publisher of the | ||||||
|  |           Modified Version, as the publisher. | ||||||
|  | 
 | ||||||
|  |        D. Preserve all the copyright notices of the Document. | ||||||
|  | 
 | ||||||
|  |        E. Add an appropriate copyright notice for your modifications | ||||||
|  |           adjacent to the other copyright notices. | ||||||
|  | 
 | ||||||
|  |        F. Include, immediately after the copyright notices, a license | ||||||
|  |           notice giving the public permission to use the Modified | ||||||
|  |           Version under the terms of this License, in the form shown in | ||||||
|  |           the Addendum below. | ||||||
|  | 
 | ||||||
|  |        G. Preserve in that license notice the full lists of Invariant | ||||||
|  |           Sections and required Cover Texts given in the Document's | ||||||
|  |           license notice. | ||||||
|  | 
 | ||||||
|  |        H. Include an unaltered copy of this License. | ||||||
|  | 
 | ||||||
|  |        I. Preserve the section Entitled "History", Preserve its Title, | ||||||
|  |           and add to it an item stating at least the title, year, new | ||||||
|  |           authors, and publisher of the Modified Version as given on the | ||||||
|  |           Title Page.  If there is no section Entitled "History" in the | ||||||
|  |           Document, create one stating the title, year, authors, and | ||||||
|  |           publisher of the Document as given on its Title Page, then add | ||||||
|  |           an item describing the Modified Version as stated in the | ||||||
|  |           previous sentence. | ||||||
|  | 
 | ||||||
|  |        J. Preserve the network location, if any, given in the Document | ||||||
|  |           for public access to a Transparent copy of the Document, and | ||||||
|  |           likewise the network locations given in the Document for | ||||||
|  |           previous versions it was based on.  These may be placed in the | ||||||
|  |           "History" section.  You may omit a network location for a work | ||||||
|  |           that was published at least four years before the Document | ||||||
|  |           itself, or if the original publisher of the version it refers | ||||||
|  |           to gives permission. | ||||||
|  | 
 | ||||||
|  |        K. For any section Entitled "Acknowledgements" or "Dedications", | ||||||
|  |           Preserve the Title of the section, and preserve in the section | ||||||
|  |           all the substance and tone of each of the contributor | ||||||
|  |           acknowledgements and/or dedications given therein. | ||||||
|  | 
 | ||||||
|  |        L. Preserve all the Invariant Sections of the Document, unaltered | ||||||
|  |           in their text and in their titles.  Section numbers or the | ||||||
|  |           equivalent are not considered part of the section titles. | ||||||
|  | 
 | ||||||
|  |        M. Delete any section Entitled "Endorsements".  Such a section | ||||||
|  |           may not be included in the Modified Version. | ||||||
|  | 
 | ||||||
|  |        N. Do not retitle any existing section to be Entitled | ||||||
|  |           "Endorsements" or to conflict in title with any Invariant | ||||||
|  |           Section. | ||||||
|  | 
 | ||||||
|  |        O. Preserve any Warranty Disclaimers. | ||||||
|  | 
 | ||||||
|  |      If the Modified Version includes new front-matter sections or | ||||||
|  |      appendices that qualify as Secondary Sections and contain no | ||||||
|  |      material copied from the Document, you may at your option designate | ||||||
|  |      some or all of these sections as invariant.  To do this, add their | ||||||
|  |      titles to the list of Invariant Sections in the Modified Version's | ||||||
|  |      license notice.  These titles must be distinct from any other | ||||||
|  |      section titles. | ||||||
|  | 
 | ||||||
|  |      You may add a section Entitled "Endorsements", provided it contains | ||||||
|  |      nothing but endorsements of your Modified Version by various | ||||||
|  |      parties--for example, statements of peer review or that the text | ||||||
|  |      has been approved by an organization as the authoritative | ||||||
|  |      definition of a standard. | ||||||
|  | 
 | ||||||
|  |      You may add a passage of up to five words as a Front-Cover Text, | ||||||
|  |      and a passage of up to 25 words as a Back-Cover Text, to the end of | ||||||
|  |      the list of Cover Texts in the Modified Version.  Only one passage | ||||||
|  |      of Front-Cover Text and one of Back-Cover Text may be added by (or | ||||||
|  |      through arrangements made by) any one entity.  If the Document | ||||||
|  |      already includes a cover text for the same cover, previously added | ||||||
|  |      by you or by arrangement made by the same entity you are acting on | ||||||
|  |      behalf of, you may not add another; but you may replace the old | ||||||
|  |      one, on explicit permission from the previous publisher that added | ||||||
|  |      the old one. | ||||||
|  | 
 | ||||||
|  |      The author(s) and publisher(s) of the Document do not by this | ||||||
|  |      License give permission to use their names for publicity for or to | ||||||
|  |      assert or imply endorsement of any Modified Version. | ||||||
|  | 
 | ||||||
|  |   5. COMBINING DOCUMENTS | ||||||
|  | 
 | ||||||
|  |      You may combine the Document with other documents released under | ||||||
|  |      this License, under the terms defined in section 4 above for | ||||||
|  |      modified versions, provided that you include in the combination all | ||||||
|  |      of the Invariant Sections of all of the original documents, | ||||||
|  |      unmodified, and list them all as Invariant Sections of your | ||||||
|  |      combined work in its license notice, and that you preserve all | ||||||
|  |      their Warranty Disclaimers. | ||||||
|  | 
 | ||||||
|  |      The combined work need only contain one copy of this License, and | ||||||
|  |      multiple identical Invariant Sections may be replaced with a single | ||||||
|  |      copy.  If there are multiple Invariant Sections with the same name | ||||||
|  |      but different contents, make the title of each such section unique | ||||||
|  |      by adding at the end of it, in parentheses, the name of the | ||||||
|  |      original author or publisher of that section if known, or else a | ||||||
|  |      unique number.  Make the same adjustment to the section titles in | ||||||
|  |      the list of Invariant Sections in the license notice of the | ||||||
|  |      combined work. | ||||||
|  | 
 | ||||||
|  |      In the combination, you must combine any sections Entitled | ||||||
|  |      "History" in the various original documents, forming one section | ||||||
|  |      Entitled "History"; likewise combine any sections Entitled | ||||||
|  |      "Acknowledgements", and any sections Entitled "Dedications".  You | ||||||
|  |      must delete all sections Entitled "Endorsements." | ||||||
|  | 
 | ||||||
|  |   6. COLLECTIONS OF DOCUMENTS | ||||||
|  | 
 | ||||||
|  |      You may make a collection consisting of the Document and other | ||||||
|  |      documents released under this License, and replace the individual | ||||||
|  |      copies of this License in the various documents with a single copy | ||||||
|  |      that is included in the collection, provided that you follow the | ||||||
|  |      rules of this License for verbatim copying of each of the documents | ||||||
|  |      in all other respects. | ||||||
|  | 
 | ||||||
|  |      You may extract a single document from such a collection, and | ||||||
|  |      distribute it individually under this License, provided you insert | ||||||
|  |      a copy of this License into the extracted document, and follow this | ||||||
|  |      License in all other respects regarding verbatim copying of that | ||||||
|  |      document. | ||||||
|  | 
 | ||||||
|  |   7. AGGREGATION WITH INDEPENDENT WORKS | ||||||
|  | 
 | ||||||
|  |      A compilation of the Document or its derivatives with other | ||||||
|  |      separate and independent documents or works, in or on a volume of a | ||||||
|  |      storage or distribution medium, is called an "aggregate" if the | ||||||
|  |      copyright resulting from the compilation is not used to limit the | ||||||
|  |      legal rights of the compilation's users beyond what the individual | ||||||
|  |      works permit.  When the Document is included in an aggregate, this | ||||||
|  |      License does not apply to the other works in the aggregate which | ||||||
|  |      are not themselves derivative works of the Document. | ||||||
|  | 
 | ||||||
|  |      If the Cover Text requirement of section 3 is applicable to these | ||||||
|  |      copies of the Document, then if the Document is less than one half | ||||||
|  |      of the entire aggregate, the Document's Cover Texts may be placed | ||||||
|  |      on covers that bracket the Document within the aggregate, or the | ||||||
|  |      electronic equivalent of covers if the Document is in electronic | ||||||
|  |      form.  Otherwise they must appear on printed covers that bracket | ||||||
|  |      the whole aggregate. | ||||||
|  | 
 | ||||||
|  |   8. TRANSLATION | ||||||
|  | 
 | ||||||
|  |      Translation is considered a kind of modification, so you may | ||||||
|  |      distribute translations of the Document under the terms of section | ||||||
|  |      4.  Replacing Invariant Sections with translations requires special | ||||||
|  |      permission from their copyright holders, but you may include | ||||||
|  |      translations of some or all Invariant Sections in addition to the | ||||||
|  |      original versions of these Invariant Sections.  You may include a | ||||||
|  |      translation of this License, and all the license notices in the | ||||||
|  |      Document, and any Warranty Disclaimers, provided that you also | ||||||
|  |      include the original English version of this License and the | ||||||
|  |      original versions of those notices and disclaimers.  In case of a | ||||||
|  |      disagreement between the translation and the original version of | ||||||
|  |      this License or a notice or disclaimer, the original version will | ||||||
|  |      prevail. | ||||||
|  | 
 | ||||||
|  |      If a section in the Document is Entitled "Acknowledgements", | ||||||
|  |      "Dedications", or "History", the requirement (section 4) to | ||||||
|  |      Preserve its Title (section 1) will typically require changing the | ||||||
|  |      actual title. | ||||||
|  | 
 | ||||||
|  |   9. TERMINATION | ||||||
|  | 
 | ||||||
|  |      You may not copy, modify, sublicense, or distribute the Document | ||||||
|  |      except as expressly provided for under this License.  Any other | ||||||
|  |      attempt to copy, modify, sublicense or distribute the Document is | ||||||
|  |      void, and will automatically terminate your rights under this | ||||||
|  |      License.  However, parties who have received copies, or rights, | ||||||
|  |      from you under this License will not have their licenses terminated | ||||||
|  |      so long as such parties remain in full compliance. | ||||||
|  | 
 | ||||||
|  |   10. FUTURE REVISIONS OF THIS LICENSE | ||||||
|  | 
 | ||||||
|  |      The Free Software Foundation may publish new, revised versions of | ||||||
|  |      the GNU Free Documentation License from time to time.  Such new | ||||||
|  |      versions will be similar in spirit to the present version, but may | ||||||
|  |      differ in detail to address new problems or concerns.  See | ||||||
|  |      <http://www.gnu.org/copyleft/>. | ||||||
|  | 
 | ||||||
|  |      Each version of the License is given a distinguishing version | ||||||
|  |      number.  If the Document specifies that a particular numbered | ||||||
|  |      version of this License "or any later version" applies to it, you | ||||||
|  |      have the option of following the terms and conditions either of | ||||||
|  |      that specified version or of any later version that has been | ||||||
|  |      published (not as a draft) by the Free Software Foundation.  If the | ||||||
|  |      Document does not specify a version number of this License, you may | ||||||
|  |      choose any version ever published (not as a draft) by the Free | ||||||
|  |      Software Foundation. | ||||||
|  | 
 | ||||||
|  | D.1.1 ADDENDUM: How to use this License for your documents | ||||||
|  | ---------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | To use this License in a document you have written, include a copy of | ||||||
|  | the License in the document and put the following copyright and license | ||||||
|  | notices just after the title page: | ||||||
|  | 
 | ||||||
|  |        Copyright (C)  YEAR  YOUR NAME. | ||||||
|  |        Permission is granted to copy, distribute and/or modify this document | ||||||
|  |        under the terms of the GNU Free Documentation License, Version 1.2 | ||||||
|  |        or any later version published by the Free Software Foundation; | ||||||
|  |        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover | ||||||
|  |        Texts.  A copy of the license is included in the section entitled ``GNU | ||||||
|  |        Free Documentation License''. | ||||||
|  | 
 | ||||||
|  |    If you have Invariant Sections, Front-Cover Texts and Back-Cover | ||||||
|  | Texts, replace the "with...Texts."  line with this: | ||||||
|  | 
 | ||||||
|  |          with the Invariant Sections being LIST THEIR TITLES, with | ||||||
|  |          the Front-Cover Texts being LIST, and with the Back-Cover Texts | ||||||
|  |          being LIST. | ||||||
|  | 
 | ||||||
|  |    If you have Invariant Sections without Cover Texts, or some other | ||||||
|  | combination of the three, merge those two alternatives to suit the | ||||||
|  | situation. | ||||||
|  | 
 | ||||||
|  |    If your document contains nontrivial examples of program code, we | ||||||
|  | recommend releasing these examples in parallel under your choice of free | ||||||
|  | software license, such as the GNU General Public License, to permit | ||||||
|  | their use in free software. | ||||||
|  | 
 | ||||||
|  | Index | ||||||
|  | ***** | ||||||
|  | 
 | ||||||
|  | * Menu: | ||||||
|  | 
 | ||||||
|  | * [:                                     [.                  (line 3653) | ||||||
|  | * acpi:                                  acpi.               (line 3659) | ||||||
|  | * authenticate:                          authenticate.       (line 3679) | ||||||
|  | * background_color:                      background_color.   (line 3688) | ||||||
|  | * background_image:                      background_image.   (line 3701) | ||||||
|  | * badram:                                badram.             (line 3711) | ||||||
|  | * blocklist:                             blocklist.          (line 3732) | ||||||
|  | * boot:                                  boot.               (line 3738) | ||||||
|  | * cat:                                   cat.                (line 3746) | ||||||
|  | * chainloader:                           chainloader.        (line 3761) | ||||||
|  | * clear:                                 clear.              (line 3773) | ||||||
|  | * CMOS:                                  cmosdump.           (line 3786) | ||||||
|  | * cmosclean:                             cmosclean.          (line 3779) | ||||||
|  | * cmostest:                              cmostest.           (line 3793) | ||||||
|  | * cmp:                                   cmp.                (line 3801) | ||||||
|  | * configfile:                            configfile.         (line 3817) | ||||||
|  | * cpuid:                                 cpuid.              (line 3826) | ||||||
|  | * crc:                                   crc.                (line 3842) | ||||||
|  | * cryptomount:                           cryptomount.        (line 3849) | ||||||
|  | * date:                                  date.               (line 3864) | ||||||
|  | * devicetree:                            devicetree.         (line 3876) | ||||||
|  | * distrust:                              distrust.           (line 3885) | ||||||
|  | * drivemap:                              drivemap.           (line 3899) | ||||||
|  | * echo:                                  echo.               (line 3920) | ||||||
|  | * eval:                                  eval.               (line 3959) | ||||||
|  | * export:                                export.             (line 3966) | ||||||
|  | * false:                                 false.              (line 3974) | ||||||
|  | * FDL, GNU Free Documentation License:   GNU Free Documentation License. | ||||||
|  |                                                              (line 6124) | ||||||
|  | * gettext:                               gettext.            (line 3981) | ||||||
|  | * gptsync:                               gptsync.            (line 3992) | ||||||
|  | * halt:                                  halt.               (line 4010) | ||||||
|  | * hashsum:                               hashsum.            (line 4018) | ||||||
|  | * help:                                  help.               (line 4041) | ||||||
|  | * initrd:                                initrd.             (line 4052) | ||||||
|  | * initrd16:                              initrd16.           (line 4061) | ||||||
|  | * insmod:                                insmod.             (line 4072) | ||||||
|  | * keystatus:                             keystatus.          (line 4078) | ||||||
|  | * linux:                                 linux.              (line 4091) | ||||||
|  | * linux16:                               linux16.            (line 4108) | ||||||
|  | * list_env:                              list_env.           (line 4124) | ||||||
|  | * list_trusted:                          list_trusted.       (line 4134) | ||||||
|  | * loadfont:                              loadfont.           (line 4180) | ||||||
|  | * load_env:                              load_env.           (line 4145) | ||||||
|  | * loopback:                              loopback.           (line 4188) | ||||||
|  | * ls:                                    ls.                 (line 4201) | ||||||
|  | * lsfonts:                               lsfonts.            (line 4217) | ||||||
|  | * lsmod:                                 lsmod.              (line 4223) | ||||||
|  | * md5sum:                                md5sum.             (line 4229) | ||||||
|  | * menuentry:                             menuentry.          (line 3515) | ||||||
|  | * module:                                module.             (line 4236) | ||||||
|  | * multiboot:                             multiboot.          (line 4243) | ||||||
|  | * nativedisk:                            nativedisk.         (line 4264) | ||||||
|  | * net_add_addr:                          net_add_addr.       (line 4817) | ||||||
|  | * net_add_dns:                           net_add_dns.        (line 4827) | ||||||
|  | * net_add_route:                         net_add_route.      (line 4834) | ||||||
|  | * net_bootp:                             net_bootp.          (line 4845) | ||||||
|  | * net_del_addr:                          net_del_addr.       (line 4879) | ||||||
|  | * net_del_dns:                           net_del_dns.        (line 4885) | ||||||
|  | * net_del_route:                         net_del_route.      (line 4891) | ||||||
|  | * net_get_dhcp_option:                   net_get_dhcp_option. | ||||||
|  |                                                              (line 4897) | ||||||
|  | * net_ipv6_autoconf:                     net_ipv6_autoconf.  (line 4906) | ||||||
|  | * net_ls_addr:                           net_ls_addr.        (line 4914) | ||||||
|  | * net_ls_cards:                          net_ls_cards.       (line 4920) | ||||||
|  | * net_ls_dns:                            net_ls_dns.         (line 4926) | ||||||
|  | * net_ls_routes:                         net_ls_routes.      (line 4932) | ||||||
|  | * net_nslookup:                          net_nslookup.       (line 4938) | ||||||
|  | * normal:                                normal.             (line 4273) | ||||||
|  | * normal_exit:                           normal_exit.        (line 4291) | ||||||
|  | * parttool:                              parttool.           (line 4298) | ||||||
|  | * password:                              password.           (line 4332) | ||||||
|  | * password_pbkdf2:                       password_pbkdf2.    (line 4339) | ||||||
|  | * play:                                  play.               (line 4347) | ||||||
|  | * probe:                                 probe.              (line 4364) | ||||||
|  | * pxe_unload:                            pxe_unload.         (line 4372) | ||||||
|  | * rdmsr:                                 rdmsr.              (line 4380) | ||||||
|  | * read:                                  read.               (line 4397) | ||||||
|  | * reboot:                                reboot.             (line 4405) | ||||||
|  | * regexp:                                regexp.             (line 4411) | ||||||
|  | * rmmod:                                 rmmod.              (line 4421) | ||||||
|  | * save_env:                              save_env.           (line 4427) | ||||||
|  | * search:                                search.             (line 4448) | ||||||
|  | * sendkey:                               sendkey.            (line 4466) | ||||||
|  | * serial:                                serial.             (line 3568) | ||||||
|  | * set:                                   set.                (line 4602) | ||||||
|  | * sha1sum:                               sha1sum.            (line 4609) | ||||||
|  | * sha256sum:                             sha256sum.          (line 4616) | ||||||
|  | * sha512sum:                             sha512sum.          (line 4623) | ||||||
|  | * sleep:                                 sleep.              (line 4630) | ||||||
|  | * source:                                source.             (line 4639) | ||||||
|  | * submenu:                               submenu.            (line 3550) | ||||||
|  | * terminal_input:                        terminal_input.     (line 3589) | ||||||
|  | * terminal_output:                       terminal_output.    (line 3606) | ||||||
|  | * terminfo:                              terminfo.           (line 3623) | ||||||
|  | * test:                                  test.               (line 4650) | ||||||
|  | * true:                                  true.               (line 4723) | ||||||
|  | * trust:                                 trust.              (line 4730) | ||||||
|  | * unset:                                 unset.              (line 4744) | ||||||
|  | * verify_detached:                       verify_detached.    (line 4755) | ||||||
|  | * videoinfo:                             videoinfo.          (line 4774) | ||||||
|  | * wrmsr:                                 wrmsr.              (line 4781) | ||||||
|  | * xen_hypervisor:                        xen_hypervisor.     (line 4795) | ||||||
|  | * xen_module:                            xen_module.         (line 4804) | ||||||
|  | 
 | ||||||
							
								
								
									
										269
									
								
								boot/grub/persistent/docs/00_index
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								boot/grub/persistent/docs/00_index
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,269 @@ | ||||||
|  | GNU GRUB manual | ||||||
|  | 1 Introduction to GRUB | ||||||
|  |   1.1 Overview | ||||||
|  |   1.2 History of GRUB | ||||||
|  |   1.3 Differences from previous versions | ||||||
|  |   1.4 GRUB features | ||||||
|  |   1.5 The role of a boot loader | ||||||
|  | 2 Naming convention | ||||||
|  | 3 OS-specific notes about grub tools | ||||||
|  | 4 Installation | ||||||
|  |   4.1 Installing GRUB using grub-install | ||||||
|  |   4.2 Making a GRUB bootable CD-ROM | ||||||
|  |   4.3 The map between BIOS drives and OS devices | ||||||
|  |   4.4 BIOS installation | ||||||
|  | 5 Booting | ||||||
|  |   5.1 How to boot operating systems | ||||||
|  |     5.1.1 How to boot an OS directly with GRUB | ||||||
|  |     5.1.2 Chain-loading an OS | ||||||
|  |   5.2 Loopback booting | ||||||
|  |   5.3 Some caveats on OS-specific issues | ||||||
|  |     5.3.1 GNU/Hurd | ||||||
|  |     5.3.2 GNU/Linux | ||||||
|  |     5.3.3 NetBSD | ||||||
|  |     5.3.4 DOS/Windows | ||||||
|  | 6 Writing your own configuration file | ||||||
|  |   6.1 Simple configuration handling | ||||||
|  |   6.2 Root Identifcation Heuristics | ||||||
|  |   6.3 Writing full configuration files directly | ||||||
|  |   6.4 Multi-boot manual config | ||||||
|  |   6.5 Embedding a configuration file into GRUB | ||||||
|  | 7 Theme file format | ||||||
|  |   7.1 Introduction | ||||||
|  |   7.2 Theme Elements | ||||||
|  |     7.2.1 Colors | ||||||
|  |     7.2.2 Fonts | ||||||
|  |     7.2.3 Progress Bar | ||||||
|  |     7.2.4 Circular Progress Indicator | ||||||
|  |     7.2.5 Labels | ||||||
|  |     7.2.6 Boot Menu | ||||||
|  |     7.2.7 Styled Boxes | ||||||
|  |     7.2.8 Creating Styled Box Images | ||||||
|  |   7.3 Theme File Manual | ||||||
|  |     7.3.1 Global Properties | ||||||
|  |     7.3.2 Format | ||||||
|  |     7.3.3 Global Property List | ||||||
|  |     7.3.4 Component Construction | ||||||
|  |     7.3.5 Component List | ||||||
|  |     7.3.6 Common properties | ||||||
|  | 8 Booting GRUB from the network | ||||||
|  | 9 Using GRUB via a serial line | ||||||
|  | 10 Using GRUB with vendor power-on keys | ||||||
|  | 11 GRUB image files | ||||||
|  | 12 Core image size limitation | ||||||
|  | 13 Filesystem syntax and semantics | ||||||
|  |   13.1 How to specify devices | ||||||
|  |   13.2 How to specify files | ||||||
|  |   13.3 How to specify block lists | ||||||
|  | 14 GRUB's user interface | ||||||
|  |   14.1 The flexible command-line interface | ||||||
|  |   14.2 The simple menu interface | ||||||
|  |   14.3 Editing a menu entry | ||||||
|  | 15 GRUB environment variables | ||||||
|  |   15.1 Special environment variables | ||||||
|  |     15.1.1 biosnum | ||||||
|  |     15.1.2 check_signatures | ||||||
|  |     15.1.3 chosen | ||||||
|  |     15.1.4 cmdpath | ||||||
|  |     15.1.5 color_highlight | ||||||
|  |     15.1.6 color_normal | ||||||
|  |     15.1.7 config_directory | ||||||
|  |     15.1.8 config_file | ||||||
|  |     15.1.9 debug | ||||||
|  |     15.1.10 default | ||||||
|  |     15.1.11 fallback | ||||||
|  |     15.1.12 gfxmode | ||||||
|  |     15.1.13 gfxpayload | ||||||
|  |     15.1.14 gfxterm_font | ||||||
|  |     15.1.15 grub_cpu | ||||||
|  |     15.1.16 grub_platform | ||||||
|  |     15.1.17 icondir | ||||||
|  |     15.1.18 lang | ||||||
|  |     15.1.19 locale_dir | ||||||
|  |     15.1.20 menu_color_highlight | ||||||
|  |     15.1.21 menu_color_normal | ||||||
|  |     15.1.22 net_<INTERFACE>_boot_file | ||||||
|  |     15.1.23 net_<INTERFACE>_dhcp_server_name | ||||||
|  |     15.1.24 net_<INTERFACE>_domain | ||||||
|  |     15.1.25 net_<INTERFACE>_extensionspath | ||||||
|  |     15.1.26 net_<INTERFACE>_hostname | ||||||
|  |     15.1.27 net_<INTERFACE>_ip | ||||||
|  |     15.1.28 net_<INTERFACE>_mac | ||||||
|  |     15.1.29 net_<INTERFACE>_next_server | ||||||
|  |     15.1.30 net_<INTERFACE>_rootpath | ||||||
|  |     15.1.31 net_default_interface | ||||||
|  |     15.1.32 net_default_ip | ||||||
|  |     15.1.33 net_default_mac | ||||||
|  |     15.1.34 net_default_server | ||||||
|  |     15.1.35 pager | ||||||
|  |     15.1.36 prefix | ||||||
|  |     15.1.37 pxe_blksize | ||||||
|  |     15.1.38 pxe_default_gateway | ||||||
|  |     15.1.39 pxe_default_server | ||||||
|  |     15.1.40 root | ||||||
|  |     15.1.41 superusers | ||||||
|  |     15.1.42 theme | ||||||
|  |     15.1.43 timeout | ||||||
|  |     15.1.44 timeout_style | ||||||
|  |   15.2 The GRUB environment block | ||||||
|  | 16 The list of available commands | ||||||
|  |   16.1 The list of commands for the menu only | ||||||
|  |     16.1.1 menuentry | ||||||
|  |     16.1.2 submenu | ||||||
|  |   16.2 The list of general commands | ||||||
|  |     16.2.1 serial | ||||||
|  |     16.2.2 terminal_input | ||||||
|  |     16.2.3 terminal_output | ||||||
|  |     16.2.4 terminfo | ||||||
|  |   16.3 The list of command-line and menu entry commands | ||||||
|  |     16.3.1 [ | ||||||
|  |     16.3.2 acpi | ||||||
|  |     16.3.3 authenticate | ||||||
|  |     16.3.4 background_color | ||||||
|  |     16.3.5 background_image | ||||||
|  |     16.3.6 badram | ||||||
|  |     16.3.7 blocklist | ||||||
|  |     16.3.8 boot | ||||||
|  |     16.3.9 cat | ||||||
|  |     16.3.10 chainloader | ||||||
|  |     16.3.11 clear | ||||||
|  |     16.3.12 cmosclean | ||||||
|  |     16.3.13 cmosdump | ||||||
|  |     16.3.14 cmostest | ||||||
|  |     16.3.15 cmp | ||||||
|  |     16.3.16 configfile | ||||||
|  |     16.3.17 cpuid | ||||||
|  |     16.3.18 crc | ||||||
|  |     16.3.19 cryptomount | ||||||
|  |     16.3.20 date | ||||||
|  |     16.3.21 linux | ||||||
|  |     16.3.22 distrust | ||||||
|  |     16.3.23 drivemap | ||||||
|  |     16.3.24 echo | ||||||
|  |     16.3.25 eval | ||||||
|  |     16.3.26 export | ||||||
|  |     16.3.27 false | ||||||
|  |     16.3.28 gettext | ||||||
|  |     16.3.29 gptsync | ||||||
|  |     16.3.30 halt | ||||||
|  |     16.3.31 hashsum | ||||||
|  |     16.3.32 help | ||||||
|  |     16.3.33 initrd | ||||||
|  |     16.3.34 initrd16 | ||||||
|  |     16.3.35 insmod | ||||||
|  |     16.3.36 keystatus | ||||||
|  |     16.3.37 linux | ||||||
|  |     16.3.38 linux16 | ||||||
|  |     16.3.39 list_env | ||||||
|  |     16.3.40 list_trusted | ||||||
|  |     16.3.41 load_env | ||||||
|  |     16.3.42 loadfont | ||||||
|  |     16.3.43 loopback | ||||||
|  |     16.3.44 ls | ||||||
|  |     16.3.45 lsfonts | ||||||
|  |     16.3.46 lsmod | ||||||
|  |     16.3.47 md5sum | ||||||
|  |     16.3.48 module | ||||||
|  |     16.3.49 multiboot | ||||||
|  |     16.3.50 nativedisk | ||||||
|  |     16.3.51 normal | ||||||
|  |     16.3.52 normal_exit | ||||||
|  |     16.3.53 parttool | ||||||
|  |     16.3.54 password | ||||||
|  |     16.3.55 password_pbkdf2 | ||||||
|  |     16.3.56 play | ||||||
|  |     16.3.57 probe | ||||||
|  |     16.3.58 pxe_unload | ||||||
|  |     16.3.59 rdmsr | ||||||
|  |     16.3.60 read | ||||||
|  |     16.3.61 reboot | ||||||
|  |     16.3.62 regexp | ||||||
|  |     16.3.63 rmmod | ||||||
|  |     16.3.64 save_env | ||||||
|  |     16.3.65 search | ||||||
|  |     16.3.66 sendkey | ||||||
|  |     16.3.67 set | ||||||
|  |     16.3.68 sha1sum | ||||||
|  |     16.3.69 sha256sum | ||||||
|  |     16.3.70 sha512sum | ||||||
|  |     16.3.71 sleep | ||||||
|  |     16.3.72 source | ||||||
|  |     16.3.73 test | ||||||
|  |     16.3.74 true | ||||||
|  |     16.3.75 trust | ||||||
|  |     16.3.76 unset | ||||||
|  |     16.3.77 uppermem | ||||||
|  |     16.3.78 verify_detached | ||||||
|  |     16.3.79 videoinfo | ||||||
|  |     16.3.80 wrmsr | ||||||
|  |     16.3.81 xen_hypervisor | ||||||
|  |     16.3.82 xen_module | ||||||
|  |   16.4 The list of networking commands | ||||||
|  |     16.4.1 net_add_addr | ||||||
|  |     16.4.2 net_add_dns | ||||||
|  |     16.4.3 net_add_route | ||||||
|  |     16.4.4 net_bootp | ||||||
|  |     16.4.5 net_del_addr | ||||||
|  |     16.4.6 net_del_dns | ||||||
|  |     16.4.7 net_del_route | ||||||
|  |     16.4.8 net_get_dhcp_option | ||||||
|  |     16.4.9 net_ipv6_autoconf | ||||||
|  |     16.4.10 net_ls_addr | ||||||
|  |     16.4.11 net_ls_cards | ||||||
|  |     16.4.12 net_ls_dns | ||||||
|  |     16.4.13 net_ls_routes | ||||||
|  |     16.4.14 net_nslookup | ||||||
|  | 17 Internationalisation | ||||||
|  |   17.1 Charset | ||||||
|  |   17.2 Filesystems | ||||||
|  |   17.3 Output terminal | ||||||
|  |   17.4 Input terminal | ||||||
|  |   17.5 Gettext | ||||||
|  |   17.6 Regexp | ||||||
|  |   17.7 Other | ||||||
|  | 18 Security | ||||||
|  |   18.1 Authentication and authorisation in GRUB | ||||||
|  |   18.2 Using digital signatures in GRUB | ||||||
|  |   18.3 UEFI secure boot and shim support | ||||||
|  |   18.4 Measuring boot components | ||||||
|  | 19 Platform limitations | ||||||
|  | 20 Outline | ||||||
|  | 21 Supported boot targets | ||||||
|  |   21.1 Boot tests | ||||||
|  | 22 Error messages produced by GRUB | ||||||
|  |   22.1 GRUB only offers a rescue shell | ||||||
|  |   22.2 Firmware stalls instead of booting GRUB | ||||||
|  | 23 Invoking grub-install | ||||||
|  | 24 Invoking grub-mkconfig | ||||||
|  | 25 Invoking grub-mkpasswd-pbkdf2 | ||||||
|  | 26 Invoking grub-mkrelpath | ||||||
|  | 27 Invoking grub-mkrescue | ||||||
|  | 28 Invoking grub-mount | ||||||
|  | 29 Invoking grub-probe | ||||||
|  | 30 Invoking grub-script-check | ||||||
|  | Appendix A How to obtain and build GRUB | ||||||
|  | Appendix B Reporting bugs | ||||||
|  | Appendix C Where GRUB will go | ||||||
|  | Appendix D Copying This Manual | ||||||
|  |   D.1 GNU Free Documentation License | ||||||
|  |     D.1.1 ADDENDUM: How to use this License for your documents | ||||||
|  | Index | ||||||
|  | GNU GRUB manual | ||||||
|  | *************** | ||||||
|  | 
 | ||||||
|  | This is the documentation of GNU GRUB, the GRand Unified Bootloader, a | ||||||
|  | flexible and powerful boot loader program for a wide range of | ||||||
|  | architectures. | ||||||
|  | 
 | ||||||
|  |    This edition documents version 2.04. | ||||||
|  | 
 | ||||||
|  |    This manual is for GNU GRUB (version 2.04, 24 June 2019). | ||||||
|  | 
 | ||||||
|  |    Copyright (C) | ||||||
|  | 1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012,2013 Free | ||||||
|  | Software Foundation, Inc. | ||||||
|  | 
 | ||||||
|  |      Permission is granted to copy, distribute and/or modify this | ||||||
|  |      document under the terms of the GNU Free Documentation License, | ||||||
|  |      Version 1.2 or any later version published by the Free Software | ||||||
|  |      Foundation; with no Invariant Sections. | ||||||
							
								
								
									
										312
									
								
								boot/grub/persistent/docs/01_introduction
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										312
									
								
								boot/grub/persistent/docs/01_introduction
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,312 @@ | ||||||
|  | 1 Introduction to GRUB | ||||||
|  | ********************** | ||||||
|  | 
 | ||||||
|  | 1.1 Overview | ||||||
|  | ============ | ||||||
|  | 
 | ||||||
|  | Briefly, a "boot loader" is the first software program that runs when a | ||||||
|  | computer starts.  It is responsible for loading and transferring control | ||||||
|  | to an operating system "kernel" software (such as Linux or GNU Mach). | ||||||
|  | The kernel, in turn, initializes the rest of the operating system (e.g. | ||||||
|  | a GNU system). | ||||||
|  | 
 | ||||||
|  |    GNU GRUB is a very powerful boot loader, which can load a wide | ||||||
|  | variety of free operating systems, as well as proprietary operating | ||||||
|  | systems with chain-loading(1) (*note Overview-Footnote-1::).  GRUB is | ||||||
|  | designed to address the complexity of booting a personal computer; both | ||||||
|  | the program and this manual are tightly bound to that computer platform, | ||||||
|  | although porting to other platforms may be addressed in the future. | ||||||
|  | 
 | ||||||
|  |    One of the important features in GRUB is flexibility; GRUB | ||||||
|  | understands filesystems and kernel executable formats, so you can load | ||||||
|  | an arbitrary operating system the way you like, without recording the | ||||||
|  | physical position of your kernel on the disk.  Thus you can load the | ||||||
|  | kernel just by specifying its file name and the drive and partition | ||||||
|  | where the kernel resides. | ||||||
|  | 
 | ||||||
|  |    When booting with GRUB, you can use either a command-line interface | ||||||
|  | (*note Command-line interface::), or a menu interface (*note Menu | ||||||
|  | interface::).  Using the command-line interface, you type the drive | ||||||
|  | specification and file name of the kernel manually.  In the menu | ||||||
|  | interface, you just select an OS using the arrow keys.  The menu is | ||||||
|  | based on a configuration file which you prepare beforehand (*note | ||||||
|  | Configuration::).  While in the menu, you can switch to the command-line | ||||||
|  | mode, and vice-versa.  You can even edit menu entries before using them. | ||||||
|  | 
 | ||||||
|  |    In the following chapters, you will learn how to specify a drive, a | ||||||
|  | partition, and a file name (*note Naming convention::) to GRUB, how to | ||||||
|  | install GRUB on your drive (*note Installation::), and how to boot your | ||||||
|  | OSes (*note Booting::), step by step. | ||||||
|  | 
 | ||||||
|  |    (1) "chain-load" is the mechanism for loading unsupported operating | ||||||
|  | systems by loading another boot loader.  It is typically used for | ||||||
|  | loading DOS or Windows. | ||||||
|  | 
 | ||||||
|  | 1.2 History of GRUB | ||||||
|  | =================== | ||||||
|  | 
 | ||||||
|  | GRUB originated in 1995 when Erich Boleyn was trying to boot the GNU | ||||||
|  | Hurd with the University of Utah's Mach 4 microkernel (now known as GNU | ||||||
|  | Mach).  Erich and Brian Ford designed the Multiboot Specification (*note | ||||||
|  | Multiboot Specification: (multiboot)Top.), because they were determined | ||||||
|  | not to add to the large number of mutually-incompatible PC boot methods. | ||||||
|  | 
 | ||||||
|  |    Erich then began modifying the FreeBSD boot loader so that it would | ||||||
|  | understand Multiboot.  He soon realized that it would be a lot easier to | ||||||
|  | write his own boot loader from scratch than to keep working on the | ||||||
|  | FreeBSD boot loader, and so GRUB was born. | ||||||
|  | 
 | ||||||
|  |    Erich added many features to GRUB, but other priorities prevented him | ||||||
|  | from keeping up with the demands of its quickly-expanding user base.  In | ||||||
|  | 1999, Gordon Matzigkeit and Yoshinori K. Okuji adopted GRUB as an | ||||||
|  | official GNU package, and opened its development by making the latest | ||||||
|  | sources available via anonymous CVS. *Note Obtaining and Building | ||||||
|  | GRUB::, for more information. | ||||||
|  | 
 | ||||||
|  |    Over the next few years, GRUB was extended to meet many needs, but it | ||||||
|  | quickly became clear that its design was not keeping up with the | ||||||
|  | extensions being made to it, and we reached the point where it was very | ||||||
|  | difficult to make any further changes without breaking existing | ||||||
|  | features.  Around 2002, Yoshinori K. Okuji started work on PUPA | ||||||
|  | (Preliminary Universal Programming Architecture for GNU GRUB), aiming to | ||||||
|  | rewrite the core of GRUB to make it cleaner, safer, more robust, and | ||||||
|  | more powerful.  PUPA was eventually renamed to GRUB 2, and the original | ||||||
|  | version of GRUB was renamed to GRUB Legacy.  Small amounts of | ||||||
|  | maintenance continued to be done on GRUB Legacy, but the last release | ||||||
|  | (0.97) was made in 2005 and at the time of writing it seems unlikely | ||||||
|  | that there will be another. | ||||||
|  | 
 | ||||||
|  |    By around 2007, GNU/Linux distributions started to use GRUB 2 to | ||||||
|  | limited extents, and by the end of 2009 multiple major distributions | ||||||
|  | were installing it by default. | ||||||
|  | 
 | ||||||
|  | 1.3 Differences from previous versions | ||||||
|  | ====================================== | ||||||
|  | 
 | ||||||
|  | GRUB 2 is a rewrite of GRUB (*note History::), although it shares many | ||||||
|  | characteristics with the previous version, now known as GRUB Legacy. | ||||||
|  | Users of GRUB Legacy may need some guidance to find their way around | ||||||
|  | this new version. | ||||||
|  | 
 | ||||||
|  |    * The configuration file has a new name ('grub.cfg' rather than | ||||||
|  |      'menu.lst' or 'grub.conf'), new syntax (*note Configuration::) and | ||||||
|  |      many new commands (*note Commands::).  Configuration cannot be | ||||||
|  |      copied over directly, although most GRUB Legacy users should not | ||||||
|  |      find the syntax too surprising. | ||||||
|  | 
 | ||||||
|  |    * 'grub.cfg' is typically automatically generated by 'grub-mkconfig' | ||||||
|  |      (*note Simple configuration::).  This makes it easier to handle | ||||||
|  |      versioned kernel upgrades. | ||||||
|  | 
 | ||||||
|  |    * Partition numbers in GRUB device names now start at 1, not 0 (*note | ||||||
|  |      Naming convention::). | ||||||
|  | 
 | ||||||
|  |    * The configuration file is now written in something closer to a full | ||||||
|  |      scripting language: variables, conditionals, and loops are | ||||||
|  |      available. | ||||||
|  | 
 | ||||||
|  |    * A small amount of persistent storage is available across reboots, | ||||||
|  |      using the 'save_env' and 'load_env' commands in GRUB and the | ||||||
|  |      'grub-editenv' utility.  This is not available in all | ||||||
|  |      configurations (*note Environment block::). | ||||||
|  | 
 | ||||||
|  |    * GRUB 2 has more reliable ways to find its own files and those of | ||||||
|  |      target kernels on multiple-disk systems, and has commands (*note | ||||||
|  |      search::) to find devices using file system labels or Universally | ||||||
|  |      Unique Identifiers (UUIDs). | ||||||
|  | 
 | ||||||
|  |    * GRUB 2 is available for several other types of system in addition | ||||||
|  |      to the PC BIOS systems supported by GRUB Legacy: PC EFI, PC | ||||||
|  |      coreboot, PowerPC, SPARC, and MIPS Lemote Yeeloong are all | ||||||
|  |      supported. | ||||||
|  | 
 | ||||||
|  |    * Many more file systems are supported, including but not limited to | ||||||
|  |      ext4, HFS+, and NTFS. | ||||||
|  | 
 | ||||||
|  |    * GRUB 2 can read files directly from LVM and RAID devices. | ||||||
|  | 
 | ||||||
|  |    * A graphical terminal and a graphical menu system are available. | ||||||
|  | 
 | ||||||
|  |    * GRUB 2's interface can be translated, including menu entry names. | ||||||
|  | 
 | ||||||
|  |    * The image files (*note Images::) that make up GRUB have been | ||||||
|  |      reorganised; Stage 1, Stage 1.5, and Stage 2 are no more. | ||||||
|  | 
 | ||||||
|  |    * GRUB 2 puts many facilities in dynamically loaded modules, allowing | ||||||
|  |      the core image to be smaller, and allowing the core image to be | ||||||
|  |      built in more flexible ways. | ||||||
|  | 
 | ||||||
|  | 1.4 GRUB features | ||||||
|  | ================= | ||||||
|  | 
 | ||||||
|  | The primary requirement for GRUB is that it be compliant with the | ||||||
|  | "Multiboot Specification", which is described in *note Multiboot | ||||||
|  | Specification: (multiboot)Top. | ||||||
|  | 
 | ||||||
|  |    The other goals, listed in approximate order of importance, are: | ||||||
|  | 
 | ||||||
|  |    * Basic functions must be straightforward for end-users. | ||||||
|  | 
 | ||||||
|  |    * Rich functionality to support kernel experts and designers. | ||||||
|  | 
 | ||||||
|  |    * Backward compatibility for booting FreeBSD, NetBSD, OpenBSD, and | ||||||
|  |      Linux.  Proprietary kernels (such as DOS, Windows NT, and OS/2) are | ||||||
|  |      supported via a chain-loading function. | ||||||
|  | 
 | ||||||
|  |    Except for specific compatibility modes (chain-loading and the Linux | ||||||
|  | "piggyback" format), all kernels will be started in much the same state | ||||||
|  | as in the Multiboot Specification.  Only kernels loaded at 1 megabyte or | ||||||
|  | above are presently supported.  Any attempt to load below that boundary | ||||||
|  | will simply result in immediate failure and an error message reporting | ||||||
|  | the problem. | ||||||
|  | 
 | ||||||
|  |    In addition to the requirements above, GRUB has the following | ||||||
|  | features (note that the Multiboot Specification doesn't require all the | ||||||
|  | features that GRUB supports): | ||||||
|  | 
 | ||||||
|  | Recognize multiple executable formats | ||||||
|  |      Support many of the "a.out" variants plus "ELF". Symbol tables are | ||||||
|  |      also loaded. | ||||||
|  | 
 | ||||||
|  | Support non-Multiboot kernels | ||||||
|  |      Support many of the various free 32-bit kernels that lack Multiboot | ||||||
|  |      compliance (primarily FreeBSD, NetBSD(1) (*note | ||||||
|  |      Features-Footnote-1::), OpenBSD, and Linux).  Chain-loading of | ||||||
|  |      other boot loaders is also supported. | ||||||
|  | 
 | ||||||
|  | Load multiples modules | ||||||
|  |      Fully support the Multiboot feature of loading multiple modules. | ||||||
|  | 
 | ||||||
|  | Load a configuration file | ||||||
|  |      Support a human-readable text configuration file with preset boot | ||||||
|  |      commands.  You can also load another configuration file dynamically | ||||||
|  |      and embed a preset configuration file in a GRUB image file.  The | ||||||
|  |      list of commands (*note Commands::) are a superset of those | ||||||
|  |      supported on the command-line.  An example configuration file is | ||||||
|  |      provided in *note Configuration::. | ||||||
|  | 
 | ||||||
|  | Provide a menu interface | ||||||
|  |      A menu interface listing preset boot commands, with a programmable | ||||||
|  |      timeout, is available.  There is no fixed limit on the number of | ||||||
|  |      boot entries, and the current implementation has space for several | ||||||
|  |      hundred. | ||||||
|  | 
 | ||||||
|  | Have a flexible command-line interface | ||||||
|  |      A fairly flexible command-line interface, accessible from the menu, | ||||||
|  |      is available to edit any preset commands, or write a new boot | ||||||
|  |      command set from scratch.  If no configuration file is present, | ||||||
|  |      GRUB drops to the command-line. | ||||||
|  | 
 | ||||||
|  |      The list of commands (*note Commands::) are a subset of those | ||||||
|  |      supported for configuration files.  Editing commands closely | ||||||
|  |      resembles the Bash command-line (*note Bash: (features)Command Line | ||||||
|  |      Editing.), with <TAB>-completion of commands, devices, partitions, | ||||||
|  |      and files in a directory depending on context. | ||||||
|  | 
 | ||||||
|  | Support multiple filesystem types | ||||||
|  |      Support multiple filesystem types transparently, plus a useful | ||||||
|  |      explicit blocklist notation.  The currently supported filesystem | ||||||
|  |      types are "Amiga Fast FileSystem (AFFS)", "AtheOS fs", "BeFS", | ||||||
|  |      "BtrFS" (including raid0, raid1, raid10, gzip and lzo), "cpio" | ||||||
|  |      (little- and big-endian bin, odc and newc variants), "Linux | ||||||
|  |      ext2/ext3/ext4", "DOS FAT12/FAT16/FAT32", "exFAT", "F2FS", "HFS", | ||||||
|  |      "HFS+", "ISO9660" (including Joliet, Rock-ridge and multi-chunk | ||||||
|  |      files), "JFS", "Minix fs" (versions 1, 2 and 3), "nilfs2", "NTFS" | ||||||
|  |      (including compression), "ReiserFS", "ROMFS", "Amiga Smart | ||||||
|  |      FileSystem (SFS)", "Squash4", "tar", "UDF", "BSD UFS/UFS2", "XFS", | ||||||
|  |      and "ZFS" (including lzjb, gzip, zle, mirror, stripe, raidz1/2/3 | ||||||
|  |      and encryption in AES-CCM and AES-GCM). *Note Filesystem::, for | ||||||
|  |      more information. | ||||||
|  | 
 | ||||||
|  | Support automatic decompression | ||||||
|  |      Can decompress files which were compressed by 'gzip' or 'xz'(2) | ||||||
|  |      (*note Features-Footnote-2::).  This function is both automatic and | ||||||
|  |      transparent to the user (i.e.  all functions operate upon the | ||||||
|  |      uncompressed contents of the specified files).  This greatly | ||||||
|  |      reduces a file size and loading time, a particularly great benefit | ||||||
|  |      for floppies.(3)  (*note Features-Footnote-3::) | ||||||
|  | 
 | ||||||
|  |      It is conceivable that some kernel modules should be loaded in a | ||||||
|  |      compressed state, so a different module-loading command can be | ||||||
|  |      specified to avoid uncompressing the modules. | ||||||
|  | 
 | ||||||
|  | Access data on any installed device | ||||||
|  |      Support reading data from any or all floppies or hard disk(s) | ||||||
|  |      recognized by the BIOS, independent of the setting of the root | ||||||
|  |      device. | ||||||
|  | 
 | ||||||
|  | Be independent of drive geometry translations | ||||||
|  |      Unlike many other boot loaders, GRUB makes the particular drive | ||||||
|  |      translation irrelevant.  A drive installed and running with one | ||||||
|  |      translation may be converted to another translation without any | ||||||
|  |      adverse effects or changes in GRUB's configuration. | ||||||
|  | 
 | ||||||
|  | Detect all installed RAM | ||||||
|  |      GRUB can generally find all the installed RAM on a PC-compatible | ||||||
|  |      machine.  It uses an advanced BIOS query technique for finding all | ||||||
|  |      memory regions.  As described on the Multiboot Specification (*note | ||||||
|  |      Multiboot Specification: (multiboot)Top.), not all kernels make use | ||||||
|  |      of this information, but GRUB provides it for those who do. | ||||||
|  | 
 | ||||||
|  | Support Logical Block Address mode | ||||||
|  |      In traditional disk calls (called "CHS mode"), there is a geometry | ||||||
|  |      translation problem, that is, the BIOS cannot access over 1024 | ||||||
|  |      cylinders, so the accessible space is limited to at least 508 MB | ||||||
|  |      and to at most 8GB. GRUB can't universally solve this problem, as | ||||||
|  |      there is no standard interface used in all machines.  However, | ||||||
|  |      several newer machines have the new interface, Logical Block | ||||||
|  |      Address ("LBA") mode.  GRUB automatically detects if LBA mode is | ||||||
|  |      available and uses it if available.  In LBA mode, GRUB can access | ||||||
|  |      the entire disk. | ||||||
|  | 
 | ||||||
|  | Support network booting | ||||||
|  |      GRUB is basically a disk-based boot loader but also has network | ||||||
|  |      support.  You can load OS images from a network by using the "TFTP" | ||||||
|  |      protocol. | ||||||
|  | 
 | ||||||
|  | Support remote terminals | ||||||
|  |      To support computers with no console, GRUB provides remote terminal | ||||||
|  |      support, so that you can control GRUB from a remote host.  Only | ||||||
|  |      serial terminal support is implemented at the moment. | ||||||
|  | 
 | ||||||
|  |    (1) The NetBSD/i386 kernel is Multiboot-compliant, but lacks support | ||||||
|  | for Multiboot modules. | ||||||
|  | 
 | ||||||
|  |    (2) Only CRC32 data integrity check is supported (xz default is CRC64 | ||||||
|  | so one should use -check=crc32 option).  LZMA BCJ filters are supported. | ||||||
|  | 
 | ||||||
|  |    (3) There are a few pathological cases where loading a very badly | ||||||
|  | organized ELF kernel might take longer, but in practice this never | ||||||
|  | happen. | ||||||
|  | 
 | ||||||
|  | 1.5 The role of a boot loader | ||||||
|  | ============================= | ||||||
|  | 
 | ||||||
|  | The following is a quotation from Gordon Matzigkeit, a GRUB fanatic: | ||||||
|  | 
 | ||||||
|  |      Some people like to acknowledge both the operating system and | ||||||
|  |      kernel when they talk about their computers, so they might say they | ||||||
|  |      use "GNU/Linux" or "GNU/Hurd".  Other people seem to think that the | ||||||
|  |      kernel is the most important part of the system, so they like to | ||||||
|  |      call their GNU operating systems "Linux systems." | ||||||
|  | 
 | ||||||
|  |      I, personally, believe that this is a grave injustice, because the | ||||||
|  |      _boot loader_ is the most important software of all.  I used to | ||||||
|  |      refer to the above systems as either "LILO"(1) (*note Role of a | ||||||
|  |      boot loader-Footnote-1::) or "GRUB" systems. | ||||||
|  | 
 | ||||||
|  |      Unfortunately, nobody ever understood what I was talking about; now | ||||||
|  |      I just use the word "GNU" as a pseudonym for GRUB. | ||||||
|  | 
 | ||||||
|  |      So, if you ever hear people talking about their alleged "GNU" | ||||||
|  |      systems, remember that they are actually paying homage to the best | ||||||
|  |      boot loader around... GRUB! | ||||||
|  | 
 | ||||||
|  |    We, the GRUB maintainers, do not (usually) encourage Gordon's level | ||||||
|  | of fanaticism, but it helps to remember that boot loaders deserve | ||||||
|  | recognition.  We hope that you enjoy using GNU GRUB as much as we did | ||||||
|  | writing it. | ||||||
|  | 
 | ||||||
|  |    (1) The LInux LOader, a boot loader that everybody uses, but nobody | ||||||
|  | likes. | ||||||
|  | 
 | ||||||
							
								
								
									
										71
									
								
								boot/grub/persistent/docs/02_naming_convention
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								boot/grub/persistent/docs/02_naming_convention
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | ||||||
|  | 2 Naming convention | ||||||
|  | ******************* | ||||||
|  | 
 | ||||||
|  | The device syntax used in GRUB is a wee bit different from what you may | ||||||
|  | have seen before in your operating system(s), and you need to know it so | ||||||
|  | that you can specify a drive/partition. | ||||||
|  | 
 | ||||||
|  |    Look at the following examples and explanations: | ||||||
|  | 
 | ||||||
|  |      (fd0) | ||||||
|  | 
 | ||||||
|  |    First of all, GRUB requires that the device name be enclosed with '(' | ||||||
|  | and ')'.  The 'fd' part means that it is a floppy disk.  The number '0' | ||||||
|  | is the drive number, which is counted from _zero_.  This expression | ||||||
|  | means that GRUB will use the whole floppy disk. | ||||||
|  | 
 | ||||||
|  |      (hd0,msdos2) | ||||||
|  | 
 | ||||||
|  |    Here, 'hd' means it is a hard disk drive.  The first integer '0' | ||||||
|  | indicates the drive number, that is, the first hard disk, the string | ||||||
|  | 'msdos' indicates the partition scheme, while the second integer, '2', | ||||||
|  | indicates the partition number (or the PC slice number in the BSD | ||||||
|  | terminology).  The partition numbers are counted from _one_, not from | ||||||
|  | zero (as was the case in previous versions of GRUB). This expression | ||||||
|  | means the second partition of the first hard disk drive.  In this case, | ||||||
|  | GRUB uses one partition of the disk, instead of the whole disk. | ||||||
|  | 
 | ||||||
|  |      (hd0,msdos5) | ||||||
|  | 
 | ||||||
|  |    This specifies the first "extended partition" of the first hard disk | ||||||
|  | drive.  Note that the partition numbers for extended partitions are | ||||||
|  | counted from '5', regardless of the actual number of primary partitions | ||||||
|  | on your hard disk. | ||||||
|  | 
 | ||||||
|  |      (hd1,msdos1,bsd1) | ||||||
|  | 
 | ||||||
|  |    This means the BSD 'a' partition on first PC slice number of the | ||||||
|  | second hard disk. | ||||||
|  | 
 | ||||||
|  |    Of course, to actually access the disks or partitions with GRUB, you | ||||||
|  | need to use the device specification in a command, like 'set root=(fd0)' | ||||||
|  | or 'parttool (hd0,msdos3) hidden-'.  To help you find out which number | ||||||
|  | specifies a partition you want, the GRUB command-line (*note | ||||||
|  | Command-line interface::) options have argument completion.  This means | ||||||
|  | that, for example, you only need to type | ||||||
|  | 
 | ||||||
|  |      set root=( | ||||||
|  | 
 | ||||||
|  |    followed by a <TAB>, and GRUB will display the list of drives, | ||||||
|  | partitions, or file names.  So it should be quite easy to determine the | ||||||
|  | name of your target partition, even with minimal knowledge of the | ||||||
|  | syntax. | ||||||
|  | 
 | ||||||
|  |    Note that GRUB does _not_ distinguish IDE from SCSI - it simply | ||||||
|  | counts the drive numbers from zero, regardless of their type.  Normally, | ||||||
|  | any IDE drive number is less than any SCSI drive number, although that | ||||||
|  | is not true if you change the boot sequence by swapping IDE and SCSI | ||||||
|  | drives in your BIOS. | ||||||
|  | 
 | ||||||
|  |    Now the question is, how to specify a file?  Again, consider an | ||||||
|  | example: | ||||||
|  | 
 | ||||||
|  |      (hd0,msdos1)/vmlinuz | ||||||
|  | 
 | ||||||
|  |    This specifies the file named 'vmlinuz', found on the first partition | ||||||
|  | of the first hard disk drive.  Note that the argument completion works | ||||||
|  | with file names, too. | ||||||
|  | 
 | ||||||
|  |    That was easy, admit it.  Now read the next chapter, to find out how | ||||||
|  | to actually install GRUB on your drive. | ||||||
|  | 
 | ||||||
							
								
								
									
										49
									
								
								boot/grub/persistent/docs/03_os_specific_notes
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								boot/grub/persistent/docs/03_os_specific_notes
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | ||||||
|  | 3 OS-specific notes about grub tools | ||||||
|  | ************************************ | ||||||
|  | 
 | ||||||
|  | On OS which have device nodes similar to Unix-like OS GRUB tools use the | ||||||
|  | OS name.  E.g.  for GNU/Linux: | ||||||
|  | 
 | ||||||
|  |      # grub-install /dev/sda | ||||||
|  | 
 | ||||||
|  |    On AROS we use another syntax.  For volumes: | ||||||
|  | 
 | ||||||
|  |      //:<volume name> | ||||||
|  | 
 | ||||||
|  |    E.g. | ||||||
|  | 
 | ||||||
|  |      //:DH0 | ||||||
|  | 
 | ||||||
|  |    For disks we use syntax: | ||||||
|  |      //:<driver name>/unit/flags | ||||||
|  | 
 | ||||||
|  |    E.g. | ||||||
|  | 
 | ||||||
|  |      # grub-install //:ata.device/0/0 | ||||||
|  | 
 | ||||||
|  |    On Windows we use UNC path.  For volumes it's typically | ||||||
|  | 
 | ||||||
|  |      \\?\Volume{<GUID>} | ||||||
|  |      \\?\<drive letter>: | ||||||
|  | 
 | ||||||
|  |    E.g. | ||||||
|  | 
 | ||||||
|  |      \\?\Volume{17f34d50-cf64-4b02-800e-51d79c3aa2ff} | ||||||
|  |      \\?\C: | ||||||
|  | 
 | ||||||
|  |    For disks it's | ||||||
|  | 
 | ||||||
|  |      \\?\PhysicalDrive<number> | ||||||
|  | 
 | ||||||
|  |    E.g. | ||||||
|  | 
 | ||||||
|  |      # grub-install \\?\PhysicalDrive0 | ||||||
|  | 
 | ||||||
|  |    Beware that you may need to further escape the backslashes depending | ||||||
|  | on your shell. | ||||||
|  | 
 | ||||||
|  |    When compiled with cygwin support then cygwin drive names are | ||||||
|  | automatically when needed.  E.g. | ||||||
|  | 
 | ||||||
|  |      # grub-install /dev/sda | ||||||
|  | 
 | ||||||
							
								
								
									
										240
									
								
								boot/grub/persistent/docs/04_installation
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								boot/grub/persistent/docs/04_installation
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,240 @@ | ||||||
|  | 4 Installation | ||||||
|  | ************** | ||||||
|  | 
 | ||||||
|  | In order to install GRUB as your boot loader, you need to first install | ||||||
|  | the GRUB system and utilities under your UNIX-like operating system | ||||||
|  | (*note Obtaining and Building GRUB::).  You can do this either from the | ||||||
|  | source tarball, or as a package for your OS. | ||||||
|  | 
 | ||||||
|  |    After you have done that, you need to install the boot loader on a | ||||||
|  | drive (floppy or hard disk) by using the utility 'grub-install' (*note | ||||||
|  | Invoking grub-install::) on a UNIX-like OS. | ||||||
|  | 
 | ||||||
|  |    GRUB comes with boot images, which are normally put in the directory | ||||||
|  | '/usr/lib/grub/<cpu>-<platform>' (for BIOS-based machines | ||||||
|  | '/usr/lib/grub/i386-pc').  Hereafter, the directory where GRUB images | ||||||
|  | are initially placed (normally '/usr/lib/grub/<cpu>-<platform>') will be | ||||||
|  | called the "image directory", and the directory where the boot loader | ||||||
|  | needs to find them (usually '/boot') will be called the "boot | ||||||
|  | directory". | ||||||
|  | 
 | ||||||
|  | 4.1 Installing GRUB using grub-install | ||||||
|  | ====================================== | ||||||
|  | 
 | ||||||
|  | For information on where GRUB should be installed on PC BIOS platforms, | ||||||
|  | *note BIOS installation::. | ||||||
|  | 
 | ||||||
|  |    In order to install GRUB under a UNIX-like OS (such as GNU), invoke | ||||||
|  | the program 'grub-install' (*note Invoking grub-install::) as the | ||||||
|  | superuser ("root"). | ||||||
|  | 
 | ||||||
|  |    The usage is basically very simple.  You only need to specify one | ||||||
|  | argument to the program, namely, where to install the boot loader.  The | ||||||
|  | argument has to be either a device file (like '/dev/hda').  For example, | ||||||
|  | under Linux the following will install GRUB into the MBR of the first | ||||||
|  | IDE disk: | ||||||
|  | 
 | ||||||
|  |      # grub-install /dev/sda | ||||||
|  | 
 | ||||||
|  |    Likewise, under GNU/Hurd, this has the same effect: | ||||||
|  | 
 | ||||||
|  |      # grub-install /dev/hd0 | ||||||
|  | 
 | ||||||
|  |    But all the above examples assume that GRUB should put images under | ||||||
|  | the '/boot' directory.  If you want GRUB to put images under a directory | ||||||
|  | other than '/boot', you need to specify the option '--boot-directory'. | ||||||
|  | The typical usage is that you create a GRUB boot floppy with a | ||||||
|  | filesystem.  Here is an example: | ||||||
|  | 
 | ||||||
|  |      # mke2fs /dev/fd0 | ||||||
|  |      # mount -t ext2 /dev/fd0 /mnt | ||||||
|  |      # mkdir /mnt/boot | ||||||
|  |      # grub-install --boot-directory=/mnt/boot /dev/fd0 | ||||||
|  |      # umount /mnt | ||||||
|  | 
 | ||||||
|  |    Some BIOSes have a bug of exposing the first partition of a USB drive | ||||||
|  | as a floppy instead of exposing the USB drive as a hard disk (they call | ||||||
|  | it "USB-FDD" boot).  In such cases, you need to install like this: | ||||||
|  | 
 | ||||||
|  |      # losetup /dev/loop0 /dev/sdb1 | ||||||
|  |      # mount /dev/loop0 /mnt/usb | ||||||
|  |      # grub-install --boot-directory=/mnt/usb/bugbios --force --allow-floppy /dev/loop0 | ||||||
|  | 
 | ||||||
|  |    This install doesn't conflict with standard install as long as they | ||||||
|  | are in separate directories. | ||||||
|  | 
 | ||||||
|  |    Note that 'grub-install' is actually just a shell script and the real | ||||||
|  | task is done by other tools such as 'grub-mkimage'.  Therefore, you may | ||||||
|  | run those commands directly to install GRUB, without using | ||||||
|  | 'grub-install'.  Don't do that, however, unless you are very familiar | ||||||
|  | with the internals of GRUB. Installing a boot loader on a running OS may | ||||||
|  | be extremely dangerous. | ||||||
|  | 
 | ||||||
|  |    On EFI systems for fixed disk install you have to mount EFI System | ||||||
|  | Partition.  If you mount it at '/boot/efi' then you don't need any | ||||||
|  | special arguments: | ||||||
|  | 
 | ||||||
|  |      # grub-install | ||||||
|  | 
 | ||||||
|  |    Otherwise you need to specify where your EFI System partition is | ||||||
|  | mounted: | ||||||
|  | 
 | ||||||
|  |      # grub-install --efi-directory=/mnt/efi | ||||||
|  | 
 | ||||||
|  |    For removable installs you have to use '--removable' and specify both | ||||||
|  | '--boot-directory' and '--efi-directory': | ||||||
|  | 
 | ||||||
|  |      # grub-install --efi-directory=/mnt/usb --boot-directory=/mnt/usb/boot --removable | ||||||
|  | 
 | ||||||
|  | 4.2 Making a GRUB bootable CD-ROM | ||||||
|  | ================================= | ||||||
|  | 
 | ||||||
|  | GRUB supports the "no emulation mode" in the El Torito specification(1) | ||||||
|  | (*note Making a GRUB bootable CD-ROM-Footnote-1::).  This means that you | ||||||
|  | can use the whole CD-ROM from GRUB and you don't have to make a floppy | ||||||
|  | or hard disk image file, which can cause compatibility problems. | ||||||
|  | 
 | ||||||
|  |    For booting from a CD-ROM, GRUB uses a special image called | ||||||
|  | 'cdboot.img', which is concatenated with 'core.img'.  The 'core.img' | ||||||
|  | used for this should be built with at least the 'iso9660' and 'biosdisk' | ||||||
|  | modules.  Your bootable CD-ROM will usually also need to include a | ||||||
|  | configuration file 'grub.cfg' and some other GRUB modules. | ||||||
|  | 
 | ||||||
|  |    To make a simple generic GRUB rescue CD, you can use the | ||||||
|  | 'grub-mkrescue' program (*note Invoking grub-mkrescue::): | ||||||
|  | 
 | ||||||
|  |      $ grub-mkrescue -o grub.iso | ||||||
|  | 
 | ||||||
|  |    You will often need to include other files in your image.  To do | ||||||
|  | this, first make a top directory for the bootable image, say, 'iso': | ||||||
|  | 
 | ||||||
|  |      $ mkdir iso | ||||||
|  | 
 | ||||||
|  |    Make a directory for GRUB: | ||||||
|  | 
 | ||||||
|  |      $ mkdir -p iso/boot/grub | ||||||
|  | 
 | ||||||
|  |    If desired, make the config file 'grub.cfg' under 'iso/boot/grub' | ||||||
|  | (*note Configuration::), and copy any files and directories for the disc | ||||||
|  | to the directory 'iso/'. | ||||||
|  | 
 | ||||||
|  |    Finally, make the image: | ||||||
|  | 
 | ||||||
|  |      $ grub-mkrescue -o grub.iso iso | ||||||
|  | 
 | ||||||
|  |    This produces a file named 'grub.iso', which then can be burned into | ||||||
|  | a CD (or a DVD), or written to a USB mass storage device. | ||||||
|  | 
 | ||||||
|  |    The root device will be set up appropriately on entering your | ||||||
|  | 'grub.cfg' configuration file, so you can refer to file names on the CD | ||||||
|  | without needing to use an explicit device name.  This makes it easier to | ||||||
|  | produce rescue images that will work on both optical drives and USB mass | ||||||
|  | storage devices. | ||||||
|  | 
 | ||||||
|  |    (1) El Torito is a specification for bootable CD using BIOS | ||||||
|  | functions. | ||||||
|  | 
 | ||||||
|  | 4.3 The map between BIOS drives and OS devices | ||||||
|  | ============================================== | ||||||
|  | 
 | ||||||
|  | If the device map file exists, the GRUB utilities ('grub-probe', etc.) | ||||||
|  | read it to map BIOS drives to OS devices.  This file consists of lines | ||||||
|  | like this: | ||||||
|  | 
 | ||||||
|  |      (DEVICE) FILE | ||||||
|  | 
 | ||||||
|  |    DEVICE is a drive specified in the GRUB syntax (*note Device | ||||||
|  | syntax::), and FILE is an OS file, which is normally a device file. | ||||||
|  | 
 | ||||||
|  |    Historically, the device map file was used because GRUB device names | ||||||
|  | had to be used in the configuration file, and they were derived from | ||||||
|  | BIOS drive numbers.  The map between BIOS drives and OS devices cannot | ||||||
|  | always be guessed correctly: for example, GRUB will get the order wrong | ||||||
|  | if you exchange the boot sequence between IDE and SCSI in your BIOS. | ||||||
|  | 
 | ||||||
|  |    Unfortunately, even OS device names are not always stable.  Modern | ||||||
|  | versions of the Linux kernel may probe drives in a different order from | ||||||
|  | boot to boot, and the prefix ('/dev/hd*' versus '/dev/sd*') may change | ||||||
|  | depending on the driver subsystem in use.  As a result, the device map | ||||||
|  | file required frequent editing on some systems. | ||||||
|  | 
 | ||||||
|  |    GRUB avoids this problem nowadays by using UUIDs or file system | ||||||
|  | labels when generating 'grub.cfg', and we advise that you do the same | ||||||
|  | for any custom menu entries you write.  If the device map file does not | ||||||
|  | exist, then the GRUB utilities will assume a temporary device map on the | ||||||
|  | fly.  This is often good enough, particularly in the common case of | ||||||
|  | single-disk systems. | ||||||
|  | 
 | ||||||
|  |    However, the device map file is not entirely obsolete yet, and it is | ||||||
|  | used for overriding when current environment is different from the one | ||||||
|  | on boot.  Most common case is if you use a partition or logical volume | ||||||
|  | as a disk for virtual machine.  You can put any comments in the file if | ||||||
|  | needed, as the GRUB utilities assume that a line is just a comment if | ||||||
|  | the first character is '#'. | ||||||
|  | 
 | ||||||
|  | 4.4 BIOS installation | ||||||
|  | ===================== | ||||||
|  | 
 | ||||||
|  | MBR | ||||||
|  | === | ||||||
|  | 
 | ||||||
|  | The partition table format traditionally used on PC BIOS platforms is | ||||||
|  | called the Master Boot Record (MBR) format; this is the format that | ||||||
|  | allows up to four primary partitions and additional logical partitions. | ||||||
|  | With this partition table format, there are two ways to install GRUB: it | ||||||
|  | can be embedded in the area between the MBR and the first partition | ||||||
|  | (called by various names, such as the "boot track", "MBR gap", or | ||||||
|  | "embedding area", and which is usually at least 31 KiB), or the core | ||||||
|  | image can be installed in a file system and a list of the blocks that | ||||||
|  | make it up can be stored in the first sector of that partition. | ||||||
|  | 
 | ||||||
|  |    Each of these has different problems.  There is no way to reserve | ||||||
|  | space in the embedding area with complete safety, and some proprietary | ||||||
|  | software is known to use it to make it difficult for users to work | ||||||
|  | around licensing restrictions; and systems are sometimes partitioned | ||||||
|  | without leaving enough space before the first partition.  On the other | ||||||
|  | hand, installing to a filesystem means that GRUB is vulnerable to its | ||||||
|  | blocks being moved around by filesystem features such as tail packing, | ||||||
|  | or even by aggressive fsck implementations, so this approach is quite | ||||||
|  | fragile; and this approach can only be used if the '/boot' filesystem is | ||||||
|  | on the same disk that the BIOS boots from, so that GRUB does not have to | ||||||
|  | rely on guessing BIOS drive numbers. | ||||||
|  | 
 | ||||||
|  |    The GRUB development team generally recommends embedding GRUB before | ||||||
|  | the first partition, unless you have special requirements.  You must | ||||||
|  | ensure that the first partition starts at least 31 KiB (63 sectors) from | ||||||
|  | the start of the disk; on modern disks, it is often a performance | ||||||
|  | advantage to align partitions on larger boundaries anyway, so the first | ||||||
|  | partition might start 1 MiB from the start of the disk. | ||||||
|  | 
 | ||||||
|  | GPT | ||||||
|  | === | ||||||
|  | 
 | ||||||
|  | Some newer systems use the GUID Partition Table (GPT) format.  This was | ||||||
|  | specified as part of the Extensible Firmware Interface (EFI), but it can | ||||||
|  | also be used on BIOS platforms if system software supports it; for | ||||||
|  | example, GRUB and GNU/Linux can be used in this configuration.  With | ||||||
|  | this format, it is possible to reserve a whole partition for GRUB, | ||||||
|  | called the BIOS Boot Partition.  GRUB can then be embedded into that | ||||||
|  | partition without the risk of being overwritten by other software and | ||||||
|  | without being contained in a filesystem which might move its blocks | ||||||
|  | around. | ||||||
|  | 
 | ||||||
|  |    When creating a BIOS Boot Partition on a GPT system, you should make | ||||||
|  | sure that it is at least 31 KiB in size.  (GPT-formatted disks are not | ||||||
|  | usually particularly small, so we recommend that you make it larger than | ||||||
|  | the bare minimum, such as 1 MiB, to allow plenty of room for growth.) | ||||||
|  | You must also make sure that it has the proper partition type.  Using | ||||||
|  | GNU Parted, you can set this using a command such as the following: | ||||||
|  | 
 | ||||||
|  |      # parted /dev/DISK set PARTITION-NUMBER bios_grub on | ||||||
|  | 
 | ||||||
|  |    If you are using gdisk, set the partition type to '0xEF02'.  With | ||||||
|  | partitioning programs that require setting the GUID directly, it should | ||||||
|  | be '21686148-6449-6e6f-744e656564454649'. | ||||||
|  | 
 | ||||||
|  |    *Caution:* Be very careful which partition you select!  When GRUB | ||||||
|  | finds a BIOS Boot Partition during installation, it will automatically | ||||||
|  | overwrite part of it.  Make sure that the partition does not contain any | ||||||
|  | other data. | ||||||
|  | 
 | ||||||
							
								
								
									
										244
									
								
								boot/grub/persistent/docs/05_booting
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										244
									
								
								boot/grub/persistent/docs/05_booting
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,244 @@ | ||||||
|  | 5 Booting | ||||||
|  | ********* | ||||||
|  | 
 | ||||||
|  | GRUB can load Multiboot-compliant kernels in a consistent way, but for | ||||||
|  | some free operating systems you need to use some OS-specific magic. | ||||||
|  | 
 | ||||||
|  | 5.1 How to boot operating systems | ||||||
|  | ================================= | ||||||
|  | 
 | ||||||
|  | GRUB has two distinct boot methods.  One of the two is to load an | ||||||
|  | operating system directly, and the other is to chain-load another boot | ||||||
|  | loader which then will load an operating system actually.  Generally | ||||||
|  | speaking, the former is more desirable, because you don't need to | ||||||
|  | install or maintain other boot loaders and GRUB is flexible enough to | ||||||
|  | load an operating system from an arbitrary disk/partition.  However, the | ||||||
|  | latter is sometimes required, since GRUB doesn't support all the | ||||||
|  | existing operating systems natively. | ||||||
|  | 
 | ||||||
|  | 5.1.1 How to boot an OS directly with GRUB | ||||||
|  | ------------------------------------------ | ||||||
|  | 
 | ||||||
|  | Multiboot (*note Multiboot Specification: (multiboot)Top.) is the native | ||||||
|  | format supported by GRUB. For the sake of convenience, there is also | ||||||
|  | support for Linux, FreeBSD, NetBSD and OpenBSD. If you want to boot | ||||||
|  | other operating systems, you will have to chain-load them (*note | ||||||
|  | Chain-loading::). | ||||||
|  | 
 | ||||||
|  |    FIXME: this section is incomplete. | ||||||
|  | 
 | ||||||
|  |   1. Run the command 'boot' (*note boot::). | ||||||
|  | 
 | ||||||
|  |    However, DOS and Windows have some deficiencies, so you might have to | ||||||
|  | use more complicated instructions.  *Note DOS/Windows::, for more | ||||||
|  | information. | ||||||
|  | 
 | ||||||
|  | 5.1.2 Chain-loading an OS | ||||||
|  | ------------------------- | ||||||
|  | 
 | ||||||
|  | Operating systems that do not support Multiboot and do not have specific | ||||||
|  | support in GRUB (specific support is available for Linux, FreeBSD, | ||||||
|  | NetBSD and OpenBSD) must be chain-loaded, which involves loading another | ||||||
|  | boot loader and jumping to it in real mode. | ||||||
|  | 
 | ||||||
|  |    The 'chainloader' command (*note chainloader::) is used to set this | ||||||
|  | up.  It is normally also necessary to load some GRUB modules and set the | ||||||
|  | appropriate root device.  Putting this together, we get something like | ||||||
|  | this, for a Windows system on the first partition of the first hard | ||||||
|  | disk: | ||||||
|  | 
 | ||||||
|  | menuentry "Windows" { | ||||||
|  | 	insmod chain | ||||||
|  | 	insmod ntfs | ||||||
|  | 	set root=(hd0,1) | ||||||
|  | 	chainloader +1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  |    On systems with multiple hard disks, an additional workaround may be | ||||||
|  | required.  *Note DOS/Windows::. | ||||||
|  | 
 | ||||||
|  |    Chain-loading is only supported on PC BIOS and EFI platforms. | ||||||
|  | 
 | ||||||
|  | 5.2 Loopback booting | ||||||
|  | ==================== | ||||||
|  | 
 | ||||||
|  | GRUB is able to read from an image (be it one of CD or HDD) stored on | ||||||
|  | any of its accessible storages (refer to *note loopback:: command). | ||||||
|  | However the OS itself should be able to find its root.  This usually | ||||||
|  | involves running a userspace program running before the real root is | ||||||
|  | discovered.  This is achieved by GRUB loading a specially made small | ||||||
|  | image and passing it as ramdisk to the kernel.  This is achieved by | ||||||
|  | commands 'kfreebsd_module', 'knetbsd_module_elf', 'kopenbsd_ramdisk', | ||||||
|  | 'initrd' (*note initrd::), 'initrd16' (*note initrd::), | ||||||
|  | 'multiboot_module', 'multiboot2_module' or 'xnu_ramdisk' depending on | ||||||
|  | the loader.  Note that for knetbsd the image must be put inside | ||||||
|  | miniroot.kmod and the whole miniroot.kmod has to be loaded.  In kopenbsd | ||||||
|  | payload this is disabled by default.  Aditionally behaviour of initial | ||||||
|  | ramdisk depends on command line options.  Several distributors provide | ||||||
|  | the image for this purpose or it's integrated in their standard ramdisk | ||||||
|  | and activated by special option.  Consult your kernel and distribution | ||||||
|  | manual for more details.  Other loaders like appleloader, chainloader | ||||||
|  | (BIOS, EFI, coreboot), freedos, ntldr and plan9 provide no possibility | ||||||
|  | of loading initial ramdisk and as far as author is aware the payloads in | ||||||
|  | question don't support either initial ramdisk or discovering loopback | ||||||
|  | boot in other way and as such not bootable this way.  Please consider | ||||||
|  | alternative boot methods like copying all files from the image to actual | ||||||
|  | partition.  Consult your OS documentation for more details | ||||||
|  | 
 | ||||||
|  | 5.3 Some caveats on OS-specific issues | ||||||
|  | ====================================== | ||||||
|  | 
 | ||||||
|  | Here, we describe some caveats on several operating systems. | ||||||
|  | 
 | ||||||
|  | 5.3.1 GNU/Hurd | ||||||
|  | -------------- | ||||||
|  | 
 | ||||||
|  | Since GNU/Hurd is Multiboot-compliant, it is easy to boot it; there is | ||||||
|  | nothing special about it.  But do not forget that you have to specify a | ||||||
|  | root partition to the kernel. | ||||||
|  | 
 | ||||||
|  |   1. Set GRUB's root device to the same drive as GNU/Hurd's.  The | ||||||
|  |      command 'search --set=root --file /boot/gnumach.gz' or similar may | ||||||
|  |      help you (*note search::). | ||||||
|  | 
 | ||||||
|  |   2. Load the kernel and the modules, like this: | ||||||
|  | 
 | ||||||
|  |           grub> multiboot /boot/gnumach.gz root=device:hd0s1 | ||||||
|  |           grub> module  /hurd/ext2fs.static ext2fs --readonly \ | ||||||
|  |                              --multiboot-command-line='${kernel-command-line}' \ | ||||||
|  |                              --host-priv-port='${host-port}' \ | ||||||
|  |                              --device-master-port='${device-port}' \ | ||||||
|  |                              --exec-server-task='${exec-task}' -T typed '${root}' \ | ||||||
|  |                              '$(task-create)' '$(task-resume)' | ||||||
|  |           grub> module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)' | ||||||
|  | 
 | ||||||
|  |   3. Finally, run the command 'boot' (*note boot::). | ||||||
|  | 
 | ||||||
|  | 5.3.2 GNU/Linux | ||||||
|  | --------------- | ||||||
|  | 
 | ||||||
|  | It is relatively easy to boot GNU/Linux from GRUB, because it somewhat | ||||||
|  | resembles to boot a Multiboot-compliant OS. | ||||||
|  | 
 | ||||||
|  |   1. Set GRUB's root device to the same drive as GNU/Linux's.  The | ||||||
|  |      command 'search --set=root --file /vmlinuz' or similar may help you | ||||||
|  |      (*note search::). | ||||||
|  | 
 | ||||||
|  |   2. Load the kernel using the command 'linux' (*note linux::): | ||||||
|  | 
 | ||||||
|  |           grub> linux /vmlinuz root=/dev/sda1 | ||||||
|  | 
 | ||||||
|  |      If you need to specify some kernel parameters, just append them to | ||||||
|  |      the command.  For example, to set 'acpi' to 'off', do this: | ||||||
|  | 
 | ||||||
|  |           grub> linux /vmlinuz root=/dev/sda1 acpi=off | ||||||
|  | 
 | ||||||
|  |      See the documentation in the Linux source tree for complete | ||||||
|  |      information on the available options. | ||||||
|  | 
 | ||||||
|  |      With 'linux' GRUB uses 32-bit protocol.  Some BIOS services like | ||||||
|  |      APM or EDD aren't available with this protocol.  In this case you | ||||||
|  |      need to use 'linux16' | ||||||
|  | 
 | ||||||
|  |           grub> linux16 /vmlinuz root=/dev/sda1 acpi=off | ||||||
|  | 
 | ||||||
|  |   3. If you use an initrd, execute the command 'initrd' (*note initrd::) | ||||||
|  |      after 'linux': | ||||||
|  | 
 | ||||||
|  |           grub> initrd /initrd | ||||||
|  | 
 | ||||||
|  |      If you used 'linux16' you need to use 'initrd16': | ||||||
|  | 
 | ||||||
|  |           grub> initrd16 /initrd | ||||||
|  | 
 | ||||||
|  |   4. Finally, run the command 'boot' (*note boot::). | ||||||
|  | 
 | ||||||
|  |    *Caution:* If you use an initrd and specify the 'mem=' option to the | ||||||
|  | kernel to let it use less than actual memory size, you will also have to | ||||||
|  | specify the same memory size to GRUB. To let GRUB know the size, run the | ||||||
|  | command 'uppermem' _before_ loading the kernel.  *Note uppermem::, for | ||||||
|  | more information. | ||||||
|  | 
 | ||||||
|  | 5.3.3 NetBSD | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | Booting a NetBSD kernel from GRUB is also relatively easy: first set | ||||||
|  | GRUB's root device, then load the kernel and the modules, and finally | ||||||
|  | run 'boot'. | ||||||
|  | 
 | ||||||
|  |   1. Set GRUB's root device to the partition holding the NetBSD root | ||||||
|  |      file system.  For a disk with a NetBSD disk label, this is usually | ||||||
|  |      the first partition (a:).  In that case, and assuming that the | ||||||
|  |      partition is on the first hard disk, set GRUB's root device as | ||||||
|  |      follows: | ||||||
|  | 
 | ||||||
|  |           grub> insmod part_bsd | ||||||
|  |           grub> set root=(hd0,netbsd1) | ||||||
|  | 
 | ||||||
|  |      For a disk with a GUID Partition Table (GPT), and assuming that the | ||||||
|  |      NetBSD root partition is the third GPT partition, do this: | ||||||
|  | 
 | ||||||
|  |           grub> insmod part_gpt | ||||||
|  |           grub> set root=(hd0,gpt3) | ||||||
|  | 
 | ||||||
|  |   2. Load the kernel using the command 'knetbsd': | ||||||
|  | 
 | ||||||
|  |           grub> knetbsd /netbsd | ||||||
|  | 
 | ||||||
|  |      Various options may be given to 'knetbsd'.  These options are, for | ||||||
|  |      the most part, the same as in the NetBSD boot loader.  For | ||||||
|  |      instance, to boot the system in single-user mode and with verbose | ||||||
|  |      messages, do this: | ||||||
|  | 
 | ||||||
|  |           grub> knetbsd /netbsd -s -v | ||||||
|  | 
 | ||||||
|  |   3. If needed, load kernel modules with the command | ||||||
|  |      'knetbsd_module_elf'.  A typical example is the module for the root | ||||||
|  |      file system: | ||||||
|  | 
 | ||||||
|  |           grub> knetbsd_module_elf /stand/amd64/6.0/modules/ffs/ffs.kmod | ||||||
|  | 
 | ||||||
|  |   4. Finally, run the command 'boot' (*note boot::). | ||||||
|  | 
 | ||||||
|  | 5.3.4 DOS/Windows | ||||||
|  | ----------------- | ||||||
|  | 
 | ||||||
|  | GRUB cannot boot DOS or Windows directly, so you must chain-load them | ||||||
|  | (*note Chain-loading::).  However, their boot loaders have some critical | ||||||
|  | deficiencies, so it may not work to just chain-load them.  To overcome | ||||||
|  | the problems, GRUB provides you with two helper functions. | ||||||
|  | 
 | ||||||
|  |    If you have installed DOS (or Windows) on a non-first hard disk, you | ||||||
|  | have to use the disk swapping technique, because that OS cannot boot | ||||||
|  | from any disks but the first one.  The workaround used in GRUB is the | ||||||
|  | command 'drivemap' (*note drivemap::), like this: | ||||||
|  | 
 | ||||||
|  |      drivemap -s (hd0) (hd1) | ||||||
|  | 
 | ||||||
|  |    This performs a "virtual" swap between your first and second hard | ||||||
|  | drive. | ||||||
|  | 
 | ||||||
|  |    *Caution:* This is effective only if DOS (or Windows) uses BIOS to | ||||||
|  | access the swapped disks.  If that OS uses a special driver for the | ||||||
|  | disks, this probably won't work. | ||||||
|  | 
 | ||||||
|  |    Another problem arises if you installed more than one set of | ||||||
|  | DOS/Windows onto one disk, because they could be confused if there are | ||||||
|  | more than one primary partitions for DOS/Windows.  Certainly you should | ||||||
|  | avoid doing this, but there is a solution if you do want to do so.  Use | ||||||
|  | the partition hiding/unhiding technique. | ||||||
|  | 
 | ||||||
|  |    If GRUB "hides" a DOS (or Windows) partition (*note parttool::), DOS | ||||||
|  | (or Windows) will ignore the partition.  If GRUB "unhides" a DOS (or | ||||||
|  | Windows) partition, DOS (or Windows) will detect the partition.  Thus, | ||||||
|  | if you have installed DOS (or Windows) on the first and the second | ||||||
|  | partition of the first hard disk, and you want to boot the copy on the | ||||||
|  | first partition, do the following: | ||||||
|  | 
 | ||||||
|  |      parttool (hd0,1) hidden- | ||||||
|  |      parttool (hd0,2) hidden+ | ||||||
|  |      set root=(hd0,1) | ||||||
|  |      chainloader +1 | ||||||
|  |      parttool ${root} boot+ | ||||||
|  |      boot | ||||||
|  | 
 | ||||||
							
								
								
									
										740
									
								
								boot/grub/persistent/docs/06_your_own_configuration_file
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										740
									
								
								boot/grub/persistent/docs/06_your_own_configuration_file
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,740 @@ | ||||||
|  | 6 Writing your own configuration file | ||||||
|  | ************************************* | ||||||
|  | 
 | ||||||
|  | GRUB is configured using 'grub.cfg', usually located under '/boot/grub'. | ||||||
|  | This file is quite flexible, but most users will not need to write the | ||||||
|  | whole thing by hand. | ||||||
|  | 
 | ||||||
|  | 6.1 Simple configuration handling | ||||||
|  | ================================= | ||||||
|  | 
 | ||||||
|  | The program 'grub-mkconfig' (*note Invoking grub-mkconfig::) generates | ||||||
|  | 'grub.cfg' files suitable for most cases.  It is suitable for use when | ||||||
|  | upgrading a distribution, and will discover available kernels and | ||||||
|  | attempt to generate menu entries for them. | ||||||
|  | 
 | ||||||
|  |    'grub-mkconfig' does have some limitations.  While adding extra | ||||||
|  | custom menu entries to the end of the list can be done by editing | ||||||
|  | '/etc/grub.d/40_custom' or creating '/boot/grub/custom.cfg', changing | ||||||
|  | the order of menu entries or changing their titles may require making | ||||||
|  | complex changes to shell scripts stored in '/etc/grub.d/'.  This may be | ||||||
|  | improved in the future.  In the meantime, those who feel that it would | ||||||
|  | be easier to write 'grub.cfg' directly are encouraged to do so (*note | ||||||
|  | Booting::, and *note Shell-like scripting::), and to disable any system | ||||||
|  | provided by their distribution to automatically run 'grub-mkconfig'. | ||||||
|  | 
 | ||||||
|  |    The file '/etc/default/grub' controls the operation of | ||||||
|  | 'grub-mkconfig'.  It is sourced by a shell script, and so must be valid | ||||||
|  | POSIX shell input; normally, it will just be a sequence of 'KEY=value' | ||||||
|  | lines, but if the value contains spaces or other special characters then | ||||||
|  | it must be quoted.  For example: | ||||||
|  | 
 | ||||||
|  |      GRUB_TERMINAL_INPUT="console serial" | ||||||
|  | 
 | ||||||
|  |    Valid keys in '/etc/default/grub' are as follows: | ||||||
|  | 
 | ||||||
|  | 'GRUB_DEFAULT' | ||||||
|  |      The default menu entry.  This may be a number, in which case it | ||||||
|  |      identifies the Nth entry in the generated menu counted from zero, | ||||||
|  |      or the title of a menu entry, or the special string 'saved'.  Using | ||||||
|  |      the id may be useful if you want to set a menu entry as the default | ||||||
|  |      even though there may be a variable number of entries before it. | ||||||
|  | 
 | ||||||
|  |      For example, if you have: | ||||||
|  | 
 | ||||||
|  |      menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux { | ||||||
|  |      	... | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      then you can make this the default using: | ||||||
|  | 
 | ||||||
|  |           GRUB_DEFAULT=example-gnu-linux | ||||||
|  | 
 | ||||||
|  |      Previously it was documented the way to use entry title.  While | ||||||
|  |      this still works it's not recommended since titles often contain | ||||||
|  |      unstable device names and may be translated | ||||||
|  | 
 | ||||||
|  |      If you set this to 'saved', then the default menu entry will be | ||||||
|  |      that saved by 'GRUB_SAVEDEFAULT' or 'grub-set-default'.  This | ||||||
|  |      relies on the environment block, which may not be available in all | ||||||
|  |      situations (*note Environment block::). | ||||||
|  | 
 | ||||||
|  |      The default is '0'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_SAVEDEFAULT' | ||||||
|  |      If this option is set to 'true', then, when an entry is selected, | ||||||
|  |      save it as a new default entry for use by future runs of GRUB. This | ||||||
|  |      is only useful if 'GRUB_DEFAULT=saved'; it is a separate option | ||||||
|  |      because 'GRUB_DEFAULT=saved' is useful without this option, in | ||||||
|  |      conjunction with 'grub-set-default'.  Unset by default.  This | ||||||
|  |      option relies on the environment block, which may not be available | ||||||
|  |      in all situations (*note Environment block::). | ||||||
|  | 
 | ||||||
|  | 'GRUB_TIMEOUT' | ||||||
|  |      Boot the default entry this many seconds after the menu is | ||||||
|  |      displayed, unless a key is pressed.  The default is '5'.  Set to | ||||||
|  |      '0' to boot immediately without displaying the menu, or to '-1' to | ||||||
|  |      wait indefinitely. | ||||||
|  | 
 | ||||||
|  |      If 'GRUB_TIMEOUT_STYLE' is set to 'countdown' or 'hidden', the | ||||||
|  |      timeout is instead counted before the menu is displayed. | ||||||
|  | 
 | ||||||
|  | 'GRUB_TIMEOUT_STYLE' | ||||||
|  |      If this option is unset or set to 'menu', then GRUB will display | ||||||
|  |      the menu and then wait for the timeout set by 'GRUB_TIMEOUT' to | ||||||
|  |      expire before booting the default entry.  Pressing a key interrupts | ||||||
|  |      the timeout. | ||||||
|  | 
 | ||||||
|  |      If this option is set to 'countdown' or 'hidden', then, before | ||||||
|  |      displaying the menu, GRUB will wait for the timeout set by | ||||||
|  |      'GRUB_TIMEOUT' to expire.  If <ESC> is pressed during that time, it | ||||||
|  |      will display the menu and wait for input.  If a hotkey associated | ||||||
|  |      with a menu entry is pressed, it will boot the associated menu | ||||||
|  |      entry immediately.  If the timeout expires before either of these | ||||||
|  |      happens, it will boot the default entry.  In the 'countdown' case, | ||||||
|  |      it will show a one-line indication of the remaining time. | ||||||
|  | 
 | ||||||
|  | 'GRUB_DEFAULT_BUTTON' | ||||||
|  | 'GRUB_TIMEOUT_BUTTON' | ||||||
|  | 'GRUB_TIMEOUT_STYLE_BUTTON' | ||||||
|  | 'GRUB_BUTTON_CMOS_ADDRESS' | ||||||
|  |      Variants of the corresponding variables without the '_BUTTON' | ||||||
|  |      suffix, used to support vendor-specific power buttons.  *Note | ||||||
|  |      Vendor power-on keys::. | ||||||
|  | 
 | ||||||
|  | 'GRUB_DISTRIBUTOR' | ||||||
|  |      Set by distributors of GRUB to their identifying name.  This is | ||||||
|  |      used to generate more informative menu entry titles. | ||||||
|  | 
 | ||||||
|  | 'GRUB_TERMINAL_INPUT' | ||||||
|  |      Select the terminal input device.  You may select multiple devices | ||||||
|  |      here, separated by spaces. | ||||||
|  | 
 | ||||||
|  |      Valid terminal input names depend on the platform, but may include | ||||||
|  |      'console' (native platform console), 'serial' (serial terminal), | ||||||
|  |      'serial_<port>' (serial terminal with explicit port selection), | ||||||
|  |      'at_keyboard' (PC AT keyboard), or 'usb_keyboard' (USB keyboard | ||||||
|  |      using the HID Boot Protocol, for cases where the firmware does not | ||||||
|  |      handle this). | ||||||
|  | 
 | ||||||
|  |      The default is to use the platform's native terminal input. | ||||||
|  | 
 | ||||||
|  | 'GRUB_TERMINAL_OUTPUT' | ||||||
|  |      Select the terminal output device.  You may select multiple devices | ||||||
|  |      here, separated by spaces. | ||||||
|  | 
 | ||||||
|  |      Valid terminal output names depend on the platform, but may include | ||||||
|  |      'console' (native platform console), 'serial' (serial terminal), | ||||||
|  |      'serial_<port>' (serial terminal with explicit port selection), | ||||||
|  |      'gfxterm' (graphics-mode output), 'vga_text' (VGA text output), | ||||||
|  |      'mda_text' (MDA text output), 'morse' (Morse-coding using system | ||||||
|  |      beeper) or 'spkmodem' (simple data protocol using system speaker). | ||||||
|  | 
 | ||||||
|  |      'spkmodem' is useful when no serial port is available.  Connect the | ||||||
|  |      output of sending system (where GRUB is running) to line-in of | ||||||
|  |      receiving system (usually developer machine).  On receiving system | ||||||
|  |      compile 'spkmodem-recv' from 'util/spkmodem-recv.c' and run: | ||||||
|  | 
 | ||||||
|  |           parecord --channels=1 --rate=48000 --format=s16le | ./spkmodem-recv | ||||||
|  | 
 | ||||||
|  |      The default is to use the platform's native terminal output. | ||||||
|  | 
 | ||||||
|  | 'GRUB_TERMINAL' | ||||||
|  |      If this option is set, it overrides both 'GRUB_TERMINAL_INPUT' and | ||||||
|  |      'GRUB_TERMINAL_OUTPUT' to the same value. | ||||||
|  | 
 | ||||||
|  | 'GRUB_SERIAL_COMMAND' | ||||||
|  |      A command to configure the serial port when using the serial | ||||||
|  |      console.  *Note serial::.  Defaults to 'serial'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_CMDLINE_LINUX' | ||||||
|  |      Command-line arguments to add to menu entries for the Linux kernel. | ||||||
|  | 
 | ||||||
|  | 'GRUB_CMDLINE_LINUX_DEFAULT' | ||||||
|  |      Unless 'GRUB_DISABLE_RECOVERY' is set to 'true', two menu entries | ||||||
|  |      will be generated for each Linux kernel: one default entry and one | ||||||
|  |      entry for recovery mode.  This option lists command-line arguments | ||||||
|  |      to add only to the default menu entry, after those listed in | ||||||
|  |      'GRUB_CMDLINE_LINUX'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_CMDLINE_NETBSD' | ||||||
|  | 'GRUB_CMDLINE_NETBSD_DEFAULT' | ||||||
|  |      As 'GRUB_CMDLINE_LINUX' and 'GRUB_CMDLINE_LINUX_DEFAULT', but for | ||||||
|  |      NetBSD. | ||||||
|  | 
 | ||||||
|  | 'GRUB_CMDLINE_GNUMACH' | ||||||
|  |      As 'GRUB_CMDLINE_LINUX', but for GNU Mach. | ||||||
|  | 
 | ||||||
|  | 'GRUB_CMDLINE_XEN' | ||||||
|  | 'GRUB_CMDLINE_XEN_DEFAULT' | ||||||
|  |      The values of these options are passed to Xen hypervisor Xen menu | ||||||
|  |      entries, for all respectively normal entries. | ||||||
|  | 
 | ||||||
|  | 'GRUB_CMDLINE_LINUX_XEN_REPLACE' | ||||||
|  | 'GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT' | ||||||
|  |      The values of these options replace the values of | ||||||
|  |      'GRUB_CMDLINE_LINUX' and 'GRUB_CMDLINE_LINUX_DEFAULT' for Linux and | ||||||
|  |      Xen menu entries. | ||||||
|  | 
 | ||||||
|  | 'GRUB_EARLY_INITRD_LINUX_CUSTOM' | ||||||
|  | 'GRUB_EARLY_INITRD_LINUX_STOCK' | ||||||
|  |      List of space-separated early initrd images to be loaded from | ||||||
|  |      '/boot'.  This is for loading things like CPU microcode, firmware, | ||||||
|  |      ACPI tables, crypto keys, and so on.  These early images will be | ||||||
|  |      loaded in the order declared, and all will be loaded before the | ||||||
|  |      actual functional initrd image. | ||||||
|  | 
 | ||||||
|  |      'GRUB_EARLY_INITRD_LINUX_STOCK' is for your distribution to declare | ||||||
|  |      images that are provided by the distribution.  It should not be | ||||||
|  |      modified without understanding the consequences.  They will be | ||||||
|  |      loaded first. | ||||||
|  | 
 | ||||||
|  |      'GRUB_EARLY_INITRD_LINUX_CUSTOM' is for your custom created images. | ||||||
|  | 
 | ||||||
|  |      The default stock images are as follows, though they may be | ||||||
|  |      overridden by your distribution: | ||||||
|  |           intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio | ||||||
|  | 
 | ||||||
|  | 'GRUB_DISABLE_LINUX_UUID' | ||||||
|  |      Normally, 'grub-mkconfig' will generate menu entries that use | ||||||
|  |      universally-unique identifiers (UUIDs) to identify the root | ||||||
|  |      filesystem to the Linux kernel, using a 'root=UUID=...' kernel | ||||||
|  |      parameter.  This is usually more reliable, but in some cases it may | ||||||
|  |      not be appropriate.  To disable the use of UUIDs, set this option | ||||||
|  |      to 'true'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_DISABLE_LINUX_PARTUUID' | ||||||
|  |      If 'grub-mkconfig' cannot identify the root filesystem via its | ||||||
|  |      universally-unique indentifier (UUID), 'grub-mkconfig' can use the | ||||||
|  |      UUID of the partition containing the filesystem to identify the | ||||||
|  |      root filesystem to the Linux kernel via a 'root=PARTUUID=...' | ||||||
|  |      kernel parameter.  This is not as reliable as using the filesystem | ||||||
|  |      UUID, but is more reliable than using the Linux device names.  When | ||||||
|  |      'GRUB_DISABLE_LINUX_PARTUUID' is set to 'false', the Linux kernel | ||||||
|  |      version must be 2.6.37 (3.10 for systems using the MSDOS partition | ||||||
|  |      scheme) or newer.  This option defaults to 'true'.  To enable the | ||||||
|  |      use of partition UUIDs, set this option to 'false'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_DISABLE_RECOVERY' | ||||||
|  |      If this option is set to 'true', disable the generation of recovery | ||||||
|  |      mode menu entries. | ||||||
|  | 
 | ||||||
|  | 'GRUB_VIDEO_BACKEND' | ||||||
|  |      If graphical video support is required, either because the | ||||||
|  |      'gfxterm' graphical terminal is in use or because | ||||||
|  |      'GRUB_GFXPAYLOAD_LINUX' is set, then 'grub-mkconfig' will normally | ||||||
|  |      load all available GRUB video drivers and use the one most | ||||||
|  |      appropriate for your hardware.  If you need to override this for | ||||||
|  |      some reason, then you can set this option. | ||||||
|  | 
 | ||||||
|  |      After 'grub-install' has been run, the available video drivers are | ||||||
|  |      listed in '/boot/grub/video.lst'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_GFXMODE' | ||||||
|  |      Set the resolution used on the 'gfxterm' graphical terminal.  Note | ||||||
|  |      that you can only use modes which your graphics card supports via | ||||||
|  |      VESA BIOS Extensions (VBE), so for example native LCD panel | ||||||
|  |      resolutions may not be available.  The default is 'auto', which | ||||||
|  |      tries to select a preferred resolution.  *Note gfxmode::. | ||||||
|  | 
 | ||||||
|  | 'GRUB_BACKGROUND' | ||||||
|  |      Set a background image for use with the 'gfxterm' graphical | ||||||
|  |      terminal.  The value of this option must be a file readable by GRUB | ||||||
|  |      at boot time, and it must end with '.png', '.tga', '.jpg', or | ||||||
|  |      '.jpeg'.  The image will be scaled if necessary to fit the screen. | ||||||
|  | 
 | ||||||
|  | 'GRUB_THEME' | ||||||
|  |      Set a theme for use with the 'gfxterm' graphical terminal. | ||||||
|  | 
 | ||||||
|  | 'GRUB_GFXPAYLOAD_LINUX' | ||||||
|  |      Set to 'text' to force the Linux kernel to boot in normal text | ||||||
|  |      mode, 'keep' to preserve the graphics mode set using | ||||||
|  |      'GRUB_GFXMODE', 'WIDTHxHEIGHT'['xDEPTH'] to set a particular | ||||||
|  |      graphics mode, or a sequence of these separated by commas or | ||||||
|  |      semicolons to try several modes in sequence.  *Note gfxpayload::. | ||||||
|  | 
 | ||||||
|  |      Depending on your kernel, your distribution, your graphics card, | ||||||
|  |      and the phase of the moon, note that using this option may cause | ||||||
|  |      GNU/Linux to suffer from various display problems, particularly | ||||||
|  |      during the early part of the boot sequence.  If you have problems, | ||||||
|  |      set this option to 'text' and GRUB will tell Linux to boot in | ||||||
|  |      normal text mode. | ||||||
|  | 
 | ||||||
|  | 'GRUB_DISABLE_OS_PROBER' | ||||||
|  |      Normally, 'grub-mkconfig' will try to use the external 'os-prober' | ||||||
|  |      program, if installed, to discover other operating systems | ||||||
|  |      installed on the same system and generate appropriate menu entries | ||||||
|  |      for them.  Set this option to 'true' to disable this. | ||||||
|  | 
 | ||||||
|  | 'GRUB_OS_PROBER_SKIP_LIST' | ||||||
|  |      List of space-separated FS UUIDs of filesystems to be ignored from | ||||||
|  |      os-prober output.  For efi chainloaders it's <UUID>@<EFI FILE> | ||||||
|  | 
 | ||||||
|  | 'GRUB_DISABLE_SUBMENU' | ||||||
|  |      Normally, 'grub-mkconfig' will generate top level menu entry for | ||||||
|  |      the kernel with highest version number and put all other found | ||||||
|  |      kernels or alternative menu entries for recovery mode in submenu. | ||||||
|  |      For entries returned by 'os-prober' first entry will be put on top | ||||||
|  |      level and all others in submenu.  If this option is set to 'y', | ||||||
|  |      flat menu with all entries on top level will be generated instead. | ||||||
|  |      Changing this option will require changing existing values of | ||||||
|  |      'GRUB_DEFAULT', 'fallback' (*note fallback::) and 'default' (*note | ||||||
|  |      default::) environment variables as well as saved default entry | ||||||
|  |      using 'grub-set-default' and value used with 'grub-reboot'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_ENABLE_CRYPTODISK' | ||||||
|  |      If set to 'y', 'grub-mkconfig' and 'grub-install' will check for | ||||||
|  |      encrypted disks and generate additional commands needed to access | ||||||
|  |      them during boot.  Note that in this case unattended boot is not | ||||||
|  |      possible because GRUB will wait for passphrase to unlock encrypted | ||||||
|  |      container. | ||||||
|  | 
 | ||||||
|  | 'GRUB_INIT_TUNE' | ||||||
|  |      Play a tune on the speaker when GRUB starts.  This is particularly | ||||||
|  |      useful for users unable to see the screen.  The value of this | ||||||
|  |      option is passed directly to *note play::. | ||||||
|  | 
 | ||||||
|  | 'GRUB_BADRAM' | ||||||
|  |      If this option is set, GRUB will issue a *note badram:: command to | ||||||
|  |      filter out specified regions of RAM. | ||||||
|  | 
 | ||||||
|  | 'GRUB_PRELOAD_MODULES' | ||||||
|  |      This option may be set to a list of GRUB module names separated by | ||||||
|  |      spaces.  Each module will be loaded as early as possible, at the | ||||||
|  |      start of 'grub.cfg'. | ||||||
|  | 
 | ||||||
|  |    The following options are still accepted for compatibility with | ||||||
|  | existing configurations, but have better replacements: | ||||||
|  | 
 | ||||||
|  | 'GRUB_HIDDEN_TIMEOUT' | ||||||
|  |      Wait this many seconds before displaying the menu.  If <ESC> is | ||||||
|  |      pressed during that time, display the menu and wait for input | ||||||
|  |      according to 'GRUB_TIMEOUT'.  If a hotkey associated with a menu | ||||||
|  |      entry is pressed, boot the associated menu entry immediately.  If | ||||||
|  |      the timeout expires before either of these happens, display the | ||||||
|  |      menu for the number of seconds specified in 'GRUB_TIMEOUT' before | ||||||
|  |      booting the default entry. | ||||||
|  | 
 | ||||||
|  |      If you set 'GRUB_HIDDEN_TIMEOUT', you should also set | ||||||
|  |      'GRUB_TIMEOUT=0' so that the menu is not displayed at all unless | ||||||
|  |      <ESC> is pressed. | ||||||
|  | 
 | ||||||
|  |      This option is unset by default, and is deprecated in favour of the | ||||||
|  |      less confusing 'GRUB_TIMEOUT_STYLE=countdown' or | ||||||
|  |      'GRUB_TIMEOUT_STYLE=hidden'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_HIDDEN_TIMEOUT_QUIET' | ||||||
|  |      In conjunction with 'GRUB_HIDDEN_TIMEOUT', set this to 'true' to | ||||||
|  |      suppress the verbose countdown while waiting for a key to be | ||||||
|  |      pressed before displaying the menu. | ||||||
|  | 
 | ||||||
|  |      This option is unset by default, and is deprecated in favour of the | ||||||
|  |      less confusing 'GRUB_TIMEOUT_STYLE=countdown'. | ||||||
|  | 
 | ||||||
|  | 'GRUB_HIDDEN_TIMEOUT_BUTTON' | ||||||
|  |      Variant of 'GRUB_HIDDEN_TIMEOUT', used to support vendor-specific | ||||||
|  |      power buttons.  *Note Vendor power-on keys::. | ||||||
|  | 
 | ||||||
|  |      This option is unset by default, and is deprecated in favour of the | ||||||
|  |      less confusing 'GRUB_TIMEOUT_STYLE=countdown' or | ||||||
|  |      'GRUB_TIMEOUT_STYLE=hidden'. | ||||||
|  | 
 | ||||||
|  |    For more detailed customisation of 'grub-mkconfig''s output, you may | ||||||
|  | edit the scripts in '/etc/grub.d' directly.  '/etc/grub.d/40_custom' is | ||||||
|  | particularly useful for adding entire custom menu entries; simply type | ||||||
|  | the menu entries you want to add at the end of that file, making sure to | ||||||
|  | leave at least the first two lines intact. | ||||||
|  | 
 | ||||||
|  | 6.2 Root Identifcation Heuristics | ||||||
|  | ================================= | ||||||
|  | 
 | ||||||
|  | If the target operating system uses the Linux kernel, 'grub-mkconfig' | ||||||
|  | attempts to identify the root file system via a heuristic algoirthm. | ||||||
|  | This algorithm selects the identification method of the root file system | ||||||
|  | by considering three factors.  The first is if an initrd for the target | ||||||
|  | operating system is also present.  The second is | ||||||
|  | 'GRUB_DISABLE_LINUX_UUID' and if set to 'true', prevents 'grub-mkconfig' | ||||||
|  | from identifying the root file system by its UUID. The third is | ||||||
|  | 'GRUB_DISABLE_LINUX_PARTUUID' and if set to 'true', prevents | ||||||
|  | 'grub-mkconfig' from identifying the root file system via the UUID of | ||||||
|  | its enclosing partition.  If the variables are assigned any other value, | ||||||
|  | that value is considered equivalent to 'false'.  The variables are also | ||||||
|  | considered to be set to 'false' if they are not set. | ||||||
|  | 
 | ||||||
|  |    When booting, the Linux kernel will delegate the task of mounting the | ||||||
|  | root filesystem to the initrd.  Most initrd images determine the root | ||||||
|  | file system by checking the Linux kernel's command-line for the 'root' | ||||||
|  | key and use its value as the identification method of the root file | ||||||
|  | system.  To improve the reliability of booting, most initrd images also | ||||||
|  | allow the root file system to be identified by its UUID. Because of this | ||||||
|  | behavior, the 'grub-mkconfig' command will set 'root' to 'root=UUID=...' | ||||||
|  | to provide the initrd with the filesystem UUID of the root file system. | ||||||
|  | 
 | ||||||
|  |    If no initrd is detected or 'GRUB_DISABLE_LINUX_UUID' is set to | ||||||
|  | 'true' then 'grub-command' will identify the root filesystem by setting | ||||||
|  | the kernel command-line variable 'root' to 'root=PARTUUID=...' unless | ||||||
|  | 'GRUB_DISABLE_LINUX_PARTUUID' is also set to 'true'.  If | ||||||
|  | 'GRUB_DISABLE_LINUX_PARTUUID' is also set to 'true', 'grub-command' will | ||||||
|  | identify by its Linux device name. | ||||||
|  | 
 | ||||||
|  |    The following table summarizes the behavior of the 'grub-mkconfig' | ||||||
|  | command. | ||||||
|  | 
 | ||||||
|  | Initrd     GRUB_DISABLE_LINUX_PARTUUID   GRUB_DISABLE_LINUX_UUID   Linux Root | ||||||
|  | detected   Set To                        Set To                    ID Method | ||||||
|  | -------------------------------------------------------------------------------- | ||||||
|  | false      false                         false                     part UUID | ||||||
|  | false      false                         true                      part UUID | ||||||
|  | false      true                          false                     dev name | ||||||
|  | false      true                          true                      dev name | ||||||
|  | true       false                         false                     fs UUID | ||||||
|  | true       false                         true                      part UUID | ||||||
|  | true       true                          false                     fs UUID | ||||||
|  | true       true                          true                      dev name | ||||||
|  | 
 | ||||||
|  |    Remember, 'GRUB_DISABLE_LINUX_PARTUUID' and 'GRUB_DISABLE_LINUX_UUID' | ||||||
|  | are also considered to be set to 'false' when they are unset. | ||||||
|  | 
 | ||||||
|  | 6.3 Writing full configuration files directly | ||||||
|  | ============================================= | ||||||
|  | 
 | ||||||
|  | 'grub.cfg' is written in GRUB's built-in scripting language, which has a | ||||||
|  | syntax quite similar to that of GNU Bash and other Bourne shell | ||||||
|  | derivatives. | ||||||
|  | 
 | ||||||
|  | Words | ||||||
|  | ===== | ||||||
|  | 
 | ||||||
|  | A "word" is a sequence of characters considered as a single unit by | ||||||
|  | GRUB. Words are separated by "metacharacters", which are the following | ||||||
|  | plus space, tab, and newline: | ||||||
|  | 
 | ||||||
|  |      { } | & $ ; < > | ||||||
|  | 
 | ||||||
|  |    Quoting may be used to include metacharacters in words; see below. | ||||||
|  | 
 | ||||||
|  | Reserved words | ||||||
|  | ============== | ||||||
|  | 
 | ||||||
|  | Reserved words have a special meaning to GRUB. The following words are | ||||||
|  | recognised as reserved when unquoted and either the first word of a | ||||||
|  | simple command or the third word of a 'for' command: | ||||||
|  | 
 | ||||||
|  |      ! [[ ]] { } | ||||||
|  |      case do done elif else esac fi for function | ||||||
|  |      if in menuentry select then time until while | ||||||
|  | 
 | ||||||
|  |    Not all of these reserved words have a useful purpose yet; some are | ||||||
|  | reserved for future expansion. | ||||||
|  | 
 | ||||||
|  | Quoting | ||||||
|  | ======= | ||||||
|  | 
 | ||||||
|  | Quoting is used to remove the special meaning of certain characters or | ||||||
|  | words.  It can be used to treat metacharacters as part of a word, to | ||||||
|  | prevent reserved words from being recognised as such, and to prevent | ||||||
|  | variable expansion. | ||||||
|  | 
 | ||||||
|  |    There are three quoting mechanisms: the escape character, single | ||||||
|  | quotes, and double quotes. | ||||||
|  | 
 | ||||||
|  |    A non-quoted backslash (\) is the "escape character".  It preserves | ||||||
|  | the literal value of the next character that follows, with the exception | ||||||
|  | of newline. | ||||||
|  | 
 | ||||||
|  |    Enclosing characters in single quotes preserves the literal value of | ||||||
|  | each character within the quotes.  A single quote may not occur between | ||||||
|  | single quotes, even when preceded by a backslash. | ||||||
|  | 
 | ||||||
|  |    Enclosing characters in double quotes preserves the literal value of | ||||||
|  | all characters within the quotes, with the exception of '$' and '\'. | ||||||
|  | The '$' character retains its special meaning within double quotes.  The | ||||||
|  | backslash retains its special meaning only when followed by one of the | ||||||
|  | following characters: '$', '"', '\', or newline.  A backslash-newline | ||||||
|  | pair is treated as a line continuation (that is, it is removed from the | ||||||
|  | input stream and effectively ignored(1) (*note Shell-like | ||||||
|  | scripting-Footnote-1::)).  A double quote may be quoted within double | ||||||
|  | quotes by preceding it with a backslash. | ||||||
|  | 
 | ||||||
|  | Variable expansion | ||||||
|  | ================== | ||||||
|  | 
 | ||||||
|  | The '$' character introduces variable expansion.  The variable name to | ||||||
|  | be expanded may be enclosed in braces, which are optional but serve to | ||||||
|  | protect the variable to be expanded from characters immediately | ||||||
|  | following it which could be interpreted as part of the name. | ||||||
|  | 
 | ||||||
|  |    Normal variable names begin with an alphabetic character, followed by | ||||||
|  | zero or more alphanumeric characters.  These names refer to entries in | ||||||
|  | the GRUB environment (*note Environment::). | ||||||
|  | 
 | ||||||
|  |    Positional variable names consist of one or more digits.  They | ||||||
|  | represent parameters passed to function calls, with '$1' representing | ||||||
|  | the first parameter, and so on. | ||||||
|  | 
 | ||||||
|  |    The special variable name '?' expands to the exit status of the most | ||||||
|  | recently executed command.  When positional variable names are active, | ||||||
|  | other special variable names '@', '*' and '#' are defined and they | ||||||
|  | expand to all positional parameters with necessary quoting, positional | ||||||
|  | parameters without any quoting, and positional parameter count | ||||||
|  | respectively. | ||||||
|  | 
 | ||||||
|  | Comments | ||||||
|  | ======== | ||||||
|  | 
 | ||||||
|  | A word beginning with '#' causes that word and all remaining characters | ||||||
|  | on that line to be ignored. | ||||||
|  | 
 | ||||||
|  | Simple commands | ||||||
|  | =============== | ||||||
|  | 
 | ||||||
|  | A "simple command" is a sequence of words separated by spaces or tabs | ||||||
|  | and terminated by a semicolon or a newline.  The first word specifies | ||||||
|  | the command to be executed.  The remaining words are passed as arguments | ||||||
|  | to the invoked command. | ||||||
|  | 
 | ||||||
|  |    The return value of a simple command is its exit status.  If the | ||||||
|  | reserved word '!' precedes the command, then the return value is instead | ||||||
|  | the logical negation of the command's exit status. | ||||||
|  | 
 | ||||||
|  | Compound commands | ||||||
|  | ================= | ||||||
|  | 
 | ||||||
|  | A "compound command" is one of the following: | ||||||
|  | 
 | ||||||
|  | for NAME in WORD ...; do LIST; done | ||||||
|  |      The list of words following 'in' is expanded, generating a list of | ||||||
|  |      items.  The variable NAME is set to each element of this list in | ||||||
|  |      turn, and LIST is executed each time.  The return value is the exit | ||||||
|  |      status of the last command that executes.  If the expansion of the | ||||||
|  |      items following 'in' results in an empty list, no commands are | ||||||
|  |      executed, and the return status is 0. | ||||||
|  | 
 | ||||||
|  | if LIST; then LIST; [elif LIST; then LIST;] ... [else LIST;] fi | ||||||
|  |      The 'if' LIST is executed.  If its exit status is zero, the 'then' | ||||||
|  |      LIST is executed.  Otherwise, each 'elif' LIST is executed in turn, | ||||||
|  |      and if its exit status is zero, the corresponding 'then' LIST is | ||||||
|  |      executed and the command completes.  Otherwise, the 'else' LIST is | ||||||
|  |      executed, if present.  The exit status is the exit status of the | ||||||
|  |      last command executed, or zero if no condition tested true. | ||||||
|  | 
 | ||||||
|  | while COND; do LIST; done | ||||||
|  | until COND; do LIST; done | ||||||
|  |      The 'while' command continuously executes the 'do' LIST as long as | ||||||
|  |      the last command in COND returns an exit status of zero.  The | ||||||
|  |      'until' command is identical to the 'while' command, except that | ||||||
|  |      the test is negated; the 'do' LIST is executed as long as the last | ||||||
|  |      command in COND returns a non-zero exit status.  The exit status of | ||||||
|  |      the 'while' and 'until' commands is the exit status of the last | ||||||
|  |      'do' LIST command executed, or zero if none was executed. | ||||||
|  | 
 | ||||||
|  | function NAME { COMMAND; ... } | ||||||
|  |      This defines a function named NAME.  The "body" of the function is | ||||||
|  |      the list of commands within braces, each of which must be | ||||||
|  |      terminated with a semicolon or a newline.  This list of commands | ||||||
|  |      will be executed whenever NAME is specified as the name of a simple | ||||||
|  |      command.  Function definitions do not affect the exit status in | ||||||
|  |      '$?'.  When executed, the exit status of a function is the exit | ||||||
|  |      status of the last command executed in the body. | ||||||
|  | 
 | ||||||
|  | menuentry TITLE ['--class=class' ...] ['--users=users'] ['--unrestricted'] ['--hotkey=key'] ['--id=id'] { COMMAND; ... } | ||||||
|  |      *Note menuentry::. | ||||||
|  | 
 | ||||||
|  | Built-in Commands | ||||||
|  | ================= | ||||||
|  | 
 | ||||||
|  | Some built-in commands are also provided by GRUB script to help script | ||||||
|  | writers perform actions that are otherwise not possible.  For example, | ||||||
|  | these include commands to jump out of a loop without fully completing | ||||||
|  | it, etc. | ||||||
|  | 
 | ||||||
|  | break ['n'] | ||||||
|  |      Exit from within a 'for', 'while', or 'until' loop.  If 'n' is | ||||||
|  |      specified, break 'n' levels.  'n' must be greater than or equal to | ||||||
|  |      1.  If 'n' is greater than the number of enclosing loops, all | ||||||
|  |      enclosing loops are exited.  The return value is 0 unless 'n' is | ||||||
|  |      not greater than or equal to 1. | ||||||
|  | 
 | ||||||
|  | continue ['n'] | ||||||
|  |      Resume the next iteration of the enclosing 'for', 'while' or | ||||||
|  |      'until' loop.  If 'n' is specified, resume at the 'n'th enclosing | ||||||
|  |      loop.  'n' must be greater than or equal to 1.  If 'n' is greater | ||||||
|  |      than the number of enclosing loops, the last enclosing loop (the | ||||||
|  |      "top-level" loop) is resumed.  The return value is 0 unless 'n' is | ||||||
|  |      not greater than or equal to 1. | ||||||
|  | 
 | ||||||
|  | return ['n'] | ||||||
|  |      Causes a function to exit with the return value specified by 'n'. | ||||||
|  |      If 'n' is omitted, the return status is that of the last command | ||||||
|  |      executed in the function body.  If used outside a function the | ||||||
|  |      return status is false. | ||||||
|  | 
 | ||||||
|  | setparams ['arg'] ... | ||||||
|  |      Replace positional parameters starting with '$1' with arguments to | ||||||
|  |      'setparams'. | ||||||
|  | 
 | ||||||
|  | shift ['n'] | ||||||
|  |      The positional parameters from 'n'+1 ... are renamed to '$1'.... | ||||||
|  |      Parameters represented by the numbers '$#' down to '$#'-'n'+1 are | ||||||
|  |      unset.  'n' must be a non-negative number less than or equal to | ||||||
|  |      '$#'.  If 'n' is 0, no parameters are changed.  If 'n' is not | ||||||
|  |      given, it is assumed to be 1.  If 'n' is greater than '$#', the | ||||||
|  |      positional parameters are not changed.  The return status is | ||||||
|  |      greater than zero if 'n' is greater than '$#' or less than zero; | ||||||
|  |      otherwise 0. | ||||||
|  | 
 | ||||||
|  |    (1) Currently a backslash-newline pair within a variable name is not | ||||||
|  | handled properly, so use this feature with some care. | ||||||
|  | 
 | ||||||
|  | 6.4 Multi-boot manual config | ||||||
|  | ============================ | ||||||
|  | 
 | ||||||
|  | Currently autogenerating config files for multi-boot environments | ||||||
|  | depends on os-prober and has several shortcomings.  While fixing it is | ||||||
|  | scheduled for the next release, meanwhile you can make use of the power | ||||||
|  | of GRUB syntax and do it yourself.  A possible configuration is detailed | ||||||
|  | here, feel free to adjust to your needs. | ||||||
|  | 
 | ||||||
|  |    First create a separate GRUB partition, big enough to hold GRUB. Some | ||||||
|  | of the following entries show how to load OS installer images from this | ||||||
|  | same partition, for that you obviously need to make the partition large | ||||||
|  | enough to hold those images as well.  Mount this partition on/mnt/boot | ||||||
|  | and disable GRUB in all OSes and manually install self-compiled latest | ||||||
|  | GRUB with: | ||||||
|  | 
 | ||||||
|  |    'grub-install --boot-directory=/mnt/boot /dev/sda' | ||||||
|  | 
 | ||||||
|  |    In all the OSes install GRUB tools but disable installing GRUB in | ||||||
|  | bootsector, so you'll have menu.lst and grub.cfg available for use. | ||||||
|  | Also disable os-prober use by setting: | ||||||
|  | 
 | ||||||
|  |    'GRUB_DISABLE_OS_PROBER=true' | ||||||
|  | 
 | ||||||
|  |    in /etc/default/grub | ||||||
|  | 
 | ||||||
|  |    Then write a grub.cfg (/mnt/boot/grub/grub.cfg): | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |      menuentry "OS using grub2" { | ||||||
|  |         insmod xfs | ||||||
|  |         search --set=root --label OS1 --hint hd0,msdos8 | ||||||
|  |         configfile /boot/grub/grub.cfg | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "OS using grub2-legacy" { | ||||||
|  |         insmod ext2 | ||||||
|  |         search --set=root --label OS2 --hint hd0,msdos6 | ||||||
|  |         legacy_configfile /boot/grub/menu.lst | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "Windows XP" { | ||||||
|  |         insmod ntfs | ||||||
|  |         search --set=root --label WINDOWS_XP --hint hd0,msdos1 | ||||||
|  |         ntldr /ntldr | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "Windows 7" { | ||||||
|  |         insmod ntfs | ||||||
|  |         search --set=root --label WINDOWS_7 --hint hd0,msdos2 | ||||||
|  |         ntldr /bootmgr | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "FreeBSD" { | ||||||
|  |                insmod zfs | ||||||
|  |                search --set=root --label freepool --hint hd0,msdos7 | ||||||
|  |                kfreebsd /freebsd@/boot/kernel/kernel | ||||||
|  |                kfreebsd_module_elf /freebsd@/boot/kernel/opensolaris.ko | ||||||
|  |                kfreebsd_module_elf /freebsd@/boot/kernel/zfs.ko | ||||||
|  |                kfreebsd_module /freebsd@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache | ||||||
|  |                set kFreeBSD.vfs.root.mountfrom=zfs:freepool/freebsd | ||||||
|  |                set kFreeBSD.hw.psm.synaptics_support=1 | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "experimental GRUB" { | ||||||
|  |                search --set=root --label GRUB --hint hd0,msdos5 | ||||||
|  |                multiboot /experimental/grub/i386-pc/core.img | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "Fedora 16 installer" { | ||||||
|  |                search --set=root --label GRUB --hint hd0,msdos5 | ||||||
|  |                linux /fedora/vmlinuz lang=en_US keymap=sg resolution=1280x800 | ||||||
|  |                initrd /fedora/initrd.img | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "Fedora rawhide installer" { | ||||||
|  |                search --set=root --label GRUB --hint hd0,msdos5 | ||||||
|  |                linux /fedora/vmlinuz repo=ftp://mirror.switch.ch/mirror/fedora/linux/development/rawhide/x86_64 lang=en_US keymap=sg resolution=1280x800 | ||||||
|  |                initrd /fedora/initrd.img | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "Debian sid installer" { | ||||||
|  |                search --set=root --label GRUB --hint hd0,msdos5 | ||||||
|  |                linux /debian/dists/sid/main/installer-amd64/current/images/hd-media/vmlinuz | ||||||
|  |                initrd /debian/dists/sid/main/installer-amd64/current/images/hd-media/initrd.gz | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |    Notes: | ||||||
|  |    * Argument to search after -label is FS LABEL. You can also use UUIDs | ||||||
|  |      with -fs-uuid UUID instead of -label LABEL. You could also use | ||||||
|  |      direct 'root=hd0,msdosX' but this is not recommended due to device | ||||||
|  |      name instability. | ||||||
|  | 
 | ||||||
|  | 6.5 Embedding a configuration file into GRUB | ||||||
|  | ============================================ | ||||||
|  | 
 | ||||||
|  | GRUB supports embedding a configuration file directly into the core | ||||||
|  | image, so that it is loaded before entering normal mode.  This is | ||||||
|  | useful, for example, when it is not straightforward to find the real | ||||||
|  | configuration file, or when you need to debug problems with loading that | ||||||
|  | file.  'grub-install' uses this feature when it is not using BIOS disk | ||||||
|  | functions or when installing to a different disk from the one containing | ||||||
|  | '/boot/grub', in which case it needs to use the 'search' command (*note | ||||||
|  | search::) to find '/boot/grub'. | ||||||
|  | 
 | ||||||
|  |    To embed a configuration file, use the '-c' option to 'grub-mkimage'. | ||||||
|  | The file is copied into the core image, so it may reside anywhere on the | ||||||
|  | file system, and may be removed after running 'grub-mkimage'. | ||||||
|  | 
 | ||||||
|  |    After the embedded configuration file (if any) is executed, GRUB will | ||||||
|  | load the 'normal' module (*note normal::), which will then read the real | ||||||
|  | configuration file from '$prefix/grub.cfg'.  By this point, the 'root' | ||||||
|  | variable will also have been set to the root device name.  For example, | ||||||
|  | 'prefix' might be set to '(hd0,1)/boot/grub', and 'root' might be set to | ||||||
|  | 'hd0,1'.  Thus, in most cases, the embedded configuration file only | ||||||
|  | needs to set the 'prefix' and 'root' variables, and then drop through to | ||||||
|  | GRUB's normal processing.  A typical example of this might look like | ||||||
|  | this: | ||||||
|  | 
 | ||||||
|  |      search.fs_uuid 01234567-89ab-cdef-0123-456789abcdef root | ||||||
|  |      set prefix=($root)/boot/grub | ||||||
|  | 
 | ||||||
|  |    (The 'search_fs_uuid' module must be included in the core image for | ||||||
|  | this example to work.) | ||||||
|  | 
 | ||||||
|  |    In more complex cases, it may be useful to read other configuration | ||||||
|  | files directly from the embedded configuration file.  This allows such | ||||||
|  | things as reading files not called 'grub.cfg', or reading files from a | ||||||
|  | directory other than that where GRUB's loadable modules are installed. | ||||||
|  | To do this, include the 'configfile' and 'normal' modules in the core | ||||||
|  | image, and embed a configuration file that uses the 'configfile' command | ||||||
|  | to load another file.  The following example of this also requires the | ||||||
|  | 'echo', 'search_label', and 'test' modules to be included in the core | ||||||
|  | image: | ||||||
|  | 
 | ||||||
|  |      search.fs_label grub root | ||||||
|  |      if [ -e /boot/grub/example/test1.cfg ]; then | ||||||
|  |          set prefix=($root)/boot/grub | ||||||
|  |          configfile /boot/grub/example/test1.cfg | ||||||
|  |      else | ||||||
|  |          if [ -e /boot/grub/example/test2.cfg ]; then | ||||||
|  |              set prefix=($root)/boot/grub | ||||||
|  |              configfile /boot/grub/example/test2.cfg | ||||||
|  |          else | ||||||
|  |              echo "Could not find an example configuration file!" | ||||||
|  |          fi | ||||||
|  |      fi | ||||||
|  | 
 | ||||||
|  |    The embedded configuration file may not contain menu entries | ||||||
|  | directly, but may only read them from elsewhere using 'configfile'. | ||||||
|  | 
 | ||||||
							
								
								
									
										520
									
								
								boot/grub/persistent/docs/07_themes
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										520
									
								
								boot/grub/persistent/docs/07_themes
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,520 @@ | ||||||
|  | 7 Theme file format | ||||||
|  | ******************* | ||||||
|  | 
 | ||||||
|  | 7.1 Introduction | ||||||
|  | ================ | ||||||
|  | 
 | ||||||
|  | The GRUB graphical menu supports themes that can customize the layout | ||||||
|  | and appearance of the GRUB boot menu.  The theme is configured through a | ||||||
|  | plain text file that specifies the layout of the various GUI components | ||||||
|  | (including the boot menu, timeout progress bar, and text messages) as | ||||||
|  | well as the appearance using colors, fonts, and images.  Example is | ||||||
|  | available in docs/example_theme.txt | ||||||
|  | 
 | ||||||
|  | 7.2 Theme Elements | ||||||
|  | ================== | ||||||
|  | 
 | ||||||
|  | 7.2.1 Colors | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | Colors can be specified in several ways: | ||||||
|  | 
 | ||||||
|  |    * HTML-style "#RRGGBB" or "#RGB" format, where *R*, *G*, and *B* are | ||||||
|  |      hexadecimal digits (e.g., "#8899FF") | ||||||
|  |    * as comma-separated decimal RGB values (e.g., "128, 128, 255") | ||||||
|  |    * with "SVG 1.0 color names" (e.g., "cornflowerblue") which must be | ||||||
|  |      specified in lowercase. | ||||||
|  | 
 | ||||||
|  | 7.2.2 Fonts | ||||||
|  | ----------- | ||||||
|  | 
 | ||||||
|  | The fonts GRUB uses "PFF2 font format" bitmap fonts.  Fonts are | ||||||
|  | specified with full font names.  Currently there is no provision for a | ||||||
|  | preference list of fonts, or deriving one font from another.  Fonts are | ||||||
|  | loaded with the "loadfont" command in GRUB (*note loadfont::).  To see | ||||||
|  | the list of loaded fonts, execute the "lsfonts" command (*note | ||||||
|  | lsfonts::).  If there are too many fonts to fit on screen, do "set | ||||||
|  | pager=1" before executing "lsfonts". | ||||||
|  | 
 | ||||||
|  | 7.2.3 Progress Bar | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | Figure 7.1 | ||||||
|  | 
 | ||||||
|  | Figure 7.2 | ||||||
|  | 
 | ||||||
|  | Progress bars are used to display the remaining time before GRUB boots | ||||||
|  | the default menu entry.  To create a progress bar that will display the | ||||||
|  | remaining time before automatic boot, simply create a "progress_bar" | ||||||
|  | component with the id "__timeout__".  This indicates to GRUB that the | ||||||
|  | progress bar should be updated as time passes, and it should be made | ||||||
|  | invisible if the countdown to automatic boot is interrupted by the user. | ||||||
|  | 
 | ||||||
|  |    Progress bars may optionally have text displayed on them.  This text | ||||||
|  | is controlled by variable "text" which contains a printf template with | ||||||
|  | the only argument %d is the number of seconds remaining.  Additionally | ||||||
|  | special values "@TIMEOUT_NOTIFICATION_SHORT@", | ||||||
|  | "@TIMEOUT_NOTIFICATION_MIDDLE@", "@TIMEOUT_NOTIFICATION_LONG@" are | ||||||
|  | replaced with standard and translated templates. | ||||||
|  | 
 | ||||||
|  | 7.2.4 Circular Progress Indicator | ||||||
|  | --------------------------------- | ||||||
|  | 
 | ||||||
|  | The circular progress indicator functions similarly to the progress bar. | ||||||
|  | When given an id of "__timeout__", GRUB updates the circular progress | ||||||
|  | indicator's value to indicate the time remaining.  For the circular | ||||||
|  | progress indicator, there are two images used to render it: the *center* | ||||||
|  | image, and the *tick* image.  The center image is rendered in the center | ||||||
|  | of the component, while the tick image is used to render each mark along | ||||||
|  | the circumference of the indicator. | ||||||
|  | 
 | ||||||
|  | 7.2.5 Labels | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | Text labels can be placed on the boot screen.  The font, color, and | ||||||
|  | horizontal alignment can be specified for labels.  If a label is given | ||||||
|  | the id "__timeout__", then the "text" property for that label is also | ||||||
|  | updated with a message informing the user of the number of seconds | ||||||
|  | remaining until automatic boot.  This is useful in case you want the | ||||||
|  | text displayed somewhere else instead of directly on the progress bar. | ||||||
|  | 
 | ||||||
|  | 7.2.6 Boot Menu | ||||||
|  | --------------- | ||||||
|  | 
 | ||||||
|  | The boot menu where GRUB displays the menu entries from the "grub.cfg" | ||||||
|  | file.  It is a list of items, where each item has a title and an | ||||||
|  | optional icon.  The icon is selected based on the *classes* specified | ||||||
|  | for the menu entry.  If there is a PNG file named "myclass.png" in the | ||||||
|  | "grub/themes/icons" directory, it will be displayed for items which have | ||||||
|  | the class *myclass*.  The boot menu can be customized in several ways, | ||||||
|  | such as the font and color used for the menu entry title, and by | ||||||
|  | specifying styled boxes for the menu itself and for the selected item | ||||||
|  | highlight. | ||||||
|  | 
 | ||||||
|  | 7.2.7 Styled Boxes | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | One of the most important features for customizing the layout is the use | ||||||
|  | of *styled boxes*.  A styled box is composed of 9 rectangular (and | ||||||
|  | potentially empty) regions, which are used to seamlessly draw the styled | ||||||
|  | box on screen: | ||||||
|  | 
 | ||||||
|  | Northwest (nw)         North (n)              Northeast (ne) | ||||||
|  | West (w)               Center (c)             East (e) | ||||||
|  | Southwest (sw)         South (s)              Southeast (se) | ||||||
|  | 
 | ||||||
|  |    To support any size of box on screen, the center slice and the slices | ||||||
|  | for the top, bottom, and sides are all scaled to the correct size for | ||||||
|  | the component on screen, using the following rules: | ||||||
|  | 
 | ||||||
|  |   1. The edge slices (north, south, east, and west) are scaled in the | ||||||
|  |      direction of the edge they are adjacent to.  For instance, the west | ||||||
|  |      slice is scaled vertically. | ||||||
|  |   2. The corner slices (northwest, northeast, southeast, and southwest) | ||||||
|  |      are not scaled. | ||||||
|  |   3. The center slice is scaled to fill the remaining space in the | ||||||
|  |      middle. | ||||||
|  | 
 | ||||||
|  |    As an example of how an image might be sliced up, consider the styled | ||||||
|  | box used for a terminal view. | ||||||
|  | 
 | ||||||
|  | Figure 7.3 | ||||||
|  | 
 | ||||||
|  | 7.2.8 Creating Styled Box Images | ||||||
|  | -------------------------------- | ||||||
|  | 
 | ||||||
|  | The Inkscape_ scalable vector graphics editor is a very useful tool for | ||||||
|  | creating styled box images.  One process that works well for slicing a | ||||||
|  | drawing into the necessary image slices is: | ||||||
|  | 
 | ||||||
|  |   1. Create or open the drawing you'd like use. | ||||||
|  |   2. Create a new layer on the top of the layer stack.  Make it visible. | ||||||
|  |      Select this layer as the current layer. | ||||||
|  |   3. Draw 9 rectangles on your drawing where you'd like the slices to | ||||||
|  |      be.  Clear the fill option, and set the stroke to 1 pixel wide | ||||||
|  |      solid stroke.  The corners of the slices must meet precisely; if it | ||||||
|  |      is off by a single pixel, it will probably be evident when the | ||||||
|  |      styled box is rendered in the GRUB menu.  You should probably go to | ||||||
|  |      File | Document Properties | Grids and enable a grid or create a | ||||||
|  |      guide (click on one of the rulers next to the drawing and drag over | ||||||
|  |      the drawing; release the mouse button to place the guide) to help | ||||||
|  |      place the rectangles precisely. | ||||||
|  |   4. Right click on the center slice rectangle and choose Object | ||||||
|  |      Properties.  Change the "Id" to "slice_c" and click Set.  Repeat | ||||||
|  |      this for the remaining 8 rectangles, giving them Id values of | ||||||
|  |      "slice_n", "slice_ne", "slice_e", and so on according to the | ||||||
|  |      location. | ||||||
|  |   5. Save the drawing. | ||||||
|  |   6. Select all the slice rectangles.  With the slice layer selected, | ||||||
|  |      you can simply press Ctrl+A to select all rectangles.  The status | ||||||
|  |      bar should indicate that 9 rectangles are selected. | ||||||
|  |   7. Click the layer hide icon for the slice layer in the layer palette. | ||||||
|  |      The rectangles will remain selected, even though they are hidden. | ||||||
|  |   8. Choose File | Export Bitmap and check the *Batch export 9 selected | ||||||
|  |      objects* box.  Make sure that *Hide all except selected* is | ||||||
|  |      unchecked.  click *Export*.  This will create PNG files in the same | ||||||
|  |      directory as the drawing, named after the slices.  These can now be | ||||||
|  |      used for a styled box in a GRUB theme. | ||||||
|  | 
 | ||||||
|  | 7.3 Theme File Manual | ||||||
|  | ===================== | ||||||
|  | 
 | ||||||
|  | The theme file is a plain text file.  Lines that begin with "#" are | ||||||
|  | ignored and considered comments.  (Note: This may not be the case if the | ||||||
|  | previous line ended where a value was expected.) | ||||||
|  | 
 | ||||||
|  |    The theme file contains two types of statements: | ||||||
|  |   1. Global properties. | ||||||
|  |   2. Component construction. | ||||||
|  | 
 | ||||||
|  | 7.3.1 Global Properties | ||||||
|  | ----------------------- | ||||||
|  | 
 | ||||||
|  | 7.3.2 Format | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | Global properties are specified with the simple format: | ||||||
|  |    * name1: value1 | ||||||
|  |    * name2: "value which may contain spaces" | ||||||
|  |    * name3: #88F | ||||||
|  | 
 | ||||||
|  |    In this example, name3 is assigned a color value. | ||||||
|  | 
 | ||||||
|  | 7.3.3 Global Property List | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | title-text             Specifies the text to display at the top | ||||||
|  |                        center of the screen as a title. | ||||||
|  | title-font             Defines the font used for the title | ||||||
|  |                        message at the top of the screen. | ||||||
|  | title-color            Defines the color of the title message. | ||||||
|  | message-font           Currently unused.  Left for backward | ||||||
|  |                        compatibility. | ||||||
|  | message-color          Currently unused.  Left for backward | ||||||
|  |                        compatibility. | ||||||
|  | message-bg-color       Currently unused.  Left for backward | ||||||
|  |                        compatibility. | ||||||
|  | desktop-image          Specifies the image to use as the | ||||||
|  |                        background.  It will be scaled to fit the | ||||||
|  |                        screen size or proportionally scaled | ||||||
|  |                        depending on the scale method. | ||||||
|  | desktop-image-scale-methodSpecifies the scaling method for the | ||||||
|  |                        *desktop-image*.  Options are "stretch", | ||||||
|  |                        "crop", "padding", "fitwidth", | ||||||
|  |                        "fitheight".  "stretch" for fitting the | ||||||
|  |                        screen size.  Otherwise it is | ||||||
|  |                        proportional scaling of a part of | ||||||
|  |                        *desktop-image* to the part of the | ||||||
|  |                        screen.  "crop" part of the | ||||||
|  |                        *desktop-image* will be proportionally | ||||||
|  |                        scaled to fit the screen sizes. | ||||||
|  |                        "padding" the entire *desktop-image* will | ||||||
|  |                        be contained on the screen.  "fitwidth" | ||||||
|  |                        for fitting the *desktop-image*'s width | ||||||
|  |                        with screen width.  "fitheight" for | ||||||
|  |                        fitting the *desktop-image*'s height with | ||||||
|  |                        the screen height.  Default is "stretch". | ||||||
|  | desktop-image-h-align  Specifies the horizontal alignment of the | ||||||
|  |                        *desktop-image* if | ||||||
|  |                        *desktop-image-scale-method* isn't equeal | ||||||
|  |                        to "stretch".  Options are "left", | ||||||
|  |                        "center", "right".  Default is "center". | ||||||
|  | desktop-image-v-align  Specifies the vertical alignment of the | ||||||
|  |                        *desktop-image* if | ||||||
|  |                        *desktop-image-scale-method* isn't equeal | ||||||
|  |                        to "stretch".  Options are "top", | ||||||
|  |                        "center", "bottom".  Default is "center". | ||||||
|  | desktop-color          Specifies the color for the background if | ||||||
|  |                        *desktop-image* is not specified. | ||||||
|  | terminal-box           Specifies the file name pattern for the | ||||||
|  |                        styled box slices used for the command | ||||||
|  |                        line terminal window.  For example, | ||||||
|  |                        "terminal-box: terminal_*.png" will use | ||||||
|  |                        the images "terminal_c.png" as the center | ||||||
|  |                        area, "terminal_n.png" as the north (top) | ||||||
|  |                        edge, "terminal_nw.png" as the northwest | ||||||
|  |                        (upper left) corner, and so on.  If the | ||||||
|  |                        image for any slice is not found, it will | ||||||
|  |                        simply be left empty. | ||||||
|  | terminal-border        Specifies the border width of the | ||||||
|  |                        terminal window. | ||||||
|  | terminal-left          Specifies the left coordinate of the | ||||||
|  |                        terminal window. | ||||||
|  | terminal-top           Specifies the top coordinate of the | ||||||
|  |                        terminal window. | ||||||
|  | terminal-width         Specifies the width of the terminal | ||||||
|  |                        window. | ||||||
|  | terminal-height        Specifies the height of the terminal | ||||||
|  |                        window. | ||||||
|  | 
 | ||||||
|  | 7.3.4 Component Construction | ||||||
|  | ---------------------------- | ||||||
|  | 
 | ||||||
|  | Greater customizability comes is provided by components.  A tree of | ||||||
|  | components forms the user interface.  *Containers* are components that | ||||||
|  | can contain other components, and there is always a single root | ||||||
|  | component which is an instance of a *canvas* container. | ||||||
|  | 
 | ||||||
|  |    Components are created in the theme file by prefixing the type of | ||||||
|  | component with a '+' sign: | ||||||
|  | 
 | ||||||
|  |    ' + label { text="GRUB" font="aqui 11" color="#8FF" } ' | ||||||
|  | 
 | ||||||
|  |    properties of a component are specified as "name = value" (whitespace | ||||||
|  | surrounding tokens is optional and is ignored) where *value* may be: | ||||||
|  |    * a single word (e.g., "align = center", "color = #FF8080"), | ||||||
|  |    * a quoted string (e.g., "text = "Hello, World!""), or | ||||||
|  |    * a tuple (e.g., "preferred_size = (120, 80)"). | ||||||
|  | 
 | ||||||
|  | 7.3.5 Component List | ||||||
|  | -------------------- | ||||||
|  | 
 | ||||||
|  | The following is a list of the components and the properties they | ||||||
|  | support. | ||||||
|  | 
 | ||||||
|  |    * label A label displays a line of text. | ||||||
|  | 
 | ||||||
|  |      Properties: | ||||||
|  |      id             Set to "__timeout__" to display the time elapsed | ||||||
|  |                     to an automatical boot of the default entry. | ||||||
|  |      text           The text to display.  If "id" is set to | ||||||
|  |                     "__timeout__" and no "text" property is set then | ||||||
|  |                     the amount of seconds will be shown.  If set to | ||||||
|  |                     "@KEYMAP_SHORT@", "@KEYMAP_MIDDLE@" or | ||||||
|  |                     "@KEYMAP_LONG@" then predefined hotkey | ||||||
|  |                     information will be shown. | ||||||
|  |      font           The font to use for text display. | ||||||
|  |      color          The color of the text. | ||||||
|  |      align          The horizontal alignment of the text within the | ||||||
|  |                     component.  Options are "left", "center" and | ||||||
|  |                     "right". | ||||||
|  |      visible        Set to "false" to hide the label. | ||||||
|  | 
 | ||||||
|  |    * image A component that displays an image.  The image is scaled to | ||||||
|  |      fit the component. | ||||||
|  | 
 | ||||||
|  |      Properties: | ||||||
|  | 
 | ||||||
|  |      file           The full path to the image file to load. | ||||||
|  | 
 | ||||||
|  |    * progress_bar Displays a horizontally oriented progress bar.  It can | ||||||
|  |      be rendered using simple solid filled rectangles, or using a pair | ||||||
|  |      of pixmap styled boxes. | ||||||
|  | 
 | ||||||
|  |      Properties: | ||||||
|  | 
 | ||||||
|  |      id             Set to "__timeout__" to display the time elapsed | ||||||
|  |                     to an automatical boot of the default entry. | ||||||
|  |      fg_color       The foreground color for plain solid color | ||||||
|  |                     rendering. | ||||||
|  |      bg_color       The background color for plain solid color | ||||||
|  |                     rendering. | ||||||
|  |      border_color   The border color for plain solid color | ||||||
|  |                     rendering. | ||||||
|  |      text_color     The text color. | ||||||
|  |      bar_style      The styled box specification for the frame of | ||||||
|  |                     the progress bar.  Example: | ||||||
|  |                     "progress_frame_*.png" If the value is equal to | ||||||
|  |                     "highlight_style" then no styled boxes will be | ||||||
|  |                     shown. | ||||||
|  |      highlight_styleThe styled box specification for the highlighted | ||||||
|  |                     region of the progress bar.  This box will be | ||||||
|  |                     used to paint just the highlighted region of the | ||||||
|  |                     bar, and will be increased in size as the bar | ||||||
|  |                     nears completion.  Example: "progress_hl_*.png". | ||||||
|  |                     If the value is equal to "bar_style" then no | ||||||
|  |                     styled boxes will be shown. | ||||||
|  |      highlight_overlayIf this option is set to "true" then the | ||||||
|  |                     highlight box side slices (every slice except | ||||||
|  |                     the center slice) will overlay the frame box | ||||||
|  |                     side slices.  And the center slice of the | ||||||
|  |                     highlight box can move all the way (from top to | ||||||
|  |                     bottom), being drawn on the center slice of the | ||||||
|  |                     frame box.  That way we can make a progress bar | ||||||
|  |                     with round-shaped edges so there won't be a free | ||||||
|  |                     space from the highlight to the frame in top and | ||||||
|  |                     bottom scrollbar positions.  Default is "false". | ||||||
|  |      font           The font to use for progress bar. | ||||||
|  |      text           The text to display on the progress bar.  If the | ||||||
|  |                     progress bar's ID is set to "__timeout__" and | ||||||
|  |                     the value of this property is set to | ||||||
|  |                     "@TIMEOUT_NOTIFICATION_SHORT@", | ||||||
|  |                     "@TIMEOUT_NOTIFICATION_MIDDLE@" or | ||||||
|  |                     "@TIMEOUT_NOTIFICATION_LONG@", then GRUB will | ||||||
|  |                     update this property with an informative message | ||||||
|  |                     as the timeout approaches. | ||||||
|  | 
 | ||||||
|  |    * circular_progress Displays a circular progress indicator.  The | ||||||
|  |      appearance of this component is determined by two images: the | ||||||
|  |      *center* image and the *tick* image.  The center image is generally | ||||||
|  |      larger and will be drawn in the center of the component.  Around | ||||||
|  |      the circumference of a circle within the component, the tick image | ||||||
|  |      will be drawn a certain number of times, depending on the | ||||||
|  |      properties of the component. | ||||||
|  | 
 | ||||||
|  |      Properties: | ||||||
|  | 
 | ||||||
|  |      id                     Set to "__timeout__" to display the time | ||||||
|  |                             elapsed to an automatical boot of the | ||||||
|  |                             default entry. | ||||||
|  |      center_bitmap          The file name of the image to draw in the | ||||||
|  |                             center of the component. | ||||||
|  |      tick_bitmap            The file name of the image to draw for | ||||||
|  |                             the tick marks. | ||||||
|  |      num_ticks              The number of ticks that make up a full | ||||||
|  |                             circle. | ||||||
|  |      ticks_disappear        Boolean value indicating whether tick | ||||||
|  |                             marks should progressively appear, or | ||||||
|  |                             progressively disappear as *value* | ||||||
|  |                             approaches *end*.  Specify "true" or | ||||||
|  |                             "false".  Default is "false". | ||||||
|  |      start_angle            The position of the first tick mark to | ||||||
|  |                             appear or disappear.  Measured in | ||||||
|  |                             "parrots", 1 "parrot" = 1 / 256 of the | ||||||
|  |                             full circle.  Use values "xxx deg" or | ||||||
|  |                             "xxx \xc2\xb0" to set the angle in | ||||||
|  |                             degrees. | ||||||
|  | 
 | ||||||
|  |    * boot_menu Displays the GRUB boot menu.  It allows selecting items | ||||||
|  |      and executing them. | ||||||
|  | 
 | ||||||
|  |      Properties: | ||||||
|  | 
 | ||||||
|  |      item_font                     The font to use for the menu item | ||||||
|  |                                    titles. | ||||||
|  |      selected_item_font            The font to use for the selected | ||||||
|  |                                    menu item, or "inherit" (the | ||||||
|  |                                    default) to use "item_font" for | ||||||
|  |                                    the selected menu item as well. | ||||||
|  |      item_color                    The color to use for the menu item | ||||||
|  |                                    titles. | ||||||
|  |      selected_item_color           The color to use for the selected | ||||||
|  |                                    menu item, or "inherit" (the | ||||||
|  |                                    default) to use "item_color" for | ||||||
|  |                                    the selected menu item as well. | ||||||
|  |      icon_width                    The width of menu item icons. | ||||||
|  |                                    Icons are scaled to the specified | ||||||
|  |                                    size. | ||||||
|  |      icon_height                   The height of menu item icons. | ||||||
|  |      item_height                   The height of each menu item in | ||||||
|  |                                    pixels. | ||||||
|  |      item_padding                  The amount of space in pixels to | ||||||
|  |                                    leave on each side of the menu | ||||||
|  |                                    item contents. | ||||||
|  |      item_icon_space               The space between an item's icon | ||||||
|  |                                    and the title text, in pixels. | ||||||
|  |      item_spacing                  The amount of space to leave | ||||||
|  |                                    between menu items, in pixels. | ||||||
|  |      menu_pixmap_style             The image file pattern for the | ||||||
|  |                                    menu frame styled box.  Example: | ||||||
|  |                                    "menu_*.png" (this will use images | ||||||
|  |                                    such as "menu_c.png", | ||||||
|  |                                    "menu_w.png", 'menu_nw.png", etc.) | ||||||
|  |      item_pixmap_style             The image file pattern for the | ||||||
|  |                                    item styled box. | ||||||
|  |      selected_item_pixmap_style    The image file pattern for the | ||||||
|  |                                    selected item highlight styled | ||||||
|  |                                    box. | ||||||
|  |      scrollbar                     Boolean value indicating whether | ||||||
|  |                                    the scroll bar should be drawn if | ||||||
|  |                                    the frame and thumb styled boxes | ||||||
|  |                                    are configured. | ||||||
|  |      scrollbar_frame               The image file pattern for the | ||||||
|  |                                    entire scroll bar.  Example: | ||||||
|  |                                    "scrollbar_*.png" | ||||||
|  |      scrollbar_thumb               The image file pattern for the | ||||||
|  |                                    scroll bar thumb (the part of the | ||||||
|  |                                    scroll bar that moves as scrolling | ||||||
|  |                                    occurs).  Example: | ||||||
|  |                                    "scrollbar_thumb_*.png" | ||||||
|  |      scrollbar_thumb_overlay       If this option is set to "true" | ||||||
|  |                                    then the scrollbar thumb side | ||||||
|  |                                    slices (every slice except the | ||||||
|  |                                    center slice) will overlay the | ||||||
|  |                                    scrollbar frame side slices.  And | ||||||
|  |                                    the center slice of the | ||||||
|  |                                    scrollbar_thumb can move all the | ||||||
|  |                                    way (from top to bottom), being | ||||||
|  |                                    drawn on the center slice of the | ||||||
|  |                                    scrollbar frame.  That way we can | ||||||
|  |                                    make a scrollbar with round-shaped | ||||||
|  |                                    edges so there won't be a free | ||||||
|  |                                    space from the thumb to the frame | ||||||
|  |                                    in top and bottom scrollbar | ||||||
|  |                                    positions.  Default is "false". | ||||||
|  |      scrollbar_slice               The menu frame styled box's slice | ||||||
|  |                                    in which the scrollbar will be | ||||||
|  |                                    drawn.  Possible values are | ||||||
|  |                                    "west", "center", "east" | ||||||
|  |                                    (default).  "west" - the scrollbar | ||||||
|  |                                    will be drawn in the west slice | ||||||
|  |                                    (right-aligned).  "east" - the | ||||||
|  |                                    scrollbar will be drawn in the | ||||||
|  |                                    east slice (left-aligned). | ||||||
|  |                                    "center" - the scrollbar will be | ||||||
|  |                                    drawn in the center slice.  Note: | ||||||
|  |                                    in case of "center" slice: a) If | ||||||
|  |                                    the scrollbar should be drawn then | ||||||
|  |                                    boot menu entry's width is | ||||||
|  |                                    decreased by the scrollbar's width | ||||||
|  |                                    and the scrollbar is drawn at the | ||||||
|  |                                    right side of the center slice. | ||||||
|  |                                    b) If the scrollbar won't be drawn | ||||||
|  |                                    then the boot menu entry's width | ||||||
|  |                                    is the width of the center slice. | ||||||
|  |                                    c) We don't necessary need the | ||||||
|  |                                    menu pixmap box to display the | ||||||
|  |                                    scrollbar. | ||||||
|  |      scrollbar_left_pad            The left scrollbar padding in | ||||||
|  |                                    pixels.  Unused if | ||||||
|  |                                    "scrollbar_slice" is "west". | ||||||
|  |      scrollbar_right_pad           The right scrollbar padding in | ||||||
|  |                                    pixels.  Unused if | ||||||
|  |                                    "scrollbar_slice" is "east". | ||||||
|  |      scrollbar_top_pad             The top scrollbar padding in | ||||||
|  |                                    pixels. | ||||||
|  |      scrollbar_bottom_pad          The bottom scrollbar padding in | ||||||
|  |                                    pixels. | ||||||
|  |      visible                       Set to "false" to hide the boot | ||||||
|  |                                    menu. | ||||||
|  | 
 | ||||||
|  |    * canvas Canvas is a container that allows manual placement of | ||||||
|  |      components within it.  It does not alter the positions of its child | ||||||
|  |      components.  It assigns all child components their preferred sizes. | ||||||
|  | 
 | ||||||
|  |    * hbox The *hbox* container lays out its children from left to right, | ||||||
|  |      giving each one its preferred width.  The height of each child is | ||||||
|  |      set to the maximum of the preferred heights of all children. | ||||||
|  | 
 | ||||||
|  |    * vbox The *vbox* container lays out its children from top to bottom, | ||||||
|  |      giving each one its preferred height.  The width of each child is | ||||||
|  |      set to the maximum of the preferred widths of all children. | ||||||
|  | 
 | ||||||
|  | 7.3.6 Common properties | ||||||
|  | ----------------------- | ||||||
|  | 
 | ||||||
|  | The following properties are supported by all components: | ||||||
|  | 'left' | ||||||
|  |      The distance from the left border of container to left border of | ||||||
|  |      the object in either of three formats: | ||||||
|  |      x              Value in pixels | ||||||
|  |      p%             Percentage | ||||||
|  |      p%+x           mixture of both | ||||||
|  | 'top' | ||||||
|  |      The distance from the left border of container to left border of | ||||||
|  |      the object in same format. | ||||||
|  | 'width' | ||||||
|  |      The width of object in same format. | ||||||
|  | 'height' | ||||||
|  |      The height of object in same format. | ||||||
|  | 'id' | ||||||
|  |      The identifier for the component.  This can be any arbitrary | ||||||
|  |      string.  The ID can be used by scripts to refer to various | ||||||
|  |      components in the GUI component tree.  Currently, there is one | ||||||
|  |      special ID value that GRUB recognizes: | ||||||
|  | 
 | ||||||
|  |      "__timeout__"  Component with this ID will be updated by GRUB | ||||||
|  |                     and will indicate time elapsed to an automatical | ||||||
|  |                     boot of the default entry.  Affected components: | ||||||
|  |                     "label", "circular_progress", "progress_bar". | ||||||
|  | 
 | ||||||
							
								
								
									
										79
									
								
								boot/grub/persistent/docs/08_network_booting
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								boot/grub/persistent/docs/08_network_booting
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,79 @@ | ||||||
|  | 8 Booting GRUB from the network | ||||||
|  | ******************************* | ||||||
|  | 
 | ||||||
|  | The following instructions don't work for *-emu, i386-qemu, | ||||||
|  | i386-coreboot, i386-multiboot, mips_loongson, mips-arc and | ||||||
|  | mips_qemu_mips | ||||||
|  | 
 | ||||||
|  |    To generate a netbootable directory, run: | ||||||
|  | 
 | ||||||
|  |      grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/<platform> | ||||||
|  | 
 | ||||||
|  |    E.g.  for i386-pc: | ||||||
|  | 
 | ||||||
|  |      grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/i386-pc | ||||||
|  | 
 | ||||||
|  |    Then follow instructions printed out by grub-mknetdir on configuring | ||||||
|  | your DHCP server. | ||||||
|  | 
 | ||||||
|  |    After GRUB has started, files on the TFTP server will be accessible | ||||||
|  | via the '(tftp)' device. | ||||||
|  | 
 | ||||||
|  |    The server IP address can be controlled by changing the '(tftp)' | ||||||
|  | device name to '(tftp,SERVER-IP)'.  Note that this should be changed | ||||||
|  | both in the prefix and in any references to the device name in the | ||||||
|  | configuration file. | ||||||
|  | 
 | ||||||
|  |    GRUB provides several environment variables which may be used to | ||||||
|  | inspect or change the behaviour of the PXE device.  In the following | ||||||
|  | description <INTERFACE> is placeholder for the name of network interface | ||||||
|  | (platform dependent): | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_ip' | ||||||
|  |      The network interface's IP address.  Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_mac' | ||||||
|  |      The network interface's MAC address.  Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_hostname' | ||||||
|  |      The client host name provided by DHCP. Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_domain' | ||||||
|  |      The client domain name provided by DHCP. Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_rootpath' | ||||||
|  |      The path to the client's root disk provided by DHCP. Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_extensionspath' | ||||||
|  |      The path to additional DHCP vendor extensions provided by DHCP. | ||||||
|  |      Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_boot_file' | ||||||
|  |      The boot file name provided by DHCP. Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_dhcp_server_name' | ||||||
|  |      The name of the DHCP server responsible for these boot parameters. | ||||||
|  |      Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_<INTERFACE>_next_server' | ||||||
|  |      The IP address of the next (usually, TFTP) server provided by DHCP. | ||||||
|  |      Read-only. | ||||||
|  | 
 | ||||||
|  | 'net_default_interface' | ||||||
|  |      Initially set to name of network interface that was used to load | ||||||
|  |      grub.  Read-write, although setting it affects only interpretation | ||||||
|  |      of 'net_default_ip' and 'net_default_mac' | ||||||
|  | 
 | ||||||
|  | 'net_default_ip' | ||||||
|  |      The IP address of default interface.  Read-only.  This is alias for | ||||||
|  |      the 'net_${net_default_interface}_ip'. | ||||||
|  | 
 | ||||||
|  | 'net_default_mac' | ||||||
|  |      The default interface's MAC address.  Read-only.  This is alias for | ||||||
|  |      the 'net_${net_default_interface}_mac'. | ||||||
|  | 
 | ||||||
|  | 'net_default_server' | ||||||
|  |      The default server used by network drives (*note Device syntax::). | ||||||
|  |      Read-write, although setting this is only useful before opening a | ||||||
|  |      network device. | ||||||
|  | 
 | ||||||
							
								
								
									
										43
									
								
								boot/grub/persistent/docs/09_serial_line
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								boot/grub/persistent/docs/09_serial_line
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | 9 Using GRUB via a serial line | ||||||
|  | ****************************** | ||||||
|  | 
 | ||||||
|  | This chapter describes how to use the serial terminal support in GRUB. | ||||||
|  | 
 | ||||||
|  |    If you have many computers or computers with no display/keyboard, it | ||||||
|  | could be very useful to control the computers through serial | ||||||
|  | communications.  To connect one computer with another via a serial line, | ||||||
|  | you need to prepare a null-modem (cross) serial cable, and you may need | ||||||
|  | to have multiport serial boards, if your computer doesn't have extra | ||||||
|  | serial ports.  In addition, a terminal emulator is also required, such | ||||||
|  | as minicom.  Refer to a manual of your operating system, for more | ||||||
|  | information. | ||||||
|  | 
 | ||||||
|  |    As for GRUB, the instruction to set up a serial terminal is quite | ||||||
|  | simple.  Here is an example: | ||||||
|  | 
 | ||||||
|  |      grub> serial --unit=0 --speed=9600 | ||||||
|  |      grub> terminal_input serial; terminal_output serial | ||||||
|  | 
 | ||||||
|  |    The command 'serial' initializes the serial unit 0 with the speed | ||||||
|  | 9600bps.  The serial unit 0 is usually called 'COM1', so, if you want to | ||||||
|  | use COM2, you must specify '--unit=1' instead.  This command accepts | ||||||
|  | many other options, so please refer to *note serial::, for more details. | ||||||
|  | 
 | ||||||
|  |    The commands 'terminal_input' (*note terminal_input::) and | ||||||
|  | 'terminal_output' (*note terminal_output::) choose which type of | ||||||
|  | terminal you want to use.  In the case above, the terminal will be a | ||||||
|  | serial terminal, but you can also pass 'console' to the command, as | ||||||
|  | 'terminal_input serial console'.  In this case, a terminal in which you | ||||||
|  | press any key will be selected as a GRUB terminal.  In the example | ||||||
|  | above, note that you need to put both commands on the same command line, | ||||||
|  | as you will lose the ability to type commands on the console after the | ||||||
|  | first command. | ||||||
|  | 
 | ||||||
|  |    However, note that GRUB assumes that your terminal emulator is | ||||||
|  | compatible with VT100 by default.  This is true for most terminal | ||||||
|  | emulators nowadays, but you should pass the option '--dumb' to the | ||||||
|  | command if your terminal emulator is not VT100-compatible or implements | ||||||
|  | few VT100 escape sequences.  If you specify this option then GRUB | ||||||
|  | provides you with an alternative menu interface, because the normal menu | ||||||
|  | requires several fancy features of your terminal. | ||||||
|  | 
 | ||||||
							
								
								
									
										54
									
								
								boot/grub/persistent/docs/10_vendor_poweron_keys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								boot/grub/persistent/docs/10_vendor_poweron_keys
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | ||||||
|  | 10 Using GRUB with vendor power-on keys | ||||||
|  | *************************************** | ||||||
|  | 
 | ||||||
|  | Some laptop vendors provide an additional power-on button which boots | ||||||
|  | another OS. GRUB supports such buttons with the 'GRUB_TIMEOUT_BUTTON', | ||||||
|  | 'GRUB_TIMEOUT_STYLE_BUTTON', 'GRUB_DEFAULT_BUTTON', and | ||||||
|  | 'GRUB_BUTTON_CMOS_ADDRESS' variables in default/grub (*note Simple | ||||||
|  | configuration::).  'GRUB_TIMEOUT_BUTTON', 'GRUB_TIMEOUT_STYLE_BUTTON', | ||||||
|  | and 'GRUB_DEFAULT_BUTTON' are used instead of the corresponding | ||||||
|  | variables without the '_BUTTON' suffix when powered on using the special | ||||||
|  | button.  'GRUB_BUTTON_CMOS_ADDRESS' is vendor-specific and partially | ||||||
|  | model-specific.  Values known to the GRUB team are: | ||||||
|  | 
 | ||||||
|  | <Dell XPS M1330M> | ||||||
|  |      121:3 | ||||||
|  | <Dell XPS M1530> | ||||||
|  |      85:3 | ||||||
|  | <Dell Latitude E4300> | ||||||
|  |      85:3 | ||||||
|  | <Asus EeePC 1005PE> | ||||||
|  |      84:1 (unconfirmed) | ||||||
|  | <LENOVO ThinkPad T410s (2912W1C)> | ||||||
|  |      101:3 | ||||||
|  | 
 | ||||||
|  |    To take full advantage of this function, install GRUB into the MBR | ||||||
|  | (*note Installing GRUB using grub-install::). | ||||||
|  | 
 | ||||||
|  |    If you have a laptop which has a similar feature and not in the above | ||||||
|  | list could you figure your address and contribute?  To discover the | ||||||
|  | address do the following: | ||||||
|  |    * boot normally | ||||||
|  |    *      sudo modprobe nvram | ||||||
|  |           sudo cat /dev/nvram | xxd > normal_button.txt | ||||||
|  |    * boot using vendor button | ||||||
|  |    *      sudo modprobe nvram | ||||||
|  |           sudo cat /dev/nvram | xxd > normal_vendor.txt | ||||||
|  | 
 | ||||||
|  |    Then compare these text files and find where a bit was toggled.  E.g. | ||||||
|  | in case of Dell XPS it was: | ||||||
|  |      byte 0x47: 20 --> 28 | ||||||
|  |    It's a bit number 3 as seen from following table: | ||||||
|  | 0              01 | ||||||
|  | 1              02 | ||||||
|  | 2              04 | ||||||
|  | 3              08 | ||||||
|  | 4              10 | ||||||
|  | 5              20 | ||||||
|  | 6              40 | ||||||
|  | 7              80 | ||||||
|  | 
 | ||||||
|  |    0x47 is decimal 71.  Linux nvram implementation cuts first 14 bytes | ||||||
|  | of CMOS. So the real byte address in CMOS is 71+14=85 So complete | ||||||
|  | address is 85:3 | ||||||
|  | 
 | ||||||
							
								
								
									
										113
									
								
								boot/grub/persistent/docs/11_grub_image_files
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								boot/grub/persistent/docs/11_grub_image_files
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,113 @@ | ||||||
|  | 11 GRUB image files | ||||||
|  | ******************* | ||||||
|  | 
 | ||||||
|  | GRUB consists of several images: a variety of bootstrap images for | ||||||
|  | starting GRUB in various ways, a kernel image, and a set of modules | ||||||
|  | which are combined with the kernel image to form a core image.  Here is | ||||||
|  | a short overview of them. | ||||||
|  | 
 | ||||||
|  | 'boot.img' | ||||||
|  |      On PC BIOS systems, this image is the first part of GRUB to start. | ||||||
|  |      It is written to a master boot record (MBR) or to the boot sector | ||||||
|  |      of a partition.  Because a PC boot sector is 512 bytes, the size of | ||||||
|  |      this image is exactly 512 bytes. | ||||||
|  | 
 | ||||||
|  |      The sole function of 'boot.img' is to read the first sector of the | ||||||
|  |      core image from a local disk and jump to it.  Because of the size | ||||||
|  |      restriction, 'boot.img' cannot understand any file system | ||||||
|  |      structure, so 'grub-install' hardcodes the location of the first | ||||||
|  |      sector of the core image into 'boot.img' when installing GRUB. | ||||||
|  | 
 | ||||||
|  | 'diskboot.img' | ||||||
|  |      This image is used as the first sector of the core image when | ||||||
|  |      booting from a hard disk.  It reads the rest of the core image into | ||||||
|  |      memory and starts the kernel.  Since file system handling is not | ||||||
|  |      yet available, it encodes the location of the core image using a | ||||||
|  |      block list format. | ||||||
|  | 
 | ||||||
|  | 'cdboot.img' | ||||||
|  |      This image is used as the first sector of the core image when | ||||||
|  |      booting from a CD-ROM drive.  It performs a similar function to | ||||||
|  |      'diskboot.img'. | ||||||
|  | 
 | ||||||
|  | 'pxeboot.img' | ||||||
|  |      This image is used as the start of the core image when booting from | ||||||
|  |      the network using PXE. *Note Network::. | ||||||
|  | 
 | ||||||
|  | 'lnxboot.img' | ||||||
|  |      This image may be placed at the start of the core image in order to | ||||||
|  |      make GRUB look enough like a Linux kernel that it can be booted by | ||||||
|  |      LILO using an 'image=' section. | ||||||
|  | 
 | ||||||
|  | 'kernel.img' | ||||||
|  |      This image contains GRUB's basic run-time facilities: frameworks | ||||||
|  |      for device and file handling, environment variables, the rescue | ||||||
|  |      mode command-line parser, and so on.  It is rarely used directly, | ||||||
|  |      but is built into all core images. | ||||||
|  | 
 | ||||||
|  | 'core.img' | ||||||
|  |      This is the core image of GRUB. It is built dynamically from the | ||||||
|  |      kernel image and an arbitrary list of modules by the 'grub-mkimage' | ||||||
|  |      program.  Usually, it contains enough modules to access | ||||||
|  |      '/boot/grub', and loads everything else (including menu handling, | ||||||
|  |      the ability to load target operating systems, and so on) from the | ||||||
|  |      file system at run-time.  The modular design allows the core image | ||||||
|  |      to be kept small, since the areas of disk where it must be | ||||||
|  |      installed are often as small as 32KB. | ||||||
|  | 
 | ||||||
|  |      *Note BIOS installation::, for details on where the core image can | ||||||
|  |      be installed on PC systems. | ||||||
|  | 
 | ||||||
|  | '*.mod' | ||||||
|  |      Everything else in GRUB resides in dynamically loadable modules. | ||||||
|  |      These are often loaded automatically, or built into the core image | ||||||
|  |      if they are essential, but may also be loaded manually using the | ||||||
|  |      'insmod' command (*note insmod::). | ||||||
|  | 
 | ||||||
|  | For GRUB Legacy users | ||||||
|  | ===================== | ||||||
|  | 
 | ||||||
|  | GRUB 2 has a different design from GRUB Legacy, and so correspondences | ||||||
|  | with the images it used cannot be exact.  Nevertheless, GRUB Legacy | ||||||
|  | users often ask questions in the terms they are familiar with, and so | ||||||
|  | here is a brief guide to how GRUB 2's images relate to that. | ||||||
|  | 
 | ||||||
|  | 'stage1' | ||||||
|  |      Stage 1 from GRUB Legacy was very similar to 'boot.img' in GRUB 2, | ||||||
|  |      and they serve the same function. | ||||||
|  | 
 | ||||||
|  | '*_stage1_5' | ||||||
|  |      In GRUB Legacy, Stage 1.5's function was to include enough | ||||||
|  |      filesystem code to allow the much larger Stage 2 to be read from an | ||||||
|  |      ordinary filesystem.  In this respect, its function was similar to | ||||||
|  |      'core.img' in GRUB 2.  However, 'core.img' is much more capable | ||||||
|  |      than Stage 1.5 was; since it offers a rescue shell, it is sometimes | ||||||
|  |      possible to recover manually in the event that it is unable to load | ||||||
|  |      any other modules, for example if partition numbers have changed. | ||||||
|  |      'core.img' is built in a more flexible way, allowing GRUB 2 to | ||||||
|  |      support reading modules from advanced disk types such as LVM and | ||||||
|  |      RAID. | ||||||
|  | 
 | ||||||
|  |      GRUB Legacy could run with only Stage 1 and Stage 2 in some limited | ||||||
|  |      configurations, while GRUB 2 requires 'core.img' and cannot work | ||||||
|  |      without it. | ||||||
|  | 
 | ||||||
|  | 'stage2' | ||||||
|  |      GRUB 2 has no single Stage 2 image.  Instead, it loads modules from | ||||||
|  |      '/boot/grub' at run-time. | ||||||
|  | 
 | ||||||
|  | 'stage2_eltorito' | ||||||
|  |      In GRUB 2, images for booting from CD-ROM drives are now | ||||||
|  |      constructed using 'cdboot.img' and 'core.img', making sure that the | ||||||
|  |      core image contains the 'iso9660' module.  It is usually best to | ||||||
|  |      use the 'grub-mkrescue' program for this. | ||||||
|  | 
 | ||||||
|  | 'nbgrub' | ||||||
|  |      There is as yet no equivalent for 'nbgrub' in GRUB 2; it was used | ||||||
|  |      by Etherboot and some other network boot loaders. | ||||||
|  | 
 | ||||||
|  | 'pxegrub' | ||||||
|  |      In GRUB 2, images for PXE network booting are now constructed using | ||||||
|  |      'pxeboot.img' and 'core.img', making sure that the core image | ||||||
|  |      contains the 'pxe' and 'pxecmd' modules.  *Note Network::. | ||||||
|  | 
 | ||||||
							
								
								
									
										48
									
								
								boot/grub/persistent/docs/12_core_image_size_limitation
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								boot/grub/persistent/docs/12_core_image_size_limitation
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | ||||||
|  | 12 Core image size limitation | ||||||
|  | ***************************** | ||||||
|  | 
 | ||||||
|  | Heavily limited platforms: | ||||||
|  |    * i386-pc (normal and PXE): the core image size (compressed) is | ||||||
|  |      limited by 458240 bytes.  kernel.img (.text + .data + .bss, | ||||||
|  |      uncompressed) is limited by 392704 bytes.  module size | ||||||
|  |      (uncompressed) + kernel.img (.text + .data, uncompressed) is | ||||||
|  |      limited by the size of contiguous chunk at 1M address. | ||||||
|  |    * sparc64-ieee1275: kernel.img (.text + .data + .bss) + modules + | ||||||
|  |      256K (stack) + 2M (heap) is limited by space available at 0x4400. | ||||||
|  |      On most platforms it's just 3 or 4M since ieee1275 maps only so | ||||||
|  |      much. | ||||||
|  |    * i386-ieee1275: kernel.img (.text + .data + .bss) + modules is | ||||||
|  |      limited by memory available at 0x10000, at most 596K | ||||||
|  | 
 | ||||||
|  |    Lightly limited platforms: | ||||||
|  | 
 | ||||||
|  |    * *-xen: limited only by adress space and RAM size. | ||||||
|  |    * i386-qemu: kernel.img (.text + .data + .bss) is limited by 392704 | ||||||
|  |      bytes.  (core.img would be limited by ROM size but it's unlimited | ||||||
|  |      on qemu | ||||||
|  |    * All EFI platforms: limited by contiguous RAM size and possibly | ||||||
|  |      firmware bugs | ||||||
|  |    * Coreboot and multiboot.  kernel.img (.text + .data + .bss) is | ||||||
|  |      limited by 392704 bytes.  module size is limited by the size of | ||||||
|  |      contiguous chunk at 1M address. | ||||||
|  |    * mipsel-loongson (ELF), mips(el)-qemu_mips (ELF): if uncompressed: | ||||||
|  |      kernel.img (.text + .data) + modules is limited by the space from | ||||||
|  |      80200000 forward if compressed: kernel.img (.text + .data, | ||||||
|  |      uncompressed) + modules (uncompressed) + (modules + kernel.img | ||||||
|  |      (.text + .data)) (compressed) + decompressor is limited by the | ||||||
|  |      space from 80200000 forward | ||||||
|  |    * mipsel-loongson (Flash), mips(el)-qemu_mips (Flash): kernel.img | ||||||
|  |      (.text + .data) + modules is limited by the space from 80200000 | ||||||
|  |      forward core.img (final) is limited by flash size (512K on yeeloong | ||||||
|  |      and fulooong) | ||||||
|  |    * mips-arc: if uncompressed: kernel.img (.text + .data) is limited by | ||||||
|  |      the space from 8bd00000 forward modules + dummy decompressor is | ||||||
|  |      limited by the space from 8bd00000 backward if compressed: | ||||||
|  |      kernel.img (.text + .data, uncompressed) is limited by the space | ||||||
|  |      from 8bd00000 forward modules (uncompressed) + (modules + | ||||||
|  |      kernel.img (.text + .data)) (compressed, aligned to 1M) + 1M | ||||||
|  |      (decompressor + scratch space) is limited by the space from | ||||||
|  |      8bd00000 backward | ||||||
|  |    * powerpc-ieee1275: kernel.img (.text + .data + .bss) + modules is | ||||||
|  |      limited by space available at 0x200000 | ||||||
|  | 
 | ||||||
							
								
								
									
										117
									
								
								boot/grub/persistent/docs/13_filesystem_syntax
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								boot/grub/persistent/docs/13_filesystem_syntax
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,117 @@ | ||||||
|  | 13 Filesystem syntax and semantics | ||||||
|  | ********************************** | ||||||
|  | 
 | ||||||
|  | GRUB uses a special syntax for specifying disk drives which can be | ||||||
|  | accessed by BIOS. Because of BIOS limitations, GRUB cannot distinguish | ||||||
|  | between IDE, ESDI, SCSI, or others.  You must know yourself which BIOS | ||||||
|  | device is equivalent to which OS device.  Normally, that will be clear | ||||||
|  | if you see the files in a device or use the command 'search' (*note | ||||||
|  | search::). | ||||||
|  | 
 | ||||||
|  | 13.1 How to specify devices | ||||||
|  | =========================== | ||||||
|  | 
 | ||||||
|  | The device syntax is like this: | ||||||
|  | 
 | ||||||
|  |      (DEVICE[,PARTMAP-NAME1PART-NUM1[,PARTMAP-NAME2PART-NUM2[,...]]]) | ||||||
|  | 
 | ||||||
|  |    '[]' means the parameter is optional.  DEVICE depends on the disk | ||||||
|  | driver in use.  BIOS and EFI disks use either 'fd' or 'hd' followed by a | ||||||
|  | digit, like 'fd0', or 'cd'.  AHCI, PATA (ata), crypto, USB use the name | ||||||
|  | of driver followed by a number.  Memdisk and host are limited to one | ||||||
|  | disk and so it's refered just by driver name.  RAID (md), ofdisk | ||||||
|  | (ieee1275 and nand), LVM (lvm), LDM, virtio (vdsk) and arcdisk (arc) use | ||||||
|  | intrinsic name of disk prefixed by driver name.  Additionally just | ||||||
|  | "nand" refers to the disk aliased as "nand".  Conflicts are solved by | ||||||
|  | suffixing a number if necessarry.  Commas need to be escaped.  Loopback | ||||||
|  | uses whatever name specified to 'loopback' command.  Hostdisk uses names | ||||||
|  | specified in device.map as long as it's of the form [fhc]d[0-9]* or | ||||||
|  | hostdisk/<OS DEVICE>.  For crypto and RAID (md) additionally you can use | ||||||
|  | the syntax <driver name>uuid/<uuid>.  For LVM additionally you can use | ||||||
|  | the syntax lvmid/<volume-group-uuid>/<volume-uuid>. | ||||||
|  | 
 | ||||||
|  |      (fd0) | ||||||
|  |      (hd0) | ||||||
|  |      (cd) | ||||||
|  |      (ahci0) | ||||||
|  |      (ata0) | ||||||
|  |      (crypto0) | ||||||
|  |      (usb0) | ||||||
|  |      (cryptouuid/123456789abcdef0123456789abcdef0) | ||||||
|  |      (mduuid/123456789abcdef0123456789abcdef0) | ||||||
|  |      (lvm/system-root) | ||||||
|  |      (lvmid/F1ikgD-2RES-306G-il9M-7iwa-4NKW-EbV1NV/eLGuCQ-L4Ka-XUgR-sjtJ-ffch-bajr-fCNfz5) | ||||||
|  |      (md/myraid) | ||||||
|  |      (md/0) | ||||||
|  |      (ieee1275/disk2) | ||||||
|  |      (ieee1275//pci@1f\,0/ide@d/disk@2) | ||||||
|  |      (nand) | ||||||
|  |      (memdisk) | ||||||
|  |      (host) | ||||||
|  |      (myloop) | ||||||
|  |      (hostdisk//dev/sda) | ||||||
|  | 
 | ||||||
|  |    PART-NUM represents the partition number of DEVICE, starting from | ||||||
|  | one.  PARTNAME is optional but is recommended since disk may have | ||||||
|  | several top-level partmaps.  Specifying third and later component you | ||||||
|  | can access to subpartitions. | ||||||
|  | 
 | ||||||
|  |    The syntax '(hd0)' represents using the entire disk (or the MBR when | ||||||
|  | installing GRUB), while the syntax '(hd0,1)' represents using the first | ||||||
|  | partition of the disk (or the boot sector of the partition when | ||||||
|  | installing GRUB). | ||||||
|  | 
 | ||||||
|  |      (hd0,msdos1) | ||||||
|  |      (hd0,msdos1,msdos5) | ||||||
|  |      (hd0,msdos1,bsd3) | ||||||
|  |      (hd0,netbsd1) | ||||||
|  |      (hd0,gpt1) | ||||||
|  |      (hd0,1,3) | ||||||
|  | 
 | ||||||
|  |    If you enabled the network support, the special drives | ||||||
|  | '(PROTOCOL[,SERVER])' are also available.  Supported protocols are | ||||||
|  | 'http' and 'tftp'.  If SERVER is omitted, value of environment variable | ||||||
|  | 'net_default_server' is used.  Before using the network drive, you must | ||||||
|  | initialize the network.  *Note Network::, for more information. | ||||||
|  | 
 | ||||||
|  |    If you boot GRUB from a CD-ROM, '(cd)' is available.  *Note Making a | ||||||
|  | GRUB bootable CD-ROM::, for details. | ||||||
|  | 
 | ||||||
|  | 13.2 How to specify files | ||||||
|  | ========================= | ||||||
|  | 
 | ||||||
|  | There are two ways to specify files, by "absolute file name" and by | ||||||
|  | "block list". | ||||||
|  | 
 | ||||||
|  |    An absolute file name resembles a Unix absolute file name, using '/' | ||||||
|  | for the directory separator (not '\' as in DOS). One example is | ||||||
|  | '(hd0,1)/boot/grub/grub.cfg'.  This means the file '/boot/grub/grub.cfg' | ||||||
|  | in the first partition of the first hard disk.  If you omit the device | ||||||
|  | name in an absolute file name, GRUB uses GRUB's "root device" | ||||||
|  | implicitly.  So if you set the root device to, say, '(hd1,1)' by the | ||||||
|  | command 'set root=(hd1,1)' (*note set::), then '/boot/kernel' is the | ||||||
|  | same as '(hd1,1)/boot/kernel'. | ||||||
|  | 
 | ||||||
|  |    On ZFS filesystem the first path component must be | ||||||
|  | VOLUME'@'[SNAPSHOT].  So '/rootvol@snap-129/boot/grub/grub.cfg' refers | ||||||
|  | to file '/boot/grub/grub.cfg' in snapshot of volume 'rootvol' with name | ||||||
|  | 'snap-129'.  Trailing '@' after volume name is mandatory even if | ||||||
|  | snapshot name is omitted. | ||||||
|  | 
 | ||||||
|  | 13.3 How to specify block lists | ||||||
|  | =============================== | ||||||
|  | 
 | ||||||
|  | A block list is used for specifying a file that doesn't appear in the | ||||||
|  | filesystem, like a chainloader.  The syntax is | ||||||
|  | '[OFFSET]+LENGTH[,[OFFSET]+LENGTH]...'.  Here is an example: | ||||||
|  | 
 | ||||||
|  |      0+100,200+1,300+300 | ||||||
|  | 
 | ||||||
|  |    This represents that GRUB should read blocks 0 through 99, block 200, | ||||||
|  | and blocks 300 through 599.  If you omit an offset, then GRUB assumes | ||||||
|  | the offset is zero. | ||||||
|  | 
 | ||||||
|  |    Like the file name syntax (*note File name syntax::), if a blocklist | ||||||
|  | does not contain a device name, then GRUB uses GRUB's "root device".  So | ||||||
|  | '(hd0,2)+1' is the same as '+1' when the root device is '(hd0,2)'. | ||||||
|  | 
 | ||||||
							
								
								
									
										120
									
								
								boot/grub/persistent/docs/14_user_interface
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								boot/grub/persistent/docs/14_user_interface
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,120 @@ | ||||||
|  | 14 GRUB's user interface | ||||||
|  | ************************ | ||||||
|  | 
 | ||||||
|  | GRUB has both a simple menu interface for choosing preset entries from a | ||||||
|  | configuration file, and a highly flexible command-line for performing | ||||||
|  | any desired combination of boot commands. | ||||||
|  | 
 | ||||||
|  |    GRUB looks for its configuration file as soon as it is loaded.  If | ||||||
|  | one is found, then the full menu interface is activated using whatever | ||||||
|  | entries were found in the file.  If you choose the "command-line" menu | ||||||
|  | option, or if the configuration file was not found, then GRUB drops to | ||||||
|  | the command-line interface. | ||||||
|  | 
 | ||||||
|  | 14.1 The flexible command-line interface | ||||||
|  | ======================================== | ||||||
|  | 
 | ||||||
|  | The command-line interface provides a prompt and after it an editable | ||||||
|  | text area much like a command-line in Unix or DOS. Each command is | ||||||
|  | immediately executed after it is entered(1) (*note Command-line | ||||||
|  | interface-Footnote-1::).  The commands (*note Command-line and menu | ||||||
|  | entry commands::) are a subset of those available in the configuration | ||||||
|  | file, used with exactly the same syntax. | ||||||
|  | 
 | ||||||
|  |    Cursor movement and editing of the text on the line can be done via a | ||||||
|  | subset of the functions available in the Bash shell: | ||||||
|  | 
 | ||||||
|  | <C-f> | ||||||
|  | <PC right key> | ||||||
|  |      Move forward one character. | ||||||
|  | 
 | ||||||
|  | <C-b> | ||||||
|  | <PC left key> | ||||||
|  |      Move back one character. | ||||||
|  | 
 | ||||||
|  | <C-a> | ||||||
|  | <HOME> | ||||||
|  |      Move to the start of the line. | ||||||
|  | 
 | ||||||
|  | <C-e> | ||||||
|  | <END> | ||||||
|  |      Move the the end of the line. | ||||||
|  | 
 | ||||||
|  | <C-d> | ||||||
|  | <DEL> | ||||||
|  |      Delete the character underneath the cursor. | ||||||
|  | 
 | ||||||
|  | <C-h> | ||||||
|  | <BS> | ||||||
|  |      Delete the character to the left of the cursor. | ||||||
|  | 
 | ||||||
|  | <C-k> | ||||||
|  |      Kill the text from the current cursor position to the end of the | ||||||
|  |      line. | ||||||
|  | 
 | ||||||
|  | <C-u> | ||||||
|  |      Kill backward from the cursor to the beginning of the line. | ||||||
|  | 
 | ||||||
|  | <C-y> | ||||||
|  |      Yank the killed text back into the buffer at the cursor. | ||||||
|  | 
 | ||||||
|  | <C-p> | ||||||
|  | <PC up key> | ||||||
|  |      Move up through the history list. | ||||||
|  | 
 | ||||||
|  | <C-n> | ||||||
|  | <PC down key> | ||||||
|  |      Move down through the history list. | ||||||
|  | 
 | ||||||
|  |    When typing commands interactively, if the cursor is within or before | ||||||
|  | the first word in the command-line, pressing the <TAB> key (or <C-i>) | ||||||
|  | will display a listing of the available commands, and if the cursor is | ||||||
|  | after the first word, the '<TAB>' will provide a completion listing of | ||||||
|  | disks, partitions, and file names depending on the context.  Note that | ||||||
|  | to obtain a list of drives, one must open a parenthesis, as 'root ('. | ||||||
|  | 
 | ||||||
|  |    Note that you cannot use the completion functionality in the TFTP | ||||||
|  | filesystem.  This is because TFTP doesn't support file name listing for | ||||||
|  | the security. | ||||||
|  | 
 | ||||||
|  |    (1) However, this behavior will be changed in the future version, in | ||||||
|  | a user-invisible way. | ||||||
|  | 
 | ||||||
|  | 14.2 The simple menu interface | ||||||
|  | ============================== | ||||||
|  | 
 | ||||||
|  | The menu interface is quite easy to use.  Its commands are both | ||||||
|  | reasonably intuitive and described on screen. | ||||||
|  | 
 | ||||||
|  |    Basically, the menu interface provides a list of "boot entries" to | ||||||
|  | the user to choose from.  Use the arrow keys to select the entry of | ||||||
|  | choice, then press <RET> to run it.  An optional timeout is available to | ||||||
|  | boot the default entry (the first one if not set), which is aborted by | ||||||
|  | pressing any key. | ||||||
|  | 
 | ||||||
|  |    Commands are available to enter a bare command-line by pressing <c> | ||||||
|  | (which operates exactly like the non-config-file version of GRUB, but | ||||||
|  | allows one to return to the menu if desired by pressing <ESC>) or to | ||||||
|  | edit any of the "boot entries" by pressing <e>. | ||||||
|  | 
 | ||||||
|  |    If you protect the menu interface with a password (*note Security::), | ||||||
|  | all you can do is choose an entry by pressing <RET>, or press <p> to | ||||||
|  | enter the password. | ||||||
|  | 
 | ||||||
|  | 14.3 Editing a menu entry | ||||||
|  | ========================= | ||||||
|  | 
 | ||||||
|  | The menu entry editor looks much like the main menu interface, but the | ||||||
|  | lines in the menu are individual commands in the selected entry instead | ||||||
|  | of entry names. | ||||||
|  | 
 | ||||||
|  |    If an <ESC> is pressed in the editor, it aborts all the changes made | ||||||
|  | to the configuration entry and returns to the main menu interface. | ||||||
|  | 
 | ||||||
|  |    Each line in the menu entry can be edited freely, and you can add new | ||||||
|  | lines by pressing <RET> at the end of a line.  To boot the edited entry, | ||||||
|  | press <Ctrl-x>. | ||||||
|  | 
 | ||||||
|  |    Although GRUB unfortunately does not support "undo", you can do | ||||||
|  | almost the same thing by just returning to the main menu using <ESC>. | ||||||
|  | 
 | ||||||
							
								
								
									
										459
									
								
								boot/grub/persistent/docs/15_environment_variables.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										459
									
								
								boot/grub/persistent/docs/15_environment_variables.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,459 @@ | ||||||
|  | 15 GRUB environment variables | ||||||
|  | ***************************** | ||||||
|  | 
 | ||||||
|  | GRUB supports environment variables which are rather like those offered | ||||||
|  | by all Unix-like systems.  Environment variables have a name, which is | ||||||
|  | unique and is usually a short identifier, and a value, which is an | ||||||
|  | arbitrary string of characters.  They may be set (*note set::), unset | ||||||
|  | (*note unset::), or looked up (*note Shell-like scripting::) by name. | ||||||
|  | 
 | ||||||
|  |    A number of environment variables have special meanings to various | ||||||
|  | parts of GRUB. Others may be used freely in GRUB configuration files. | ||||||
|  | 
 | ||||||
|  | 15.1 Special environment variables | ||||||
|  | ================================== | ||||||
|  | 
 | ||||||
|  | These variables have special meaning to GRUB. | ||||||
|  | 
 | ||||||
|  | 15.1.1 biosnum | ||||||
|  | -------------- | ||||||
|  | 
 | ||||||
|  | When chain-loading another boot loader (*note Chain-loading::), GRUB may | ||||||
|  | need to know what BIOS drive number corresponds to the root device | ||||||
|  | (*note root::) so that it can set up registers properly.  If the BIOSNUM | ||||||
|  | variable is set, it overrides GRUB's own means of guessing this. | ||||||
|  | 
 | ||||||
|  |    For an alternative approach which also changes BIOS drive mappings | ||||||
|  | for the chain-loaded system, *note drivemap::. | ||||||
|  | 
 | ||||||
|  | 15.1.2 check_signatures | ||||||
|  | ----------------------- | ||||||
|  | 
 | ||||||
|  | This variable controls whether GRUB enforces digital signature | ||||||
|  | validation on loaded files.  *Note Using digital signatures::. | ||||||
|  | 
 | ||||||
|  | 15.1.3 chosen | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | When executing a menu entry, GRUB sets the CHOSEN variable to the title | ||||||
|  | of the entry being executed. | ||||||
|  | 
 | ||||||
|  |    If the menu entry is in one or more submenus, then CHOSEN is set to | ||||||
|  | the titles of each of the submenus starting from the top level followed | ||||||
|  | by the title of the menu entry itself, separated by '>'. | ||||||
|  | 
 | ||||||
|  | 15.1.4 cmdpath | ||||||
|  | -------------- | ||||||
|  | 
 | ||||||
|  | The location from which 'core.img' was loaded as an absolute directory | ||||||
|  | name (*note File name syntax::).  This is set by GRUB at startup based | ||||||
|  | on information returned by platform firmware.  Not every platform | ||||||
|  | provides this information and some may return only device without path | ||||||
|  | name. | ||||||
|  | 
 | ||||||
|  | 15.1.5 color_highlight | ||||||
|  | ---------------------- | ||||||
|  | 
 | ||||||
|  | This variable contains the "highlight" foreground and background | ||||||
|  | terminal colors, separated by a slash ('/').  Setting this variable | ||||||
|  | changes those colors.  For the available color names, *note | ||||||
|  | color_normal::. | ||||||
|  | 
 | ||||||
|  |    The default is 'black/light-gray'. | ||||||
|  | 
 | ||||||
|  | 15.1.6 color_normal | ||||||
|  | ------------------- | ||||||
|  | 
 | ||||||
|  | This variable contains the "normal" foreground and background terminal | ||||||
|  | colors, separated by a slash ('/').  Setting this variable changes those | ||||||
|  | colors.  Each color must be a name from the following list: | ||||||
|  | 
 | ||||||
|  |    * black | ||||||
|  |    * blue | ||||||
|  |    * green | ||||||
|  |    * cyan | ||||||
|  |    * red | ||||||
|  |    * magenta | ||||||
|  |    * brown | ||||||
|  |    * light-gray | ||||||
|  |    * dark-gray | ||||||
|  |    * light-blue | ||||||
|  |    * light-green | ||||||
|  |    * light-cyan | ||||||
|  |    * light-red | ||||||
|  |    * light-magenta | ||||||
|  |    * yellow | ||||||
|  |    * white | ||||||
|  | 
 | ||||||
|  |    The default is 'light-gray/black'. | ||||||
|  | 
 | ||||||
|  |    The color support support varies from terminal to terminal. | ||||||
|  | 
 | ||||||
|  |    'morse' has no color support at all. | ||||||
|  | 
 | ||||||
|  |    'mda_text' color support is limited to highlighting by black/white | ||||||
|  | reversal. | ||||||
|  | 
 | ||||||
|  |    'console' on ARC, EMU and IEEE1275, 'serial_*' and 'spkmodem' are | ||||||
|  | governed by terminfo and support only 8 colors if in modes 'vt100-color' | ||||||
|  | (default for console on emu), 'arc' (default for console on ARC), | ||||||
|  | 'ieee1275' (default for console on IEEE1275).  When in mode 'vt100' then | ||||||
|  | the color support is limited to highlighting by black/white reversal. | ||||||
|  | When in mode 'dumb' there is no color support. | ||||||
|  | 
 | ||||||
|  |    When console supports no colors this setting is ignored.  When | ||||||
|  | console supports 8 colors, then the colors from the second half of the | ||||||
|  | previous list are mapped to the matching colors of first half. | ||||||
|  | 
 | ||||||
|  |    'console' on EFI and BIOS and 'vga_text' support all 16 colors. | ||||||
|  | 
 | ||||||
|  |    'gfxterm' supports all 16 colors and would be theoretically | ||||||
|  | extendable to support whole rgb24 palette but currently there is no | ||||||
|  | compelling reason to go beyond the current 16 colors. | ||||||
|  | 
 | ||||||
|  | 15.1.7 config_directory | ||||||
|  | ----------------------- | ||||||
|  | 
 | ||||||
|  | This variable is automatically set by GRUB to the directory part of | ||||||
|  | current configuration file name (*note config_file::). | ||||||
|  | 
 | ||||||
|  | 15.1.8 config_file | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | This variable is automatically set by GRUB to the name of configuration | ||||||
|  | file that is being processed by commands 'configfile' (*note | ||||||
|  | configfile::) or 'normal' (*note normal::).  It is restored to the | ||||||
|  | previous value when command completes. | ||||||
|  | 
 | ||||||
|  | 15.1.9 debug | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | This variable may be set to enable debugging output from various | ||||||
|  | components of GRUB. The value is a list of debug facility names | ||||||
|  | separated by whitespace or ',', or 'all' to enable all available | ||||||
|  | debugging output.  The facility names are the first argument to | ||||||
|  | grub_dprintf.  Consult source for more details. | ||||||
|  | 
 | ||||||
|  | 15.1.10 default | ||||||
|  | --------------- | ||||||
|  | 
 | ||||||
|  | If this variable is set, it identifies a menu entry that should be | ||||||
|  | selected by default, possibly after a timeout (*note timeout::).  The | ||||||
|  | entry may be identified by number (starting from 0 at each level of the | ||||||
|  | hierarchy), by title, or by id. | ||||||
|  | 
 | ||||||
|  |    For example, if you have: | ||||||
|  | 
 | ||||||
|  | menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux { | ||||||
|  | 	... | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  |    then you can make this the default using: | ||||||
|  | 
 | ||||||
|  |      default=example-gnu-linux | ||||||
|  | 
 | ||||||
|  |    If the entry is in a submenu, then it must be identified using the | ||||||
|  | number, title, or id of each of the submenus starting from the top | ||||||
|  | level, followed by the number, title, or id of the menu entry itself, | ||||||
|  | with each element separated by '>'.  For example, take the following | ||||||
|  | menu structure: | ||||||
|  | 
 | ||||||
|  |      GNU/Hurd --id gnu-hurd | ||||||
|  |        Standard Boot --id=gnu-hurd-std | ||||||
|  |        Rescue shell --id=gnu-hurd-rescue | ||||||
|  |      Other platforms --id=other | ||||||
|  |        Minix --id=minix | ||||||
|  |          Version 3.4.0 --id=minix-3.4.0 | ||||||
|  |          Version 3.3.0 --id=minix-3.3.0 | ||||||
|  |        GRUB Invaders --id=grub-invaders | ||||||
|  | 
 | ||||||
|  |    The more recent release of Minix would then be identified as 'Other | ||||||
|  | platforms>Minix>Version 3.4.0', or as '1>0>0', or as | ||||||
|  | 'other>minix>minix-3.4.0'. | ||||||
|  | 
 | ||||||
|  |    This variable is often set by 'GRUB_DEFAULT' (*note Simple | ||||||
|  | configuration::), 'grub-set-default', or 'grub-reboot'. | ||||||
|  | 
 | ||||||
|  | 15.1.11 fallback | ||||||
|  | ---------------- | ||||||
|  | 
 | ||||||
|  | If this variable is set, it identifies a menu entry that should be | ||||||
|  | selected if the default menu entry fails to boot.  Entries are | ||||||
|  | identified in the same way as for 'default' (*note default::). | ||||||
|  | 
 | ||||||
|  | 15.1.12 gfxmode | ||||||
|  | --------------- | ||||||
|  | 
 | ||||||
|  | If this variable is set, it sets the resolution used on the 'gfxterm' | ||||||
|  | graphical terminal.  Note that you can only use modes which your | ||||||
|  | graphics card supports via VESA BIOS Extensions (VBE), so for example | ||||||
|  | native LCD panel resolutions may not be available.  The default is | ||||||
|  | 'auto', which selects a platform-specific default that should look | ||||||
|  | reasonable.  Supported modes can be listed by 'videoinfo' command in | ||||||
|  | GRUB. | ||||||
|  | 
 | ||||||
|  |    The resolution may be specified as a sequence of one or more modes, | ||||||
|  | separated by commas (',') or semicolons (';'); each will be tried in | ||||||
|  | turn until one is found.  Each mode should be either 'auto', | ||||||
|  | 'WIDTHxHEIGHT', or 'WIDTHxHEIGHTxDEPTH'. | ||||||
|  | 
 | ||||||
|  | 15.1.13 gfxpayload | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | If this variable is set, it controls the video mode in which the Linux | ||||||
|  | kernel starts up, replacing the 'vga=' boot option (*note linux::).  It | ||||||
|  | may be set to 'text' to force the Linux kernel to boot in normal text | ||||||
|  | mode, 'keep' to preserve the graphics mode set using 'gfxmode', or any | ||||||
|  | of the permitted values for 'gfxmode' to set a particular graphics mode | ||||||
|  | (*note gfxmode::). | ||||||
|  | 
 | ||||||
|  |    Depending on your kernel, your distribution, your graphics card, and | ||||||
|  | the phase of the moon, note that using this option may cause GNU/Linux | ||||||
|  | to suffer from various display problems, particularly during the early | ||||||
|  | part of the boot sequence.  If you have problems, set this variable to | ||||||
|  | 'text' and GRUB will tell Linux to boot in normal text mode. | ||||||
|  | 
 | ||||||
|  |    The default is platform-specific.  On platforms with a native text | ||||||
|  | mode (such as PC BIOS platforms), the default is 'text'.  Otherwise the | ||||||
|  | default may be 'auto' or a specific video mode. | ||||||
|  | 
 | ||||||
|  |    This variable is often set by 'GRUB_GFXPAYLOAD_LINUX' (*note Simple | ||||||
|  | configuration::). | ||||||
|  | 
 | ||||||
|  | 15.1.14 gfxterm_font | ||||||
|  | -------------------- | ||||||
|  | 
 | ||||||
|  | If this variable is set, it names a font to use for text on the | ||||||
|  | 'gfxterm' graphical terminal.  Otherwise, 'gfxterm' may use any | ||||||
|  | available font. | ||||||
|  | 
 | ||||||
|  | 15.1.15 grub_cpu | ||||||
|  | ---------------- | ||||||
|  | 
 | ||||||
|  | In normal mode (*note normal::), GRUB sets the 'grub_cpu' variable to | ||||||
|  | the CPU type for which GRUB was built (e.g.  'i386' or 'powerpc'). | ||||||
|  | 
 | ||||||
|  | 15.1.16 grub_platform | ||||||
|  | --------------------- | ||||||
|  | 
 | ||||||
|  | In normal mode (*note normal::), GRUB sets the 'grub_platform' variable | ||||||
|  | to the platform for which GRUB was built (e.g.  'pc' or 'efi'). | ||||||
|  | 
 | ||||||
|  | 15.1.17 icondir | ||||||
|  | --------------- | ||||||
|  | 
 | ||||||
|  | If this variable is set, it names a directory in which the GRUB | ||||||
|  | graphical menu should look for icons after looking in the theme's | ||||||
|  | 'icons' directory.  *Note Theme file format::. | ||||||
|  | 
 | ||||||
|  | 15.1.18 lang | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | If this variable is set, it names the language code that the 'gettext' | ||||||
|  | command (*note gettext::) uses to translate strings.  For example, | ||||||
|  | French would be named as 'fr', and Simplified Chinese as 'zh_CN'. | ||||||
|  | 
 | ||||||
|  |    'grub-mkconfig' (*note Simple configuration::) will try to set a | ||||||
|  | reasonable default for this variable based on the system locale. | ||||||
|  | 
 | ||||||
|  | 15.1.19 locale_dir | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | If this variable is set, it names the directory where translation files | ||||||
|  | may be found (*note gettext::), usually '/boot/grub/locale'.  Otherwise, | ||||||
|  | internationalization is disabled. | ||||||
|  | 
 | ||||||
|  |    'grub-mkconfig' (*note Simple configuration::) will set a reasonable | ||||||
|  | default for this variable if internationalization is needed and any | ||||||
|  | translation files are available. | ||||||
|  | 
 | ||||||
|  | 15.1.20 menu_color_highlight | ||||||
|  | ---------------------------- | ||||||
|  | 
 | ||||||
|  | This variable contains the foreground and background colors to be used | ||||||
|  | for the highlighted menu entry, separated by a slash ('/').  Setting | ||||||
|  | this variable changes those colors.  For the available color names, | ||||||
|  | *note color_normal::. | ||||||
|  | 
 | ||||||
|  |    The default is the value of 'color_highlight' (*note | ||||||
|  | color_highlight::). | ||||||
|  | 
 | ||||||
|  | 15.1.21 menu_color_normal | ||||||
|  | ------------------------- | ||||||
|  | 
 | ||||||
|  | This variable contains the foreground and background colors to be used | ||||||
|  | for non-highlighted menu entries, separated by a slash ('/').  Setting | ||||||
|  | this variable changes those colors.  For the available color names, | ||||||
|  | *note color_normal::. | ||||||
|  | 
 | ||||||
|  |    The default is the value of 'color_normal' (*note color_normal::). | ||||||
|  | 
 | ||||||
|  | 15.1.22 net_<INTERFACE>_boot_file | ||||||
|  | --------------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.23 net_<INTERFACE>_dhcp_server_name | ||||||
|  | ---------------------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.24 net_<INTERFACE>_domain | ||||||
|  | ------------------------------ | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.25 net_<INTERFACE>_extensionspath | ||||||
|  | -------------------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.26 net_<INTERFACE>_hostname | ||||||
|  | -------------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.27 net_<INTERFACE>_ip | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.28 net_<INTERFACE>_mac | ||||||
|  | --------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.29 net_<INTERFACE>_next_server | ||||||
|  | ----------------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.30 net_<INTERFACE>_rootpath | ||||||
|  | -------------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.31 net_default_interface | ||||||
|  | ----------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.32 net_default_ip | ||||||
|  | ---------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.33 net_default_mac | ||||||
|  | ----------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.34 net_default_server | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.35 pager | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | If set to '1', pause output after each screenful and wait for keyboard | ||||||
|  | input.  The default is not to pause output. | ||||||
|  | 
 | ||||||
|  | 15.1.36 prefix | ||||||
|  | -------------- | ||||||
|  | 
 | ||||||
|  | The location of the '/boot/grub' directory as an absolute file name | ||||||
|  | (*note File name syntax::).  This is normally set by GRUB at startup | ||||||
|  | based on information provided by 'grub-install'.  GRUB modules are | ||||||
|  | dynamically loaded from this directory, so it must be set correctly in | ||||||
|  | order for many parts of GRUB to work. | ||||||
|  | 
 | ||||||
|  | 15.1.37 pxe_blksize | ||||||
|  | ------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.38 pxe_default_gateway | ||||||
|  | --------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.39 pxe_default_server | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | *Note Network::. | ||||||
|  | 
 | ||||||
|  | 15.1.40 root | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | The root device name (*note Device syntax::).  Any file names that do | ||||||
|  | not specify an explicit device name are read from this device.  The | ||||||
|  | default is normally set by GRUB at startup based on the value of | ||||||
|  | 'prefix' (*note prefix::). | ||||||
|  | 
 | ||||||
|  |    For example, if GRUB was installed to the first partition of the | ||||||
|  | first hard disk, then 'prefix' might be set to '(hd0,msdos1)/boot/grub' | ||||||
|  | and 'root' to 'hd0,msdos1'. | ||||||
|  | 
 | ||||||
|  | 15.1.41 superusers | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | This variable may be set to a list of superuser names to enable | ||||||
|  | authentication support.  *Note Security::. | ||||||
|  | 
 | ||||||
|  | 15.1.42 theme | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | This variable may be set to a directory containing a GRUB graphical menu | ||||||
|  | theme.  *Note Theme file format::. | ||||||
|  | 
 | ||||||
|  |    This variable is often set by 'GRUB_THEME' (*note Simple | ||||||
|  | configuration::). | ||||||
|  | 
 | ||||||
|  | 15.1.43 timeout | ||||||
|  | --------------- | ||||||
|  | 
 | ||||||
|  | If this variable is set, it specifies the time in seconds to wait for | ||||||
|  | keyboard input before booting the default menu entry.  A timeout of '0' | ||||||
|  | means to boot the default entry immediately without displaying the menu; | ||||||
|  | a timeout of '-1' (or unset) means to wait indefinitely. | ||||||
|  | 
 | ||||||
|  |    If 'timeout_style' (*note timeout_style::) is set to 'countdown' or | ||||||
|  | 'hidden', the timeout is instead counted before the menu is displayed. | ||||||
|  | 
 | ||||||
|  |    This variable is often set by 'GRUB_TIMEOUT' (*note Simple | ||||||
|  | configuration::). | ||||||
|  | 
 | ||||||
|  | 15.1.44 timeout_style | ||||||
|  | --------------------- | ||||||
|  | 
 | ||||||
|  | This variable may be set to 'menu', 'countdown', or 'hidden' to control | ||||||
|  | the way in which the timeout (*note timeout::) interacts with displaying | ||||||
|  | the menu.  See the documentation of 'GRUB_TIMEOUT_STYLE' (*note Simple | ||||||
|  | configuration::) for details. | ||||||
|  | 
 | ||||||
|  | 15.2 The GRUB environment block | ||||||
|  | =============================== | ||||||
|  | 
 | ||||||
|  | It is often useful to be able to remember a small amount of information | ||||||
|  | from one boot to the next.  For example, you might want to set the | ||||||
|  | default menu entry based on what was selected the last time.  GRUB | ||||||
|  | deliberately does not implement support for writing files in order to | ||||||
|  | minimise the possibility of the boot loader being responsible for file | ||||||
|  | system corruption, so a GRUB configuration file cannot just create a | ||||||
|  | file in the ordinary way.  However, GRUB provides an "environment block" | ||||||
|  | which can be used to save a small amount of state. | ||||||
|  | 
 | ||||||
|  |    The environment block is a preallocated 1024-byte file, which | ||||||
|  | normally lives in '/boot/grub/grubenv' (although you should not assume | ||||||
|  | this).  At boot time, the 'load_env' command (*note load_env::) loads | ||||||
|  | environment variables from it, and the 'save_env' (*note save_env::) | ||||||
|  | command saves environment variables to it.  From a running system, the | ||||||
|  | 'grub-editenv' utility can be used to edit the environment block. | ||||||
|  | 
 | ||||||
|  |    For safety reasons, this storage is only available when installed on | ||||||
|  | a plain disk (no LVM or RAID), using a non-checksumming filesystem (no | ||||||
|  | ZFS), and using BIOS or EFI functions (no ATA, USB or IEEE1275). | ||||||
|  | 
 | ||||||
|  |    'grub-mkconfig' uses this facility to implement 'GRUB_SAVEDEFAULT' | ||||||
|  | (*note Simple configuration::). | ||||||
							
								
								
									
										1462
									
								
								boot/grub/persistent/docs/16_available_commands.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1462
									
								
								boot/grub/persistent/docs/16_available_commands.txt
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										136
									
								
								boot/grub/persistent/docs/17_internationalisation
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								boot/grub/persistent/docs/17_internationalisation
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,136 @@ | ||||||
|  | 17 Internationalisation | ||||||
|  | *********************** | ||||||
|  | 
 | ||||||
|  | 17.1 Charset | ||||||
|  | ============ | ||||||
|  | 
 | ||||||
|  | GRUB uses UTF-8 internally other than in rendering where some | ||||||
|  | GRUB-specific appropriate representation is used.  All text files | ||||||
|  | (including config) are assumed to be encoded in UTF-8. | ||||||
|  | 
 | ||||||
|  | 17.2 Filesystems | ||||||
|  | ================ | ||||||
|  | 
 | ||||||
|  | NTFS, JFS, UDF, HFS+, exFAT, long filenames in FAT, Joliet part of | ||||||
|  | ISO9660 are treated as UTF-16 as per specification.  AFS and BFS are | ||||||
|  | read as UTF-8, again according to specification.  BtrFS, cpio, tar, | ||||||
|  | squash4, minix, minix2, minix3, ROMFS, ReiserFS, XFS, ext2, ext3, ext4, | ||||||
|  | FAT (short names), F2FS, RockRidge part of ISO9660, nilfs2, UFS1, UFS2 | ||||||
|  | and ZFS are assumed to be UTF-8.  This might be false on systems | ||||||
|  | configured with legacy charset but as long as the charset used is | ||||||
|  | superset of ASCII you should be able to access ASCII-named files.  And | ||||||
|  | it's recommended to configure your system to use UTF-8 to access the | ||||||
|  | filesystem, convmv may help with migration.  ISO9660 (plain) filenames | ||||||
|  | are specified as being ASCII or being described with unspecified escape | ||||||
|  | sequences.  GRUB assumes that the ISO9660 names are UTF-8 (since any | ||||||
|  | ASCII is valid UTF-8).  There are some old CD-ROMs which use CP437 in | ||||||
|  | non-compliant way.  You're still able to access files with names | ||||||
|  | containing only ASCII characters on such filesystems though.  You're | ||||||
|  | also able to access any file if the filesystem contains valid Joliet | ||||||
|  | (UTF-16) or RockRidge (UTF-8).  AFFS, SFS and HFS never use unicode and | ||||||
|  | GRUB assumes them to be in Latin1, Latin1 and MacRoman respectively. | ||||||
|  | GRUB handles filesystem case-insensitivity however no attempt is | ||||||
|  | performed at case conversion of international characters so e.g.  a file | ||||||
|  | named lowercase greek alpha is treated as different from the one named | ||||||
|  | as uppercase alpha.  The filesystems in questions are NTFS (except POSIX | ||||||
|  | namespace), HFS+ (configurable at mkfs time, default insensitive), SFS | ||||||
|  | (configurable at mkfs time, default insensitive), JFS (configurable at | ||||||
|  | mkfs time, default sensitive), HFS, AFFS, FAT, exFAT and ZFS | ||||||
|  | (configurable on per-subvolume basis by property "casesensitivity", | ||||||
|  | default sensitive).  On ZFS subvolumes marked as case insensitive files | ||||||
|  | containing lowercase international characters are inaccessible.  Also | ||||||
|  | like all supported filesystems except HFS+ and ZFS (configurable on | ||||||
|  | per-subvolume basis by property "normalization", default none) GRUB | ||||||
|  | makes no attempt at check of canonical equivalence so a file name | ||||||
|  | u-diaresis is treated as distinct from u+combining diaresis.  This | ||||||
|  | however means that in order to access file on HFS+ its name must be | ||||||
|  | specified in normalisation form D. On normalized ZFS subvolumes | ||||||
|  | filenames out of normalisation are inaccessible. | ||||||
|  | 
 | ||||||
|  | 17.3 Output terminal | ||||||
|  | ==================== | ||||||
|  | 
 | ||||||
|  | Firmware output console "console" on ARC and IEEE1275 are limited to | ||||||
|  | ASCII. | ||||||
|  | 
 | ||||||
|  |    BIOS firmware console and VGA text are limited to ASCII and some | ||||||
|  | pseudographics. | ||||||
|  | 
 | ||||||
|  |    None of above mentioned is appropriate for displaying international | ||||||
|  | and any unsupported character is replaced with question mark except | ||||||
|  | pseudographics which we attempt to approximate with ASCII. | ||||||
|  | 
 | ||||||
|  |    EFI console on the other hand nominally supports UTF-16 but actual | ||||||
|  | language coverage depends on firmware and may be very limited. | ||||||
|  | 
 | ||||||
|  |    The encoding used on serial can be chosen with 'terminfo' as either | ||||||
|  | ASCII, UTF-8 or "visual UTF-8".  Last one is against the specification | ||||||
|  | but results in correct rendering of right-to-left on some readers which | ||||||
|  | don't have own bidi implementation. | ||||||
|  | 
 | ||||||
|  |    On emu GRUB checks if charset is UTF-8 and uses it if so and uses | ||||||
|  | ASCII otherwise. | ||||||
|  | 
 | ||||||
|  |    When using gfxterm or gfxmenu GRUB itself is responsible for | ||||||
|  | rendering the text.  In this case GRUB is limited by loaded fonts.  If | ||||||
|  | fonts contain all required characters then bidirectional text, cursive | ||||||
|  | variants and combining marks other than enclosing, half (e.g.  left half | ||||||
|  | tilde or combining overline) and double ones.  Ligatures aren't | ||||||
|  | supported though.  This should cover European, Middle Eastern (if you | ||||||
|  | don't mind lack of lam-alif ligature in Arabic) and East Asian scripts. | ||||||
|  | Notable unsupported scripts are Brahmic family and derived as well as | ||||||
|  | Mongolian, Tifinagh, Korean Jamo (precomposed characters have no | ||||||
|  | problem) and tonal writing (2e5-2e9).  GRUB also ignores deprecated (as | ||||||
|  | specified in Unicode) characters (e.g.  tags).  GRUB also doesn't handle | ||||||
|  | so called "annotation characters" If you can complete either of two | ||||||
|  | lists or, better, propose a patch to improve rendering, please contact | ||||||
|  | developer team. | ||||||
|  | 
 | ||||||
|  | 17.4 Input terminal | ||||||
|  | =================== | ||||||
|  | 
 | ||||||
|  | Firmware console on BIOS, IEEE1275 and ARC doesn't allow you to enter | ||||||
|  | non-ASCII characters.  EFI specification allows for such but author is | ||||||
|  | unaware of any actual implementations.  Serial input is currently | ||||||
|  | limited for latin1 (unlikely to change).  Own keyboard implementations | ||||||
|  | (at_keyboard and usb_keyboard) supports any key but work on | ||||||
|  | one-char-per-keystroke.  So no dead keys or advanced input method.  Also | ||||||
|  | there is no keymap change hotkey.  In practice it makes difficult to | ||||||
|  | enter any text using non-Latin alphabet.  Moreover all current input | ||||||
|  | consumers are limited to ASCII. | ||||||
|  | 
 | ||||||
|  | 17.5 Gettext | ||||||
|  | ============ | ||||||
|  | 
 | ||||||
|  | GRUB supports being translated.  For this you need to have language *.mo | ||||||
|  | files in $prefix/locale, load gettext module and set "lang" variable. | ||||||
|  | 
 | ||||||
|  | 17.6 Regexp | ||||||
|  | =========== | ||||||
|  | 
 | ||||||
|  | Regexps work on unicode characters, however no attempt at checking | ||||||
|  | cannonical equivalence has been made.  Moreover the classes like | ||||||
|  | [:alpha:] match only ASCII subset. | ||||||
|  | 
 | ||||||
|  | 17.7 Other | ||||||
|  | ========== | ||||||
|  | 
 | ||||||
|  | Currently GRUB always uses YEAR-MONTH-DAY HOUR:MINUTE:SECOND [WEEKDAY] | ||||||
|  | 24-hour datetime format but weekdays are translated.  GRUB always uses | ||||||
|  | the decimal number format with [0-9] as digits and .  as descimal | ||||||
|  | separator and no group separator.  IEEE1275 aliases are matched | ||||||
|  | case-insensitively except non-ASCII which is matched as binary.  Similar | ||||||
|  | behaviour is for matching OSBundleRequired.  Since IEEE1275 aliases and | ||||||
|  | OSBundleRequired don't contain any non-ASCII it should never be a | ||||||
|  | problem in practice.  Case-sensitive identifiers are matched as raw | ||||||
|  | strings, no canonical equivalence check is performed.  Case-insenstive | ||||||
|  | identifiers are matched as RAW but additionally [a-z] is equivalent to | ||||||
|  | [A-Z]. GRUB-defined identifiers use only ASCII and so should | ||||||
|  | user-defined ones.  Identifiers containing non-ASCII may work but aren't | ||||||
|  | supported.  Only the ASCII space characters (space U+0020, tab U+000b, | ||||||
|  | CR U+000d and LF U+000a) are recognised.  Other unicode space characters | ||||||
|  | aren't a valid field separator.  'test' (*note test::) tests <, >, <=, | ||||||
|  | >=, -pgt and -plt compare the strings in the lexicographical order of | ||||||
|  | unicode codepoints, replicating the behaviour of test from coreutils. | ||||||
|  | environment variables and commands are listed in the same order. | ||||||
|  | 
 | ||||||
							
								
								
									
										186
									
								
								boot/grub/persistent/docs/18_security
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								boot/grub/persistent/docs/18_security
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,186 @@ | ||||||
|  | 18 Security | ||||||
|  | *********** | ||||||
|  | 
 | ||||||
|  | 18.1 Authentication and authorisation in GRUB | ||||||
|  | ============================================= | ||||||
|  | 
 | ||||||
|  | By default, the boot loader interface is accessible to anyone with | ||||||
|  | physical access to the console: anyone can select and edit any menu | ||||||
|  | entry, and anyone can get direct access to a GRUB shell prompt.  For | ||||||
|  | most systems, this is reasonable since anyone with direct physical | ||||||
|  | access has a variety of other ways to gain full access, and requiring | ||||||
|  | authentication at the boot loader level would only serve to make it | ||||||
|  | difficult to recover broken systems. | ||||||
|  | 
 | ||||||
|  |    However, in some environments, such as kiosks, it may be appropriate | ||||||
|  | to lock down the boot loader to require authentication before performing | ||||||
|  | certain operations. | ||||||
|  | 
 | ||||||
|  |    The 'password' (*note password::) and 'password_pbkdf2' (*note | ||||||
|  | password_pbkdf2::) commands can be used to define users, each of which | ||||||
|  | has an associated password.  'password' sets the password in plain text, | ||||||
|  | requiring 'grub.cfg' to be secure; 'password_pbkdf2' sets the password | ||||||
|  | hashed using the Password-Based Key Derivation Function (RFC 2898), | ||||||
|  | requiring the use of 'grub-mkpasswd-pbkdf2' (*note Invoking | ||||||
|  | grub-mkpasswd-pbkdf2::) to generate password hashes. | ||||||
|  | 
 | ||||||
|  |    In order to enable authentication support, the 'superusers' | ||||||
|  | environment variable must be set to a list of usernames, separated by | ||||||
|  | any of spaces, commas, semicolons, pipes, or ampersands.  Superusers are | ||||||
|  | permitted to use the GRUB command line, edit menu entries, and execute | ||||||
|  | any menu entry.  If 'superusers' is set, then use of the command line | ||||||
|  | and editing of menu entries are automatically restricted to superusers. | ||||||
|  | Setting 'superusers' to empty string effectively disables both access to | ||||||
|  | CLI and editing of menu entries. | ||||||
|  | 
 | ||||||
|  |    Other users may be allowed to execute specific menu entries by giving | ||||||
|  | a list of usernames (as above) using the '--users' option to the | ||||||
|  | 'menuentry' command (*note menuentry::).  If the '--unrestricted' option | ||||||
|  | is used for a menu entry, then that entry is unrestricted.  If the | ||||||
|  | '--users' option is not used for a menu entry, then that only superusers | ||||||
|  | are able to use it. | ||||||
|  | 
 | ||||||
|  |    Putting this together, a typical 'grub.cfg' fragment might look like | ||||||
|  | this: | ||||||
|  | 
 | ||||||
|  |      set superusers="root" | ||||||
|  |      password_pbkdf2 root grub.pbkdf2.sha512.10000.biglongstring | ||||||
|  |      password user1 insecure | ||||||
|  | 
 | ||||||
|  |      menuentry "May be run by any user" --unrestricted { | ||||||
|  |      	set root=(hd0,1) | ||||||
|  |      	linux /vmlinuz | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "Superusers only" --users "" { | ||||||
|  |      	set root=(hd0,1) | ||||||
|  |      	linux /vmlinuz single | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      menuentry "May be run by user1 or a superuser" --users user1 { | ||||||
|  |      	set root=(hd0,2) | ||||||
|  |      	chainloader +1 | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |    The 'grub-mkconfig' program does not yet have built-in support for | ||||||
|  | generating configuration files with authentication.  You can use | ||||||
|  | '/etc/grub.d/40_custom' to add simple superuser authentication, by | ||||||
|  | adding 'set superusers=' and 'password' or 'password_pbkdf2' commands. | ||||||
|  | 
 | ||||||
|  | 18.2 Using digital signatures in GRUB | ||||||
|  | ===================================== | ||||||
|  | 
 | ||||||
|  | GRUB's 'core.img' can optionally provide enforcement that all files | ||||||
|  | subsequently read from disk are covered by a valid digital signature. | ||||||
|  | This document does *not* cover how to ensure that your platform's | ||||||
|  | firmware (e.g., Coreboot) validates 'core.img'. | ||||||
|  | 
 | ||||||
|  |    If environment variable 'check_signatures' (*note check_signatures::) | ||||||
|  | is set to 'enforce', then every attempt by the GRUB 'core.img' to load | ||||||
|  | another file 'foo' implicitly invokes 'verify_detached foo foo.sig' | ||||||
|  | (*note verify_detached::).  'foo.sig' must contain a valid digital | ||||||
|  | signature over the contents of 'foo', which can be verified with a | ||||||
|  | public key currently trusted by GRUB (*note list_trusted::, *note | ||||||
|  | trust::, and *note distrust::).  If validation fails, then file 'foo' | ||||||
|  | cannot be opened.  This failure may halt or otherwise impact the boot | ||||||
|  | process. | ||||||
|  | 
 | ||||||
|  |    GRUB uses GPG-style detached signatures (meaning that a file | ||||||
|  | 'foo.sig' will be produced when file 'foo' is signed), and currently | ||||||
|  | supports the DSA and RSA signing algorithms.  A signing key can be | ||||||
|  | generated as follows: | ||||||
|  | 
 | ||||||
|  |      gpg --gen-key | ||||||
|  | 
 | ||||||
|  |    An individual file can be signed as follows: | ||||||
|  | 
 | ||||||
|  |      gpg --detach-sign /path/to/file | ||||||
|  | 
 | ||||||
|  |    For successful validation of all of GRUB's subcomponents and the | ||||||
|  | loaded OS kernel, they must all be signed.  One way to accomplish this | ||||||
|  | is the following (after having already produced the desired 'grub.cfg' | ||||||
|  | file, e.g., by running 'grub-mkconfig' (*note Invoking grub-mkconfig::): | ||||||
|  | 
 | ||||||
|  |      # Edit /dev/shm/passphrase.txt to contain your signing key's passphrase | ||||||
|  |      for i in `find /boot -name "*.cfg" -or -name "*.lst" -or \ | ||||||
|  |        -name "*.mod" -or -name "vmlinuz*" -or -name "initrd*" -or \ | ||||||
|  |        -name "grubenv"`; | ||||||
|  |      do | ||||||
|  |        gpg --batch --detach-sign --passphrase-fd 0 $i < \ | ||||||
|  |          /dev/shm/passphrase.txt | ||||||
|  |      done | ||||||
|  |      shred /dev/shm/passphrase.txt | ||||||
|  | 
 | ||||||
|  |    See also: *note check_signatures::, *note verify_detached::, *note | ||||||
|  | trust::, *note list_trusted::, *note distrust::, *note load_env::, *note | ||||||
|  | save_env::. | ||||||
|  | 
 | ||||||
|  |    Note that internally signature enforcement is controlled by setting | ||||||
|  | the environment variable 'check_signatures' equal to 'enforce'.  Passing | ||||||
|  | one or more '--pubkey' options to 'grub-mkimage' implicitly defines | ||||||
|  | 'check_signatures' equal to 'enforce' in 'core.img' prior to processing | ||||||
|  | any configuration files. | ||||||
|  | 
 | ||||||
|  |    Note that signature checking does *not* prevent an attacker with | ||||||
|  | (serial, physical, ...)  console access from dropping manually to the | ||||||
|  | GRUB console and executing: | ||||||
|  | 
 | ||||||
|  |      set check_signatures=no | ||||||
|  | 
 | ||||||
|  |    To prevent this, password-protection (*note Authentication and | ||||||
|  | authorisation::) is essential.  Note that even with GRUB password | ||||||
|  | protection, GRUB itself cannot prevent someone with physical access to | ||||||
|  | the machine from altering that machine's firmware (e.g., Coreboot or | ||||||
|  | BIOS) configuration to cause the machine to boot from a different | ||||||
|  | (attacker-controlled) device.  GRUB is at best only one link in a secure | ||||||
|  | boot chain. | ||||||
|  | 
 | ||||||
|  | 18.3 UEFI secure boot and shim support | ||||||
|  | ====================================== | ||||||
|  | 
 | ||||||
|  | The GRUB, except the 'chainloader' command, works with the UEFI secure | ||||||
|  | boot and the shim.  This functionality is provided by the shim_lock | ||||||
|  | module.  It is recommend to build in this and other required modules | ||||||
|  | into the 'core.img'.  All modules not stored in the 'core.img' and the | ||||||
|  | ACPI tables for the 'acpi' command have to be signed, e.g.  using PGP. | ||||||
|  | Additionally, the 'iorw', the 'memrw' and the 'wrmsr' commands are | ||||||
|  | prohibited if the UEFI secure boot is enabled.  This is done due to | ||||||
|  | security reasons.  All above mentioned requirements are enforced by the | ||||||
|  | shim_lock module.  And itself it is a persistent module which means that | ||||||
|  | it cannot be unloaded if it was loaded into the memory. | ||||||
|  | 
 | ||||||
|  | 18.4 Measuring boot components | ||||||
|  | ============================== | ||||||
|  | 
 | ||||||
|  | If the tpm module is loaded and the platform has a Trusted Platform | ||||||
|  | Module installed, GRUB will log each command executed and each file | ||||||
|  | loaded into the TPM event log and extend the PCR values in the TPM | ||||||
|  | correspondingly.  All events will be logged into the PCR described below | ||||||
|  | with a type of EV_IPL and an event description as described below. | ||||||
|  | 
 | ||||||
|  | Event type             PCR     Description | ||||||
|  | --------------------------------------------------------------------------- | ||||||
|  | Command                8       All executed commands (including those | ||||||
|  |                                from configuration files) will be logged | ||||||
|  |                                and measured as entered with a prefix of | ||||||
|  |                                "grub_cmd: " | ||||||
|  | Kernel command line    8       Any command line passed to a kernel will | ||||||
|  |                                be logged and measured as entered with a | ||||||
|  |                                prefix of "kernel_cmdline: " | ||||||
|  | Module command line    8       Any command line passed to a kernel | ||||||
|  |                                module will be logged and measured as | ||||||
|  |                                entered with a prefix of "module_cmdline: | ||||||
|  |                                " | ||||||
|  | Files                  9       Any file read by GRUB will be logged and | ||||||
|  |                                measured with a descriptive text | ||||||
|  |                                corresponding to the filename. | ||||||
|  | 
 | ||||||
|  |    GRUB will not measure its own 'core.img' - it is expected that | ||||||
|  | firmware will carry this out.  GRUB will also not perform any | ||||||
|  | measurements until the tpm module is loaded.  As such it is recommended | ||||||
|  | that the tpm module be built into 'core.img' in order to avoid a | ||||||
|  | potential gap in measurement between 'core.img' being loaded and the tpm | ||||||
|  | module being loaded. | ||||||
|  | 
 | ||||||
|  |    Measured boot is currently only supported on EFI platforms. | ||||||
|  | 
 | ||||||
							
								
								
									
										148
									
								
								boot/grub/persistent/docs/19_platform_limitations
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								boot/grub/persistent/docs/19_platform_limitations
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,148 @@ | ||||||
|  | 19 Platform limitations | ||||||
|  | *********************** | ||||||
|  | 
 | ||||||
|  | GRUB2 is designed to be portable and is actually ported across | ||||||
|  | platforms.  We try to keep all platforms at the level.  Unfortunately | ||||||
|  | some platforms are better supported than others.  This is detailed in | ||||||
|  | current and 2 following sections. | ||||||
|  | 
 | ||||||
|  |    ARC platform is unable to change datetime (firmware doesn't seem to | ||||||
|  | provide a function for it).  EMU has similar limitation. | ||||||
|  | 
 | ||||||
|  |    On EMU platform no serial port is available. | ||||||
|  | 
 | ||||||
|  |    Console charset refers only to firmware-assisted console.  gfxterm is | ||||||
|  | always Unicode (see Internationalisation section for its limitations). | ||||||
|  | Serial is configurable to UTF-8 or ASCII (see Internationalisation).  In | ||||||
|  | case of qemu and coreboot ports the refered console is vga_text. | ||||||
|  | Loongson always uses gfxterm. | ||||||
|  | 
 | ||||||
|  |    Most limited one is ASCII. CP437 provides additionally | ||||||
|  | pseudographics.  GRUB2 doesn't use any language characters from CP437 as | ||||||
|  | often CP437 is replaced by national encoding compatible only in | ||||||
|  | pseudographics.  Unicode is the most versatile charset which supports | ||||||
|  | many languages.  However the actual console may be much more limited | ||||||
|  | depending on firmware | ||||||
|  | 
 | ||||||
|  |    On BIOS network is supported only if the image is loaded through | ||||||
|  | network.  On sparc64 GRUB is unable to determine which server it was | ||||||
|  | booted from. | ||||||
|  | 
 | ||||||
|  |    Direct ATA/AHCI support allows to circumvent various firmware | ||||||
|  | limitations but isn't needed for normal operation except on baremetal | ||||||
|  | ports. | ||||||
|  | 
 | ||||||
|  |    AT keyboard support allows keyboard layout remapping and support for | ||||||
|  | keys not available through firmware.  It isn't needed for normal | ||||||
|  | operation except baremetal ports. | ||||||
|  | 
 | ||||||
|  |    Speaker allows morse and spkmodem communication. | ||||||
|  | 
 | ||||||
|  |    USB support provides benefits similar to ATA (for USB disks) or AT | ||||||
|  | (for USB keyboards).  In addition it allows USBserial. | ||||||
|  | 
 | ||||||
|  |    Chainloading refers to the ability to load another bootloader through | ||||||
|  | the same protocol | ||||||
|  | 
 | ||||||
|  |    Hints allow faster disk discovery by already knowing in advance which | ||||||
|  | is the disk in question.  On some platforms hints are correct unless you | ||||||
|  | move the disk between boots.  On other platforms it's just an educated | ||||||
|  | guess.  Note that hint failure results in just reduced performance, not | ||||||
|  | a failure | ||||||
|  | 
 | ||||||
|  |    BadRAM is the ability to mark some of the RAM as "bad".  Note: due to | ||||||
|  | protocol limitations mips-loongson (with Linux protocol) and | ||||||
|  | mips-qemu_mips can use only memory up to first hole. | ||||||
|  | 
 | ||||||
|  |    Bootlocation is ability of GRUB to automatically detect where it | ||||||
|  | boots from.  "disk" means the detection is limited to detecting the disk | ||||||
|  | with partition being discovered on install time.  "partition" means that | ||||||
|  | disk and partiton can be automatically discovered.  "file" means that | ||||||
|  | boot image file name as well as disk and partition can be discovered. | ||||||
|  | For consistency default install ignores partition and relies solely on | ||||||
|  | disk detection.  If no bootlocation discovery is available or boot and | ||||||
|  | grub-root disks are different, UUID is used instead.  On ARC if no | ||||||
|  | device to install to is specified, UUID is used instead as well. | ||||||
|  | 
 | ||||||
|  |                BIOS           Coreboot       Multiboot      Qemu | ||||||
|  | video          yes            yes            yes            yes | ||||||
|  | console        CP437          CP437          CP437          CP437 | ||||||
|  | charset | ||||||
|  | network        yes (*)        no             no             no | ||||||
|  | ATA/AHCI       yes            yes            yes            yes | ||||||
|  | AT keyboard    yes            yes            yes            yes | ||||||
|  | Speaker        yes            yes            yes            yes | ||||||
|  | USB            yes            yes            yes            yes | ||||||
|  | chainloader    local          yes            yes            no | ||||||
|  | cpuid          partial        partial        partial        partial | ||||||
|  | rdmsr          partial        partial        partial        partial | ||||||
|  | wrmsr          partial        partial        partial        partial | ||||||
|  | hints          guess          guess          guess          guess | ||||||
|  | PCI            yes            yes            yes            yes | ||||||
|  | badram         yes            yes            yes            yes | ||||||
|  | compression    always         pointless      no             no | ||||||
|  | exit           yes            no             no             no | ||||||
|  | bootlocation   disk           no             no             no | ||||||
|  | 
 | ||||||
|  |                ia32 EFI       amd64 EFI      ia32           Itanium | ||||||
|  |                                              IEEE1275 | ||||||
|  | video          yes            yes            no             no | ||||||
|  | console        Unicode        Unicode        ASCII          Unicode | ||||||
|  | charset | ||||||
|  | network        yes            yes            yes            yes | ||||||
|  | ATA/AHCI       yes            yes            yes            no | ||||||
|  | AT keyboard    yes            yes            yes            no | ||||||
|  | Speaker        yes            yes            yes            no | ||||||
|  | USB            yes            yes            yes            no | ||||||
|  | chainloader    local          local          no             local | ||||||
|  | cpuid          partial        partial        partial        no | ||||||
|  | rdmsr          partial        partial        partial        no | ||||||
|  | wrmsr          partial        partial        partial        no | ||||||
|  | hints          guess          guess          good           guess | ||||||
|  | PCI            yes            yes            yes            no | ||||||
|  | badram         yes            yes            no             yes | ||||||
|  | compression    no             no             no             no | ||||||
|  | exit           yes            yes            yes            yes | ||||||
|  | bootlocation   file           file           file,          file | ||||||
|  |                                              ignored | ||||||
|  | 
 | ||||||
|  |                Loongson       sparc64        Powerpc        ARC | ||||||
|  | video          yes            no             yes            no | ||||||
|  | console        N/A            ASCII          ASCII          ASCII | ||||||
|  | charset | ||||||
|  | network        no             yes (*)        yes            no | ||||||
|  | ATA/AHCI       yes            no             no             no | ||||||
|  | AT keyboard    yes            no             no             no | ||||||
|  | Speaker        no             no             no             no | ||||||
|  | USB            yes            no             no             no | ||||||
|  | chainloader    yes            no             no             no | ||||||
|  | cpuid          no             no             no             no | ||||||
|  | rdmsr          no             no             no             no | ||||||
|  | wrmsr          no             no             no             no | ||||||
|  | hints          good           good           good           no | ||||||
|  | PCI            yes            no             no             no | ||||||
|  | badram         yes (*)        no             no             no | ||||||
|  | compression    configurable   no             no             configurable | ||||||
|  | exit           no             yes            yes            yes | ||||||
|  | bootlocation   no             partition      file           file (*) | ||||||
|  | 
 | ||||||
|  |                MIPS qemu      emu            xen | ||||||
|  | video          no             yes            no | ||||||
|  | console        CP437          Unicode (*)    ASCII | ||||||
|  | charset | ||||||
|  | network        no             yes            no | ||||||
|  | ATA/AHCI       yes            no             no | ||||||
|  | AT keyboard    yes            no             no | ||||||
|  | Speaker        no             no             no | ||||||
|  | USB            N/A            yes            no | ||||||
|  | chainloader    yes            no             yes | ||||||
|  | cpuid          no             no             yes | ||||||
|  | rdmsr          no             no             yes | ||||||
|  | wrmsr          no             no             yes | ||||||
|  | hints          guess          no             no | ||||||
|  | PCI            no             no             no | ||||||
|  | badram         yes (*)        no             no | ||||||
|  | compression    configurable   no             no | ||||||
|  | exit           no             yes            no | ||||||
|  | bootlocation   no             file           no | ||||||
|  | 
 | ||||||
							
								
								
									
										33
									
								
								boot/grub/persistent/docs/20_outline
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								boot/grub/persistent/docs/20_outline
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | ||||||
|  | 20 Outline | ||||||
|  | ********** | ||||||
|  | 
 | ||||||
|  | Some platforms have features which allows to implement some commands | ||||||
|  | useless or not implementable on others. | ||||||
|  | 
 | ||||||
|  |    Quick summary: | ||||||
|  | 
 | ||||||
|  |    Information retrieval: | ||||||
|  | 
 | ||||||
|  |    * mipsel-loongson: lsspd | ||||||
|  |    * mips-arc: lsdev | ||||||
|  |    * efi: lsefisystab, lssal, lsefimmap, lsefi | ||||||
|  |    * i386-pc: lsapm | ||||||
|  |    * i386-coreboot: lscoreboot, coreboot_boottime, cbmemc | ||||||
|  |    * acpi-enabled (i386-pc, i386-coreboot, i386-multiboot, *-efi): | ||||||
|  |      lsacpi | ||||||
|  | 
 | ||||||
|  |    Workarounds for platform-specific issues: | ||||||
|  |    * i386-efi/x86_64-efi: loadbios, fakebios, fix_video | ||||||
|  |    * acpi-enabled (i386-pc, i386-coreboot, i386-multiboot, *-efi): acpi | ||||||
|  |      (override ACPI tables) | ||||||
|  |    * i386-pc: drivemap | ||||||
|  |    * i386-pc: sendkey | ||||||
|  | 
 | ||||||
|  |    Advanced operations for power users: | ||||||
|  |    * x86: iorw (direct access to I/O ports) | ||||||
|  | 
 | ||||||
|  |    Miscelaneous: | ||||||
|  |    * cmos (x86-*, ieee1275, mips-qemu_mips, mips-loongson): cmostest | ||||||
|  |      (used on some laptops to check for special power-on key), cmosclean | ||||||
|  |    * i386-pc: play | ||||||
|  | 
 | ||||||
							
								
								
									
										152
									
								
								boot/grub/persistent/docs/21_supported_boot_targets
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								boot/grub/persistent/docs/21_supported_boot_targets
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,152 @@ | ||||||
|  | 21 Supported boot targets | ||||||
|  | ************************* | ||||||
|  | 
 | ||||||
|  | X86 support is summarised in the following table.  "Yes" means that the | ||||||
|  | kernel works on the given platform, "crashes" means an early kernel | ||||||
|  | crash which we hope will be fixed by concerned kernel developers.  "no" | ||||||
|  | means GRUB doesn't load the given kernel on a given platform. | ||||||
|  | "headless" means that the kernel works but lacks console drivers (you | ||||||
|  | can still use serial or network console).  In case of "no" and "crashes" | ||||||
|  | the reason is given in footnote. | ||||||
|  |                                      BIOS             Coreboot | ||||||
|  | BIOS chainloading                    yes              no (1) | ||||||
|  | NTLDR                                yes              no (1) | ||||||
|  | Plan9                                yes              no (1) | ||||||
|  | Freedos                              yes              no (1) | ||||||
|  | FreeBSD bootloader                   yes              crashes (1) | ||||||
|  | 32-bit kFreeBSD                      yes              crashes (5) | ||||||
|  | 64-bit kFreeBSD                      yes              crashes (5) | ||||||
|  | 32-bit kNetBSD                       yes              crashes (1) | ||||||
|  | 64-bit kNetBSD                       yes              crashes | ||||||
|  | 32-bit kOpenBSD                      yes              yes | ||||||
|  | 64-bit kOpenBSD                      yes              yes | ||||||
|  | Multiboot                            yes              yes | ||||||
|  | Multiboot2                           yes              yes | ||||||
|  | 32-bit Linux (legacy protocol)       yes              no (1) | ||||||
|  | 64-bit Linux (legacy protocol)       yes              no (1) | ||||||
|  | 32-bit Linux (modern protocol)       yes              yes | ||||||
|  | 64-bit Linux (modern protocol)       yes              yes | ||||||
|  | 32-bit XNU                           yes              ? | ||||||
|  | 64-bit XNU                           yes              ? | ||||||
|  | 32-bit EFI chainloader               no (2)           no (2) | ||||||
|  | 64-bit EFI chainloader               no (2)           no (2) | ||||||
|  | Appleloader                          no (2)           no (2) | ||||||
|  | 
 | ||||||
|  |                                      Multiboot        Qemu | ||||||
|  | BIOS chainloading                    no (1)           no (1) | ||||||
|  | NTLDR                                no (1)           no (1) | ||||||
|  | Plan9                                no (1)           no (1) | ||||||
|  | FreeDOS                              no (1)           no (1) | ||||||
|  | FreeBSD bootloader                   crashes (1)      crashes (1) | ||||||
|  | 32-bit kFreeBSD                      crashes (5)      crashes (5) | ||||||
|  | 64-bit kFreeBSD                      crashes (5)      crashes (5) | ||||||
|  | 32-bit kNetBSD                       crashes (1)      crashes (1) | ||||||
|  | 64-bit kNetBSD                       yes              yes | ||||||
|  | 32-bit kOpenBSD                      yes              yes | ||||||
|  | 64-bit kOpenBSD                      yes              yes | ||||||
|  | Multiboot                            yes              yes | ||||||
|  | Multiboot2                           yes              yes | ||||||
|  | 32-bit Linux (legacy protocol)       no (1)           no (1) | ||||||
|  | 64-bit Linux (legacy protocol)       no (1)           no (1) | ||||||
|  | 32-bit Linux (modern protocol)       yes              yes | ||||||
|  | 64-bit Linux (modern protocol)       yes              yes | ||||||
|  | 32-bit XNU                           ?                ? | ||||||
|  | 64-bit XNU                           ?                ? | ||||||
|  | 32-bit EFI chainloader               no (2)           no (2) | ||||||
|  | 64-bit EFI chainloader               no (2)           no (2) | ||||||
|  | Appleloader                          no (2)           no (2) | ||||||
|  | 
 | ||||||
|  |                                      ia32 EFI         amd64 EFI | ||||||
|  | BIOS chainloading                    no (1)           no (1) | ||||||
|  | NTLDR                                no (1)           no (1) | ||||||
|  | Plan9                                no (1)           no (1) | ||||||
|  | FreeDOS                              no (1)           no (1) | ||||||
|  | FreeBSD bootloader                   crashes (1)      crashes (1) | ||||||
|  | 32-bit kFreeBSD                      headless         headless | ||||||
|  | 64-bit kFreeBSD                      headless         headless | ||||||
|  | 32-bit kNetBSD                       crashes (1)      crashes (1) | ||||||
|  | 64-bit kNetBSD                       yes              yes | ||||||
|  | 32-bit kOpenBSD                      headless         headless | ||||||
|  | 64-bit kOpenBSD                      headless         headless | ||||||
|  | Multiboot                            yes              yes | ||||||
|  | Multiboot2                           yes              yes | ||||||
|  | 32-bit Linux (legacy protocol)       no (1)           no (1) | ||||||
|  | 64-bit Linux (legacy protocol)       no (1)           no (1) | ||||||
|  | 32-bit Linux (modern protocol)       yes              yes | ||||||
|  | 64-bit Linux (modern protocol)       yes              yes | ||||||
|  | 32-bit XNU                           yes              yes | ||||||
|  | 64-bit XNU                           yes (4)          yes | ||||||
|  | 32-bit EFI chainloader               yes              no (3) | ||||||
|  | 64-bit EFI chainloader               no (3)           yes | ||||||
|  | Appleloader                          yes              yes | ||||||
|  | 
 | ||||||
|  |                                      ia32 IEEE1275 | ||||||
|  | BIOS chainloading                    no (1) | ||||||
|  | NTLDR                                no (1) | ||||||
|  | Plan9                                no (1) | ||||||
|  | FreeDOS                              no (1) | ||||||
|  | FreeBSD bootloader                   crashes (1) | ||||||
|  | 32-bit kFreeBSD                      crashes (5) | ||||||
|  | 64-bit kFreeBSD                      crashes (5) | ||||||
|  | 32-bit kNetBSD                       crashes (1) | ||||||
|  | 64-bit kNetBSD                       ? | ||||||
|  | 32-bit kOpenBSD                      ? | ||||||
|  | 64-bit kOpenBSD                      ? | ||||||
|  | Multiboot                            ? | ||||||
|  | Multiboot2                           ? | ||||||
|  | 32-bit Linux (legacy protocol)       no (1) | ||||||
|  | 64-bit Linux (legacy protocol)       no (1) | ||||||
|  | 32-bit Linux (modern protocol)       ? | ||||||
|  | 64-bit Linux (modern protocol)       ? | ||||||
|  | 32-bit XNU                           ? | ||||||
|  | 64-bit XNU                           ? | ||||||
|  | 32-bit EFI chainloader               no (2) | ||||||
|  | 64-bit EFI chainloader               no (2) | ||||||
|  | Appleloader                          no (2) | ||||||
|  | 
 | ||||||
|  |   1. Requires BIOS | ||||||
|  |   2. EFI only | ||||||
|  |   3. 32-bit and 64-bit EFI have different structures and work in | ||||||
|  |      different CPU modes so it's not possible to chainload 32-bit | ||||||
|  |      bootloader on 64-bit platform and vice-versa | ||||||
|  |   4. Some modules may need to be disabled | ||||||
|  |   5. Requires ACPI | ||||||
|  | 
 | ||||||
|  |    PowerPC, IA64 and Sparc64 ports support only Linux.  MIPS port | ||||||
|  | supports Linux and multiboot2. | ||||||
|  | 
 | ||||||
|  | 21.1 Boot tests | ||||||
|  | =============== | ||||||
|  | 
 | ||||||
|  | As you have seen in previous chapter the support matrix is pretty big | ||||||
|  | and some of the configurations are only rarely used.  To ensure the | ||||||
|  | quality bootchecks are available for all x86 targets except EFI | ||||||
|  | chainloader, Appleloader and XNU. All x86 platforms have bootcheck | ||||||
|  | facility except ieee1275.  Multiboot, multiboot2, BIOS chainloader, | ||||||
|  | ntldr and freebsd-bootloader boot targets are tested only with a fake | ||||||
|  | kernel images.  Only Linux is tested among the payloads using Linux | ||||||
|  | protocols. | ||||||
|  | 
 | ||||||
|  |    Following variables must be defined: | ||||||
|  | 
 | ||||||
|  | GRUB_PAYLOADS_DIR      directory containing the required kernels | ||||||
|  | GRUB_CBFSTOOL          cbfstool from Coreboot package (for coreboot | ||||||
|  |                        platform only) | ||||||
|  | GRUB_COREBOOT_ROM      empty Coreboot ROM | ||||||
|  | GRUB_QEMU_OPTS         additional options to be supplied to QEMU | ||||||
|  | 
 | ||||||
|  |    Required files are: | ||||||
|  | 
 | ||||||
|  | kfreebsd_env.i386             32-bit kFreeBSD device hints | ||||||
|  | kfreebsd.i386                 32-bit FreeBSD kernel image | ||||||
|  | kfreebsd.x86_64,              same from 64-bit kFreeBSD | ||||||
|  | kfreebsd_env.x86_64 | ||||||
|  | knetbsd.i386                  32-bit NetBSD kernel image | ||||||
|  | knetbsd.miniroot.i386         32-bit kNetBSD miniroot.kmod. | ||||||
|  | knetbsd.x86_64,               same from 64-bit kNetBSD | ||||||
|  | knetbsd.miniroot.x86_64 | ||||||
|  | kopenbsd.i386                 32-bit OpenBSD kernel bsd.rd image | ||||||
|  | kopenbsd.x86_64               same from 64-bit kOpenBSD | ||||||
|  | linux.i386                    32-bit Linux | ||||||
|  | linux.x86_64                  64-bit Linux | ||||||
|  | 
 | ||||||
							
								
								
									
										71
									
								
								boot/grub/persistent/docs/22_error_messages
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								boot/grub/persistent/docs/22_error_messages
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | ||||||
|  | 22 Error messages produced by GRUB | ||||||
|  | ********************************** | ||||||
|  | 
 | ||||||
|  | 22.1 GRUB only offers a rescue shell | ||||||
|  | ==================================== | ||||||
|  | 
 | ||||||
|  | GRUB's normal start-up procedure involves setting the 'prefix' | ||||||
|  | environment variable to a value set in the core image by 'grub-install', | ||||||
|  | setting the 'root' variable to match, loading the 'normal' module from | ||||||
|  | the prefix, and running the 'normal' command (*note normal::).  This | ||||||
|  | command is responsible for reading '/boot/grub/grub.cfg', running the | ||||||
|  | menu, and doing all the useful things GRUB is supposed to do. | ||||||
|  | 
 | ||||||
|  |    If, instead, you only get a rescue shell, this usually means that | ||||||
|  | GRUB failed to load the 'normal' module for some reason.  It may be | ||||||
|  | possible to work around this temporarily: for instance, if the reason | ||||||
|  | for the failure is that 'prefix' is wrong (perhaps it refers to the | ||||||
|  | wrong device, or perhaps the path to '/boot/grub' was not correctly made | ||||||
|  | relative to the device), then you can correct this and enter normal mode | ||||||
|  | manually: | ||||||
|  | 
 | ||||||
|  |      # Inspect the current prefix (and other preset variables): | ||||||
|  |      set | ||||||
|  |      # Find out which devices are available: | ||||||
|  |      ls | ||||||
|  |      # Set to the correct value, which might be something like this: | ||||||
|  |      set prefix=(hd0,1)/grub | ||||||
|  |      set root=(hd0,1) | ||||||
|  |      insmod normal | ||||||
|  |      normal | ||||||
|  | 
 | ||||||
|  |    However, any problem that leaves you in the rescue shell probably | ||||||
|  | means that GRUB was not correctly installed.  It may be more useful to | ||||||
|  | try to reinstall it properly using 'grub-install DEVICE' (*note Invoking | ||||||
|  | grub-install::).  When doing this, there are a few things to remember: | ||||||
|  | 
 | ||||||
|  |    * Drive ordering in your operating system may not be the same as the | ||||||
|  |      boot drive ordering used by your firmware.  Do not assume that your | ||||||
|  |      first hard drive (e.g.  '/dev/sda') is the one that your firmware | ||||||
|  |      will boot from.  'device.map' (*note Device map::) can be used to | ||||||
|  |      override this, but it is usually better to use UUIDs or file system | ||||||
|  |      labels and avoid depending on drive ordering entirely. | ||||||
|  | 
 | ||||||
|  |    * At least on BIOS systems, if you tell 'grub-install' to install | ||||||
|  |      GRUB to a partition but GRUB has already been installed in the | ||||||
|  |      master boot record, then the GRUB installation in the partition | ||||||
|  |      will be ignored. | ||||||
|  | 
 | ||||||
|  |    * If possible, it is generally best to avoid installing GRUB to a | ||||||
|  |      partition (unless it is a special partition for the use of GRUB | ||||||
|  |      alone, such as the BIOS Boot Partition used on GPT). Doing this | ||||||
|  |      means that GRUB may stop being able to read its core image due to a | ||||||
|  |      file system moving blocks around, such as while defragmenting, | ||||||
|  |      running checks, or even during normal operation.  Installing to the | ||||||
|  |      whole disk device is normally more robust. | ||||||
|  | 
 | ||||||
|  |    * Check that GRUB actually knows how to read from the device and file | ||||||
|  |      system containing '/boot/grub'.  It will not be able to read from | ||||||
|  |      encrypted devices with unsupported encryption scheme, nor from file | ||||||
|  |      systems for which support has not yet been added to GRUB. | ||||||
|  | 
 | ||||||
|  | 22.2 Firmware stalls instead of booting GRUB | ||||||
|  | ============================================ | ||||||
|  | 
 | ||||||
|  | The EFI implementation of some older MacBook laptops stalls when it gets | ||||||
|  | presented a grub-mkrescue ISO image for x86_64-efi target on an USB | ||||||
|  | stick.  Affected are models of year 2010 or earlier.  Workaround is to | ||||||
|  | zeroize the bytes 446 to 461 of the EFI partition, where mformat has put | ||||||
|  | a partition table entry which claims partition start at block 0.  This | ||||||
|  | change will not hamper bootability on other machines. | ||||||
|  | 
 | ||||||
							
								
								
									
										120
									
								
								boot/grub/persistent/docs/show-docs.cfg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								boot/grub/persistent/docs/show-docs.cfg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,120 @@ | ||||||
|  | menuentry "License" --class docs { | ||||||
|  | 	cat "${docs}/000_license" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Index" --class docs { | ||||||
|  | 	cat "${docs}/00_index" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Introduction" --class docs { | ||||||
|  | 	cat "${docs}/01_introduction" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Naming Convention" --class docs { | ||||||
|  | 	cat "${docs}/02_naming_convention" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "OS Specific Notes" --class docs { | ||||||
|  | 	cat "${docs}/03_os_specific_notes" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Installation" --class docs { | ||||||
|  | 	cat "${docs}/04_installation" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Booting" --class docs { | ||||||
|  | 	cat "${docs}/05_booting" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Your own Configuration File" --class docs { | ||||||
|  | 	cat "${docs}/06_your_own_configuration_file" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Themes" --class docs { | ||||||
|  | 	cat "${docs}/07_themes" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Network Booting" --class docs { | ||||||
|  | 	cat "${docs}/08_network_booting" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Serial Line" --class docs { | ||||||
|  | 	cat "${docs}/09_serial_line" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Vendor Power-on Keys" --class docs { | ||||||
|  | 	cat "${docs}/10_vendor_poweron_keys" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Grub Image Files" --class docs { | ||||||
|  | 	cat "${docs}/11_grub_image_files" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Core Image Size Limitation" --class docs { | ||||||
|  | 	cat "${docs}/12_core_image_size_limitation" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Filesystem Syntax" --class docs { | ||||||
|  | 	cat "${docs}/13_filesystem_syntax" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "User Interface" --class docs { | ||||||
|  | 	cat "${docs}/14_user_interface" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Environment Variables.txt" --class docs { | ||||||
|  | 	cat "${docs}/15_environment_variables.txt" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Available Commands.txt" --class docs { | ||||||
|  | 	cat "${docs}/16_available_commands.txt" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Internationalisation" --class docs { | ||||||
|  | 	cat "${docs}/17_internationalisation" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Security" --class docs { | ||||||
|  | 	cat "${docs}/18_security" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Platform Limitations" --class docs { | ||||||
|  | 	cat "${docs}/19_platform_limitations" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Outline" --class docs { | ||||||
|  | 	cat "${docs}/20_outline" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Supported Boot Targets" --class docs { | ||||||
|  | 	cat "${docs}/21_supported_boot_targets" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | menuentry "Error Messages" --class docs { | ||||||
|  | 	cat "${docs}/22_error_messages" | ||||||
|  | 	configfile "${docs}/show-docs.cfg" | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										
											BIN
										
									
								
								boot/grub/persistent/memtest86/memtest86+-5.31b.bin
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								boot/grub/persistent/memtest86/memtest86+-5.31b.bin
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								boot/grub/persistent/netboot/netboot.xyz.efi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								boot/grub/persistent/netboot/netboot.xyz.efi
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								boot/grub/persistent/netboot/netboot.xyz.lkrn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								boot/grub/persistent/netboot/netboot.xyz.lkrn
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -1,4 +1,8 @@ | ||||||
| 
 | 
 | ||||||
| set theme="${prefix}/themes/stylish_dark/theme.txt" | set theme_name="Cyberpunk" | ||||||
| set icondir="${prefix}/themes/icons" | insmod jpeg | ||||||
| export theme icondir | insmod png | ||||||
|  | 
 | ||||||
|  | set theme="${prefix}/themes/${theme_name}/theme.txt" | ||||||
|  | set icondir="${prefix}/themes/${theme_name}/icons" | ||||||
|  | export theme icondir theme_name | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								boot/isos.cfg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								boot/isos.cfg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | # Load ISO configuration files | ||||||
|  | 
 | ||||||
|  | set isopath="/boot/isos" | ||||||
|  | export isopath | ||||||
|  | 
 | ||||||
|  | set isoconfdir="${isoconfig}.d" | ||||||
|  | export isoconfdir | ||||||
|  | 
 | ||||||
|  | if [ -d "${isoconfdir}" ]; then | ||||||
|  | 	echo "${isoconfdir} is a directory" | ||||||
|  | 	for conf in isoconfdir/*.cfg; do | ||||||
|  | 		echo "Sourcing $conf" | ||||||
|  | 		source "$conf" | ||||||
|  | 	done | ||||||
|  | else | ||||||
|  | 	echo "Cannot read ${isoconfdir}" | ||||||
|  | fi | ||||||
							
								
								
									
										2
									
								
								boot/isos/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								boot/isos/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | # This is merely as a keeper for this directory | ||||||
|  | * | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue