quick-docs/en-US/bootloading-with-grub2.html

1281 lines
60 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.6.1">
<meta name="author" content="[[bootloading-with-grub2]]">
<title>Bootloading with GRUB2</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
/* Remove comment around @import statement below when using as a custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
audio,canvas,video{display:inline-block}
audio:not([controls]){display:none;height:0}
[hidden],template{display:none}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
a{background:transparent}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.center{margin-left:auto;margin-right:auto}
.spread{width:100%}
p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:none}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite:before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
table thead,table tfoot{background:#f7f8f7;font-weight:bold}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
.clearfix:after,.float-group:after{clear:both}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
*:not(pre)>code.nobreak{word-wrap:normal}
*:not(pre)>code.nowrap{white-space:nowrap}
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
b.button:before{content:"[";padding:0 3px 0 2px}
b.button:after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
#content{margin-top:1.25em}
#content:before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span:before{content:"\00a0\2013\00a0"}
#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark:before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber:after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
.sect1{padding-bottom:.625em}
@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
.sect1+.sect1{border-top:1px solid #efefed}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:initial}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.listingblock>.content{position:relative}
.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
.listingblock:hover code[data-lang]:before{display:block}
.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
table.pyhltable td.code{padding-left:.75em;padding-right:0}
pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
pre.pygments .lineno{display:inline-block;margin-right:.25em}
table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
.quoteblock .quoteblock blockquote:before{display:none}
.verseblock{margin:0 1em 1.25em 1em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
table.tableblock{max-width:100%;border-collapse:separate}
table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0}
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0}
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot{border-width:1px 0}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
td>div.verse{white-space:pre}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
ul.inline>li>*{display:block}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top}
.colist>table tr>td:first-of-type img{max-width:initial}
.colist>table tr>td:last-of-type{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background-color:#00fafa}
.black{color:#000}
.black-background{background-color:#000}
.blue{color:#0000bf}
.blue-background{background-color:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background-color:#fa00fa}
.gray{color:#606060}
.gray-background{background-color:#7d7d7d}
.green{color:#006000}
.green-background{background-color:#007d00}
.lime{color:#00bf00}
.lime-background{background-color:#00fa00}
.maroon{color:#600000}
.maroon-background{background-color:#7d0000}
.navy{color:#000060}
.navy-background{background-color:#00007d}
.olive{color:#606000}
.olive-background{background-color:#7d7d00}
.purple{color:#600060}
.purple-background{background-color:#7d007d}
.red{color:#bf0000}
.red-background{background-color:#fa0000}
.silver{color:#909090}
.silver-background{background-color:#bcbcbc}
.teal{color:#006060}
.teal-background{background-color:#007d7d}
.white{color:#bfbfbf}
.white-background{background-color:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background-color:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]:after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@media print{@page{margin:1.25cm .75cm}
*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]:after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
.sect1{padding-bottom:0!important}
.sect1+.sect1{border:0!important}
#header>h1:first-child{margin-top:1.25rem}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span:before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]:before{display:block}
#footer{background:none!important;padding:0 .9375em}
#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
</style>
</head>
<body class="article">
<div id="header">
<h1>Bootloading with <strong>GRUB2</strong></h1>
<div class="details">
<span id="author" class="author">[[bootloading-with-grub2]]</span><br>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p><strong>GRUB2</strong> is the latest version of <strong>GNU GRUB</strong>, the <em>GRand Unified Bootloader</em>.
A bootloader is the first software program that runs when a computer
starts. It is responsible for loading and transferring control to the
operating system kernel. In Fedora, the kernel is Linux. The kernel then initializes
the rest of the operating system.</p>
</div>
<div class="paragraph">
<p><strong>GRUB2</strong> is the follower of the previous version <strong>GRUB</strong> (version 0.9x). The original version is available under the name <strong>GRUB Legacy</strong>.</p>
</div>
<div class="paragraph">
<p>Since Fedora 16, <strong>GRUB2</strong> has been the default bootloader on x86 BIOS
systems. For upgrades of BIOS systems, the default is also to install
<strong>GRUB2</strong>, but you can opt to skip bootloader configuration entirely.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installing_grub2_on_a_bios_system">Installing GRUB2 on a BIOS system</h2>
<div class="sectionbody">
<div id="installing-grub-2-on-a-bios-system" class="paragraph">
<p>Normally, <strong>GRUB2</strong> will be installed and set up by the installer, <strong>Anaconda</strong>, during the installation process. You will probably never have to deal with manual installation of <strong>GRUB2</strong>. However, in certain situations , you will want to install <strong>GRUB2</strong> manually, especially if you need to repair the existing <strong>GRUB2</strong> installation or you want to change its configuration.</p>
</div>
<div class="paragraph">
<p>This procedure shows the steps to install <strong>GRUB2</strong> on your <em>Master Boot Record</em> (MBR) of your primary hard disk.</p>
</div>
<div class="paragraph">
<p>Before you start:</p>
</div>
<div class="ulist">
<div class="title">Before you start</div>
<ul>
<li>
<p>Make sure you have the the <strong>GRUB2</strong> packages and the <code>os-prober</code> package installed in your system:</p>
<div class="listingblock">
<div class="content">
<pre>$ dnf list installed | grep grub</pre>
</div>
</div>
</li>
<li>
<p>To automatically collect information about your disks and operating systems installed on them, the <code>os-prober</code> package needs to be installed on your system.</p>
</li>
</ul>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Create a configuration file for <strong>GRUB2</strong>.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg</pre>
</div>
</div>
</li>
<li>
<p>List block devices available on the system.</p>
<div class="listingblock">
<div class="content">
<pre>$ lsblk</pre>
</div>
</div>
</li>
<li>
<p>Identify the primary hard disk. Usually, it is the <code>sda</code> device.</p>
</li>
<li>
<p>Install <strong>GRUB2</strong> in the MBR of the primary hard disk.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-install /dev/sda</pre>
</div>
</div>
</li>
<li>
<p>Reboot your computer to boot with the newly installed bootloader.</p>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">More information</div>
<ul>
<li>
<p>The <code>grub2-mkconfig</code> command creates a new configuration based on the currently
running system. It collects information from the <code>/boot</code> partition (or directory), from the <code>/etc/default/grub</code> file, and the customizable scripts in <code>/etc/grub.d/</code>.</p>
</li>
<li>
<p>The configuration format is changing with time, and a new configuration
file can become slightly incompatible with the older versions of the bootloader. Always run <code>grub2-install</code> before you create the configuration file with <code>grub2-mkconfig</code>.</p>
</li>
<li>
<p>In Fedora, it is generally safe to edit <code>/boot/grub2/grub.cfg</code> manually. <strong>Grubby</strong> in Fedora patches the configuration when a kernel update is performed and will try to not make any other changes than what is necessary. Manual changes can be overwritten with <code>grub2-mkconfig</code> when the system gets upgraded with
<strong>Anaconda</strong>. Customizations placed in <code>/etc/grub.d/40_custom</code> or
<code>/boot/grub2/custom.cfg</code> files will survive running the <code>grub2-mkconfig</code> command.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installing_grub2_on_a_uefi_system">Installing GRUB2 on a UEFI system</h2>
<div class="sectionbody">
<div id="installing-grub-2-configuration-on-uefi-system" class="paragraph">
<p>Normally, <strong>GRUB2</strong> will be installed and set up by the installer, <strong>Anaconda</strong>, during the installation process. You will probably never have to deal with manual installation of <strong>GRUB2</strong>. However, in certain situations , you will want to install <strong>GRUB2</strong> manually, especially if you need to repair the existing <strong>GRUB2</strong> installation or you want to change its configuration.</p>
</div>
<div class="paragraph">
<p>This procedure shows the steps to install <strong>GRUB2</strong> on a UEFI system on Fedora 18 or newer. The procedure consists of four parts.</p>
</div>
<div class="sect2">
<h3 id="_creating_an_efi_system_partition">Creating an EFI System Partition</h3>
<div id="create-an-esp" class="paragraph">
<p>The UEFI firmware requires to boot from an <em>EFI System Partition</em> on
a disk with a GPT label. To create such a partition:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>List available block devices to find a place to create your ESP.</p>
<div class="listingblock">
<div class="content">
<pre>$ lsblk</pre>
</div>
</div>
</li>
<li>
<p>Create at least a 128 MiB disk partition using a GPT label on the primary hard disk.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo gdisk /dev/sda</pre>
</div>
</div>
<div class="paragraph">
<p>For the sake of this procedure, we assume that the created partition is recognized as <code>/dev/sda1</code>.</p>
</div>
</li>
<li>
<p>Format the partition with the <em>FAT32</em> file system.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mkfs.vfat /dev/sda1</pre>
</div>
</div>
</li>
<li>
<p>Create the <code>/boot/efi</code> directory as a mount point for the new partition.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mkdir /boot/efi</pre>
</div>
</div>
</li>
<li>
<p>Mount the partition to the <code>/boot/efi</code> mount point.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mount /dev/sda1 /boot/efi</pre>
</div>
</div>
</li>
<li>
<p>Proceed to the next part.</p>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_install_the_bootloader_files">Install the bootloader files</h3>
<div id="install-the-bootloader-files" class="paragraph">
<p>In order to use <strong>GRUB2</strong> with on the UEFI systems, you need to install or re-install appropriate packages:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Re-install the necessary packages.</p>
<div class="listingblock">
<div class="content">
<pre>dnf reinstall grub2-efi grub2-efi-modules shim</pre>
</div>
</div>
</li>
<li>
<p>If the above command ends with an error, install the packages.</p>
<div class="listingblock">
<div class="content">
<pre>dnf install grub2-efi grub2-efi-modules shim</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">More information</div>
<ul>
<li>
<p>This installs the signed <strong>shim</strong> and the <strong>GRUB2</strong> binary.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_create_a_grub2_configuration">Create a GRUB2 configuration</h3>
<div id="create-a-grub-2-configuration" class="paragraph">
<p>If you already have a working <strong>GRUB2</strong> EFI configuration file, you do not need to do anything else.</p>
</div>
<div class="paragraph">
<p>Otherwise, create the configuration file using the <code>grub2-mkconfig</code> command.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg</pre>
</div>
</div>
<div class="ulist">
<div class="title">More information</div>
<ul>
<li>
<p>Under EFI, <strong>GRUB2</strong> looks for its configuration in
<code>/boot/efi/EFI/fedora/grub.cfg</code>.</p>
</li>
<li>
<p>For newly installed kernels to work,
<code>grubby</code> expects <code>/etc/grub2-efi.cfg</code> to be a symlink to the real
grub.cfg (for example <code>/boot/efi/EFI/fedora/grub.cfg</code>).</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_solving_problems_with_uefi_bootloader">Solving problems with UEFI bootloader</h3>
<div id="solving-problems-with-uefi-bootloader" class="paragraph">
<p>When you power on your system, your firmware will look for EFI variables that tell it how to boot. On running systems, which have booted into the EFI mode and their EFI runtime services are working correctly, you can configure your boot menu with <code>efibootmgr</code>.</p>
</div>
<div class="paragraph">
<p>If not, <code>shim</code> can help you bootstrap. The EFI program
<code>/boot/efi/EFI/BOOT/fallback.efi</code> will look for files called <code>BOOT.CSV</code>
in your ESP and will add boot entries corresponding to them. The <code>shim</code> command
provides its own <code>BOOT.CSV</code> file that will add an entry for <code>grub2-efi</code>.</p>
</div>
<div class="paragraph">
<p>During the boot process, you can use the <strong>EFI Shell</strong> to invoke the <code>fallback.efi</code> profile to boot the system:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Enter the boot partition.</p>
<div class="listingblock">
<div class="content">
<pre>&gt; fs0:</pre>
</div>
</div>
</li>
<li>
<p>Navigate into the <code>EFI\BOOT</code> directory.</p>
<div class="listingblock">
<div class="content">
<pre>&gt; cd EFI\BOOT</pre>
</div>
</div>
</li>
<li>
<p>Invoke the <code>fallback.efi</code> profile.</p>
<div class="listingblock">
<div class="content">
<pre>&gt; fallback.efi</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">More information</div>
<ul>
<li>
<p>If you have no boot entries at all, then just booting off your disk in
UEFI mode should automatically invoke <code>/boot/efi/EFI/BOOT/BOOTX64.EFI</code>,
which will, in turn, invoke <code>fallback.efi</code>.</p>
</li>
<li>
<p>If you already have incorrect boot entries, you&#8217;ll either need to delete
them or to modify <code>BOOT.CSV</code> to create new entries with different names.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_adding_other_operating_systems_to_the_strong_grub2_strong_menu">Adding other operating systems to the <strong>GRUB2</strong> menu</h2>
<div class="sectionbody">
<div id="adding-other-operating-systems-grub2" class="paragraph">
<p>Normally, <strong>GRUB2</strong> is preset to boot multiple operating systems during the Fedora installation process. If you can, it is advisable to install non-Linux operating systems first. Then, during the installation process, all those operating systems and their locations will be discovered and properly set.</p>
</div>
<div class="paragraph">
<p>Adding other records into the <strong>GRUB2</strong> menu only means to run <code>grub2-mkconfig</code> command to regenerate the configuration files. During this process, all operating systems known to the system will be added into the configuration. By reinstalling <strong>GRUB2</strong> into the MBR, this configuration will be used for further boots.</p>
</div>
<div class="ulist">
<div class="title">Before you start</div>
<ul>
<li>
<p>Make sure that the operating systems are on disks, connected to the system.</p>
</li>
<li>
<p>You have the <code>os-prober</code> package installed.</p>
</li>
</ul>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Recreate the <strong>GRUB2</strong> configuration file.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg</pre>
</div>
</div>
</li>
<li>
<p>Install <strong>GRUB2</strong> into the MBR of your primary hard disk.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-install /dev/sda</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">More information</div>
<ul>
<li>
<p>The <code>grub2-mkconfig</code> command will add entries for all operating systems it can find.</p>
</li>
<li>
<p>When problems appear, see the <a href="http://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config">GRUB manual</a> to solve issues with booting secondary operating systems.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_setting_default_entry_for_strong_grub2_strong">Setting default entry for <strong>GRUB2</strong></h2>
<div class="sectionbody">
<div id="setting-default-entry" class="paragraph">
<p>Since <code>grub2-mkconfig</code> (and <strong>os-prober</strong>) cannot estimate which operating system, of those it finds, is to be marked as default, we usually are unable to predict the order of
the entries in <code>/boot/grub2/grub.cfg</code>. To change the default layout, we need to set the default based on the <code>name</code> or <code>title</code>.</p>
</div>
<div class="olist arabic">
<div class="title">Before you start</div>
<ol class="arabic">
<li>
<p>Open <code>/etc/default/grub</code> and make sure these lines exist in the file.</p>
<div class="listingblock">
<div class="content">
<pre>GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=false</pre>
</div>
</div>
</li>
<li>
<p>If you needed to change the content of the <code>/etc/default/grub</code>, apply the changes to <code>grub.cfg</code>.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>List all possible menu entries.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grep -P "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2</pre>
</div>
</div>
</li>
<li>
<p>Select one of the displayed options and use it as an argument to set the default menu entry.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-set-default &lt;menuentry&gt;</pre>
</div>
</div>
</li>
<li>
<p>Verify the default menu entry</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo grub2-editenv list</pre>
</div>
</div>
</li>
<li>
<p>Regenerate the <strong>GRUB2</strong> configuration file and reinstall the bootloader into the MBR, as described in <a href="#adding-other-operating-systems-grub2">Adding other operating systems to the <strong>GRUB2</strong> menu</a>.</p>
</li>
</ol>
</div>
<div class="paragraph">
<div class="title">More information</div>
<p>If you understand the risks involved, you can manually modify the
<code>/boot/grub2/grub.cfg</code> file. In that case, set the number of the default operating system using the <code>set default</code> variable.</p>
</div>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>set default="5"</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<div class="paragraph">
<p>If you edit the configuration file manually, the settings will be overwritten each time the <code>grub2-mkconfig</code> command runs.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_restoring_the_bootloader_using_the_live_disk">Restoring the bootloader using the Live disk.</h2>
<div class="sectionbody">
<div id="restoring-bootloader-using-live-disk" class="paragraph">
<p>Sometimes, especially after a secondary operating systems has been installed, the master boot record gets damaged which then prevents the original Linux system from booting.</p>
</div>
<div class="paragraph">
<p>If this happens, it is necessary to reinstall <strong>GRUB2</strong> to recreate the original settings. The process not only discovers all installed operating systems, but usually adds them to the <strong>GRUB2</strong> configuration files, so they will all become bootable by <strong>GRUB2</strong>.</p>
</div>
<div class="ulist">
<div class="title">Before you start</div>
<ul>
<li>
<p>Get the Fedora Live ISO from <a href="https://download.fedoraproject.org/pub/fedora/linux/releases/27/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-27-1.6.iso">getfedora.org</a>.</p>
</li>
<li>
<p>Prepare a bootable device using the downloaded ISO, either a CD or a USB.</p>
</li>
</ul>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Boot the Fedora live system from the bootable device you have created.</p>
</li>
<li>
<p>Open the terminal.</p>
</li>
<li>
<p>Examine the partition layout and identify the <code>boot</code> and the <code>root</code> partition.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo fdisk -l</pre>
</div>
</div>
<div class="paragraph">
<p>If you are using the default Fedora layout, there will be one <code>/dev/sda1</code> partition that holds the <code>/boot</code> directory and one <code>/dev/mapper/fedora-root</code> that holds the root file system.</p>
</div>
</li>
<li>
<p>Create the mount point for the root partition.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mkdir -p /mnt/root</pre>
</div>
</div>
</li>
<li>
<p>Mount the root partition on the mount point.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mount /dev/mapper/fedora-root /mnt/root</pre>
</div>
</div>
</li>
<li>
<p>Mount the boot partition in the <code>boot</code> directory of the filesystem that you have mounted in the previous step.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mount /dev/sda1 /mnt/root/boot/</pre>
</div>
</div>
</li>
<li>
<p>Mount system processes and devices into the root filesystem in <code>/mnt/root</code>.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo mount -o bind /dev /mnt/root/dev
$ sudo mount -o bind /proc /mnt/root/proc
$ sudo mount -o bind /sys /mnt/root/sys
$ sudo mount -o bind /run /mnt/root/run</pre>
</div>
</div>
</li>
<li>
<p>Change your filesystem into the one mounted under <code>/mnt/root</code>.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo chroot /mnt/root</pre>
</div>
</div>
</li>
<li>
<p>Regenerate the <strong>GRUB2</strong> configuration file and reinstall the bootloader into the MBR, as described in <a href="#adding-other-operating-systems-grub2">Adding other operating systems to the <strong>GRUB2</strong> menu</a>.</p>
</li>
<li>
<p>Exit this temporary root filesystem.</p>
<div class="listingblock">
<div class="content">
<pre>$ exit</pre>
</div>
</div>
</li>
<li>
<p>Your bootloader should be now restored. Reboot your computer to boot into your normal system.</p>
<div class="listingblock">
<div class="content">
<pre>$ sudo systemctl reboot</pre>
</div>
</div>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_using_the_grub2_boot_prompt">Using the GRUB2 boot prompt</h2>
<div class="sectionbody">
<div id="using-the-grub-2-boot-prompt" class="paragraph">
<p>If improperly configured, <strong>GRUB2</strong> may fail to load and subsequently drop
to a boot prompt. To boot into the system, proceed as follows:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Load the XFS and LVM modules</p>
<div class="listingblock">
<div class="content">
<pre>insmod xfs
insmod lvm</pre>
</div>
</div>
</li>
<li>
<p>List the drives which <strong>GRUB2</strong> sees:</p>
<div class="listingblock">
<div class="content">
<pre>grub2&gt; ls</pre>
</div>
</div>
</li>
<li>
2017-12-14 10:38:29 +00:00
<p>Examine the output to understand the partition table of the <code>/dev/sda</code> device. The following example shows a DOS partition table with three partitions:</p>
<div class="listingblock">
<div class="content">
<pre>(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)</pre>
</div>
</div>
<div class="paragraph">
2017-12-14 10:38:29 +00:00
<p>A GPT partition table of the <code>/dev/sda</code> device with four partitions could look like this:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>(hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)</pre>
</div>
</div>
</li>
<li>
<p>Probe each partition of the drive and locate your <code>vmlinuz</code> and <code>initramfs</code> files.</p>
<div class="listingblock">
<div class="content">
<pre>ls (hd0,1)/</pre>
</div>
</div>
<div class="paragraph">
2017-12-14 10:38:29 +00:00
<p>The outcome of the previous command will list the files on <code>/dev/sda1</code>. The partition that contains the <code>/boot</code> directory is the correct one. There you will search for the full names of the <code>vmlinuz</code> and <code>initramfs</code> files.</p>
</div>
</li>
<li>
<p>Set the root partition.</p>
<div class="listingblock">
<div class="content">
<pre>grub&gt; set root=(hd0,3)</pre>
</div>
</div>
2017-12-14 10:38:29 +00:00
<div class="paragraph">
<p>This command tells the bootloader, that the root partition is the third partition on the first drive. This would correspond to the <code>/dev/sda3</code> device.</p>
</div>
</li>
<li>
<p>Set the desired kernel.</p>
<div class="listingblock">
<div class="content">
<pre>grub&gt; linux (hd0,1)/vmlinuz-3.0.0-1.fc16.i686 root=/dev/sda3 rhgb quiet selinux=0
# NOTE : add other kernel args if you need them
# NOTE : change the numbers to match your system</pre>
</div>
</div>
</li>
<li>
<p>Set the desired <code>initrd</code>.</p>
<div class="listingblock">
<div class="content">
<pre>grub&gt; initrd (hd0,1)/initramfs-3.0.0-1.fc16.i686.img
# NOTE : change the numbers to match your system</pre>
</div>
</div>
</li>
<li>
<p>Boot with the selected settings.</p>
<div class="listingblock">
<div class="content">
<pre>grub&gt; boot</pre>
</div>
</div>
</li>
<li>
<p>To restore the bootloader&#8217;s functionality, regenerate the <strong>GRUB2</strong> configuration file and reinstall the bootloader into the MBR, as described in <a href="#adding-other-operating-systems-grub2">Adding other operating systems to the <strong>GRUB2</strong> menu</a>.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_booting_the_system_using_a_configuration_file_on_a_different_partition">Booting the system using a configuration file on a different partition.</h2>
<div class="sectionbody">
<div id="booting-with-configfile-on-different-partition" class="paragraph">
<p>If you end up in <strong>GRUB2</strong> boot prompt, it is also possible to boot using a <em>configfile</em> that&#8217;s located on another
partition, as is often the case with multi-boot systems containing Ubuntu and Fedora. To boot the system using a configuration files on a different partition:</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Load necessary modules to read the partitions.</p>
<div class="listingblock">
<div class="content">
<pre>insmod part_msdos
insmod xfs
insmod lvm</pre>
</div>
</div>
</li>
<li>
<p>Set the root partition.</p>
<div class="listingblock">
<div class="content">
<pre>set root='hd0,msdos1'</pre>
</div>
</div>
</li>
<li>
<p>Set the path to the configuration file.</p>
<div class="listingblock">
<div class="content">
<pre>configfile /grub2/grub.cfg</pre>
</div>
</div>
</li>
</ol>
</div>
<div class="ulist">
<div class="title">More information</div>
<ul>
<li>
<p>The <strong>hd0,msdos1</strong> line shows the pertinent <em>boot</em> partition, which holds the
<code>grub.cfg</code> file. The setting may be different on your system. See also <a href="#using-grub2-prompt">Using the GRUB2 boot prompt</a> for more information.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_setting_a_password_for_interactive_edit_mode">Setting a password for interactive edit mode</h2>
<div class="sectionbody">
<div id="setting-password-for-interactive-edit-mode" class="paragraph">
<p>If you wish to protect the <strong>GRUB2</strong> interactive edit mode with a password, but allow ordinary users to boot the computer, you have to create a definition file where you set up this functionality:</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Create the <code>/etc/grub.d/01_users</code> file and write the following lines into the file.</p>
<div class="listingblock">
<div class="content">
<pre>set superusers="root"
export superusers
password root &lt;password&gt;</pre>
</div>
</div>
</li>
<li>
<p>Regenerate the <strong>GRUB2</strong> configuration file and reinstall the bootloader into the MBR, as described in <a href="#adding-other-operating-systems-grub2">Adding other operating systems to the <strong>GRUB2</strong> menu</a>.</p>
</li>
</ol>
</div>
<div class="paragraph">
<div class="title">More information</div>
<p>You can encrypt the password by using <strong>pbkdf2</strong>. Use <code>grub2-mkpasswd-pbkdf2</code>
to encrypt the password, then replace the password line with:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>password_pbkdf2 root grub.pbkdf2.sha512.10000.1B4BD9B60DE889A4C50AA9458C4044CBE129C9607B6231783F7E4E7191D8254C0732F4255178E2677BBE27D03186E44815EEFBAD82737D81C87F5D24313DDDE7.E9AEB53A46A16F30735E2558100D8340049A719474AEEE7E3F44C9C5201E2CA82221DCF2A12C39112A701292BF4AA071EB13E5EC8C8C84CC4B1A83304EA10F74</pre>
</div>
</div>
<div class="paragraph">
<p>More details can be found at
<a href="https://help.ubuntu.com/community/Grub2/Passwords">Ubuntu Help: GRUB2
Passwords</a>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<div class="paragraph">
<p>Starting from Fedora 21, the <code>--md5pass</code> kickstart option must be used when using the <code>grub2-mkpasswd-pbkdf2</code> command.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="solving-absent-floppy">Dealing with the "Absent Floppy Disk" Error</h2>
<div class="sectionbody">
<div class="paragraph">
<p>It has been reported by some users that <strong>GRUB2</strong> may fail to install on a partition&#8217;s boot sector if the computer&#8217;s floppy controller is activated in BIOS without an actual floppy disk
drive being present. Such situations resulted in an <em>Absent Floppy Disk</em> error.</p>
</div>
<div class="paragraph">
<p>To workaround this issue, go into the rescue mode and follow the procedure in <a href="#installing-grub-2-on-a-bios-system">Installing GRUB2 on a BIOS system</a> <strong>GRUB2</strong>, but use the <code>--no-floppy</code> option with the <code>grub2-install</code> command.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>grub2-install &lt;target device&gt; --no-floppy</pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_using_old_graphics_modes_in_bootloader">Using old graphics modes in bootloader</h2>
<div class="sectionbody">
<div id="using-old-graphics-modes" class="paragraph">
<p>The terminal device is chosen with GRUB_TERMINAL. For more information, see the <a href="http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration">Grub manual</a>.</p>
</div>
<div class="paragraph">
<p>Valid terminal output names depend on the platform, but may include
<code>console</code> (PC BIOS and EFI consoles), <code>serial</code> (serial terminal),
<code>gfxterm</code> (graphics-mode output), <code>ofconsole</code> (Open Firmware console),
or <code>vga_text</code> (VGA text output, mainly useful with Coreboot).</p>
</div>
<div class="paragraph">
<p>The default is to use the platform&#8217;s native terminal output.</p>
</div>
<div class="paragraph">
<p>In Fedora, <code>gfxterm</code> is the default options. To get the legacy graphics modes:</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Edit the <code>/etc/default/grub</code> file.</p>
</li>
<li>
<p>Set the <code>GRUB_TERMINAL</code> variable to one of the above mentioned options.</p>
</li>
<li>
<p>Regenerate the <strong>GRUB2</strong> configuration file and reinstall the bootloader into the MBR, as described in <a href="#adding-other-operating-systems-grub2">Adding other operating systems to the <strong>GRUB2</strong> menu</a>.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_enabling_serial_console_in_grub2">Enabling Serial Console in GRUB2</h2>
<div class="sectionbody">
<div id="enabling-serial-console-grub" class="paragraph">
<p>To enable Serial console in grub:</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
<p>Edit the <code>/etc/default/grub</code> file.</p>
</li>
<li>
<p>Adjust <code>baudrate</code>, <code>parity</code>, <code>bits</code>, and <code>flow</code> controls to fit your environment and cables, see the example.</p>
<div class="listingblock">
<div class="content">
<pre>GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8'
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"</pre>
</div>
</div>
</li>
<li>
<p>Regenerate the <strong>GRUB2</strong> configuration file and reinstall the bootloader into the MBR, as described in <a href="#adding-other-operating-systems-grub2">Adding other operating systems to the <strong>GRUB2</strong> menu</a>.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="further-reading">Further Reading</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="http://www.gnu.org/software/grub/manual/grub.html" class="bare">http://www.gnu.org/software/grub/manual/grub.html</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>See a typo, something missing or out of date, or anything else which can be
improved? Edit this document at <a href="https://pagure.io/fedora-docs/quick-docs" class="bare">https://pagure.io/fedora-docs/quick-docs</a>.</p>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
2017-12-14 10:38:29 +00:00
Last updated 2017-12-14 09:44:46 CET
</div>
</div>
</body>
</html>