mimixbox

module
v0.33.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2024 License: Apache-2.0

README

[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)

Build UnitTest IntegrationTest GitHub GitHub all releases Lines of code Support me on Patreon

[日本語]

MimixBox - mimic BusyBox on Linux

MimixBox has many Unix commands in the single binary like BusyBox. However, MimixBox aim for the different uses from BusyBox. Specifically, it is supposed to be used in the desktop environment, not the embedded environment.
Also, the MimixBox project maintainer plan to have a wide range of built-in commands (applets) from basic command provided by Coreutils and others to experimental commands.

Installation.

The source code and binaries are distributed on the Release Page in ZIP format and tar.gz format. Choose the binary that suits your OS and CPU architecture. For example, in the case of Linux (amd64), you can install the MimixBox and documents on your system with the following command:

$ tar xf mimixbox-0.30.0-linux-amd64.tar.gz
$ cd mimixbox-0.30.0-linux-amd64
$ sudo ./installer.sh

Use "go install"

$ go install github.com/nao1215/mimixbox/cmd/mimixbox@latest
$ sudo mimixbox --install /usr/local/bin

Development

Tools & Libraries

The table below shows the tools used when developing the commands in the MimixBox project.

Tool description
go-licenses Used for license management of dependent libraries
pandoc Convert markdown files to manpages
make Used for build, test, release, etc
gzip Used for compress man pages
curl Used for install ShellSpec
install Used for install MimixBox binary and document in the system
docker Used for testing Mimixbox inside Docker
debootstrap Used for testing Mimixbox inside jail envrioment
shellspec Used for integration test
libpam0g-dev(pam-devel) PAM (Pluggable Authentication Modules) library

If you use Debian-based distribution (e.g. Debian/Ubuntu/Kali Linux/Raspberry Pi OS), You can install tools with the following command.

$ sudo apt install build-essential curl git pandoc gzip docker.io debootstrap libpam0g-dev
$ go install github.com/google/go-licenses@latest
$ curl -fsSL https://git.io/shellspec | sh -s -- --yes

How to build

$ git clone https://github.com/nao1215/mimixbox.git
$ cd mimixbox
$ make build

Debugging

How to create docker environment

$ make docker

※ Once the Docker image build is complete, you'll be inside the container.
$ 

How to create jail environment

$ sudo apt install debootstrap    ※ If you have not installed debootstrap in Ubuntu.
$ make build                      ※ Build mimixbox binary
$ sudo make jail                  ※ Create jail environment at /tmp/mimixbox/jail

$ sudo chroot /tmp/mimixbox/jail /bin/bash   ※ Dive to jail
# mimixbox --full-install /usr/local/bin     ※ Install MimixBox's command in jail

Roadmap

  • Step1. Implements many common Unix commands (〜Version 0.x.x).
  • Step2. Increase the options for each commands (〜Version 1.x.x).
  • Step3. Change the command to modern specifications(〜Version 2.x.x)

Now, MimixBox has not implemented enough commands (currently supported command list is here). Therefore, as a project, we will increase the number of commands and aim for a state where dog fooding can be done with the highest priority.

Then increase the command options to the same level as Coreutils and other packages. Note that MimixBox does not aim to create commands equivalent to Coreutils. However, we think it's better to have the options that Linux users expect.

Finally, it's the phase that makes the Mimix Box unique. Extend commands to high functionality, like bat and lsd, which are reimplementations of cat and ls.

Original commands in MimixBox

MimixBox has its own commands that don't exist in packages like Coreutils.

Command (Applet) Name Description
fakemovie Adds a video playback button to the image
ghrdc GitHub Relase Download Counter
path Manipulate filename path
sddf Search & Delete Dupulicated File
serial Rename the file to the name with a serial number

Contributing

First off, thanks for taking the time to contribute! ❤️ See CONTRIBUTING.md for more information. Contributions are not only related to development. For example, GitHub Star motivates me to develop! Star History Chart

Contact

If you would like to send comments such as "find a bug" or "request for additional features" to the developer, please use one of the following contacts. We are also looking forward to sponsorship.

LICENSE

The MimixBox project is licensed under the terms of the MIT license and Apache License 2.0.
See LICENSE and NOTICE

Contributors ✨

Thanks goes to these wonderful people (emoji key):

CHIKAMATSU Naohiro
CHIKAMATSU Naohiro

💻
polynomialspace
polynomialspace

💻
Kavya Shukla
Kavya Shukla

💻
Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!

Directories

Path Synopsis
cmd
mimixbox
mimixbox/cmd/mimixbox/main.go
mimixbox/cmd/mimixbox/main.go
internal
applets
mimixbox/internal/applets/applet.go
mimixbox/internal/applets/applet.go
applets/archival/gzip
mimixbox/internal/applets/console-tools/gzip/gzip.go
mimixbox/internal/applets/console-tools/gzip/gzip.go
applets/console-tools/clear
mimixbox/internal/applets/console-tools/clear/clear.go
mimixbox/internal/applets/console-tools/clear/clear.go
applets/console-tools/reset
mimixbox/internal/applets/console-tools/reset/reset.go
mimixbox/internal/applets/console-tools/reset/reset.go
applets/debianutils/add-shell
mimixbox/internal/applets/debianutils/add-shell/add-shell.go
mimixbox/internal/applets/debianutils/add-shell/add-shell.go
applets/debianutils/ischroot
mimixbox/internal/applets/debianutils/ischroot/ischroot.go
mimixbox/internal/applets/debianutils/ischroot/ischroot.go
applets/debianutils/remove-shell
mimixbox/internal/applets/debianutils/remove-shell/remove-shell.go
mimixbox/internal/applets/debianutils/remove-shell/remove-shell.go
applets/debianutils/valid-shell
mimixbox/internal/applets/debianutils/valid-shell/valid-shell.go
mimixbox/internal/applets/debianutils/valid-shell/valid-shell.go
applets/debianutils/which
mimixbox/internal/applets/debianutils/which/which.go
mimixbox/internal/applets/debianutils/which/which.go
applets/fileutils/chgrp
mimixbox/internal/applets/fileutils/chgrp/chgrp.go
mimixbox/internal/applets/fileutils/chgrp/chgrp.go
applets/fileutils/chown
mimixbox/internal/applets/fileutils/chown/chown.go
mimixbox/internal/applets/fileutils/chown/chown.go
applets/fileutils/cp
mimixbox/internal/applets/fileutils/cp/cp.go
mimixbox/internal/applets/fileutils/cp/cp.go
applets/fileutils/ln
mimixbox/internal/applets/fileutils/ln/ln.go
mimixbox/internal/applets/fileutils/ln/ln.go
applets/fileutils/mkdir
mimixbox/internal/applets/fileutils/mkdir/mkdir.go
mimixbox/internal/applets/fileutils/mkdir/mkdir.go
applets/fileutils/mkfifo
mimixbox/internal/applets/fileutils/mkfifo/mkfifo.go
mimixbox/internal/applets/fileutils/mkfifo/mkfifo.go
applets/fileutils/mv
mimixbox/internal/applets/fileutils/mv/mv.go
mimixbox/internal/applets/fileutils/mv/mv.go
applets/fileutils/rm
mimixbox/internal/applets/fileutils/rm/rm.go
mimixbox/internal/applets/fileutils/rm/rm.go
applets/fileutils/rmdir
mimixbox/internal/applets/fileutils/rmdir/rmdir.go
mimixbox/internal/applets/fileutils/rmdir/rmdir.go
applets/fileutils/touch
mimixbox/internal/applets/fileutils/touch/touch.go
mimixbox/internal/applets/fileutils/touch/touch.go
applets/games/lifegame
mimixbox/internal/applets/games/lifegame/lifegame.go
mimixbox/internal/applets/games/lifegame/lifegame.go
applets/jokeutils/cowsay
mimixbox/internal/applets/jokeutils/cowsay/cowsay.go
mimixbox/internal/applets/jokeutils/cowsay/cowsay.go
applets/jokeutils/fakemovie
mimixbox/internal/applets/jokeutils/fakemovie/fakemovie.go
mimixbox/internal/applets/jokeutils/fakemovie/fakemovie.go
applets/jokeutils/sl
mimixbox/internal/applets/shellutils/sl/cowsay.go
mimixbox/internal/applets/shellutils/sl/cowsay.go
applets/loginutils/chsh
mimixbox/internal/applets/loginutils/chsh/chsh.go
mimixbox/internal/applets/loginutils/chsh/chsh.go
applets/pmutils/halt
mimixbox/internal/applets/pmutils/halt/halt.go
mimixbox/internal/applets/pmutils/halt/halt.go
applets/shellutils/base64
mimixbox/internal/applets/shellutils/base64/base64.go
mimixbox/internal/applets/shellutils/base64/base64.go
applets/shellutils/basename
mimixbox/internal/applets/shellutils/basename/basename.go
mimixbox/internal/applets/shellutils/basename/basename.go
applets/shellutils/chroot
mimixbox/internal/applets/shellutils/chroot/chroot.go
mimixbox/internal/applets/shellutils/chroot/chroot.go
applets/shellutils/dirname
mimixbox/internal/applets/shellutils/dirname/dirname.go
mimixbox/internal/applets/shellutils/dirname/dirname.go
applets/shellutils/echo
mimixbox/internal/applets/shellutils/echo/echo.go
mimixbox/internal/applets/shellutils/echo/echo.go
applets/shellutils/false
mimixbox/internal/applets/shellutils/false/false.go
mimixbox/internal/applets/shellutils/false/false.go
applets/shellutils/ghrdc
mimixbox/internal/applets/shellutils/ghrdc/ghrdc.go
mimixbox/internal/applets/shellutils/ghrdc/ghrdc.go
applets/shellutils/groups
mimixbox/internal/applets/shellutils/groups/groups.go
mimixbox/internal/applets/shellutils/groups/groups.go
applets/shellutils/hostid
mimixbox/internal/applets/shellutils/hostid/hostid.go
mimixbox/internal/applets/shellutils/hostid/hostid.go
applets/shellutils/id
mimixbox/internal/applets/shellutils/id/id.go
mimixbox/internal/applets/shellutils/id/id.go
applets/shellutils/kill
mimixbox/internal/applets/shellutils/kill/kill.go
mimixbox/internal/applets/shellutils/kill/kill.go
applets/shellutils/mbsh
mimixbox/internal/applets/shellutils/mbsh/mbsh.go
mimixbox/internal/applets/shellutils/mbsh/mbsh.go
applets/shellutils/mbsh/builtin
mimixbox/internal/applets/shellutils/mbsh/builtin/buitInCmds.go
mimixbox/internal/applets/shellutils/mbsh/builtin/buitInCmds.go
applets/shellutils/path
mimixbox/internal/applets/shellutils/path/path.go
mimixbox/internal/applets/shellutils/path/path.go
applets/shellutils/printenv
mimixbox/internal/applets/shellutils/printenv/printenv.go
mimixbox/internal/applets/shellutils/printenv/printenv.go
applets/shellutils/pwd
mimixbox/internal/applets/shellutils/pwd/pwd.go
mimixbox/internal/applets/shellutils/pwd/pwd.go
applets/shellutils/sddf
mimixbox/internal/applets/shellutils/sddf/sddf.go
mimixbox/internal/applets/shellutils/sddf/sddf.go
applets/shellutils/seq
mimixbox/internal/applets/shellutils/seq/seq.go
mimixbox/internal/applets/shellutils/seq/seq.go
applets/shellutils/sleep
mimixbox/internal/applets/shellutils/sleep/sleep.go
mimixbox/internal/applets/shellutils/sleep/sleep.go
applets/shellutils/sync
mimixbox/internal/applets/shellutils/sync/sync.go
mimixbox/internal/applets/shellutils/sync/sync.go
applets/shellutils/true
mimixbox/internal/applets/shellutils/true/true.go
mimixbox/internal/applets/shellutils/true/true.go
applets/shellutils/uuidgen
mimixbox/internal/applets/shellutils/uuidgen/uuidgen.go
mimixbox/internal/applets/shellutils/uuidgen/uuidgen.go
applets/shellutils/wget
mimixbox/internal/applets/shellutils/wget/wget.go
mimixbox/internal/applets/shellutils/wget/wget.go
applets/shellutils/whoami
mimixbox/internal/applets/shellutils/whoami/whoami.go
mimixbox/internal/applets/shellutils/whoami/whoami.go
applets/textutils/cat
mimixbox/internal/applets/textutils/cat/cat.go
mimixbox/internal/applets/textutils/cat/cat.go
applets/textutils/dos2unix
mimixbox/internal/applets/textutils/dos2unix/dos2unix.go
mimixbox/internal/applets/textutils/dos2unix/dos2unix.go
applets/textutils/expand
mimixbox/internal/applets/textutils/expand/expand.go
mimixbox/internal/applets/textutils/expand/expand.go
applets/textutils/head
mimixbox/internal/applets/textutils/head/head.go
mimixbox/internal/applets/textutils/head/head.go
applets/textutils/md5sum
mimixbox/internal/applets/textutils/md5sum/md5sum.go
mimixbox/internal/applets/textutils/md5sum/md5sum.go
applets/textutils/nl
mimixbox/internal/applets/textutils/nl/nl.go
mimixbox/internal/applets/textutils/nl/nl.go
applets/textutils/sha1sum
mimixbox/internal/applets/textutils/md5sum/md5sum.go
mimixbox/internal/applets/textutils/md5sum/md5sum.go
applets/textutils/sha256sum
mimixbox/internal/applets/textutils/sha256sum/sha256sum.go
mimixbox/internal/applets/textutils/sha256sum/sha256sum.go
applets/textutils/sha512sum
mimixbox/internal/applets/textutils/sha512sum/sha512sum.go
mimixbox/internal/applets/textutils/sha512sum/sha512sum.go
applets/textutils/tac
mimixbox/internal/applets/textutils/tac/tac.go
mimixbox/internal/applets/textutils/tac/tac.go
applets/textutils/tail
mimixbox/internal/applets/textutils/tail/tail.go
mimixbox/internal/applets/textutils/tail/tail.go
applets/textutils/tr
mimixbox/internal/applets/textutils/tr/tr.go
mimixbox/internal/applets/textutils/tr/tr.go
applets/textutils/unexpand
mimixbox/internal/applets/textutils/expand/expand.go
mimixbox/internal/applets/textutils/expand/expand.go
applets/textutils/unix2dos
mimixbox/internal/applets/textutils/unix2dos/unix2dos.go
mimixbox/internal/applets/textutils/unix2dos/unix2dos.go
applets/textutils/wc
mimixbox/internal/applets/textutils/wc/wc.go
mimixbox/internal/applets/textutils/wc/wc.go
lib
mimixbox/internal/lib/common.go
mimixbox/internal/lib/common.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL