Update grml2usb for v0.16.2 release + updated docs
[grml.org.git] / grml2usb / index.html
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
3     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
5 <head>\r
6 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
7 <meta name="generator" content="AsciiDoc 8.6.10" />\r
8 <title>grml2usb(8)</title>\r
9 <style type="text/css">\r
10 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
11 \r
12 /* Default font. */\r
13 body {\r
14   font-family: Georgia,serif;\r
15 }\r
16 \r
17 /* Title font. */\r
18 h1, h2, h3, h4, h5, h6,\r
19 div.title, caption.title,\r
20 thead, p.table.header,\r
21 #toctitle,\r
22 #author, #revnumber, #revdate, #revremark,\r
23 #footer {\r
24   font-family: Arial,Helvetica,sans-serif;\r
25 }\r
26 \r
27 body {\r
28   margin: 1em 5% 1em 5%;\r
29 }\r
30 \r
31 a {\r
32   color: blue;\r
33   text-decoration: underline;\r
34 }\r
35 a:visited {\r
36   color: fuchsia;\r
37 }\r
38 \r
39 em {\r
40   font-style: italic;\r
41   color: navy;\r
42 }\r
43 \r
44 strong {\r
45   font-weight: bold;\r
46   color: #083194;\r
47 }\r
48 \r
49 h1, h2, h3, h4, h5, h6 {\r
50   color: #527bbd;\r
51   margin-top: 1.2em;\r
52   margin-bottom: 0.5em;\r
53   line-height: 1.3;\r
54 }\r
55 \r
56 h1, h2, h3 {\r
57   border-bottom: 2px solid silver;\r
58 }\r
59 h2 {\r
60   padding-top: 0.5em;\r
61 }\r
62 h3 {\r
63   float: left;\r
64 }\r
65 h3 + * {\r
66   clear: left;\r
67 }\r
68 h5 {\r
69   font-size: 1.0em;\r
70 }\r
71 \r
72 div.sectionbody {\r
73   margin-left: 0;\r
74 }\r
75 \r
76 hr {\r
77   border: 1px solid silver;\r
78 }\r
79 \r
80 p {\r
81   margin-top: 0.5em;\r
82   margin-bottom: 0.5em;\r
83 }\r
84 \r
85 ul, ol, li > p {\r
86   margin-top: 0;\r
87 }\r
88 ul > li     { color: #aaa; }\r
89 ul > li > * { color: black; }\r
90 \r
91 .monospaced, code, pre {\r
92   font-family: "Courier New", Courier, monospace;\r
93   font-size: inherit;\r
94   color: navy;\r
95   padding: 0;\r
96   margin: 0;\r
97 }\r
98 pre {\r
99   white-space: pre-wrap;\r
100 }\r
101 \r
102 #author {\r
103   color: #527bbd;\r
104   font-weight: bold;\r
105   font-size: 1.1em;\r
106 }\r
107 #email {\r
108 }\r
109 #revnumber, #revdate, #revremark {\r
110 }\r
111 \r
112 #footer {\r
113   font-size: small;\r
114   border-top: 2px solid silver;\r
115   padding-top: 0.5em;\r
116   margin-top: 4.0em;\r
117 }\r
118 #footer-text {\r
119   float: left;\r
120   padding-bottom: 0.5em;\r
121 }\r
122 #footer-badges {\r
123   float: right;\r
124   padding-bottom: 0.5em;\r
125 }\r
126 \r
127 #preamble {\r
128   margin-top: 1.5em;\r
129   margin-bottom: 1.5em;\r
130 }\r
131 div.imageblock, div.exampleblock, div.verseblock,\r
132 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
133 div.admonitionblock {\r
134   margin-top: 1.0em;\r
135   margin-bottom: 1.5em;\r
136 }\r
137 div.admonitionblock {\r
138   margin-top: 2.0em;\r
139   margin-bottom: 2.0em;\r
140   margin-right: 10%;\r
141   color: #606060;\r
142 }\r
143 \r
144 div.content { /* Block element content. */\r
145   padding: 0;\r
146 }\r
147 \r
148 /* Block element titles. */\r
149 div.title, caption.title {\r
150   color: #527bbd;\r
151   font-weight: bold;\r
152   text-align: left;\r
153   margin-top: 1.0em;\r
154   margin-bottom: 0.5em;\r
155 }\r
156 div.title + * {\r
157   margin-top: 0;\r
158 }\r
159 \r
160 td div.title:first-child {\r
161   margin-top: 0.0em;\r
162 }\r
163 div.content div.title:first-child {\r
164   margin-top: 0.0em;\r
165 }\r
166 div.content + div.title {\r
167   margin-top: 0.0em;\r
168 }\r
169 \r
170 div.sidebarblock > div.content {\r
171   background: #ffffee;\r
172   border: 1px solid #dddddd;\r
173   border-left: 4px solid #f0f0f0;\r
174   padding: 0.5em;\r
175 }\r
176 \r
177 div.listingblock > div.content {\r
178   border: 1px solid #dddddd;\r
179   border-left: 5px solid #f0f0f0;\r
180   background: #f8f8f8;\r
181   padding: 0.5em;\r
182 }\r
183 \r
184 div.quoteblock, div.verseblock {\r
185   padding-left: 1.0em;\r
186   margin-left: 1.0em;\r
187   margin-right: 10%;\r
188   border-left: 5px solid #f0f0f0;\r
189   color: #888;\r
190 }\r
191 \r
192 div.quoteblock > div.attribution {\r
193   padding-top: 0.5em;\r
194   text-align: right;\r
195 }\r
196 \r
197 div.verseblock > pre.content {\r
198   font-family: inherit;\r
199   font-size: inherit;\r
200 }\r
201 div.verseblock > div.attribution {\r
202   padding-top: 0.75em;\r
203   text-align: left;\r
204 }\r
205 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
206 div.verseblock + div.attribution {\r
207   text-align: left;\r
208 }\r
209 \r
210 div.admonitionblock .icon {\r
211   vertical-align: top;\r
212   font-size: 1.1em;\r
213   font-weight: bold;\r
214   text-decoration: underline;\r
215   color: #527bbd;\r
216   padding-right: 0.5em;\r
217 }\r
218 div.admonitionblock td.content {\r
219   padding-left: 0.5em;\r
220   border-left: 3px solid #dddddd;\r
221 }\r
222 \r
223 div.exampleblock > div.content {\r
224   border-left: 3px solid #dddddd;\r
225   padding-left: 0.5em;\r
226 }\r
227 \r
228 div.imageblock div.content { padding-left: 0; }\r
229 span.image img { border-style: none; vertical-align: text-bottom; }\r
230 a.image:visited { color: white; }\r
231 \r
232 dl {\r
233   margin-top: 0.8em;\r
234   margin-bottom: 0.8em;\r
235 }\r
236 dt {\r
237   margin-top: 0.5em;\r
238   margin-bottom: 0;\r
239   font-style: normal;\r
240   color: navy;\r
241 }\r
242 dd > *:first-child {\r
243   margin-top: 0.1em;\r
244 }\r
245 \r
246 ul, ol {\r
247     list-style-position: outside;\r
248 }\r
249 ol.arabic {\r
250   list-style-type: decimal;\r
251 }\r
252 ol.loweralpha {\r
253   list-style-type: lower-alpha;\r
254 }\r
255 ol.upperalpha {\r
256   list-style-type: upper-alpha;\r
257 }\r
258 ol.lowerroman {\r
259   list-style-type: lower-roman;\r
260 }\r
261 ol.upperroman {\r
262   list-style-type: upper-roman;\r
263 }\r
264 \r
265 div.compact ul, div.compact ol,\r
266 div.compact p, div.compact p,\r
267 div.compact div, div.compact div {\r
268   margin-top: 0.1em;\r
269   margin-bottom: 0.1em;\r
270 }\r
271 \r
272 tfoot {\r
273   font-weight: bold;\r
274 }\r
275 td > div.verse {\r
276   white-space: pre;\r
277 }\r
278 \r
279 div.hdlist {\r
280   margin-top: 0.8em;\r
281   margin-bottom: 0.8em;\r
282 }\r
283 div.hdlist tr {\r
284   padding-bottom: 15px;\r
285 }\r
286 dt.hdlist1.strong, td.hdlist1.strong {\r
287   font-weight: bold;\r
288 }\r
289 td.hdlist1 {\r
290   vertical-align: top;\r
291   font-style: normal;\r
292   padding-right: 0.8em;\r
293   color: navy;\r
294 }\r
295 td.hdlist2 {\r
296   vertical-align: top;\r
297 }\r
298 div.hdlist.compact tr {\r
299   margin: 0;\r
300   padding-bottom: 0;\r
301 }\r
302 \r
303 .comment {\r
304   background: yellow;\r
305 }\r
306 \r
307 .footnote, .footnoteref {\r
308   font-size: 0.8em;\r
309 }\r
310 \r
311 span.footnote, span.footnoteref {\r
312   vertical-align: super;\r
313 }\r
314 \r
315 #footnotes {\r
316   margin: 20px 0 20px 0;\r
317   padding: 7px 0 0 0;\r
318 }\r
319 \r
320 #footnotes div.footnote {\r
321   margin: 0 0 5px 0;\r
322 }\r
323 \r
324 #footnotes hr {\r
325   border: none;\r
326   border-top: 1px solid silver;\r
327   height: 1px;\r
328   text-align: left;\r
329   margin-left: 0;\r
330   width: 20%;\r
331   min-width: 100px;\r
332 }\r
333 \r
334 div.colist td {\r
335   padding-right: 0.5em;\r
336   padding-bottom: 0.3em;\r
337   vertical-align: top;\r
338 }\r
339 div.colist td img {\r
340   margin-top: 0.3em;\r
341 }\r
342 \r
343 @media print {\r
344   #footer-badges { display: none; }\r
345 }\r
346 \r
347 #toc {\r
348   margin-bottom: 2.5em;\r
349 }\r
350 \r
351 #toctitle {\r
352   color: #527bbd;\r
353   font-size: 1.1em;\r
354   font-weight: bold;\r
355   margin-top: 1.0em;\r
356   margin-bottom: 0.1em;\r
357 }\r
358 \r
359 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
360   margin-top: 0;\r
361   margin-bottom: 0;\r
362 }\r
363 div.toclevel2 {\r
364   margin-left: 2em;\r
365   font-size: 0.9em;\r
366 }\r
367 div.toclevel3 {\r
368   margin-left: 4em;\r
369   font-size: 0.9em;\r
370 }\r
371 div.toclevel4 {\r
372   margin-left: 6em;\r
373   font-size: 0.9em;\r
374 }\r
375 \r
376 span.aqua { color: aqua; }\r
377 span.black { color: black; }\r
378 span.blue { color: blue; }\r
379 span.fuchsia { color: fuchsia; }\r
380 span.gray { color: gray; }\r
381 span.green { color: green; }\r
382 span.lime { color: lime; }\r
383 span.maroon { color: maroon; }\r
384 span.navy { color: navy; }\r
385 span.olive { color: olive; }\r
386 span.purple { color: purple; }\r
387 span.red { color: red; }\r
388 span.silver { color: silver; }\r
389 span.teal { color: teal; }\r
390 span.white { color: white; }\r
391 span.yellow { color: yellow; }\r
392 \r
393 span.aqua-background { background: aqua; }\r
394 span.black-background { background: black; }\r
395 span.blue-background { background: blue; }\r
396 span.fuchsia-background { background: fuchsia; }\r
397 span.gray-background { background: gray; }\r
398 span.green-background { background: green; }\r
399 span.lime-background { background: lime; }\r
400 span.maroon-background { background: maroon; }\r
401 span.navy-background { background: navy; }\r
402 span.olive-background { background: olive; }\r
403 span.purple-background { background: purple; }\r
404 span.red-background { background: red; }\r
405 span.silver-background { background: silver; }\r
406 span.teal-background { background: teal; }\r
407 span.white-background { background: white; }\r
408 span.yellow-background { background: yellow; }\r
409 \r
410 span.big { font-size: 2em; }\r
411 span.small { font-size: 0.6em; }\r
412 \r
413 span.underline { text-decoration: underline; }\r
414 span.overline { text-decoration: overline; }\r
415 span.line-through { text-decoration: line-through; }\r
416 \r
417 div.unbreakable { page-break-inside: avoid; }\r
418 \r
419 \r
420 /*\r
421  * xhtml11 specific\r
422  *\r
423  * */\r
424 \r
425 div.tableblock {\r
426   margin-top: 1.0em;\r
427   margin-bottom: 1.5em;\r
428 }\r
429 div.tableblock > table {\r
430   border: 3px solid #527bbd;\r
431 }\r
432 thead, p.table.header {\r
433   font-weight: bold;\r
434   color: #527bbd;\r
435 }\r
436 p.table {\r
437   margin-top: 0;\r
438 }\r
439 /* Because the table frame attribute is overriden by CSS in most browsers. */\r
440 div.tableblock > table[frame="void"] {\r
441   border-style: none;\r
442 }\r
443 div.tableblock > table[frame="hsides"] {\r
444   border-left-style: none;\r
445   border-right-style: none;\r
446 }\r
447 div.tableblock > table[frame="vsides"] {\r
448   border-top-style: none;\r
449   border-bottom-style: none;\r
450 }\r
451 \r
452 \r
453 /*\r
454  * html5 specific\r
455  *\r
456  * */\r
457 \r
458 table.tableblock {\r
459   margin-top: 1.0em;\r
460   margin-bottom: 1.5em;\r
461 }\r
462 thead, p.tableblock.header {\r
463   font-weight: bold;\r
464   color: #527bbd;\r
465 }\r
466 p.tableblock {\r
467   margin-top: 0;\r
468 }\r
469 table.tableblock {\r
470   border-width: 3px;\r
471   border-spacing: 0px;\r
472   border-style: solid;\r
473   border-color: #527bbd;\r
474   border-collapse: collapse;\r
475 }\r
476 th.tableblock, td.tableblock {\r
477   border-width: 1px;\r
478   padding: 4px;\r
479   border-style: solid;\r
480   border-color: #527bbd;\r
481 }\r
482 \r
483 table.tableblock.frame-topbot {\r
484   border-left-style: hidden;\r
485   border-right-style: hidden;\r
486 }\r
487 table.tableblock.frame-sides {\r
488   border-top-style: hidden;\r
489   border-bottom-style: hidden;\r
490 }\r
491 table.tableblock.frame-none {\r
492   border-style: hidden;\r
493 }\r
494 \r
495 th.tableblock.halign-left, td.tableblock.halign-left {\r
496   text-align: left;\r
497 }\r
498 th.tableblock.halign-center, td.tableblock.halign-center {\r
499   text-align: center;\r
500 }\r
501 th.tableblock.halign-right, td.tableblock.halign-right {\r
502   text-align: right;\r
503 }\r
504 \r
505 th.tableblock.valign-top, td.tableblock.valign-top {\r
506   vertical-align: top;\r
507 }\r
508 th.tableblock.valign-middle, td.tableblock.valign-middle {\r
509   vertical-align: middle;\r
510 }\r
511 th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
512   vertical-align: bottom;\r
513 }\r
514 \r
515 \r
516 /*\r
517  * manpage specific\r
518  *\r
519  * */\r
520 \r
521 body.manpage h1 {\r
522   padding-top: 0.5em;\r
523   padding-bottom: 0.5em;\r
524   border-top: 2px solid silver;\r
525   border-bottom: 2px solid silver;\r
526 }\r
527 body.manpage h2 {\r
528   border-style: none;\r
529 }\r
530 body.manpage div.sectionbody {\r
531   margin-left: 3em;\r
532 }\r
533 \r
534 @media print {\r
535   body.manpage div#toc { display: none; }\r
536 }\r
537 \r
538 \r
539 </style>\r
540 <script type="text/javascript">\r
541 /*<![CDATA[*/\r
542 var asciidoc = {  // Namespace.\r
543 \r
544 /////////////////////////////////////////////////////////////////////\r
545 // Table Of Contents generator\r
546 /////////////////////////////////////////////////////////////////////\r
547 \r
548 /* Author: Mihai Bazon, September 2002\r
549  * http://students.infoiasi.ro/~mishoo\r
550  *\r
551  * Table Of Content generator\r
552  * Version: 0.4\r
553  *\r
554  * Feel free to use this script under the terms of the GNU General Public\r
555  * License, as long as you do not remove or alter this notice.\r
556  */\r
557 \r
558  /* modified by Troy D. Hanson, September 2006. License: GPL */\r
559  /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
560 \r
561 // toclevels = 1..4.\r
562 toc: function (toclevels) {\r
563 \r
564   function getText(el) {\r
565     var text = "";\r
566     for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
567       if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
568         text += i.data;\r
569       else if (i.firstChild != null)\r
570         text += getText(i);\r
571     }\r
572     return text;\r
573   }\r
574 \r
575   function TocEntry(el, text, toclevel) {\r
576     this.element = el;\r
577     this.text = text;\r
578     this.toclevel = toclevel;\r
579   }\r
580 \r
581   function tocEntries(el, toclevels) {\r
582     var result = new Array;\r
583     var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
584     // Function that scans the DOM tree for header elements (the DOM2\r
585     // nodeIterator API would be a better technique but not supported by all\r
586     // browsers).\r
587     var iterate = function (el) {\r
588       for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
589         if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
590           var mo = re.exec(i.tagName);\r
591           if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
592             result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
593           }\r
594           iterate(i);\r
595         }\r
596       }\r
597     }\r
598     iterate(el);\r
599     return result;\r
600   }\r
601 \r
602   var toc = document.getElementById("toc");\r
603   if (!toc) {\r
604     return;\r
605   }\r
606 \r
607   // Delete existing TOC entries in case we're reloading the TOC.\r
608   var tocEntriesToRemove = [];\r
609   var i;\r
610   for (i = 0; i < toc.childNodes.length; i++) {\r
611     var entry = toc.childNodes[i];\r
612     if (entry.nodeName.toLowerCase() == 'div'\r
613      && entry.getAttribute("class")\r
614      && entry.getAttribute("class").match(/^toclevel/))\r
615       tocEntriesToRemove.push(entry);\r
616   }\r
617   for (i = 0; i < tocEntriesToRemove.length; i++) {\r
618     toc.removeChild(tocEntriesToRemove[i]);\r
619   }\r
620 \r
621   // Rebuild TOC entries.\r
622   var entries = tocEntries(document.getElementById("content"), toclevels);\r
623   for (var i = 0; i < entries.length; ++i) {\r
624     var entry = entries[i];\r
625     if (entry.element.id == "")\r
626       entry.element.id = "_toc_" + i;\r
627     var a = document.createElement("a");\r
628     a.href = "#" + entry.element.id;\r
629     a.appendChild(document.createTextNode(entry.text));\r
630     var div = document.createElement("div");\r
631     div.appendChild(a);\r
632     div.className = "toclevel" + entry.toclevel;\r
633     toc.appendChild(div);\r
634   }\r
635   if (entries.length == 0)\r
636     toc.parentNode.removeChild(toc);\r
637 },\r
638 \r
639 \r
640 /////////////////////////////////////////////////////////////////////\r
641 // Footnotes generator\r
642 /////////////////////////////////////////////////////////////////////\r
643 \r
644 /* Based on footnote generation code from:\r
645  * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
646  */\r
647 \r
648 footnotes: function () {\r
649   // Delete existing footnote entries in case we're reloading the footnodes.\r
650   var i;\r
651   var noteholder = document.getElementById("footnotes");\r
652   if (!noteholder) {\r
653     return;\r
654   }\r
655   var entriesToRemove = [];\r
656   for (i = 0; i < noteholder.childNodes.length; i++) {\r
657     var entry = noteholder.childNodes[i];\r
658     if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
659       entriesToRemove.push(entry);\r
660   }\r
661   for (i = 0; i < entriesToRemove.length; i++) {\r
662     noteholder.removeChild(entriesToRemove[i]);\r
663   }\r
664 \r
665   // Rebuild footnote entries.\r
666   var cont = document.getElementById("content");\r
667   var spans = cont.getElementsByTagName("span");\r
668   var refs = {};\r
669   var n = 0;\r
670   for (i=0; i<spans.length; i++) {\r
671     if (spans[i].className == "footnote") {\r
672       n++;\r
673       var note = spans[i].getAttribute("data-note");\r
674       if (!note) {\r
675         // Use [\s\S] in place of . so multi-line matches work.\r
676         // Because JavaScript has no s (dotall) regex flag.\r
677         note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
678         spans[i].innerHTML =\r
679           "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
680           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
681         spans[i].setAttribute("data-note", note);\r
682       }\r
683       noteholder.innerHTML +=\r
684         "<div class='footnote' id='_footnote_" + n + "'>" +\r
685         "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
686         n + "</a>. " + note + "</div>";\r
687       var id =spans[i].getAttribute("id");\r
688       if (id != null) refs["#"+id] = n;\r
689     }\r
690   }\r
691   if (n == 0)\r
692     noteholder.parentNode.removeChild(noteholder);\r
693   else {\r
694     // Process footnoterefs.\r
695     for (i=0; i<spans.length; i++) {\r
696       if (spans[i].className == "footnoteref") {\r
697         var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
698         href = href.match(/#.*/)[0];  // Because IE return full URL.\r
699         n = refs[href];\r
700         spans[i].innerHTML =\r
701           "[<a href='#_footnote_" + n +\r
702           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
703       }\r
704     }\r
705   }\r
706 },\r
707 \r
708 install: function(toclevels) {\r
709   var timerId;\r
710 \r
711   function reinstall() {\r
712     asciidoc.footnotes();\r
713     if (toclevels) {\r
714       asciidoc.toc(toclevels);\r
715     }\r
716   }\r
717 \r
718   function reinstallAndRemoveTimer() {\r
719     clearInterval(timerId);\r
720     reinstall();\r
721   }\r
722 \r
723   timerId = setInterval(reinstall, 500);\r
724   if (document.addEventListener)\r
725     document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
726   else\r
727     window.onload = reinstallAndRemoveTimer;\r
728 }\r
729 \r
730 }\r
731 asciidoc.install(2);\r
732 /*]]>*/\r
733 </script>\r
734 </head>\r
735 <body class="article">\r
736 <div id="header">\r
737 <h1>grml2usb(8)</h1>\r
738 <div id="toc">
739   <div id="toctitle">Table of Contents</div>
740   <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
741 </div>\r
742 </div>\r
743 <div id="content">\r
744 <div class="sect1">\r
745 <h2 id="_name">1. Name</h2>\r
746 <div class="sectionbody">\r
747 <div class="paragraph"><p>grml2usb - install Grml ISO(s) on usb device for booting</p></div>\r
748 </div>\r
749 </div>\r
750 <div class="sect1">\r
751 <h2 id="_synopsis">2. Synopsis</h2>\r
752 <div class="sectionbody">\r
753 <div class="paragraph"><p>grml2usb [ options ] &lt;ISO[s]&gt; &lt;device&gt;</p></div>\r
754 <div class="sidebarblock">\r
755 <div class="content">\r
756 <div class="paragraph"><p>Important! The Grml team does not take responsibility for loss of any data!</p></div>\r
757 </div></div>\r
758 </div>\r
759 </div>\r
760 <div class="sect1">\r
761 <h2 id="introduction">3. Introduction</h2>\r
762 <div class="sectionbody">\r
763 <div class="paragraph"><p>grml2usb installs Grml on a given partition of your usb device and makes\r
764 it bootable. It provides multiboot ISO support, meaning you can specify\r
765 several Grml ISOs on the command line at once and select the Grml\r
766 flavour you would like to boot on the bootprompt then. Note that the\r
767 <strong>first</strong> ISO specified on the grml2usb command line will become the\r
768 default one (that&#8217;s the one that will boot when just pressing enter on\r
769 the bootprompt or wait until the boot timeout matches).</p></div>\r
770 <div class="admonitionblock">\r
771 <table><tr>\r
772 <td class="icon">\r
773 <img src="./images/icons/important.png" alt="Important" />\r
774 </td>\r
775 <td class="content">By default a compatible master boot record (MBR) is installed on the device\r
776 (being for example /dev/sdX when executing <em>grml2usb grml.iso /dev/sdX1</em>) and\r
777 syslinux is being used as default bootloader. Avoid installation of the default\r
778 MBR using the <em>--skip-mbr</em> option or if you encounter any problems with the\r
779 default MBR consider using <em>--syslinux-mbr</em> instead.</td>\r
780 </tr></table>\r
781 </div>\r
782 </div>\r
783 </div>\r
784 <div class="sect1">\r
785 <h2 id="options">4. Options</h2>\r
786 <div class="sectionbody">\r
787 <div class="paragraph"><p>ISO[s] should be the path to one or multiple grml-ISOs and/or the path to\r
788 the currently running live-system (being /lib/live/mount/medium).</p></div>\r
789 <div class="paragraph"><p>The device either might be a device name like /dev/sdX1 or a directory. When\r
790 specifying a device name the device is mounted automatically. When specifying a\r
791 directory grml2usb is assuming that you did set up a bootloader on your own (or\r
792 don&#8217;t need one) and a bootloader won&#8217;t be installed automatically.</p></div>\r
793 <div class="paragraph"><p>The following options are supported:</p></div>\r
794 <div class="dlist"><dl>\r
795 <dt class="hdlist1">\r
796 <strong>--bootoptions=&#8230;</strong>\r
797 </dt>\r
798 <dd>\r
799 <p>\r
800 Use specified bootoptions as default. To use flavour name as a argument for a\r
801 boot parameter use %flavour which will be expanded to the flavour name. To add\r
802 multiple bootoptions you can specify the option multiple time.\r
803 </p>\r
804 </dd>\r
805 <dt class="hdlist1">\r
806 <strong>--bootloader-only</strong>\r
807 </dt>\r
808 <dd>\r
809 <p>\r
810 Do <strong>not</strong> copy files but instead just install a bootloader.  Note that the boot\r
811 addons are copied to /boot/addons at this stage as well.  If you want to skip\r
812 copying the boot addons consider using the --skip-addons option.\r
813 </p>\r
814 </dd>\r
815 <dt class="hdlist1">\r
816 <strong>--copy-only</strong>\r
817 </dt>\r
818 <dd>\r
819 <p>\r
820 Copy files only but do <strong>not</strong> install a bootloader.\r
821 </p>\r
822 </dd>\r
823 <dt class="hdlist1">\r
824 <strong>--dry-run</strong>\r
825 </dt>\r
826 <dd>\r
827 <p>\r
828 Avoid executing commands, instead show what would be executed.\r
829 Warning: please notice that the ISO has to be mounted anyway, otherwise\r
830 identifying the Grml flavour would not be possible.\r
831 </p>\r
832 </dd>\r
833 <dt class="hdlist1">\r
834 <strong>--fat16</strong>\r
835 </dt>\r
836 <dd>\r
837 <p>\r
838 Format specified partition with FAT16.\r
839 <strong>Important:</strong> this will destroy any existing data on the specified partition!\r
840 </p>\r
841 </dd>\r
842 <dt class="hdlist1">\r
843 <strong>--force</strong>\r
844 </dt>\r
845 <dd>\r
846 <p>\r
847 Force any (possible dangerous) actions requiring manual interaction (like --fat16).\r
848 </p>\r
849 </dd>\r
850 <dt class="hdlist1">\r
851 <strong>--grub</strong>\r
852 </dt>\r
853 <dd>\r
854 <p>\r
855 Install grub bootloader instead of (default) syslinux.\r
856 </p>\r
857 </dd>\r
858 <dt class="hdlist1">\r
859 <strong>--grub-mbr</strong>\r
860 </dt>\r
861 <dd>\r
862 <p>\r
863 Install grub into MBR (Master Boot Record) instead of PBR (Partition Boot\r
864 Record). Check out <a href="#mbr-vs-pbr">the <em>mbr-vs-pbr</em> section in the FAQ of this document</a> for further details.\r
865 </p>\r
866 </dd>\r
867 <dt class="hdlist1">\r
868 <strong>--help</strong>\r
869 </dt>\r
870 <dd>\r
871 <p>\r
872 Display usage information and exit.\r
873 </p>\r
874 </dd>\r
875 </dl></div>\r
876 <div class="dlist"><dl>\r
877 <dt class="hdlist1">\r
878 <strong>--mbr-menu</strong>\r
879 </dt>\r
880 <dd>\r
881 <p>\r
882 Install master boot record (MBR) with integrated boot menu: interactively choose\r
883 the partition to boot from, with a timeout to load the default partition, or\r
884 boot from floppy. When NOT using the --mbr-menu option a MBR with LBA and large\r
885 disc support but without an integrated boot menu is installed (so it&#8217;s not\r
886 visible at all but instead directly jumps to the bootloader - being grub or\r
887 syslinux). Note: This options is available only when using the default MBR and\r
888 won&#8217;t have any effect if you&#8217;re using the <em>--syslinux-mbr</em> option.\r
889 </p>\r
890 </dd>\r
891 <dt class="hdlist1">\r
892 <strong>--quiet</strong>\r
893 </dt>\r
894 <dd>\r
895 <p>\r
896 Do not output anything but just errors on console.\r
897 </p>\r
898 </dd>\r
899 <dt class="hdlist1">\r
900 <strong>--skip-addons</strong>\r
901 </dt>\r
902 <dd>\r
903 <p>\r
904 Do not install /boot/addons/ files (like dos, grub, memdisk,&#8230;).\r
905 </p>\r
906 </dd>\r
907 <dt class="hdlist1">\r
908 <strong>--remove-bootoption=&#8230;</strong>\r
909 </dt>\r
910 <dd>\r
911 <p>\r
912 Remove specified bootoption (could be a regex) from existing boot options. Use\r
913 multiple entries for removing different bootoptions at once.\r
914 </p>\r
915 </dd>\r
916 <dt class="hdlist1">\r
917 <strong>--skip-bootflag</strong>\r
918 </dt>\r
919 <dd>\r
920 <p>\r
921 Do not check for presence of bootflag on target device.\r
922 </p>\r
923 </dd>\r
924 <dt class="hdlist1">\r
925 <strong>--skip-grub-config</strong>\r
926 </dt>\r
927 <dd>\r
928 <p>\r
929 Skip generation of grub configuration files. By default the configuration\r
930 files for syslinux <strong>and</strong> grub will be written so you&#8217;ve a working configuration\r
931 file no matter whether you&#8217;re using grub or syslinux as bootloader.\r
932 </p>\r
933 </dd>\r
934 <dt class="hdlist1">\r
935 <strong>--skip-mbr</strong>\r
936 </dt>\r
937 <dd>\r
938 <p>\r
939 Do not touch/install the master boot record (MBR).\r
940 </p>\r
941 </dd>\r
942 <dt class="hdlist1">\r
943 <strong>--skip-syslinux-config</strong>\r
944 </dt>\r
945 <dd>\r
946 <p>\r
947 Skip generation of syslinux configuration files. By default the configuration\r
948 files for syslinux <strong>and</strong> grub will be written so you&#8217;ve a working configuration\r
949 file no matter whether you&#8217;re using grub or syslinux as bootloader.\r
950 </p>\r
951 </dd>\r
952 <dt class="hdlist1">\r
953 <strong>--skip-usb-check</strong>\r
954 </dt>\r
955 <dd>\r
956 <p>\r
957 Skip check to verify whether given device is a removable device.\r
958 Some USB devices are known to report wrong information, when using\r
959 such a device you can skip grml2usb&#8217;s removable device check.\r
960 </p>\r
961 </dd>\r
962 <dt class="hdlist1">\r
963 <strong>--syslinux</strong>\r
964 </dt>\r
965 <dd>\r
966 <p>\r
967 This option is deprecated and is being left only for backwards compatibility\r
968 reasons. Syslinux is the default bootloader of grml2usb and therefore the\r
969 <em>--syslinux</em> option doesn&#8217;t have any effects. If you do not want to use syslinux\r
970 as bootloader consider using the <em>--grub</em> option.\r
971 </p>\r
972 </dd>\r
973 <dt class="hdlist1">\r
974 <strong>--syslinux-mbr</strong>\r
975 </dt>\r
976 <dd>\r
977 <p>\r
978 Install syslinux' master boot record (MBR, which is booting from the partition\r
979 with the "active" flag set) instead of the default one.  If you encounter any\r
980 problems with the default MBR you can try using the syslinux MBR instead. If\r
981 that works for you please <a href="#author">let us know</a> so we can adjust our default\r
982 MBR accordingly.\r
983 </p>\r
984 </dd>\r
985 </dl></div>\r
986 <div class="dlist"><dl>\r
987 <dt class="hdlist1">\r
988 <strong>-v</strong>, <strong>--version</strong>\r
989 </dt>\r
990 <dd>\r
991 <p>\r
992 Return version and exit.\r
993 </p>\r
994 </dd>\r
995 <dt class="hdlist1">\r
996 <strong>--verbose</strong>\r
997 </dt>\r
998 <dd>\r
999 <p>\r
1000 Enable verbose mode.\r
1001 </p>\r
1002 </dd>\r
1003 </dl></div>\r
1004 </div>\r
1005 </div>\r
1006 <div class="sect1">\r
1007 <h2 id="_developers_corner">5. Developers Corner</h2>\r
1008 <div class="sectionbody">\r
1009 <div class="sect2">\r
1010 <h3 id="directory-layout">5.1. Directory layout on usb device</h3>\r
1011 <div class="literalblock">\r
1012 <div class="content">\r
1013 <pre><code>boot/ -&gt;\r
1014   |-- addons/\r
1015   |   |-- allinone.img     [grub - all in one image]\r
1016   |   |-- bsd4grml/        [MirBSD]\r
1017   |   |-- balder10.imz     [FreeDOS]\r
1018   |   |-- memdisk          [chainloading helper]\r
1019   |   |-- memtest          [memtest86+]\r
1020   |-- release/\r
1021   |   |-- grml/\r
1022   |   |   |-- linux26      [Kernel]\r
1023   |   |   |-- initrd.gz    [initramfs]\r
1024   |   |-- grml64\r
1025   |   |   |-- linux26      [Kernel]\r
1026   |   |   |-- initrd.gz    [initramfs]\r
1027   |   |-- grml-medium\r
1028   |   |   |-- linux26      [...]\r
1029   |   |   |-- initrd.gz\r
1030   |   |-- grml64-medium\r
1031   |   |   |-- linux26\r
1032   |   |   |-- initrd.gz\r
1033   |   |-- grml-small\r
1034   |   |   |-- linux26\r
1035   |   |   |-- initrd.gz\r
1036   |   `-- grml64-small\r
1037   |       |-- linux26\r
1038   |       |-- initrd.gz\r
1039   |-- grub/\r
1040   |   |-- grml.png         [graphical bootsplash background image for grub2]\r
1041   |   |-- grub.cfg         [configuration file for grub2]\r
1042   |   |-- menu.lst         [configuration file for grub1]\r
1043   |   |-- splash.xpm.gz    [splash screen for grub1]\r
1044   `-- syslinux/\r
1045       |-- grml.png         [graphical bootsplash background image for syslinux]\r
1046       |-- syslinux.cfg     [main configuration file for syslinux]\r
1047       `-- [....]           [several further config files for syslinux]</code></pre>\r
1048 </div></div>\r
1049 <div class="literalblock">\r
1050 <div class="content">\r
1051 <pre><code>grml/\r
1052   |-- grml2usb.txt         [not yet implemented]\r
1053   |-- grml-cheatcodes.txt  [list of bootoptions for Grml]\r
1054   |-- grml-version.txt     [file containing information about grml-version]\r
1055   |-- LICENSE.txt          [license information]\r
1056   |-- md5sums              [md5sums of original ISO]\r
1057   |-- README.txt           [informational text]\r
1058   `-- web/                 [browser related files]\r
1059       |-- index.html\r
1060       |-- style.css\r
1061       `-- images/\r
1062           |-- button.png\r
1063           |-- favicon.png\r
1064           |-- linux.jpg\r
1065           `-- logo.png</code></pre>\r
1066 </div></div>\r
1067 <div class="literalblock">\r
1068 <div class="content">\r
1069 <pre><code>live/\r
1070   |-- grml/\r
1071   |   |-- filesystem.module    [module specifying which squashfs should be used for grml]\r
1072   |   `-- grml.squashfs        [squashfs file for grml]\r
1073   |-- grml-medium/\r
1074   |   |-- filesystem.module    [module specifying which squashfs should be used for grml-medium]\r
1075   |   `-- grml-medium.squashfs [squashfs file for grml-medium]\r
1076   |-- grml-small/\r
1077   |   |-- filesystem.module    [module specifying which squashfs should be used for grml-medium]\r
1078   |   `-- grml-small.squashfs  [squashfs file for grml-small]\r
1079   `-- ...</code></pre>\r
1080 </div></div>\r
1081 </div>\r
1082 <div class="sect2">\r
1083 <h3 id="source">5.2. Grabbing the source</h3>\r
1084 <div class="literalblock">\r
1085 <div class="content">\r
1086 <pre><code>% git clone git://git.grml.org/grml2usb.git</code></pre>\r
1087 </div></div>\r
1088 </div>\r
1089 <div class="sect2">\r
1090 <h3 id="debugging">5.3. Developers Debugging Hints</h3>\r
1091 <div class="paragraph"><p>To play with grml2usb you can avoid using a real device via a loopback file\r
1092 setup, like:</p></div>\r
1093 <div class="literalblock">\r
1094 <div class="content">\r
1095 <pre><code># dd if=/dev/zero of=~/loopback bs=1M count=100 # adjust size to your needs\r
1096 # losetup /dev/loop1 ~/loopback</code></pre>\r
1097 </div></div>\r
1098 <div class="paragraph"><p>Then create according partitions either running for example:</p></div>\r
1099 <div class="literalblock">\r
1100 <div class="content">\r
1101 <pre><code># echo -en "n\np\n1\n\n\nt\n6\na\n1\n w\n" | fdisk /dev/loop1</code></pre>\r
1102 </div></div>\r
1103 <div class="paragraph"><p>or:</p></div>\r
1104 <div class="literalblock">\r
1105 <div class="content">\r
1106 <pre><code># parted /dev/loop1 -s "mkpart primary fat16 0 -1s mkfs 1 fat16"</code></pre>\r
1107 </div></div>\r
1108 <div class="paragraph"><p>Finally create a filesystem and execute grml2usb as needed:</p></div>\r
1109 <div class="literalblock">\r
1110 <div class="content">\r
1111 <pre><code># mkfs.vfat /dev/loop1\r
1112 # grml2usb --bootloader-only /grml/isos/grml-small_2013.01.iso /dev/loop1</code></pre>\r
1113 </div></div>\r
1114 </div>\r
1115 <div class="sect2">\r
1116 <h3 id="performance-tracing">5.4. Performance tracing</h3>\r
1117 <div class="literalblock">\r
1118 <div class="content">\r
1119 <pre><code># blktrace -d /dev/sdX -o - | blkparse -i -\r
1120 # grml2usb grml_2013.01.iso /dev/sdX1</code></pre>\r
1121 </div></div>\r
1122 </div>\r
1123 </div>\r
1124 </div>\r
1125 <div class="sect1">\r
1126 <h2 id="troubleshooting">6. Troubleshooting and Pitfalls when booting</h2>\r
1127 <div class="sectionbody">\r
1128 <div class="paragraph"><p>Here is a list of common error messages from BIOS/bootloader when trying to boot\r
1129 from USB.</p></div>\r
1130 <div class="hdlist"><table>\r
1131 <tr>\r
1132 <td class="hdlist1">\r
1133 <strong>Error message</strong>\r
1134 <br />\r
1135 </td>\r
1136 <td class="hdlist2">\r
1137 <p style="margin-top: 0;">\r
1138 ran out of input data. System halted\r
1139 </p>\r
1140 </td>\r
1141 </tr>\r
1142 <tr>\r
1143 <td class="hdlist1">\r
1144 <strong>Reason</strong>\r
1145 <br />\r
1146 </td>\r
1147 <td class="hdlist2">\r
1148 <p style="margin-top: 0;">\r
1149 Everything OK, except for the filesystem used on your usb device. So\r
1150 instead of fat16 you are using for example fat32. Fix: use the appropriate\r
1151 filesystem (fat16 for usb pens usually). The Bootsplash might be displayed, the\r
1152 kernel loads but you very soon get the error message.\r
1153 </p>\r
1154 </td>\r
1155 </tr>\r
1156 <tr>\r
1157 <td class="hdlist1">\r
1158 <strong>Error message</strong>\r
1159 <br />\r
1160 </td>\r
1161 <td class="hdlist2">\r
1162 <p style="margin-top: 0;">\r
1163 Invalid operating system\r
1164 </p>\r
1165 </td>\r
1166 </tr>\r
1167 <tr>\r
1168 <td class="hdlist1">\r
1169 <strong>Reason</strong>\r
1170 <br />\r
1171 </td>\r
1172 <td class="hdlist2">\r
1173 <p style="margin-top: 0;">\r
1174 the partition layout is not ok. Very probably there&#8217;s no primary\r
1175   partition (/dev/sdX{1..4}) or none has the flag <em>bootable</em> set.\r
1176 </p>\r
1177 </td>\r
1178 </tr>\r
1179 <tr>\r
1180 <td class="hdlist1">\r
1181 <strong>Error message</strong>\r
1182 <br />\r
1183 </td>\r
1184 <td class="hdlist2">\r
1185 <p style="margin-top: 0;">\r
1186 Boot error.\r
1187 </p>\r
1188 </td>\r
1189 </tr>\r
1190 <tr>\r
1191 <td class="hdlist1">\r
1192 <strong>Reason</strong>\r
1193 <br />\r
1194 </td>\r
1195 <td class="hdlist2">\r
1196 <p style="margin-top: 0;">\r
1197 Some BIOSses offer different modes for USB booting. The proper mode\r
1198 to boot a USB stick is USB-HDD. If that doesn’t work or is not supported by your\r
1199 system, you need to format your USB-Stick as USB-ZIP.  To do this, syslinux\r
1200 contains an utility called mkdiskimage, which you can use to re-format your USB\r
1201 stick in USB-ZIP format running <em>mkdiskimage -4 /dev/sdX 1 64 32</em>. Please be\r
1202 aware that this procedure will erase all data on your stick.  After executing\r
1203 mkdiskimage just continue installing as usual (grml2usb &#8230;  /dev/sdX4). Note\r
1204 that this is not going to work for any device larger than 8 GB, since\r
1205 mkdiskimage only supports 1024c 256h 63s. For a more detailed explanation, refer\r
1206 to /usr/share/doc/syslinux-common/usbkey.txt.\r
1207 </p>\r
1208 </td>\r
1209 </tr>\r
1210 <tr>\r
1211 <td class="hdlist1">\r
1212 <strong>Error message</strong>\r
1213 <br />\r
1214 </td>\r
1215 <td class="hdlist2">\r
1216 <p style="margin-top: 0;">\r
1217 No operating system found.\r
1218 </p>\r
1219 </td>\r
1220 </tr>\r
1221 <tr>\r
1222 <td class="hdlist1">\r
1223 <strong>Reason</strong>\r
1224 <br />\r
1225 </td>\r
1226 <td class="hdlist2">\r
1227 <p style="margin-top: 0;">\r
1228 you forgot to set the boot-flag on the partition. Or there really isn&#8217;t\r
1229 any operating system at all. :)\r
1230 </p>\r
1231 </td>\r
1232 </tr>\r
1233 <tr>\r
1234 <td class="hdlist1">\r
1235 <strong>Error message</strong>\r
1236 <br />\r
1237 </td>\r
1238 <td class="hdlist2">\r
1239 <p style="margin-top: 0;">\r
1240 kernel-panic: unable to mount root-fs&#8230;\r
1241 </p>\r
1242 </td>\r
1243 </tr>\r
1244 <tr>\r
1245 <td class="hdlist1">\r
1246 <strong>Reason</strong>\r
1247 <br />\r
1248 </td>\r
1249 <td class="hdlist2">\r
1250 <p style="margin-top: 0;">\r
1251 Kernel boots but fails to find the root filesystem. The root=\r
1252 argument in your kernel commandline is pointing to the wrong device. Adjust\r
1253 root=&#8230;, consider using root=UUID=&#8230;.\r
1254 </p>\r
1255 </td>\r
1256 </tr>\r
1257 <tr>\r
1258 <td class="hdlist1">\r
1259 <strong>Error message</strong>\r
1260 <br />\r
1261 </td>\r
1262 <td class="hdlist2">\r
1263 <p style="margin-top: 0;">\r
1264 Could not find kernel image: &#8230;\r
1265 </p>\r
1266 </td>\r
1267 </tr>\r
1268 <tr>\r
1269 <td class="hdlist1">\r
1270 <strong>Reason</strong>\r
1271 <br />\r
1272 </td>\r
1273 <td class="hdlist2">\r
1274 <p style="margin-top: 0;">\r
1275 either a broken isolinux/syslinux version or a broken BIOS. Check out\r
1276 whether the vendor provides a BIOS update or if using bootloader grub instead of\r
1277 isolinux/syslinux fixes the problem.\r
1278 </p>\r
1279 </td>\r
1280 </tr>\r
1281 </table></div>\r
1282 </div>\r
1283 </div>\r
1284 <div class="sect1">\r
1285 <h2 id="faq">7. Frequently Asked Questions (FAQ)</h2>\r
1286 <div class="sectionbody">\r
1287 <div class="sect2">\r
1288 <h3 id="download">7.1. Where can I get grml2usb?</h3>\r
1289 <div class="paragraph"><p>grml2usb is available as Debian package via <a href="http://deb.grml.org/">the\r
1290 grml-testing Debian repository</a>.</p></div>\r
1291 <div class="paragraph"><p>If you do not want to (or can&#8217;t) use the grml2usb Debian package you can either\r
1292 use the grml2usb git tree running:</p></div>\r
1293 <div class="literalblock">\r
1294 <div class="content">\r
1295 <pre><code>git clone git://git.grml.org/grml2usb.git\r
1296 cd grml2usb\r
1297 make -C mbr\r
1298 sudo ./grml2usb ...</code></pre>\r
1299 </div></div>\r
1300 <div class="paragraph"><p>or download the provided\r
1301 <a href="http://grml.org/grml2usb/grml2usb.tgz">http://grml.org/grml2usb/grml2usb.tgz</a>\r
1302 (<a href="http://grml.org/grml2usb/grml2usb.tgz.md5.asc">gpg signed md5 hash</a>).\r
1303 Download and extract the tarball and execute the provided script <em>install.sh</em>.</p></div>\r
1304 <div class="admonitionblock">\r
1305 <table><tr>\r
1306 <td class="icon">\r
1307 <img src="./images/icons/note.png" alt="Note" />\r
1308 </td>\r
1309 <td class="content">It is <strong>NOT</strong> enough to have just the grml2usb script itself without the according\r
1310 files provided either via the Debian package, the git tree or the file\r
1311 grml2usb.tgz.</td>\r
1312 </tr></table>\r
1313 </div>\r
1314 </div>\r
1315 <div class="sect2">\r
1316 <h3 id="dd">7.2. Why can&#8217;t I just dd the ISO to a USB device?</h3>\r
1317 <div class="paragraph"><p>Well, you can. :) Starting with Grml 2009.10 the ISOs are dd-able straight out-of-the-box.</p></div>\r
1318 <div class="admonitionblock">\r
1319 <table><tr>\r
1320 <td class="icon">\r
1321 <img src="./images/icons/important.png" alt="Important" />\r
1322 </td>\r
1323 <td class="content">Note that ANY existing data on your USB device will be destroyed when\r
1324 using the dd approach.</td>\r
1325 </tr></table>\r
1326 </div>\r
1327 <div class="paragraph"><p>This allows you to dd the Grml ISO to your USB device (use for example\r
1328 <a href="http://www.chrysocome.net/rawwrite">rawwrite</a> if you&#8217;ve just a Windows\r
1329 system available) running:</p></div>\r
1330 <div class="literalblock">\r
1331 <div class="content">\r
1332 <pre><code>% dd if=grml_2013.01.iso of=/dev/sdX</code></pre>\r
1333 </div></div>\r
1334 <div class="paragraph"><p>where /dev/sdX is your USB device. Of course this doesn&#8217;t provide such a\r
1335 flexible system like with grml2usb (no multi-ISO setup, no additional default\r
1336 bootoptions,&#8230;) but it&#8217;s a nice way to get a working USB boot setup if you\r
1337 don&#8217;t have grml2usb available.</p></div>\r
1338 </div>\r
1339 <div class="sect2">\r
1340 <h3 id="grml2usb-vs-dd">7.3. What&#8217;s the difference between grml2usb and just using dd?</h3>\r
1341 <div class="paragraph"><p>grml2usb does not remove any data from your USB device and does not alter the\r
1342 partition table at all. grml2usb provides multi-ISO support, support for adding\r
1343 default bootoptions and selecting the bootloader (syslinux vs. grub) without\r
1344 having to manually touch the ISO at all.</p></div>\r
1345 </div>\r
1346 <div class="sect2">\r
1347 <h3 id="grml2iso">7.4. What&#8217;s grml2iso?</h3>\r
1348 <div class="paragraph"><p>grml2iso is a script which uses grml2usb to generate a multiboot ISO out of\r
1349 several grml ISOs. See <em>man grml2iso</em> for further details.</p></div>\r
1350 </div>\r
1351 <div class="sect2">\r
1352 <h3 id="menu-lst">7.5. Why is there a menu.lst and a grub.cfg inside /boot/grub/?</h3>\r
1353 <div class="paragraph"><p>grml2usb supports grub version 1 (grub1) as well as grub version 2 (grub2).\r
1354 Whereas grub1 uses menu.lst the new version grub2 needs grub.cfg.\r
1355 Providing both files allows grml2usb to install grub on the target device\r
1356 no matter which grub version is available on the host where grml2usb is\r
1357 executed on.</p></div>\r
1358 </div>\r
1359 <div class="sect2">\r
1360 <h3 id="stage1">7.6. grub-install fails with 'The file ../boot/grub/stage1 not read correctly"?!</h3>\r
1361 <div class="paragraph"><p>Check whether the partition has the right partition type. For example do NOT use\r
1362 FAT16 (partition type 6) when using a ext3 filesystem on the partition but\r
1363 instead use the correct partition type (<em>83</em> - Linux) then.</p></div>\r
1364 </div>\r
1365 <div class="sect2">\r
1366 <h3 id="grub-install-xfs_freeze">7.7. grub-install complains about /sbin/grub-install and/or xfs_freeze?!</h3>\r
1367 <div class="paragraph"><p>The following message:</p></div>\r
1368 <div class="literalblock">\r
1369 <div class="content">\r
1370 <pre><code>You shouldn't call /sbin/grub-install. Please call /usr/sbin/grub-install instead!\r
1371 xfs_freeze: specified file ["/tmp/tmpqaBK6z/boot/grub"] is not on an XFS filesystem</code></pre>\r
1372 </div></div>\r
1373 <div class="paragraph"><p>This is "normal". grub-install sends those messages to stderr. To avoid hiding any\r
1374 possible real error messages grml2usb doesn&#8217;t ignore those messages.</p></div>\r
1375 </div>\r
1376 <div class="sect2">\r
1377 <h3 id="device-map">7.8. grub-install complains about /boot/grub/device.map?!</h3>\r
1378 <div class="paragraph"><p>The following message:</p></div>\r
1379 <div class="literalblock">\r
1380 <div class="content">\r
1381 <pre><code>grub-probe: error: Cannot open `/boot/grub/device.map'</code></pre>\r
1382 </div></div>\r
1383 <div class="paragraph"><p>This is "normal" (at least with grub1). This isn&#8217;t a problem, because the\r
1384 device.map file will be generated on the target device anyway.</p></div>\r
1385 </div>\r
1386 <div class="sect2">\r
1387 <h3 id="unary-operator">7.9. grub-install complains about a unary operator?!</h3>\r
1388 <div class="paragraph"><p>The following message:</p></div>\r
1389 <div class="literalblock">\r
1390 <div class="content">\r
1391 <pre><code>'/usr/sbin/grub-install: line 374: [: =: unary operator expected'</code></pre>\r
1392 </div></div>\r
1393 <div class="paragraph"><p>This is "normal". Just ignore it. (It usually doesn&#8217;t appear\r
1394 on the second invocation on the same device.)</p></div>\r
1395 </div>\r
1396 <div class="sect2">\r
1397 <h3 id="unknown-filesystem">7.10. grub-install fails with grub-probe: error: unknown filesystem?!</h3>\r
1398 <div class="paragraph"><p>The following message:</p></div>\r
1399 <div class="literalblock">\r
1400 <div class="content">\r
1401 <pre><code>grub-probe: error: unknown filesystem\r
1402 Auto-detection of a filesystem module failed.\r
1403 Please specify the module with the option `--modules' explicitly.</code></pre>\r
1404 </div></div>\r
1405 <div class="paragraph"><p>usually means that the device partition table says something else than the\r
1406 filesystem on the device. For example using FAT16 as filesystem type and\r
1407 using FAT32 as filesystem on the partition will not work. Either set filesystem\r
1408 type to FAT32 or format the partition using FAT16. It is essential that\r
1409 device partition table and filesystem use the same filesystem type.</p></div>\r
1410 </div>\r
1411 <div class="sect2">\r
1412 <h3 id="mbr-vs-pbr">7.11. grub-setup fails after Attempting to install GRUB to a partition instead of the MBR?!</h3>\r
1413 <div class="paragraph"><p>The following message:</p></div>\r
1414 <div class="literalblock">\r
1415 <div class="content">\r
1416 <pre><code>grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea.\r
1417 grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and its use is discouraged.\r
1418 grub-setup: error: Cannot read `/grub/core.img' correctly</code></pre>\r
1419 </div></div>\r
1420 <div class="paragraph"><p>appears when using grub2 versions older than 1.98 as those version introduced a\r
1421 regression which avoids that grub is being installed into a partition (PBR,\r
1422 Partition Boot Record) instead of MBR (Master Boot Record).</p></div>\r
1423 <div class="paragraph"><p>To work around this issue you can either 1) upgrade to grub versions &gt;=1.98, 2)\r
1424 install grub into the MBR (Master Boot Record) using the <em>--grub-mbr</em> option of\r
1425 grml2usb or 3) switch to syslinux as bootmanager (just drop the <em>--grub</em>\r
1426 option).</p></div>\r
1427 </div>\r
1428 <div class="sect2">\r
1429 <h3 id="splash-xpm">7.12. I&#8217;m getting something like "Error: /usr/share/grml2usb/grub/splash.xpm.gz can not be read"!?</h3>\r
1430 <div class="paragraph"><p>Looks like you&#8217;ve only the grml2usb script itself available. Please make sure\r
1431 you&#8217;ve the grml2usb Debian package installed. The most resent stable version is\r
1432 available via <a href="http://deb.grml.org/">the grml-testing Debian repository</a>.  If\r
1433 you do not have a Debian system please see section <a href="#download">Where can I get grml2usb?</a> in this FAQ.</p></div>\r
1434 </div>\r
1435 <div class="sect2">\r
1436 <h3 id="fat16">7.13. Why do I have to use a FAT16/FAT32 filesystem?</h3>\r
1437 <div class="paragraph"><p>Syslinux (currently) does not support any other filesystems besides FAT16/FAT32\r
1438 (though that&#8217;s a sane default if you want to share your files with other\r
1439 (operating) systems). If you want to use a different filesystem (like ext2/3)\r
1440 use the bootloader grub instead using grml2usb&#8217;s <em>--grub</em> option.</p></div>\r
1441 <div class="admonitionblock">\r
1442 <table><tr>\r
1443 <td class="icon">\r
1444 <img src="./images/icons/note.png" alt="Note" />\r
1445 </td>\r
1446 <td class="content">FAT32 is supported since syslinux version 3.0.</td>\r
1447 </tr></table>\r
1448 </div>\r
1449 </div>\r
1450 <div class="sect2">\r
1451 <h3 id="hdt-hangs">7.14. Addons &#8594; Hardware Detection Tool freezes</h3>\r
1452 <div class="paragraph"><p>This usually means that the machine you ran grml2usb on had syslinux 3.x\r
1453 installed. The version of hdt (Hardware detection tool) shipping with Grml\r
1454 2010.12 and newer requires syslinux 4.x.</p></div>\r
1455 </div>\r
1456 <div class="sect2">\r
1457 <h3 id="cool-idea">7.15. I think I&#8217;ve got a really cool idea!</h3>\r
1458 <div class="paragraph"><p>Great! Please check out\r
1459 <a href="http://git.grml.org/?p=grml2usb.git;a=blob;f=TODO;hb=HEAD">the TODO file</a>.\r
1460 Feel free to <a href="#author">report your wishes to the author</a>. Patches highly\r
1461 appreciated.</p></div>\r
1462 </div>\r
1463 <div class="sect2">\r
1464 <h3 id="booting-from-usb">7.16. I&#8217;ve problems with booting from USB.</h3>\r
1465 <div class="paragraph"><p>Check out <a href="#troubleshooting">Troubleshooting and Pitfalls when booting</a>.</p></div>\r
1466 </div>\r
1467 <div class="sect2">\r
1468 <h3 id="found-a-bug">7.17. I&#8217;ve found a bug!</h3>\r
1469 <div class="paragraph"><p>Please <a href="#author">report it to the author</a>. Please provide usage examples and output\r
1470 of your grml2usb commandline (consider using the "--verbose" option).</p></div>\r
1471 </div>\r
1472 </div>\r
1473 </div>\r
1474 <div class="sect1">\r
1475 <h2 id="usage-examples">8. Usage examples</h2>\r
1476 <div class="sectionbody">\r
1477 <div class="literalblock">\r
1478 <div class="content">\r
1479 <pre><code># grml2usb /home/grml/grml_2013.01.iso /dev/sdX1</code></pre>\r
1480 </div></div>\r
1481 <div class="paragraph"><p>Install specified ISO on device /dev/sdX1.</p></div>\r
1482 <div class="literalblock">\r
1483 <div class="content">\r
1484 <pre><code># grml2usb /home/grml/grml_2013.01.iso /home/grml/grml_small_2013.01.iso /dev/sdX1</code></pre>\r
1485 </div></div>\r
1486 <div class="paragraph"><p>Install specified ISOs on device /dev/sdX1 for multibooting ISOs.</p></div>\r
1487 <div class="literalblock">\r
1488 <div class="content">\r
1489 <pre><code># grml2usb /lib/live/mount/medium /dev/sdX1</code></pre>\r
1490 </div></div>\r
1491 <div class="paragraph"><p>Install currently running Grml live system on device /dev/sdX1.</p></div>\r
1492 <div class="literalblock">\r
1493 <div class="content">\r
1494 <pre><code># grml2usb /lib/live/mount/medium /home/grml/grml_2013.01.iso /dev/sdX1</code></pre>\r
1495 </div></div>\r
1496 <div class="paragraph"><p>Install currently running Grml live system and the specified\r
1497 ISO on device /dev/sdX1 for multibooting.</p></div>\r
1498 <div class="literalblock">\r
1499 <div class="content">\r
1500 <pre><code># grml2usb --fat16 /home/grml/grml_2013.01.iso /dev/sdX1</code></pre>\r
1501 </div></div>\r
1502 <div class="paragraph"><p>Install specified ISO on device /dev/sdX1 and format partition /dev/sdX1 with\r
1503 FAT16 filesystem.</p></div>\r
1504 <div class="literalblock">\r
1505 <div class="content">\r
1506 <pre><code># grml2usb --grub --grub-mbr /home/grml/grml_2013.01.iso /dev/sdX1</code></pre>\r
1507 </div></div>\r
1508 <div class="paragraph"><p>Install specified ISO on device /dev/sdX1 and use grub as bootloader (instead of\r
1509 syslinux being the default) and install a master boot record (MBR) to the MBR of\r
1510 /dev/sdX.</p></div>\r
1511 <div class="literalblock">\r
1512 <div class="content">\r
1513 <pre><code># grml2usb --bootoptions="lang=de ssh=mysecret" grml_2013.01.iso /dev/sdX1\r
1514 # grml2usb --bootoptions="lang=de" --bootoptions="ssh=mysecret" grml_2013.01.iso /dev/sdX1</code></pre>\r
1515 </div></div>\r
1516 <div class="paragraph"><p>Install specified ISO on device /dev/sdX1 and use "lang=de ssh=mysecret" as\r
1517 default bootoptions.</p></div>\r
1518 <div class="literalblock">\r
1519 <div class="content">\r
1520 <pre><code># grml2usb --remove-bootoption="vga=791" --remove-bootoption="nomce" grml_2013.01.iso /dev/sdX1</code></pre>\r
1521 </div></div>\r
1522 <div class="paragraph"><p>Install specified ISO on device /dev/sdX1 remove vga=791 and nomce from existing bootoptions.</p></div>\r
1523 <div class="literalblock">\r
1524 <div class="content">\r
1525 <pre><code># grml2usb --bootoptions="persistent-path=%flavour_name" grml64_2010.04.iso grml_2010.04.iso /dev/sdX1</code></pre>\r
1526 </div></div>\r
1527 <div class="paragraph"><p>Install specified ISOs on device /dev/sdx and add parameter persistent-path\r
1528 to every menu entry. %flavour_name will be expanded to the flavour of the specific\r
1529 iso, e.g. grml64 and grml.</p></div>\r
1530 </div>\r
1531 </div>\r
1532 <div class="sect1">\r
1533 <h2 id="resources">9. Online Resources</h2>\r
1534 <div class="sectionbody">\r
1535 <div class="paragraph"><p>Check out the <a href="http://grml.org/grml2usb/">grml2usb webpage</a> and the\r
1536 <a href="http://git.grml.org/?p=grml2usb.git">grml2usb git repository</a>.</p></div>\r
1537 </div>\r
1538 </div>\r
1539 <div class="sect1">\r
1540 <h2 id="bugs">10. Bugs</h2>\r
1541 <div class="sectionbody">\r
1542 <div class="paragraph"><p>Please report feedback, bugreports and wishes <a href="#author">to the author</a>.</p></div>\r
1543 </div>\r
1544 </div>\r
1545 <div class="sect1">\r
1546 <h2 id="author">11. Author</h2>\r
1547 <div class="sectionbody">\r
1548 <div class="paragraph"><p>Michael Prokop &lt;<a href="mailto:mika@grml.org">mika@grml.org</a>&gt;</p></div>\r
1549 </div>\r
1550 </div>\r
1551 </div>\r
1552 <div id="footnotes"><hr /></div>\r
1553 <div id="footer">\r
1554 <div id="footer-text">\r
1555 Last updated\r
1556  2017-09-23 11:52:01 UTC\r
1557 </div>\r
1558 </div>\r
1559 </body>\r
1560 </html>\r