4 Commits

179 changed files with 46775 additions and 1429 deletions
Split View
  1. +7
    -0
      docs/css/extra.css
  2. BIN
      docs/images/als-icon.png
  3. +3
    -0
      docs/images/usb/.directory
  4. BIN
      docs/images/usb/boot-device.jpg
  5. BIN
      docs/images/usb/disappointed-gnu.png
  6. +4
    -0
      docs/images/usb/icons/.directory
  7. BIN
      docs/images/usb/icons/alpine.png
  8. BIN
      docs/images/usb/icons/debian.png
  9. BIN
      docs/images/usb/icons/devuan.png
  10. BIN
      docs/images/usb/icons/fedora.png
  11. BIN
      docs/images/usb/icons/guix.png
  12. BIN
      docs/images/usb/icons/haiku.png
  13. BIN
      docs/images/usb/icons/libreelec.png
  14. BIN
      docs/images/usb/icons/manjaro.png
  15. BIN
      docs/images/usb/icons/netboot.png
  16. BIN
      docs/images/usb/icons/openmediavault.png
  17. BIN
      docs/images/usb/icons/openwrt.png
  18. BIN
      docs/images/usb/icons/proxmox.png
  19. BIN
      docs/images/usb/icons/qubes.png
  20. BIN
      docs/images/usb/icons/raspios.png
  21. BIN
      docs/images/usb/icons/systemrescue.png
  22. BIN
      docs/images/usb/icons/tails.png
  23. BIN
      docs/images/usb/icons/trisquel.png
  24. BIN
      docs/images/usb/icons/ubuntu.png
  25. BIN
      docs/images/usb/icons/ventoy.png
  26. BIN
      docs/images/usb/models.png
  27. BIN
      docs/images/usb/screenshots/alpine.png
  28. BIN
      docs/images/usb/screenshots/debian.png
  29. BIN
      docs/images/usb/screenshots/devuan.png
  30. BIN
      docs/images/usb/screenshots/fedora.png
  31. BIN
      docs/images/usb/screenshots/guix.png
  32. BIN
      docs/images/usb/screenshots/haiku-boot.png
  33. BIN
      docs/images/usb/screenshots/haiku.png
  34. BIN
      docs/images/usb/screenshots/manjaro.png
  35. BIN
      docs/images/usb/screenshots/netboot.png
  36. BIN
      docs/images/usb/screenshots/openmediavault.png
  37. BIN
      docs/images/usb/screenshots/proxmox.png
  38. BIN
      docs/images/usb/screenshots/qubes.png
  39. BIN
      docs/images/usb/screenshots/rpi-imager-2.png
  40. BIN
      docs/images/usb/screenshots/rpi-imager.png
  41. BIN
      docs/images/usb/screenshots/systemrescue.png
  42. BIN
      docs/images/usb/screenshots/tails.png
  43. BIN
      docs/images/usb/screenshots/trisquel.png
  44. BIN
      docs/images/usb/screenshots/ubuntu.png
  45. BIN
      docs/images/usb/screenshots/ungoogled-chromium.png
  46. BIN
      docs/images/usb/tall.jpg
  47. BIN
      docs/images/usb/usb-models-small.png
  48. +7501
    -0
      docs/images/usb/usb.svg
  49. BIN
      docs/images/usb/xbill.gif
  50. +10
    -0
      docs/usb/advanced.md
  51. +108
    -0
      docs/usb/faqs.md
  52. +541
    -3
      docs/usb/index.md
  53. +77
    -0
      docs/usb/internals.md
  54. +0
    -0
      docs/usb/start.md
  55. +0
    -0
      docs/usb/troubleshooting.md
  56. +73
    -0
      docs/usb/update.md
  57. +108
    -0
      docs/usb/use.md
  58. +12
    -12
      mkdocs.yml
  59. +504
    -124
      site/404.html
  60. +29
    -0
      site/assets/javascripts/bundle.01de222e.min.js
  61. +8
    -0
      site/assets/javascripts/bundle.01de222e.min.js.map
  62. +0
    -2
      site/assets/javascripts/bundle.83e5331e.min.js
  63. +0
    -1
      site/assets/javascripts/bundle.83e5331e.min.js.map
  64. +1
    -0
      site/assets/javascripts/lunr/min/lunr.hi.min.js
  65. +1
    -0
      site/assets/javascripts/lunr/min/lunr.th.min.js
  66. +1
    -0
      site/assets/javascripts/lunr/min/lunr.zh.min.js
  67. +206
    -0
      site/assets/javascripts/lunr/tinyseg.js
  68. +0
    -1
      site/assets/javascripts/lunr/tinyseg.min.js
  69. +6708
    -0
      site/assets/javascripts/lunr/wordcut.js
  70. +0
    -16
      site/assets/javascripts/vendor.93c04032.min.js
  71. +0
    -1
      site/assets/javascripts/vendor.93c04032.min.js.map
  72. +0
    -59
      site/assets/javascripts/worker/search.8c7e0a7e.min.js
  73. +0
    -1
      site/assets/javascripts/worker/search.8c7e0a7e.min.js.map
  74. +48
    -0
      site/assets/javascripts/workers/search.22074ed6.min.js
  75. +8
    -0
      site/assets/javascripts/workers/search.22074ed6.min.js.map
  76. +0
    -3
      site/assets/stylesheets/main.15aa0b43.min.css
  77. +0
    -1
      site/assets/stylesheets/main.15aa0b43.min.css.map
  78. +15
    -0
      site/assets/stylesheets/main.cd566b2a.min.css
  79. +1
    -0
      site/assets/stylesheets/main.cd566b2a.min.css.map
  80. +0
    -3
      site/assets/stylesheets/palette.75751829.min.css
  81. +0
    -1
      site/assets/stylesheets/palette.75751829.min.css.map
  82. +1
    -0
      site/assets/stylesheets/palette.e6a45f82.min.css
  83. +1
    -0
      site/assets/stylesheets/palette.e6a45f82.min.css.map
  84. +17
    -0
      site/css/extra.css
  85. BIN
      site/images/als-icon.png
  86. BIN
      site/images/phones/calyxos.png
  87. BIN
      site/images/phones/carbonrom.png
  88. BIN
      site/images/phones/fdroid.png
  89. BIN
      site/images/phones/fediverse.png
  90. BIN
      site/images/phones/liberated.png
  91. BIN
      site/images/phones/lineageos.png
  92. BIN
      site/images/phones/lp002-1.jpg
  93. BIN
      site/images/phones/lpa2.jpg
  94. BIN
      site/images/phones/ubports.png
  95. BIN
      site/images/routers/features.png
  96. BIN
      site/images/routers/free-network.png
  97. BIN
      site/images/routers/lra7.png
  98. BIN
      site/images/routers/openwrt-logo-usage-guidelines.pdf
  99. BIN
      site/images/routers/openwrt.png
  100. BIN
      site/images/routers/screenshot.png

+ 7
- 0
docs/css/extra.css View File

@ -108,3 +108,10 @@ figure figcaption {
text-align: center;
}
.md-icon, .md-source__repository {
color: #ffffff;
}
.admonition p {
font-size: 120%;
}

BIN
docs/images/als-icon.png View File

Before After
Width: 155  |  Height: 155  |  Size: 11 KiB

+ 3
- 0
docs/images/usb/.directory View File

@ -0,0 +1,3 @@
[Dolphin]
Timestamp=2022,1,15,10,56,58.357
Version=4

BIN
docs/images/usb/boot-device.jpg View File

Before After
Width: 800  |  Height: 150  |  Size: 34 KiB

BIN
docs/images/usb/disappointed-gnu.png View File

Before After
Width: 301  |  Height: 400  |  Size: 25 KiB

+ 4
- 0
docs/images/usb/icons/.directory View File

@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2022,1,15,16,30,49.988
Version=4
ViewMode=1

BIN
docs/images/usb/icons/alpine.png View File

Before After
Width: 200  |  Height: 48  |  Size: 6.4 KiB

BIN
docs/images/usb/icons/debian.png View File

Before After
Width: 113  |  Height: 150  |  Size: 8.8 KiB

BIN
docs/images/usb/icons/devuan.png View File

Before After
Width: 150  |  Height: 38  |  Size: 2.0 KiB

BIN
docs/images/usb/icons/fedora.png View File

Before After
Width: 150  |  Height: 150  |  Size: 8.1 KiB

BIN
docs/images/usb/icons/guix.png View File

Before After
Width: 150  |  Height: 150  |  Size: 6.6 KiB

BIN
docs/images/usb/icons/haiku.png View File

Before After
Width: 150  |  Height: 31  |  Size: 4.2 KiB

BIN
docs/images/usb/icons/libreelec.png View File

Before After
Width: 150  |  Height: 160  |  Size: 19 KiB

BIN
docs/images/usb/icons/manjaro.png View File

Before After
Width: 150  |  Height: 34  |  Size: 2.9 KiB

BIN
docs/images/usb/icons/netboot.png View File

Before After
Width: 200  |  Height: 66  |  Size: 3.5 KiB

BIN
docs/images/usb/icons/openmediavault.png View File

Before After
Width: 376  |  Height: 58  |  Size: 14 KiB

BIN
docs/images/usb/icons/openwrt.png View File

Before After
Width: 150  |  Height: 120  |  Size: 11 KiB

BIN
docs/images/usb/icons/proxmox.png View File

Before After
Width: 150  |  Height: 142  |  Size: 6.0 KiB

BIN
docs/images/usb/icons/qubes.png View File

Before After
Width: 150  |  Height: 150  |  Size: 7.6 KiB

BIN
docs/images/usb/icons/raspios.png View File

Before After
Width: 200  |  Height: 66  |  Size: 8.7 KiB

BIN
docs/images/usb/icons/systemrescue.png View File

Before After
Width: 135  |  Height: 135  |  Size: 14 KiB

BIN
docs/images/usb/icons/tails.png View File

Before After
Width: 200  |  Height: 74  |  Size: 11 KiB

BIN
docs/images/usb/icons/trisquel.png View File

Before After
Width: 150  |  Height: 150  |  Size: 22 KiB

BIN
docs/images/usb/icons/ubuntu.png View File

Before After
Width: 200  |  Height: 159  |  Size: 12 KiB

BIN
docs/images/usb/icons/ventoy.png View File

Before After
Width: 72  |  Height: 72  |  Size: 9.1 KiB

BIN
docs/images/usb/models.png View File

Before After
Width: 805  |  Height: 269  |  Size: 424 KiB

BIN
docs/images/usb/screenshots/alpine.png View File

Before After
Width: 1132  |  Height: 912  |  Size: 40 KiB

BIN
docs/images/usb/screenshots/debian.png View File

Before After
Width: 748  |  Height: 624  |  Size: 38 KiB

BIN
docs/images/usb/screenshots/devuan.png View File

Before After
Width: 748  |  Height: 624  |  Size: 23 KiB

BIN
docs/images/usb/screenshots/fedora.png View File

Before After
Width: 748  |  Height: 624  |  Size: 17 KiB

BIN
docs/images/usb/screenshots/guix.png View File

Before After
Width: 908  |  Height: 744  |  Size: 98 KiB

BIN
docs/images/usb/screenshots/haiku-boot.png View File

Before After
Width: 273  |  Height: 153  |  Size: 15 KiB

BIN
docs/images/usb/screenshots/haiku.png View File

Before After
Width: 474  |  Height: 364  |  Size: 45 KiB

BIN
docs/images/usb/screenshots/manjaro.png View File

Before After
Width: 1132  |  Height: 912  |  Size: 96 KiB

BIN
docs/images/usb/screenshots/netboot.png View File

Before After
Width: 828  |  Height: 544  |  Size: 20 KiB

BIN
docs/images/usb/screenshots/openmediavault.png View File

Before After
Width: 748  |  Height: 624  |  Size: 33 KiB

BIN
docs/images/usb/screenshots/proxmox.png View File

Before After
Width: 1132  |  Height: 912  |  Size: 84 KiB

BIN
docs/images/usb/screenshots/qubes.png View File

Before After
Width: 748  |  Height: 624  |  Size: 45 KiB

BIN
docs/images/usb/screenshots/rpi-imager-2.png View File

Before After
Width: 788  |  Height: 564  |  Size: 80 KiB

BIN
docs/images/usb/screenshots/rpi-imager.png View File

Before After
Width: 788  |  Height: 564  |  Size: 39 KiB

BIN
docs/images/usb/screenshots/systemrescue.png View File

Before After
Width: 748  |  Height: 624  |  Size: 23 KiB

BIN
docs/images/usb/screenshots/tails.png View File

Before After
Width: 1132  |  Height: 912  |  Size: 54 KiB

BIN
docs/images/usb/screenshots/trisquel.png View File

Before After
Width: 748  |  Height: 624  |  Size: 330 KiB

BIN
docs/images/usb/screenshots/ubuntu.png View File

Before After
Width: 748  |  Height: 624  |  Size: 22 KiB

BIN
docs/images/usb/screenshots/ungoogled-chromium.png View File

Before After
Width: 568  |  Height: 179  |  Size: 11 KiB

BIN
docs/images/usb/tall.jpg View File

Before After
Width: 2086  |  Height: 3680  |  Size: 1.6 MiB

BIN
docs/images/usb/usb-models-small.png View File

Before After
Width: 300  |  Height: 100  |  Size: 62 KiB

+ 7501
- 0
docs/images/usb/usb.svg
File diff suppressed because it is too large
View File


BIN
docs/images/usb/xbill.gif View File

Before After
Width: 510  |  Height: 578  |  Size: 50 KiB

+ 10
- 0
docs/usb/advanced.md View File

@ -0,0 +1,10 @@
# Advanced Usage
## Booting from another disk after booting with the MH-USB
## Customising boot parameters for an OS
## Accessing the Grub2 command-line
## Booting Haiku

+ 108
- 0
docs/usb/faqs.md View File

@ -0,0 +1,108 @@
# Troubleshooting & FAQs
## Boot Issues
### Help! The MH-USB won't boot!
First don't panic! :)
Try out the following steps:
1. If you insert the USB disk into a computer, does it show up?
A quick way to test this out on a GNU/Linux system would be to run `lsblk`
or check `dmesg`.
2. If the USB does not get detected, then it could either be an issue with
your USB disk. (Or, at times, the USB port / hub.) See if it gets detected
in other computers. Or change the USB port. Or try to use it without a USB
hub (if you're using one).
Still nothing? Do write in to us at <guide@mostlyharmless.io> with
"MH-USB" somewhere in the email subject and we'll help you out.
The [MH-USB discussion forum](https://ask.libre.support/c/usb/) is another
option.
3. If it does get detected, then try to mount the partition called "MH-USB".
It should get mounted just fine on any OS. If you're able to mount this
filesystem, check its contents.
4. If the contents are okay and readable, then its probably a Grub2 issue.
Unless you want to debug it and learn about Grub and Ventoy in this
process, that one option.
Otherwise, a simple solution might be to just
backup the contents of the USB disk and re-install the MH-USB software
using the scripts included with the source code.
### I'm unable to boot operating system X!
That could happen due to multiple reasons:
1. Its possible that the OS image on the disk has errors in it. The easiest
way to verify that is to calculate and verify its checksum.
2. When using SeaBIOS with Coreboot, it possible that the OS image might not
be able to initialise graphics mode and show its internal boot menu. Try
pressing the ++tab++ key twice to show boot options.
3. Does Ventoy include support for that operating system? The list of
supported (ie. tested out) operating systems is available here:
<https://www.ventoy.net/en/isolist.html>
If you still face problems, please do post on the [MH-USB discussion
forum](https://ask.libre.support/c/usb/) so that we can try to debug it
together.
### I formatted the disk by mistake and now it won't boot!
You can easily recreate the MH-USB on the USB disk (or, for that matter, any
USB disk out there!) by using the scripts provided with the source code.
## MH-USB Questions
### Can I use it as a portable storage device?
Yes - Sure. The reason the MH-USB partition is formatted as exFAT is so that
its possible to detect and use it on all operating systems. You can store any
data on it and use it to transfer files.
!!! warning
It is not safe to store important or private or sensitive data on a
portable USB disk. Please be careful. Consider encrypting the storage disk
if you need to secure the data stored on it.
### Does the MH-USB require upgrades?
Not really. The MH-USB is basically a Grub2 bootable disk which in turn loads
and boots up operating system images. In case there is a specific bug that
stops it from working, there isn't any real reason to upgrade Venoty/Grub.
However, if you are interested in contributing to the development effort or
further customising the MH-USB - that's a good reason to upgrade / update its
configuration.
### The MH-USB is slow!
Check the [performance benchmarks](/usb/internals/#dd-read-test) for the USB2
model. Try to replicate them and see if your results come close to it. That
would indicate a limit of the USB disk's performance.
If you have a USB3 disk and connecting it to a USB2 port, that might result in
slower transfer speeds as well. Do check that out.
### I really like the 3D printed disk. How do I customise its looks?
Yes sure! By all means. The source code for the 3D printed enclosure is
included within the MH-USB source code.
If you need help with design, production, customisation or distribution, please
feel free to reach out.
### Can you send me a USB disk with the OS images I need?
MH-USB variants with custom images would require too much effort - unless what
you have is a volume requirement (ie. at least 100 units). You can make your
own custom USB disk very easily by adding the OS images of your choice and
customising the Grub2 theme.

+ 541
- 3
docs/usb/index.md View File

@ -1,11 +1,549 @@
# The Mostly Harmless USB disk
<figure style="margin:0">
<img src="/images/usb/top.png" width="540" align="left" />
<figcaption>
<figure style="display: table;">
<img src="/images/usb/top.png" width="400">
<figcaption style="display: table-caption; caption-side: bottom;
margin-top: 1em;">
The answer to the ultimate free software problem:
"How do I liberate or fix a computer when I don't always have a bootable USB disk handy?"
</figcaption>
</figure>
Details and rationale for the MH-USB: <https://mostlyharmless.io/usb/>
## Screen-share of the MH-USB
<figure>
<iframe width="560" height="315" sandbox="allow-same-origin
allow-scripts allow-popups" title="The Mostly Harmless USB Disk - Demo"
src="https://sovran.video/videos/embed/5f1c871e-d76b-4d26-bcfa-804de1c6fdcb?title=0&warningTitle=0"
frameborder="0" allowfullscreen></iframe>
</figure>
## Powered by [Ventoy](https://ventoy.net)
The main component of the MH-USB disk is the Ventoy bootloader - derived from Grub2.
<figure style="text-align: center">
<a href="https://ventoy.net">
<img src="/images/usb/icons/ventoy.png"> Ventoy
</a>
</figure>
- Website: <https://ventoy.net>
- Source code: <https://github.com/ventoy/Ventoy>
- Documentation: <https://ventoy.net/en/doc_start.html>
- License: **GPLv3+** - <https://ventoy.net/en/doc_license.html>
## Operating Systems
By default, the following operating systems are available for live boot or
installation:
<hr>
### Alpine
<figure>
<img alt="image" src="/images/usb/icons/alpine.png">
</figure>
!!! tldr "About"
Alpine Linux is a security-oriented, lightweight Linux distribution
based on musl libc and busybox.
Alpine Linux is an independent, non-commercial, general purpose
Linux distribution designed for power users who appreciate security,
simplicity and resource efficiency.
<figure>
<img alt="image" src="/images/usb/screenshots/alpine.png">
</figure>
- Website: <https://www.alpinelinux.org/>
- OS Image:
<https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-standard-3.15.0-x86_64.iso>
- Path on USB: `/OS/alpine-standard-3.15.0-x86_64.iso`
- Type: **Live + Installer**
<hr>
### Debian GNU/Linux
<figure>
<img alt="image" src="/images/usb/icons/debian.png">
</figure>
!!! tlr "About"
Debian is a complete Free Operating System! Also known as Debian
GNU/Linux, it is a GNU/Linux distribution composed of free and
open-source software.
<figure>
<img alt="image" src="/images/usb/screenshots/debian.png">
</figure>
- Website: <https://www.debian.org>
- OS Image:
<https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-11.2.0-amd64-cinnamon.iso>
- Path on USB: `/OS/debian-live-11.2.0-amd64-cinnamon.iso`
- Type: **Live + Installer**
<hr>
### Devuan GNU+Linux
<figure>
<img alt="image" src="/images/usb/icons/devuan.png">
</figure>
!!! tldr "About"
Devuan GNU+Linux is a fork of Debian without systemd that allows
users to reclaim control over their system by avoiding unnecessary
entanglements and ensuring Init Freedom.
<figure>
<img alt="image" src="/images/usb/screenshots/devuan.png">
</figure>
- Website: <https://www.devuan.org>
- OS Image:
<https://mirror.ungleich.ch/mirror/devuan/devuan_chimaera/desktop-live/devuan_chimaera_4.0.0_amd64_desktop-live.iso>
- Path on USB: `/OS/devuan_chimaera_4.0.0_amd64_desktop-live.iso`
- Type: **Live + Installer**
<hr>
### Fedora
<figure>
<img alt="image" src="/images/usb/icons/fedora.png">
</figure>
!!! tldr "About"
Fedora Workstation is a polished, easy to use operating system for
laptop and desktop computers, with a complete set of tools for
developers and makers of all kinds.
<figure>
<img alt="image" src="/images/usb/screenshots/fedora.png">
</figure>
- Website: <https://www.getfedora.org>
- OS Image: <https://download.fedoraproject.org/pub/fedora/linux/releases/35/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-35-1.2.iso>
- Path on USB: `/OS/Fedora-Workstation-Live-x86_64-35-1.2.iso`
- Type: **Live + Installer**
<hr>
### GNU Guix
<figure>
<img alt="image" src="/images/usb/icons/guix.png">
</figure>
!!! tldr "About"
Guix is an advanced distribution of the GNU operating system
developed by the GNU Project—which respects the freedom of computer
users.
Guix supports transactional upgrades and roll-backs,
unprivileged package management, and more. When used as a standalone
distribution, Guix supports declarative system configuration for
transparent and reproducible operating systems.
<figure>
<img alt="image" src="/images/usb/screenshots/guix.png">
</figure>
- Website: <https://guix.gnu.org>
- OS Image:
<https://ftp.gnu.org/gnu/guix/guix-system-install-1.3.0.x86_64-linux.iso>
- Path on USB: `/OS/guix-system-install-1.3.0.x86_64-linux.iso`
- Type: **Live + Installer**
<hr>
### Haiku
<figure>
> <img alt="image" src="/images/usb/screenshots/haiku-boot.png">
</figure>
!!! tldr "About"
Haiku is an open-source operating system that specifically targets
personal computing. Inspired by the BeOS, Haiku is fast, simple to use,
easy to learn and yet very powerful.
Specifically targeting personal computing, Haiku is a fast, efficient,
simple to use, easy to learn, and yet very powerful system for computer
users of all levels.
Additionally, Haiku offers something over other
open source platforms which is quite unique: The project consists of a
single team writing everything from the kernel, drivers, userland
services, tool kit, and graphics stack to the included desktop
applications and preflets.
<figure>
<img alt="image" src="/images/usb/screenshots/haiku.png">
</figure>
- Website: <https://www.haiku-os.org/>
- OS Image:
<https://cdn.haiku-os.org/haiku-release/r1beta3/haiku-r1beta3-x86_64-anyboot.iso>
- Path on USB: `/OS/haiku-r1beta3-x86_64-anyboot.iso`
- Type: **Live + Installer**
<hr>
### LibreELEC
<figure>
<img alt="image" src="/images/usb/icons/libreelec.png">
</figure>
!!! tldr "About"
LibreELEC is a lightweight ‘Just enough OS’ Linux distribution
purpose-built for Kodi on current and popular mediacentre hardware.
Kodi is a media center and entertainment hub that brings all your
digital media together into a beautiful and user friendly package. It is
100% free and open source, very customisable and runs on a wide variety
of devices. It is supported by a dedicated team of volunteers and a huge
community.
- Website: <https://libreelec.tv/>
- OS Image:
<https://releases.libreelec.tv/LibreELEC-Generic.x86_64-10.0.1.img.gz>
- Path on USB: `/OS/LibreELEC-Generic.x86_64-10.0.1.img`
- Type: **Live + Installer**
<hr>
### Manjaro
<figure>
<img alt="image" src="/images/usb/icons/manjaro.png">
</figure>
!!! tldr "About"
Manjaro is a user-friendly Linux distribution based on the
independently developed Arch operating system. Within the Linux
community, Arch itself is renowned for being an exceptionally fast,
powerful, and lightweight distribution that provides access to the very
latest cutting edge - and bleeding edge - software.
Developed in Austria, France, and Germany, Manjaro provides all the
benefits of the Arch operating system combined with a focus on
user-friendliness and accessibility. Manjaro follows Archlinux and
officially only offers a 64 bit version. Manjaro is suitable for
newcomers as well as experienced Linux users.
<figure>
<img alt="image" src="/images/usb/screenshots/manjaro.png">
</figure>
- Website: <https://manjaro.org/>
- OS Image:
<https://download.manjaro.org/kde/21.2.1/manjaro-kde-21.2.1-220103-linux515.iso>
- Path on USB: `/OS/manjaro-kde-21.2.1-220103-linux515.iso`
- Type: **Live + Installer**
<hr>
### netboot.xyz
<figure>
<img alt="image" src="/images/usb/icons/netboot.png">
</figure>
!!! tldr "About"
netboot.xyz lets you PXE boot various operating system installers or
utilities from a single tool over the network. This lets you use one
media for many types of operating systems or tools. The iPXE project is
used to provide a user friendly menu from within the BIOS that lets you
easily choose the operating system you want along with any specific
types of versions or bootable flags.
You can remote attach the ISO to servers, set it up as a rescue option
in Grub, or even set up your home network to boot to it by default so
that it's always available.
<figure>
<img alt="image" src="/images/usb/screenshots/netboot.png">
</figure>
- Website: <https://netboot.xyz>
- OS Image: <https://boot.netboot.xyz/ipxe/netboot.xyz.iso>
- Path on USB: `/OS/netboot.xyz.iso`
- Type: **Live + Installer**
<hr>
### Open Media Vault
<figure>
<img alt="image" src="/images/usb/icons/openmediavault.png" width="250px">
</figure>
!!! tldr "About"
openmediavault is the next generation network attached storage (NAS)
solution based on Debian Linux. It contains services like SSH, (S)FTP,
SMB/CIFS, DAAP media server, RSync, BitTorrent client and many more.
Thanks to the modular design of the framework it can be enhanced via
plugins.
<figure>
<img alt="image" src="/images/usb/screenshots/openmediavault.png">
</figure>
- Website: <https://www.openmediavault.org/>
- OS Image:
<https://sourceforge.net/projects/openmediavault/files/5.6.13/openmediavault_5.6.13-amd64.iso>
- Path on USB: `/OS/openmediavault_5.6.13-amd64.iso`
- Type: **Installer**
<hr>
### OpenWRT
<figure>
<img alt="image" src="/images/usb/icons/openwrt.png">
</figure>
!!! tldr "About"
The OpenWrt Project is a Linux operating system targeting embedded
devices. Instead of trying to create a single, static firmware, OpenWrt
provides a fully writable filesystem with package management. This frees
you from the application selection and configuration provided by the
vendor and allows you to customize the device through the use of
packages to suit any application.
<figure>
<img alt="image" src="/images/usb/screenshots/openwrt.png">
</figure>
- Website: <https://openwrt.org/>
- OS Image:
<https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-ext4-combined.img.gz>
- Path on USB: `/OS/openwrt-21.02.0-x86-64-generic-ext4-combined.img`
- Type: **Live + Installer**
<hr>
### Proxmox VE
<figure>
<img alt="image" src="/images/usb/icons/proxmox.png">
</figure>
!!! tldr "About"
Proxmox VE is a complete, open-source server management platform for
enterprise virtualization. It tightly integrates the KVM hypervisor and
Linux Containers (LXC), software-defined storage and networking
functionality, on a single platform. With the integrated web-based user
interface you can manage VMs and containers, high availability for
clusters, or the integrated disaster recovery tools with ease.
<figure>
<img alt="image" src="/images/usb/screenshots/proxmox.png">
</figure>
- Website: <https://www.proxmox.com/en/proxmox-ve>
- OS Image:
<https://www.proxmox.com/en/downloads/item/proxmox-ve-7-1-iso-installer>
- Path on USB: `/OS/proxmox-ve_7.1-2.iso`
- Type: **Installer**
<hr>
### Qubes OS
<figure>
<img alt="image" src="/images/usb/icons/qubes.png">
</figure>
!!! tldr "About"
Qubes OS is a free and open-source, security-oriented operating
system for single-user desktop computing. Qubes OS leverages Xen-based
virtualization to allow for the creation and management of isolated
compartments called qubes.
<figure>
<img alt="image" src="/images/usb/screenshots/qubes.png">
</figure>
- Website: <https://www.qubes-os.org/>
- OS Image:
<https://mirrors.edge.kernel.org/qubes/iso/Qubes-R4.0.4-x86_64.iso>
- Path on USB: `/OS/Qubes-R4.0.4-x86_64.iso`
- Type: **Installer**
<hr>
### RaspberryPi OS
<figure>
<img alt="image" src="/images/usb/icons/raspios.png">
</figure>
!!! tldr "About"
Your Raspberry Pi needs an operating system to work. This is it.
Raspberry Pi OS (previously called Raspbian) is the official supported
operating system.
- Website: <https://www.raspberrypi.com/>
- OS Image:
<https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-11-08/2021-10-30-raspios-bullseye-armhf-lite.zip>
- Path on USB: `/RPi/2021-10-30-raspios-bullseye-armhf-lite.zip`
<hr>
### System Rescue
<figure>
<img alt="image" src="/images/usb/icons/systemrescue.png">
</figure>
!!! tldr "About"
SystemRescue (formerly known as SystemRescueCd) is a Linux system
rescue toolkit available as a bootable medium for administrating or
repairing your system and data after a crash. It aims to provide an easy
way to carry out admin tasks on your computer, such as creating and
editing the hard disk partitions. It comes with a lot of Linux system
utilities such as GParted, fsarchiver, filesystem tools and basic tools
(editors, midnight commander, network tools). It can be used for both
Linux and windows computers, and on desktops as well as servers. This
rescue system requires no installation as it can be booted from a CD/DVD
drive or USB stick, but it can be installed on the hard disk if you
wish. The kernel supports all important file systems (ext4, xfs, btrfs,
vfat, ntfs), as well as network filesystems such as Samba and NFS.
<figure>
<img alt="image" src="/images/usb/screenshots/systemrescue.png">
</figure>
- Website: <https://www.system-rescue.org/>
- OS Image:
<https://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/9.00/systemrescue-9.00-amd64.iso/download>
- Path on USB: `/OS/systemrescue-8.06-amd64.iso`
- Type: **Live**
<hr>
### Tails
<figure>
<img alt="image" src="/images/usb/icons/tails.png">
</figure>
!!! tldr "About"
Tails is a portable operating system
that protects against surveillance and censorship.
<figure>
<img alt="image" src="/images/usb/screenshots/tails.png">
</figure>
- Website: <https://tails.boum.org/>
- OS Image:
<https://mirrors.edge.kernel.org/tails/stable/tails-amd64-4.26/tails-amd64-4.26.img>
- Path on USB: `/OS/tails-amd64-4.25.img`
- Type: **Live + Installer**
<hr>
### Trisquel GNU/Linux
<figure>
<img alt="image" src="/images/usb/icons/trisquel.png">
</figure>
!!! tldr "About"
Trisquel GNU/Linux is a fully free operating system for home users,
small enterprises and educational centers.
<figure>
<img alt="image" src="/images/usb/screenshots/trisquel.png">
</figure>
- Website: <https://trisquel.info/>
- OS Image: <https://trisquel.info/en/download>
- Path on USB: `/OS/trisquel-mini_9.0.1_amd64.iso`
- Type: **Live + Installer**
<hr>
### Ubuntu
<figure>
<img alt="image" src="/images/usb/icons/ubuntu.png">
</figure>
!!! tldr "About"
Ubuntu comes with everything you need to run your organisation,
school, home or enterprise. All the essential applications, like an
office suite, browsers, email and media apps come pre-installed and
thousands more games and applications are available in the Ubuntu
Software Centre.
<figure>
<img alt="image" src="/images/usb/screenshots/ubuntu.png">
</figure>
- Website: <https://ubuntu.com/>
- OS Image:
<https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso>
- Path on USB: `/OS/ubuntu-20.04.3-desktop-amd64.iso`
- Type: **Live + Installer**
<hr>
## Tools & Programs
### The Raspberry Pi Imager
<figure>
<img alt="image" src="/images/usb/screenshots/rpi-imager.png">
</figure>
!!! tldr "About"
The Raspberry Pi Imager is the quick, safe and easy way to install an
operating systems to a microSD card or USB disk.
- Website: <https://www.raspberrypi.com/software/>
- Image: <http://downloads.raspberrypi.org/imager/imager_amd64.AppImage>
- Path on USB: `/Tools/imager_amd64.AppImage`
### Ungoogled Chromium
!!! tldr "About"
ungoogled-chromium is Google Chromium, sans dependency on Google web
services. It also features some tweaks to enhance privacy, control, and
transparency (almost all of which require manual activation or
enabling).
ungoogled-chromium retains the default Chromium experience as closely as
possible. Unlike other Chromium forks that have their own visions of a
web browser, ungoogled-chromium is essentially a drop-in replacement for
Chromium.
ungoogled-chromium addresses these issues in the following ways:
- Remove all remaining background requests to any web services while building and running the browser
- Remove all code specific to Google web services
- Remove all uses of pre-made binaries from the source code, and replace them with user-provided alternatives when possible.
- Disable features that inhibit control and transparency, and add or
modify features that promote them (these changes will almost always
require manual activation or enabling).
<figure>
<img alt="image" src="/images/usb/screenshots/ungoogled-chromium.png">
</figure>
- Website: <https://ungoogled-software.github.io/>
- Image:
<https://ungoogled-software.github.io/ungoogled-chromium-binaries/>
- Path on USB: `/Tools/ungoogled-chromium_91.0.4472.164-1.1.AppImage`

+ 77
- 0
docs/usb/internals.md View File

@ -0,0 +1,77 @@
# MH-USB Internals
## MH-USB Performance
### USB2 Version
From <https://www.blackmoreops.com/2017/04/04/usb-and-ssd-drive-speedtest-in-linux/>
> USB 2.0 has a theoretical maximum signaling rate of 480 Mbits/s or 60
> Mbytes/s. However due to various constraints the maximum throughput is
> restricted to around 280 Mbit/s or 35 Mbytes/s.
#### `hdparm` tests
``` console
$ sudo hdparm -Ttv /dev/sde1
/dev/sde1:
multcount = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 15600/64/32, sectors = 31881176, start = 2048
Timing cached reads: 16422 MB in 2.00 seconds = 8221.42 MB/sec
Timing buffered disk reads: 64 MB in 3.01 seconds = 21.28 MB/sec
```
#### `dd` write test
``` console
$ dd if=/dev/zero of=perf oflag=direct bs=128k count=8k
8192+0 records in
8192+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.94198 s, 155 MB/s
```
#### `dd` read test
``` console
## Clear the memory cache before benchmarking reads
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
$ dd if=perf of=/dev/null bs=4k
262144+0 records in
262144+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 44.5847 s, 24.1 MB/s
```
### USB3 Version
*Coming soon!*
## The MH-USB partition layout
### The Ventoy partion layout
*Document how Ventoy creates partitions for both GPT and MBR partition tables*
### The 16 GB model
*Standard ventoy partitions*
### The 32 GB model
*Coming soon! (special partitions to accommodate haiku.)*
## Using the MH-USB Source Code
### Overview of the source code
### The scripts
#### `download-images.sh`
#### `prepare-usb.sh`
#### `qemu-*.sh`
### Installing MH-USB
### Customising the MH-USB

+ 0
- 0
docs/usb/start.md View File


+ 0
- 0
docs/usb/troubleshooting.md View File


+ 73
- 0
docs/usb/update.md View File

@ -0,0 +1,73 @@
# Adding / Updating Images on the MH-USB Disk
## How do OS images get listed on the boot screen?
Recall the MH-USB directory layout:
```
MH-USB/
/OS/ <-- Contains OS Images
/Tools/ <-- Contains some tools and software
/RPi/ <-- OS Images for the Raspberry Pi
/ventoy/ <-- Config files for the Ventoy/Grub2 bootloader
```
While the operating system images are stored in the `/OS/` directory in the
root of the USB disk, the actual display and order of display is controlled by
the ventoy config file: `/ventoy/ventoy.json`.
An excerpt from the `ventoy.json` config file:
``` json
{
"menu_alias":[
{
"image": "/OS/debian-live-11.2.0-amd64-cinnamon.iso",
"alias": "Debian 11.2.0 (Live)"
},
{
"image": "/OS/devuan_chimaera_4.0.0_amd64_desktop-live.iso",
"alias": "Devuan Chimaera 4.0.0"
},
{
"image": "/OS/guix-system-install-1.3.0.x86_64-linux.iso",
"alias": "Guix System Installer 1.3.0"
},
{
"image": "/OS/LibreELEC-Generic.x86_64-10.0.1.img",
"alias": "LibreELEC 10.0.1 (Live)"
}
]
}
```
The image would get listed on the boot screen in the alphabetical order even
without this configuration. However, in the absence of this, the file name of
the ISO image would show up instead of a more useful OS description.
## Adding, updating and removing a OS image
### Removing an image
Don't think you're likely to use an OS image that exists on the USB
disk? No problem. Just go ahead and delete it! It will shop showing up
on the boot screen and you will also have some free space on the USB
drive.
### Adding a new image
You can copy a new bootable OS image anywhere on the USB disk. You could
copy it to the `/OS/` directory to keep things neat. But that's not
mandatory. You can copy it anywhere.
### Updating an image
Updating an OS image simply the process of deleting an older image file
and adding the new one.
### Update the Ventoy configuration
If you would like to see a proper descriptive name for your new or
updated OS image, then you can add or update the corresponding section
in the `/ventoy/ventoy.json` file.

+ 108
- 0
docs/usb/use.md View File

@ -0,0 +1,108 @@
# Using the MH-USB Disk
## Organisation of the MH-USB Disk
The files on the MH-USB disk are arranged as follows:
```
MH-USB/
/OS/ <-- Contains OS Images
/Tools/ <-- Contains some tools and software
/RPi/ <-- OS Images for the Raspberry Pi
/ventoy/ <-- Config files for the Ventoy/Grub2 bootloader
```
The MH-USB partition of the USB disk is formatted with [exFAT](https://en.wikipedia.org/wiki/ExFAT).
This enables universal access to the data on any operating system that supports exFAT.
## Booting on physical computer
You boot the USB disk on a physical computer (dekstop, laptop, single-board
computer or laptop) by simply plugging it in and choosing it as a boot device.
The MH-USB runs the [GRUB2](https://www.gnu.org/software/grub/) boot
loader and will boot just fine with a "legacy" BIOS or UEFI BIOS.
The USB make would show up as a USB disk called "Generic Flash Drive":
<figure>
<img src="/images/usb/boot-device.jpg" width="600">
</figure>
Just choose it as the boot device and you will be greeted by the MH-USB
boot screen.
## Booting on a virtual machine
You can also boot the USB using a virtual machine. On a GNU/Linux
system, one can use QEMU to boot the USB.
First check the device name assigned to the USB disk. A quick way to
check it out would be to use the `lsblk` command like this:
``` shell-session
$ lsblk -o NAME,SIZE,HOTPLUG -P -d | grep "HOTPLUG=\"1\"" | cut -d" " -f1
NAME="sdb"
```
The command above will list out all the USB disks attached to your
computer. (Actually, all "HOTPLUG" storage devices - which includes USB
storage.)
### Booting a virtual machine with SeaBIOS
To boot the USB disk using QEMU + SeaBIOS, install the `qemu` package
from your GNU/Linux OS repository and then run:
``` shell-session
$ DEVICE=`lsblk -o NAME,SIZE,HOTPLUG -P -d | grep "HOTPLUG=\"1\"" | cut -d"\"" -f2`
$ sudo qemu-system-x86_64 \
-enable-kvm -rtc base=localtime -m 2G -vga std \
-drive file=/dev/$DEVICE,readonly=on,cache=none,format=raw,if=virtio
```
This will boot the USB via QEMU and show you the boot screen in a popup window.
### Booting a virtual machine with a UEFI BIOS
If you want to try booting the USB with QEMU with the `tianocore` UEFI BIOS, first install the OVMF
(Open Virtual Machine Firmware) packages.
On Debian and Debian-based distributions run:
``` shell-session
# apt-get install ovmf
$ BIOS="/usr/share/qemu/OVMF.fd"
```
On Archlinux-based distributions run:
``` shell-session
# pacman -S edk2-ovmf
$ BIOS="/usr/share/edk2-ovmf/x64/OVMF.fd"
```
```bash
$ DEVICE=`lsblk -o NAME,SIZE,HOTPLUG -P -d | grep "HOTPLUG=\"1\"" | cut -d"\"" -f2`
$ sudo qemu-system-x86_64 \
-bios $BIOS \
-enable-kvm -rtc base=localtime -m 2G -vga std \
-drive file=/dev/$DEVICE,readonly=on,cache=none,format=raw,if=virtio
```
## Writing an image to another USB drive
While a multi-boot USB is nice, there might be times when you want to write an OS image to another
USB disk. The MH-USB includes the "RaspberryPi Imager" (`rpi-imager`) tool to help you write an OS
image to a USB disk safely and quickly.
You can run the the `rpi-imager` directly from the USB. Insert the MH-USB into a GNU/Linux (or
Windows) computer and mount it. In the `Tools/` directory on the USB, you will see binaries for the
Raspberry Pi imager. You can use it to write any of the bootable operating system images to another
USB.
*[TODO: Include more details and screenshots!]*
## Working with Raspberry Pi images
*[TODO: Include details with screenshots]*

+ 12
- 12
mkdocs.yml View File

@ -2,7 +2,7 @@
site_name: 'LibreTechShop - Documentation'
site_description: 'Accessible & Free Documentation for Libre Products'
site_author: 'Abhas Abhinav'
site_logo: /images/lts-icon.png
site_logo: /images/als-icon.png
# Repository
repo_name: 'mh/lts-docs'
@ -13,13 +13,13 @@ copyright: 'Copyright &copy; Mostly Harmless'
theme:
name: material
nav_style: dark
nav_style: light
font: false
logo: images/lts-icon.png
favicon: images/lts-icon.png
logo: images/als-icon.png
favicon: images/als-icon.png
palette:
scheme: default
primary: white
scheme: light
primary: deep purple
accent: pink
# Google Analytics Disabled by default
@ -36,12 +36,12 @@ nav:
- (LC230) User Guide: lc230/user-guide.md
- (LC230) Troubleshooting: lc230/troubleshooting.md
- MH-USB:
- Introduction: usb/index.md
- Getting Started: usb/start.md
- Using the USB disk: usb/use.md
- Adding and Updating OS images: usb/update.md
- Advanced Options: usb/advanced.md
- Troubleshooting: usb/troubleshooting.md
- (MHUSB) About & Contents: usb/index.md
- (MHUSB) Using the USB disk: usb/use.md
- (MHUSB) Add / Update images: usb/update.md
- (MHUSB) Internals: usb/internals.md
#- (MHUSB) Advanced Options: usb/advanced.md
- (MHUSB) FAQs: usb/faqs.md
- Routers:
- Introduction: routers/index.md
- First Use: routers/first-use.md


+ 504
- 124
site/404.html View File

@ -9,12 +9,11 @@
<meta name="description" content="Accessible & Free Documentation for Libre Products">
<meta name="author" content="Abhas Abhinav">
<link rel="shortcut icon" href="/images/lts-icon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.2.4">
<link rel="icon" href="/images/als-icon.png">
<meta name="generator" content="mkdocs-1.2.3, mkdocs-material-8.1.7">
@ -22,14 +21,14 @@
<link rel="stylesheet" href="/assets/stylesheets/main.15aa0b43.min.css">
<link rel="stylesheet" href="/assets/stylesheets/main.cd566b2a.min.css">
<link rel="stylesheet" href="/assets/stylesheets/palette.75751829.min.css">
<link rel="stylesheet" href="/assets/stylesheets/palette.e6a45f82.min.css">
<meta name="theme-color" content="#ffffff">
<meta name="theme-color" content="#7e56c2">
@ -38,11 +37,12 @@
<link rel="stylesheet" href="/css/extra.css">
<script>__md_scope=new URL("/",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
@ -53,10 +53,10 @@
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="pink">
<body dir="ltr" data-md-color-scheme="light" data-md-color-primary="deep-purple" data-md-color-accent="pink">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
@ -67,26 +67,27 @@
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid" aria-label="Header">
<a href="/." title="LibreTechShop - Documentation" class="md-header-nav__button md-logo" aria-label="LibreTechShop - Documentation">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="/." title="LibreTechShop - Documentation" class="md-header__button md-logo" aria-label="LibreTechShop - Documentation" data-md-component="logo">
<img src="/images/lts-icon.png" alt="logo">
<img src="/images/als-icon.png" alt="logo">
</a>
<label class="md-header-nav__button md-icon" for="__drawer">
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
</label>
<div class="md-header-nav__title" data-md-component="header-title">
<div class="md-header-nav__ellipsis">
<div class="md-header-nav__topic">
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
LibreTechShop - Documentation
</span>
</div>
<div class="md-header-nav__topic">
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
@ -96,22 +97,27 @@
</div>
</div>
<label class="md-header-nav__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</label>
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
@ -127,12 +133,11 @@
</div>
<div class="md-header-nav__source">
<a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source">
<div class="md-header__source">
<a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
mh/lts-docs
@ -141,42 +146,42 @@
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation" >
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="/." title="LibreTechShop - Documentation" class="md-nav__button md-logo" aria-label="LibreTechShop - Documentation">
<a href="/." title="LibreTechShop - Documentation" class="md-nav__button md-logo" aria-label="LibreTechShop - Documentation" data-md-component="logo">
<img src="/images/lts-icon.png" alt="logo">
<img src="/images/als-icon.png" alt="logo">
</a>
LibreTechShop - Documentation
</label>
<div class="md-nav__source">
<a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source">
<a href="https://sovran.dev/mh/lts-docs" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
mh/lts-docs
@ -190,107 +195,487 @@
<li class="md-nav__item">
<a href="/." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="/." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" >
<label class="md-nav__link" for="nav-2">
LC230
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="LC230" data-md-level="1">
<label class="md-nav__title" for="nav-2">
<span class="md-nav__icon md-icon"></span>
LC230
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2">
LC230
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="LC230" data-md-level="1">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
LC230
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/lc230/" class="md-nav__link">
(LC230) Overview
</a>
</li>
<li class="md-nav__item">
<a href="/lc230/user-guide/" class="md-nav__link">
(LC230) User Guide
</a>
</li>
<li class="md-nav__item">
<a href="/lc230/troubleshooting/" class="md-nav__link">
(LC230) Troubleshooting
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="/lc230/" class="md-nav__link">
(LC230) Overview
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3">
MH-USB
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="MH-USB" data-md-level="1">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
MH-USB
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/usb/" class="md-nav__link">
(MHUSB) About & Contents
</a>
</li>
<li class="md-nav__item">
<a href="/usb/use/" class="md-nav__link">
(MHUSB) Using the USB disk
</a>
</li>
<li class="md-nav__item">
<a href="/usb/update/" class="md-nav__link">
(MHUSB) Add / Update images
</a>
</li>
<li class="md-nav__item">
<a href="/usb/internals/" class="md-nav__link">
(MHUSB) Internals
</a>
</li>
<li class="md-nav__item">
<a href="/usb/faqs/" class="md-nav__link">
(MHUSB) FAQs
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="/lc230/user-guide/" class="md-nav__link">
(LC230) User Guide
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4">
Routers
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Routers" data-md-level="1">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Routers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/routers/" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="/routers/first-use/" class="md-nav__link">
First Use
</a>
</li>
<li class="md-nav__item">
<a href="/routers/next-steps/" class="md-nav__link">
Next Steps
</a>
</li>
<li class="md-nav__item">
<a href="/routers/optional-steps/" class="md-nav__link">
Optional Steps
</a>
</li>
<li class="md-nav__item">
<a href="/routers/cli/" class="md-nav__link">
Command Line Guide
</a>
</li>
<li class="md-nav__item">
<a href="/lc230/troubleshooting/" class="md-nav__link">
(LC230) Troubleshooting
</a>
</li>
<li class="md-nav__item">
<a href="/routers/upgrade/" class="md-nav__link">
Upgrading OpenWrt
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="/ledc/" class="md-nav__link">
LEDC
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5">
Phones
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Phones" data-md-level="1">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Phones
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/phones/" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="/phones/lineageos/" class="md-nav__link">
LineageOS
</a>
</li>
<li class="md-nav__item">
<a href="/phones/f-droid/" class="md-nav__link">
F-Droid
</a>
</li>
<li class="md-nav__item">
<a href="/mhsw/" class="md-nav__link">
MHSW
</a>
</li>
<li class="md-nav__item">
<a href="/phones/first-use/" class="md-nav__link">
First Use
</a>
</li>
<li class="md-nav__item">
<a href="/phones/applications/" class="md-nav__link">
Applications
</a>
</li>
<li class="md-nav__item">
<a href="/phones/services/" class="md-nav__link">
Services
</a>
</li>
<li class="md-nav__item">
<a href="/phones/backups/" class="md-nav__link">
Taking Backups
</a>
</li>
<li class="md-nav__item">
<a href="/phones/recovery/" class="md-nav__link">
Using Recovery
</a>
</li>
<li class="md-nav__item">
<a href="/phones/ubports/" class="md-nav__link">
Installing Ubports
</a>
</li>
<li class="md-nav__item">
<a href="/phones/calyxos/" class="md-nav__link">
Installing CalyxOS
</a>
</li>
</ul>
</nav>
</li>
</ul>
@ -301,52 +686,47 @@
<div class="md-content">
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>404 - Not found</h1>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright &copy; Mostly Harmless
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; Mostly Harmless
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "/", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "/assets/javascripts/workers/search.22074ed6.min.js"}</script>
<script src="/assets/javascripts/vendor.93c04032.min.js"></script>
<script src="/assets/javascripts/bundle.83e5331e.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
<script>
app = initialize({
base: "/",
features: [],
search: Object.assign({
worker: "/assets/javascripts/worker/search.8c7e0a7e.min.js"
}, typeof search !== "undefined" && search)
})
</script>
<script src="/assets/javascripts/bundle.01de222e.min.js"></script>
</body>

+ 29
- 0
site/assets/javascripts/bundle.01de222e.min.js
File diff suppressed because it is too large
View File


+ 8
- 0
site/assets/javascripts/bundle.01de222e.min.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
site/assets/javascripts/bundle.83e5331e.min.js
File diff suppressed because it is too large
View File


+ 0
- 1
site/assets/javascripts/bundle.83e5331e.min.js.map
File diff suppressed because it is too large
View File


+ 1
- 0
site/assets/javascripts/lunr/min/lunr.hi.min.js View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});

+ 1
- 0
site/assets/javascripts/lunr/min/lunr.th.min.js View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}});

+ 1
- 0
site/assets/javascripts/lunr/min/lunr.zh.min.js View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("nodejieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}});

+ 206
- 0
site/assets/javascripts/lunr/tinyseg.js View File

@ -0,0 +1,206 @@
/**
* export the module via AMD, CommonJS or as a browser global
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
*/
;(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory)
} else if (typeof exports === 'object') {
/**
* Node. Does not work with strict CommonJS, but
* only CommonJS-like environments that support module.exports,
* like Node.
*/
module.exports = factory()
} else {
// Browser globals (root is window)
factory()(root.lunr);
}
}(this, function () {
/**
* Just return a value to define the module export.
* This example returns an object, but the module
* can return a function as the exported value.
*/
return function(lunr) {
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
// (c) 2008 Taku Kudo <taku@chasen.org>
// TinySegmenter is freely distributable under the terms of a new BSD licence.
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
function TinySegmenter() {
var patterns = {
"[一二三四五六七八九十百千万億兆]":"M",
"[一-龠々〆ヵヶ]":"H",
"[ぁ-ん]":"I",
"[ァ-ヴーア-ン゙ー]":"K",
"[a-zA-Za-zA-Z]":"A",
"[0-90-9]":"N"
}
this.chartype_ = [];
for (var i in patterns) {
var regexp = new RegExp(i);
this.chartype_.push([regexp, patterns[i]]);
}
this.BIAS__ = -332
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
this.BP2__ = {"BO":60,"OO":-1762};
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669};
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
this.TW1__ = {"につい":-4681,"東京都":2026};
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
this.UC3__ = {"A":-1370,"I":2311};
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
this.UP1__ = {"O":-214};
this.UP2__ = {"B":69,"O":935};
this.UP3__ = {"B":189};
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496};
return this;
}
TinySegmenter.prototype.ctype_ = function(str) {
for (var i in this.chartype_) {
if (str.match(this.chartype_[i][0])) {
return this.chartype_[i][1];
}
}
return "O";
}
TinySegmenter.prototype.ts_ = function(v) {
if (v) { return v; }
return 0;
}
TinySegmenter.prototype.segment = function(input) {
if (input == null || input == undefined || input == "") {
return [];
}
var result = [];
var seg = ["B3","B2","B1"];
var ctype = ["O","O","O"];
var o = input.split("");
for (i = 0; i < o.length; ++i) {
seg.push(o[i]);
ctype.push(this.ctype_(o[i]))
}
seg.push("E1");
seg.push("E2");
seg.push("E3");
ctype.push("O");
ctype.push("O");
ctype.push("O");
var word = seg[3];
var p1 = "U";
var p2 = "U";
var p3 = "U";
for (var i = 4; i < seg.length - 3; ++i) {
var score = this.BIAS__;
var w1 = seg[i-3];
var w2 = seg[i-2];
var w3 = seg[i-1];
var w4 = seg[i];
var w5 = seg[i+1];
var w6 = seg[i+2];
var c1 = ctype[i-3];
var c2 = ctype[i-2];
var c3 = ctype[i-1];
var c4 = ctype[i];
var c5 = ctype[i+1];
var c6 = ctype[i+2];
score += this.ts_(this.UP1__[p1]);
score += this.ts_(this.UP2__[p2]);
score += this.ts_(this.UP3__[p3]);
score += this.ts_(this.BP1__[p1 + p2]);
score += this.ts_(this.BP2__[p2 + p3]);
score += this.ts_(this.UW1__[w1]);
score += this.ts_(this.UW2__[w2]);
score += this.ts_(this.UW3__[w3]);
score += this.ts_(this.UW4__[w4]);
score += this.ts_(this.UW5__[w5]);
score += this.ts_(this.UW6__[w6]);
score += this.ts_(this.BW1__[w2 + w3]);
score += this.ts_(this.BW2__[w3 + w4]);
score += this.ts_(this.BW3__[w4 + w5]);
score += this.ts_(this.TW1__[w1 + w2 + w3]);
score += this.ts_(this.TW2__[w2 + w3 + w4]);
score += this.ts_(this.TW3__[w3 + w4 + w5]);
score += this.ts_(this.TW4__[w4 + w5 + w6]);
score += this.ts_(this.UC1__[c1]);
score += this.ts_(this.UC2__[c2]);
score += this.ts_(this.UC3__[c3]);
score += this.ts_(this.UC4__[c4]);
score += this.ts_(this.UC5__[c5]);
score += this.ts_(this.UC6__[c6]);
score += this.ts_(this.BC1__[c2 + c3]);
score += this.ts_(this.BC2__[c3 + c4]);
score += this.ts_(this.BC3__[c4 + c5]);
score += this.ts_(this.TC1__[c1 + c2 + c3]);
score += this.ts_(this.TC2__[c2 + c3 + c4]);
score += this.ts_(this.TC3__[c3 + c4 + c5]);
score += this.ts_(this.TC4__[c4 + c5 + c6]);
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
score += this.ts_(this.UQ1__[p1 + c1]);
score += this.ts_(this.UQ2__[p2 + c2]);
score += this.ts_(this.UQ3__[p3 + c3]);
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
var p = "O";
if (score > 0) {
result.push(word);
word = "";
p = "B";
}
p1 = p2;
p2 = p3;
p3 = p;
word += seg[i];
}
result.push(word);
return result;
}
lunr.TinySegmenter = TinySegmenter;
};
}));

+ 0
- 1
site/assets/javascripts/lunr/tinyseg.min.js
File diff suppressed because it is too large
View File


+ 6708
- 0
site/assets/javascripts/lunr/wordcut.js
File diff suppressed because it is too large
View File


+ 0
- 16
site/assets/javascripts/vendor.93c04032.min.js
File diff suppressed because it is too large
View File


+ 0
- 1
site/assets/javascripts/vendor.93c04032.min.js.map
File diff suppressed because it is too large
View File


+ 0
- 59
site/assets/javascripts/worker/search.8c7e0a7e.min.js
File diff suppressed because it is too large
View File


+ 0
- 1
site/assets/javascripts/worker/search.8c7e0a7e.min.js.map
File diff suppressed because it is too large
View File


+ 48
- 0
site/assets/javascripts/workers/search.22074ed6.min.js
File diff suppressed because it is too large
View File


+ 8
- 0
site/assets/javascripts/workers/search.22074ed6.min.js.map
File diff suppressed because it is too large
View File


+ 0
- 3
site/assets/stylesheets/main.15aa0b43.min.css
File diff suppressed because it is too large
View File


+ 0
- 1
site/assets/stylesheets/main.15aa0b43.min.css.map
File diff suppressed because it is too large
View File


+ 15
- 0
site/assets/stylesheets/main.cd566b2a.min.css
File diff suppressed because it is too large
View File


+ 1
- 0
site/assets/stylesheets/main.cd566b2a.min.css.map
File diff suppressed because it is too large
View File


+ 0
- 3
site/assets/stylesheets/palette.75751829.min.css
File diff suppressed because it is too large
View File


+ 0
- 1
site/assets/stylesheets/palette.75751829.min.css.map
File diff suppressed because it is too large
View File


+ 1
- 0
site/assets/stylesheets/palette.e6a45f82.min.css
File diff suppressed because it is too large
View File


+ 1
- 0
site/assets/stylesheets/palette.e6a45f82.min.css.map View File

@ -0,0 +1 @@
{"version":3,"sources":["src/assets/stylesheets/palette/_accent.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/palette/_scheme.scss"],"names":[],"mappings":"AA8CE,2BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CCnDN,CDyCE,4BACE,4BAAA,CACA,mDAAA,CAOE,yBAAA,CACA,8CC5CN,CDkCE,8BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CCrCN,CD2BE,mCACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CC9BN,CDoBE,8BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CCvBN,CDaE,4BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CChBN,CDME,kCACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CCTN,CDDE,4BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CCFN,CDRE,4BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CCKN,CDfE,6BACE,4BAAA,CACA,mDAAA,CAOE,yBAAA,CACA,8CCYN,CDtBE,mCACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CCmBN,CD7BE,4BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CC6BN,CDpCE,8BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CCoCN,CD3CE,6BACE,yBAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CC2CN,CDlDE,8BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CCkDN,CDzDE,mCACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CCsDN,CC3DE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwDN,CCnEE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgEN,CC3EE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwEN,CCnFE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgFN,CC3FE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwFN,CCnGE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgGN,CC3GE,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwGN,CCnHE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgHN,CC3HE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwHN,CCnIE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgIN,CC3IE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwIN,CCnJE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CDmJN,CC3JE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CD2JN,CCnKE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CDmKN,CC3KE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CD2KN,CCnLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgLN,CC3LE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwLN,CCnME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDgMN,CC3ME,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CDwMN,CC9LA,8BACE,0BAAA,CACA,+CAAA,CACA,2CAAA,CACA,qCAAA,CACA,4CAAA,CAGA,4BD+LF,CE9EI,mCD3GA,+CACE,gCD4LJ,CCzLI,qDACE,gCD2LN,CCtLE,iEACE,qBDwLJ,CACF,CEzFI,sCDxFA,uCACE,0CDoLJ,CACF,CC3KA,8BACE,0BAAA,CACA,4CAAA,CACA,gCAAA,CACA,0BAAA,CACA,+CAAA,CAGA,4BD4KF,CCzKE,yCACE,qBD2KJ,CEvFI,wCD7EA,8CACE,gCDuKJ,CACF,CE/GI,mCDjDA,+CACE,oCDmKJ,CChKI,qDACE,mCDkKN,CACF,CEpGI,wCDtDA,iFACE,qBD6JJ,CACF,CE5HI,sCD1BA,uCACE,qBDyJJ,CACF,CGvSA,cAGE,6BAKE,YAAA,CAGA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,gDAAA,CACA,gDAAA,CAGA,uCAAA,CACA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,2CAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,yDAAA,CAGA,0DAAA,CAGA,qDAAA,CACA,wDHgRF,CG7QE,oHAIE,4BH4QJ,CGxQE,qDACE,YH0QJ,CGtQE,oDACE,eHwQJ,CACF","file":"palette.css"}

+ 17
- 0
site/css/extra.css View File

@ -98,3 +98,20 @@ a[rel=next] {
font-size: 1.6em;
}
figure {
display: inline-block;
}
figure img {
vertical-align: top;
}
figure figcaption {
text-align: center;
}
.md-icon, .md-source__repository {
color: #ffffff;
}
.admonition p {
font-size: 120%;
}

BIN
site/images/als-icon.png View File

Before After
Width: 155  |  Height: 155  |  Size: 11 KiB

BIN
site/images/phones/calyxos.png View File

Before After
Width: 120  |  Height: 120  |  Size: 6.5 KiB

BIN
site/images/phones/carbonrom.png View File

Before After
Width: 300  |  Height: 168  |  Size: 2.6 KiB

BIN
site/images/phones/fdroid.png View File

Before After
Width: 150  |  Height: 150  |  Size: 10 KiB

BIN
site/images/phones/fediverse.png View File

Before After
Width: 150  |  Height: 150  |  Size: 11 KiB

BIN
site/images/phones/liberated.png View File

Before After
Width: 75  |  Height: 125  |  Size: 4.7 KiB

BIN
site/images/phones/lineageos.png View File

Before After
Width: 150  |  Height: 99  |  Size: 5.5 KiB

BIN
site/images/phones/lp002-1.jpg View File

Before After
Width: 857  |  Height: 1280  |  Size: 184 KiB

BIN
site/images/phones/lpa2.jpg View File

Before After
Width: 308  |  Height: 420  |  Size: 47 KiB

BIN
site/images/phones/ubports.png View File

Before After
Width: 150  |  Height: 108  |  Size: 2.6 KiB

BIN
site/images/routers/features.png View File

Before After
Width: 95  |  Height: 95  |  Size: 2.8 KiB

BIN
site/images/routers/free-network.png View File

Before After
Width: 374  |  Height: 374  |  Size: 18 KiB

BIN
site/images/routers/lra7.png View File

Before After
Width: 685  |  Height: 568  |  Size: 795 KiB

BIN
site/images/routers/openwrt-logo-usage-guidelines.pdf View File


BIN
site/images/routers/openwrt.png View File

Before After
Width: 217  |  Height: 183  |  Size: 22 KiB

BIN
site/images/routers/screenshot.png View File

Before After
Width: 1269  |  Height: 924  |  Size: 137 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save