Skip to content
Hotspot Image Creator (Desktop)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
additional-hooks Code formatting: now using black formatting style and tool Sep 21, 2018
ansiblecube Added shortcuts for KAlite ES Jun 7, 2019
docs Fixed #300 #298 #296 #293 #283: documentation improvements Feb 12, 2019
kiwix-hotspot Added shortcuts for KAlite ES Jun 7, 2019
make-vexpress-boot Changed default URL from framagit-ideacube to github-kiwix Nov 20, 2018
online-demo
presets Updated WikiFundi presets Oct 25, 2018
windows_bundle Fixed #237: Disabled metadata on Windows binaries to prevent an UAC bug Sep 20, 2018
.gitignore Fixed #220: using Etcher-cli to write and verify SD-card Oct 25, 2018
.gitlab-ci.yml gitlab updates: pyinstaller, py37 Mar 2, 2019
.travis.yml
AUTHORS.md Changed default URL from framagit-ideacube to github-kiwix Nov 20, 2018
CHANGELOG updated master image (2019-06-06) Jun 7, 2019
LICENSE rename GPL to LICENSE Jul 7, 2017
README.md Removed ideacube May 9, 2019
appveyor.yml Updated win build dependencies: pygi pyinstaller and qemu Feb 26, 2019
contents.json updated master image (2019-06-06) Jun 7, 2019
etcher.gif Issue #214: Improve SD card writing Aug 31, 2018
imdisk.png Fixed #207: Provide a way to manually install (or uninstall) external… Aug 20, 2018
insert_id_to_class_glade.py Code formatting: now using black formatting style and tool Sep 21, 2018
kiwix-hotspot-linux.spec Added `wipe --sdcard /dev/xxx` CLI command Nov 29, 2018
kiwix-hotspot-logo.icns Fixed #233: rebranded as Kiwix Hotspot Sep 20, 2018
kiwix-hotspot-logo.ico Fixed #233: rebranded as Kiwix Hotspot Sep 20, 2018
kiwix-hotspot-logo.png Fixed #233: rebranded as Kiwix Hotspot Sep 20, 2018
kiwix-hotspot-macos.spec Added `wipe --sdcard /dev/xxx` CLI command Nov 29, 2018
kiwix-hotspot-win32.spec Added `wipe --sdcard /dev/xxx` CLI command Nov 29, 2018
kiwix-hotspot-win64.spec
kiwix.p12.enc
mbr.img
pibox_installer_ci_rsa.appveyor_enc appveyor certificate May 31, 2017
requirements-linux.txt Removed ideacube May 9, 2019
requirements-macos.txt Removed ideacube May 9, 2019
requirements-windows.txt Removed ideacube May 9, 2019
travis_secrets.tar.enc
ui.glade Removed ideacube May 9, 2019

README.md

Kiwix Hotspot

This installer installs an hotspot system on an SD card for raspberrypi 2 or raspberrypi 3.

This solution serves offline content from the web such as Wikipedia, the Gutenberg library, TED talks.

Kiwix Hotspot configure the RaspberryPi into a hotspot WiFi with offline contents.

Issues

Please report issues on framagit.

History

The installer emulate the rasbperrypi architecture armhf in QEMU.

Inside the emulator it built ideascube with ansiblecube.

presentation of the projet at Potsdam Slides

CLI usage

run cli mode: kiwix-hotspot cli

show help: kiwix-hotspot cli -h

show catalog: kiwix-hotspot cli --catalog

Run kiwix-hotspot from source

you can read package kiwix-hotspot to get help setting the environment

install dependencies:

  • python3: version >= 3.4
  • qemu: version >= 2.8, qemu-img and qemu-system-arm must be present in the directory (symlink or install there)
  • pygobject: on Windows you can also install it using pygi-aio
  • vexpress-boot: unzip in the directory

create a virtual a virtual environment that includes pygobject: python3 -m venv --system-site-packages my_venv

activate the environment

install pip dependencies: pip3 install -r requirements-PLATFORM.txt (note: on linux you may need some distribution packges, see package kiwix-hotspot for more information)

run GUI application: python3 kiwix-hotspot

run CLI application: python3 kiwix-hotspot cli

Build vexpress-boot

kiwix-hotspot use a linux kernel for the QEMU emulation of vexpress machine. This vexpress boot can be compiled on linux using make-vexpress-boot python3 script.

requirements: gcc-arm-linux-gnueabihf, bc and zip

run: python3 make-vexpress-boot

Build pibox base image

kiwix-hotspot uses a custom base image based off raspbian-lite with the following modifications (not exhaustive):

  • 2018-04-19-raspbian-jessie-lite
  • SSH enabled
  • 7GB / partition (ext4)
  • 1GB /data partition (extfat)
  • ansiblecube deployed: nginx, kiwix-serve, etc.

Should you want to build the base image:

kiwix-hotspot image --root 7 --size 8 --out my-base.img

Package kiwix-hotspot

see appveyor.yml for windows and .travis.yml for mac and linux

Contribute

We now use black Coding Style and Formatting tool. Please make sure your contributions passes black.

Sample pre-commit git hook:

#!/bin/sh
#
# check black coding style compliance and display offending lines
exec black --check --diff .

presentation of the projet at Potsdam Slides

some notes about how the project is structured:

kiwix-hotspot is a python3 (tested on 3.4 and 3.5) application that use PyGobject for GUI and QEMU for emulating ARM machine.

how it works:

  • ask user for configuration
  • download raspbian-lite and a Linux kernel compiled with make-vexpress-boot
  • resize the raspbian-lite image
  • emulate vexpress ARM machine with vexpress-boot and raspbian-lite image
  • run ansiblecube inside the emulation
  • write output to SD card

make-vexpress-boot is a python3 script that compiles linux with options required by ansiblecube such as IPV6, network userspace and network filtering.

insert_id_to_class_glade.py is a python3 script that insert id to class in glade file in order to be gtk3.10 compatible

how the application is packaged:

On Windows

we use a self extracting archive 7zS.sfx because pyinstaller in onefile on windows fails to give admin rights and also there was an issue if we set no console. assets are in /windows_bundle.

On Linux

qemu is built statically

On macOS

qemu is build dynamically and bundle is made with macdylibbundler

License

GPLv3 or (at your option) any later version, see LICENSE for more details.

You can’t perform that action at this time.