blob: 91b78df9d6c373842e43eb5b9624f58c9368e34a [file] [log] [blame]
Eric Park608ce5a2019-08-07 21:27:46 +08001
2
3
4
5<!doctype html>
6<html lang="en" class="no-js">
7 <head>
8
9 <meta charset="utf-8">
10 <meta name="viewport" content="width=device-width,initial-scale=1">
11 <meta http-equiv="x-ua-compatible" content="ie=edge">
12
13
14
15
16 <meta name="lang:clipboard.copy" content="Copy to clipboard">
17
18 <meta name="lang:clipboard.copied" content="Copied to clipboard">
19
20 <meta name="lang:search.language" content="en">
21
22 <meta name="lang:search.pipeline.stopwords" content="True">
23
24 <meta name="lang:search.pipeline.trimmer" content="True">
25
26 <meta name="lang:search.result.none" content="No matching documents">
27
28 <meta name="lang:search.result.one" content="1 matching document">
29
30 <meta name="lang:search.result.other" content="# matching documents">
31
32 <meta name="lang:search.tokenizer" content="[\s\-]+">
33
34 <link rel="shortcut icon" href="../../assets/images/favicon.png">
Eric Park45174ca2019-10-21 01:38:33 +080035 <meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.4.3">
Eric Park608ce5a2019-08-07 21:27:46 +080036
37
38
39 <title>Troubleshooting - Team Bliss</title>
40
41
42
Eric Park45174ca2019-10-21 01:38:33 +080043 <link rel="stylesheet" href="../../assets/stylesheets/application.30686662.css">
Eric Park608ce5a2019-08-07 21:27:46 +080044
45
46
47
48 <script src="../../assets/javascripts/modernizr.74668098.js"></script>
49
50
51
52 <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
53 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=fallback">
54 <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
55
56
57 <link rel="stylesheet" href="../../assets/fonts/material-icons.css">
58
59
60
61
62
63
64 </head>
65
66 <body dir="ltr">
67
68 <svg class="md-svg">
69 <defs>
70
71
72 </defs>
73 </svg>
74 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
75 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
76 <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
77
78 <a href="#troubleshooting" tabindex="1" class="md-skip">
79 Skip to content
80 </a>
81
82
83 <header class="md-header" data-md-component="header">
84 <nav class="md-header-nav md-grid">
85 <div class="md-flex">
86 <div class="md-flex__cell md-flex__cell--shrink">
87 <a href="../.." title="Team Bliss" class="md-header-nav__button md-logo">
88
89 <i class="md-icon"></i>
90
91 </a>
92 </div>
93 <div class="md-flex__cell md-flex__cell--shrink">
94 <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
95 </div>
96 <div class="md-flex__cell md-flex__cell--stretch">
97 <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
98
99 <span class="md-header-nav__topic">
100 Team Bliss
101 </span>
102 <span class="md-header-nav__topic">
103
104 Troubleshooting
105
106 </span>
107
108 </div>
109 </div>
110 <div class="md-flex__cell md-flex__cell--shrink">
111
112 <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
113
114<div class="md-search" data-md-component="search" role="dialog">
115 <label class="md-search__overlay" for="__search"></label>
116 <div class="md-search__inner" role="search">
117 <form class="md-search__form" name="search">
118 <input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
119 <label class="md-icon md-search__icon" for="__search"></label>
120 <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
121 &#xE5CD;
122 </button>
123 </form>
124 <div class="md-search__output">
125 <div class="md-search__scrollwrap" data-md-scrollfix>
126 <div class="md-search-result" data-md-component="result">
127 <div class="md-search-result__meta">
128 Type to start searching
129 </div>
130 <ol class="md-search-result__list"></ol>
131 </div>
132 </div>
133 </div>
134 </div>
135</div>
136
137 </div>
138
139 </div>
140 </nav>
141</header>
142
143 <div class="md-container">
144
145
146
147
Eric Park45174ca2019-10-21 01:38:33 +0800148 <main class="md-main" role="main">
Eric Park608ce5a2019-08-07 21:27:46 +0800149 <div class="md-main__inner md-grid" data-md-component="container">
150
151
152 <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
153 <div class="md-sidebar__scrollwrap">
154 <div class="md-sidebar__inner">
155 <nav class="md-nav md-nav--primary" data-md-level="0">
156 <label class="md-nav__title md-nav__title--site" for="__drawer">
157 <a href="../.." title="Team Bliss" class="md-nav__button md-logo">
158
159 <i class="md-icon"></i>
160
161 </a>
162 Team Bliss
163 </label>
164
165 <ul class="md-nav__list" data-md-scrollfix>
166
167
168
169
170
171
172 <li class="md-nav__item">
Eric Park5e3a1012019-08-12 13:17:03 +0800173 <a href="../.." title="Home" class="md-nav__link">
174 Home
Eric Park608ce5a2019-08-07 21:27:46 +0800175 </a>
176 </li>
177
178
179
180
181
182
183
184
185
186 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
187
188 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" checked>
189
190 <label class="md-nav__link" for="nav-2">
191 Bliss OS
192 </label>
193 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
194 <label class="md-nav__title" for="nav-2">
195 Bliss OS
196 </label>
197 <ul class="md-nav__list" data-md-scrollfix>
198
199
200
201
202
203
204
205 <li class="md-nav__item">
206 <a href="../" title="Index" class="md-nav__link">
207 Index
208 </a>
209 </li>
210
211
212
213
214
215
216
217 <li class="md-nav__item">
Eric Park5e3a1012019-08-12 13:17:03 +0800218 <a href="../build-guide/" title="Build Guide" class="md-nav__link">
219 Build Guide
220 </a>
221 </li>
222
223
224
225
226
227
228
229 <li class="md-nav__item">
Eric Park608ce5a2019-08-07 21:27:46 +0800230 <a href="../extras/" title="Extras" class="md-nav__link">
231 Extras
232 </a>
233 </li>
234
235
236
237
238
239
240
241 <li class="md-nav__item">
242 <a href="../installation-guide/" title="Installation Guide" class="md-nav__link">
243 Installation Guide
244 </a>
245 </li>
246
247
248
249
250
251
252
253
254
255 <li class="md-nav__item md-nav__item--active">
256
257 <input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
258
259
260
261
262 <label class="md-nav__link md-nav__link--active" for="__toc">
263 Troubleshooting
264 </label>
265
266 <a href="./" title="Troubleshooting" class="md-nav__link md-nav__link--active">
267 Troubleshooting
268 </a>
269
270
271<nav class="md-nav md-nav--secondary">
272
273
274
275
276
277 <label class="md-nav__title" for="__toc">Table of contents</label>
278 <ul class="md-nav__list" data-md-scrollfix>
279
280 <li class="md-nav__item">
Eric Park45174ca2019-10-21 01:38:33 +0800281 <a href="#32-bit-processors-only-intel-atom-and-similar" class="md-nav__link">
282 32-bit processors only (Intel Atom and similar)
283 </a>
284
285</li>
286
287 <li class="md-nav__item">
288 <a href="#grub2-kernel-parameters-and-options" class="md-nav__link">
Eric Park608ce5a2019-08-07 21:27:46 +0800289 grub2 kernel parameters and options
290 </a>
291
292</li>
293
294
295
296
297
298 </ul>
299
300</nav>
301
302 </li>
303
304
305 </ul>
306 </nav>
307 </li>
308
309
310
311
312
313
314
315 <li class="md-nav__item md-nav__item--nested">
316
317 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
318
319 <label class="md-nav__link" for="nav-3">
320 BlissRoms
321 </label>
322 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
323 <label class="md-nav__title" for="nav-3">
324 BlissRoms
325 </label>
326 <ul class="md-nav__list" data-md-scrollfix>
327
328
329
330
331
332
333
334 <li class="md-nav__item">
335 <a href="../../BlissRoms/" title="Index" class="md-nav__link">
336 Index
337 </a>
338 </li>
339
340
341
342
343
344
345
346 <li class="md-nav__item">
347 <a href="../../BlissRoms/build-guide/" title="Build Guide" class="md-nav__link">
348 Build Guide
349 </a>
350 </li>
351
352
353
354
355
356
357
358 <li class="md-nav__item">
359 <a href="../../BlissRoms/build-tips/" title="Build Tips" class="md-nav__link">
360 Build Tips
361 </a>
362 </li>
363
364
365 </ul>
366 </nav>
367 </li>
368
369
370
371
372
373
374
375 <li class="md-nav__item md-nav__item--nested">
376
377 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
378
379 <label class="md-nav__link" for="nav-4">
380 Common
381 </label>
382 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
383 <label class="md-nav__title" for="nav-4">
384 Common
385 </label>
386 <ul class="md-nav__list" data-md-scrollfix>
387
388
389
390
391
392
393
394 <li class="md-nav__item">
395 <a href="../../common/" title="Index" class="md-nav__link">
396 Index
397 </a>
398 </li>
399
400
401
402
403
404
405
406 <li class="md-nav__item">
407 <a href="../../common/git-started/" title="Git Started" class="md-nav__link">
408 Git Started
409 </a>
410 </li>
411
412
413
414
415
416
417
418 <li class="md-nav__item">
Eric Park8584eda2019-09-02 09:45:55 +0800419 <a href="../../common/maintaining-proper-authorship/" title="Maintaining proper authorship" class="md-nav__link">
420 Maintaining proper authorship
421 </a>
422 </li>
423
424
425
426
427
428
429
430 <li class="md-nav__item">
Eric Park608ce5a2019-08-07 21:27:46 +0800431 <a href="../../common/using-dippy-bird/" title="Using `dippy-bird`" class="md-nav__link">
432 Using `dippy-bird`
433 </a>
434 </li>
435
436
437 </ul>
438 </nav>
439 </li>
440
441
442
443
444
445
446
447 <li class="md-nav__item md-nav__item--nested">
448
449 <input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
450
451 <label class="md-nav__link" for="nav-5">
452 Infrastructure
453 </label>
454 <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
455 <label class="md-nav__title" for="nav-5">
456 Infrastructure
457 </label>
458 <ul class="md-nav__list" data-md-scrollfix>
459
460
461
462
463
464
465
466 <li class="md-nav__item">
467 <a href="../../infrastructure/" title="Index" class="md-nav__link">
468 Index
469 </a>
470 </li>
471
472
473 </ul>
474 </nav>
475 </li>
476
477
478 </ul>
479</nav>
480 </div>
481 </div>
482 </div>
483
484
485 <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
486 <div class="md-sidebar__scrollwrap">
487 <div class="md-sidebar__inner">
488
489<nav class="md-nav md-nav--secondary">
490
491
492
493
494
495 <label class="md-nav__title" for="__toc">Table of contents</label>
496 <ul class="md-nav__list" data-md-scrollfix>
497
498 <li class="md-nav__item">
Eric Park45174ca2019-10-21 01:38:33 +0800499 <a href="#32-bit-processors-only-intel-atom-and-similar" class="md-nav__link">
500 32-bit processors only (Intel Atom and similar)
501 </a>
502
503</li>
504
505 <li class="md-nav__item">
506 <a href="#grub2-kernel-parameters-and-options" class="md-nav__link">
Eric Park608ce5a2019-08-07 21:27:46 +0800507 grub2 kernel parameters and options
508 </a>
509
510</li>
511
512
513
514
515
516 </ul>
517
518</nav>
519 </div>
520 </div>
521 </div>
522
523
524 <div class="md-content">
525 <article class="md-content__inner md-typeset">
526
527
528
529 <h1 id="troubleshooting">Troubleshooting</h1>
Eric Park45174ca2019-10-21 01:38:33 +0800530<h2 id="32-bit-processors-only-intel-atom-and-similar">32-bit processors only (Intel Atom and similar)</h2>
531<ol>
Eric Parkfaec4202019-10-21 01:46:53 +0800532<li>Install <a href="https://www.android-x86.org/">Android-x86 32-bit OS from here</a> (doesn't matter which version, as long as it's 32-bit)</li>
Eric Park45174ca2019-10-21 01:38:33 +0800533<li>Update with Bliss OS 32-bit (current version is 11.9). After reboot you should be able to access the <code>grub</code> menu.</li>
534<li>In <code>grub</code> menu select "Debug mode"</li>
535<li>Run the following commands:
536 <pre><code>mount -o remount, rw /mnt
537cd /mnt/grub
Eric Parkfaec4202019-10-21 01:46:53 +0800538nano menu.lst</code></pre></li>
Eric Park4f3099f2019-10-21 08:56:15 +0800539<li>Add <code>nomodeset</code> before every <code>SCR=/bliss...</code> line. For example, your configuration should look something like this:
540 <pre><code>default=0
541timeout=6
542splashimage=/grub/android-x86.xpm.gz
543root (hd0,0)
544title Bliss-OS 11.7
545 kernel /bliss-x86-11.7/kernel quiet root=/dev/ram0 androidboot.selinux=permissive androidboot.hardware=android_x86 vmalloc=192M androidboot.hardware=android_x86_64 nomodeset SRC=/bliss-x86-11.7
546 initrd /bliss-x86-11.7/initrd.img
547title Bliss-OS 11.7 (Legacy modprobe mode)
548 kernel /bliss-x86-11.7/kernel root=/dev/ram0 androidboot.selinux=permissive androidboot.hardware=android_x86 vmalloc=192M androidboot.hardware=android_x86_64 AUTO_LOAD=old nomodeset SRC=/bliss-x86-11.7
549 initrd /bliss-x86-11.7/initrd.img
550title Bliss-OS 11.7 (Debug mode)
551 kernel /bliss-x86-11.7/kernel root=/dev/ram0 androidboot.selinux=permissive androidboot.hardware=android_x86 vmalloc=192M DEBUG=2 androidboot.hardware=android_x86_64 nomodeset SRC=/bliss-x86-11.7
552 initrd /bliss-x86-11.7/initrd.img
553title Bliss-OS 11.7 (Debug nomodeset)
554 kernel /bliss-x86-11.7/kernel nomodeset root=/dev/ram0 androidboot.selinux=permissive androidboot.hardware=android_x86 vmalloc=192M DEBUG=2 androidboot.hardware=android_x86_64 nomodeset SRC=/bliss-x86-11.7
555 initrd /bliss-x86-11.7/initrd.img
556title Bliss-OS 11.7 (Debug video=LVDS-1:d)
557 kernel /bliss-x86-11.7/kernel video=LVDS-1:d root=/dev/ram0 androidboot.selinux=permissive androidboot.hardware=android_x86 vmalloc=192M DEBUG=2 nomodeset SRC=/bliss-x86-11.7
558 initrd /bliss-x86-11.7/initrd.img</code></pre></li>
Eric Park45174ca2019-10-21 01:38:33 +0800559<li>Press Ctrl+O to save, and then Ctrl+X to close.</li>
560<li>Type <code>reboot -f</code></li>
561</ol>
562<p>You should be finished! If all goes well you will boot into Bliss OS on your 32-bit machine.</p>
Eric Park608ce5a2019-08-07 21:27:46 +0800563<h2 id="grub2-kernel-parameters-and-options"><code>grub2</code> kernel parameters and options</h2>
564<p><strong>You will want to pay attention here!</strong> With Bliss OS on the PC, we tend to use quite a few command line options to get things working right. We've gathered a few of them here to explain them a little bit.</p>
565<p><a href="https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt">A full list of available kernel parameters can be found here.</a></p>
566<p>Brief options overview:</p>
567<ul>
568<li><code>parameter</code>: Description</li>
569<li><code>root=</code>: Root filesystem.</li>
570<li><code>rootflags=</code>: Root filesystem mount options.</li>
571<li><code>initrd=</code>: Specify the location of the initial ramdisk.</li>
572<li><code>init=</code>: Run specified binary instead of <code>/sbin/init</code> (symlinked to <code>systemd</code> in Arch) as <code>init</code> process.</li>
573<li><code>init=/bin/sh</code>: Boot to shell.</li>
574<li><code>systemd.unit=</code>: Boot to a specified target.</li>
575<li><code>nomodeset</code>: Disable kernel mode setting (useful for fixing video driver panics) This will load mostly everything in software rendering/support mode. No hardware acceleration. Good for debugging. </li>
576<li><code>panic=</code>: Time before automatic reboot on kernel panic.</li>
577<li><code>debug</code>: Enable kernel debugging (events log level).</li>
578<li><code>mem=</code>: Force usage of a specific amount of memory to be used.</li>
579<li><code>maxcpus=</code>: Maximum number of processors that an SMP kernel will bring up during bootup.</li>
580<li><code>selinux=</code>: Disable or enable SELinux at boot time.</li>
581<li><code>netdev=</code>: Network devices parameters.</li>
582<li><code>video=&lt;videosetting&gt;</code>: Override framebuffer video defaults.</li>
583<li><code>sleep=1</code>: This will enable the system.prop value for <code>sleep.earlysuspend=1</code>, and on some machines, it enables the proper sleep state.</li>
584<li><code>acpi_sleep=s3_bios,s3_mode</code>: Sometimes needed for older machines to enter sleep mode properly</li>
585<li><code>SETUPWIZARD=0</code>: This command will skip SetupWizard on boot. (Only needs to be run once!)</li>
586<li><code>AUTO_LOAD=old</code>: This will load android-x86 variants using the old <code>modprobe</code> method to init devices. We sometimes use this to debug devices not starting. </li>
587<li><code>DEBUG=1 &amp; DEBUG=2</code>: These enable verbose console debugging, giving another command shell after loading kernel modules, but before Android <code>init</code></li>
588<li><code>vga=xxx &amp; video=</code>: These are the common video modes that you can boot into if it doesn't pick the best choice automagically. You can also use <code>video=</code> as resolution parameters: <code>video=LVDS-1:d video=1366x800</code>. <a href="https://groups.google.com/forum/#!msg/android-x86/jSF3RnADnqA/1sfYdGV_AQAJ">Learn more from our own Henri Koivuneva!</a></li>
589<li><code>HWACCELL=1</code>: This will disable graphics hardware acceleration, enabling rendering through Swiftshader. (Must use this if running headless)</li>
590<li><code>buildvariant=eng, user, userdebug</code>: This is the commandline parameter to run the current build as <code>eng</code>, <code>userdebug</code>, or <code>user</code> </li>
591<li><code>DPI=xxx</code>: This will manually set the DPI on init. Use this if things are too big/small for you.</li>
592<li><code>fbcon=variablename</code>: This is to configure framebuffer to use various options. Usually used to help fix video settings, etc. Even default rotation on some Atom tablets. Example: <code>video=efifb fbcon=rotate:1</code></li>
Eric Park5ae1c6c2019-08-21 11:08:22 -0700593<li><code>VULKAN=1</code>: Required for Vulkan-supported chipsets. This enables <code>hwcomposer</code> to work right with screenshots and other things.</li>
Eric Park608ce5a2019-08-07 21:27:46 +0800594</ul>
595<p>As an example, here are a few of the boot options used in testing:</p>
596<pre><code>menuentry 'Bliss-x86 Test-Oreo' --class bliss {
597 search --file --no-floppy --set=root /AndroidOS/android.boot
598 linux /AndroidOS/kernel root=/dev/ram0 SRC=/AndroidOS androidboot.selinux=permissive androidboot.hardware=android_x86_64 buildvariant=eng quiet sleep.earlysuspend=2 DATA=
599 initrd /AndroidOS/initrd.img
600}
601
602menuentry 'Bliss-x86 Test-Oreo AUTO_LOAD=old' --class bliss {
603 search --file --no-floppy --set=root /AndroidOS/android.boot
604 linux /AndroidOS/kernel root=/dev/ram0 SRC=/AndroidOS androidboot.selinux=permissive androidboot.hardware=android_x86_64 buildvariant=eng quiet DATA= AUTO_LOAD=old
605 initrd /AndroidOS/initrd.img
606}
607
608menuentry 'Bliss-x86 Test-Oreo - SETUP_WIZARD=0' --class bliss {
609 search --file --no-floppy --set=root /AndroidOS/android.boot
610 linux /AndroidOS/kernel root=/dev/ram0 SRC=/AndroidOS androidboot.selinux=permissive buildvariant=eng SETUPWIZARD=0 quiet DATA=
611 initrd /AndroidOS/initrd.img
612}
613
614menuentry 'Bliss-x86 Test-Oreo - debug=1' --class bliss {
615 search --file --no-floppy --set=root /AndroidOS/android.boot
616 linux /AndroidOS/kernel root=/dev/ram0 SRC=/AndroidOS androidboot.selinux=permissive androidboot.hardware=android_x86_64 buildvariant=eng SETUPWIZARD=0 quiet DATA= DEBUG=1
617 initrd /AndroidOS/initrd.img
618}
619
620menuentry 'Bliss-x86 Test-Oreo - debug=2' --class bliss {
621 search --file --no-floppy --set=root /AndroidOS/android.boot
622 linux /AndroidOS/kernel root=/dev/ram0 SRC=/AndroidOS androidboot.selinux=permissive androidboot.hardware=android_x86_64 buildvariant=eng SETUPWIZARD=0 quiet DATA= DEBUG=2
623 initrd /AndroidOS/initrd.img
624}
625</code></pre>
626
627
628
629
630
631
632
633
634
635 </article>
636 </div>
637 </div>
638 </main>
639
640
641<footer class="md-footer">
642
643 <div class="md-footer-nav">
644 <nav class="md-footer-nav__inner md-grid">
645
646 <a href="../installation-guide/" title="Installation Guide" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
647 <div class="md-flex__cell md-flex__cell--shrink">
648 <i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
649 </div>
650 <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
651 <span class="md-flex__ellipsis">
652 <span class="md-footer-nav__direction">
653 Previous
654 </span>
655 Installation Guide
656 </span>
657 </div>
658 </a>
659
660
661 <a href="../../BlissRoms/" title="Index" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
662 <div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
663 <span class="md-flex__ellipsis">
664 <span class="md-footer-nav__direction">
665 Next
666 </span>
667 Index
668 </span>
669 </div>
670 <div class="md-flex__cell md-flex__cell--shrink">
671 <i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
672 </div>
673 </a>
674
675 </nav>
676 </div>
677
678 <div class="md-footer-meta md-typeset">
679 <div class="md-footer-meta__inner md-grid">
680 <div class="md-footer-copyright">
681
682 powered by
683 <a href="https://www.mkdocs.org">MkDocs</a>
684 and
685 <a href="https://squidfunk.github.io/mkdocs-material/">
686 Material for MkDocs</a>
687 </div>
688
689 </div>
690 </div>
691</footer>
692
693 </div>
694
Eric Park45174ca2019-10-21 01:38:33 +0800695 <script src="../../assets/javascripts/application.ac79c3b0.js"></script>
Eric Park608ce5a2019-08-07 21:27:46 +0800696
697 <script>app.initialize({version:"1.0.4",url:{base:"../.."}})</script>
698
699
700 </body>
701</html>