# Padavan-Luna
**Collection of various patches and configurations for [padavan-ng](https://gitlab.com/hadzhioglu/padavan-ng) firmware.**
*[Luna art](https://www.deviantart.com/ragerer/art/Princess-Luna-Smiling-Winky-Face-467319378) by [RAGErER](https://www.deviantart.com/ragerer)*
![Luna Web UI](media/luna_webui.gif)
# Patches
To install a patch get it from `patches` directory and apply using `patch` or `git patch` tool to [Padavan repository](https://gitlab.com/hadzhioglu/padavan-ng). If patch needs to replace files, copy them to the root of repository.
| Patch | Purpose | Replaces files? |
|----------------------------------------------------|-----------------------------------------------------------------------|-----------------|
| [Banner](patches/banner.patch) | Replaces banner printed upon SSH login | Y |
| [ls lh](patches/ls_lh.patch) | Aliases ls to ls -lh by default | N |
| [Menuconfig](patches/menuconfig.patch) | Adds support for menuconfig in Makefile (executes on build) | N |
| [Fast compilation](patches/fast_compilation.patch) | Decreases compilation time by evaluating constant variables only once | N |
| [Strip CSS](patches/strip_css.patch) | Strips down main.css by removing deprecated rules | N |
| [WWW](patches/www.patch) | Adds custom theme to Web UI | Y |
# Configurations
[Sample config files](configs) that can be loaded using [menuconfig patch](patches/menuconfig.patch) on build.
### Kernel
```bash
CONFIG_NO_HZ=y
CONFIG_DEFAULT_HOSTNAME=luna
CONFIG_BUG=n
CONFIG_PCI_QUIRKS=n
CONFIG_SLAB=n
CONFIG_SLUB=y
CONFIG_NET_PPPOE_PTHROUGH=n
CONFIG_BLK_DEV_LOOP=n
CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
```
### Busybox
```bash
CONFIG_CHROOT=n
CONFIG_DOS2UNIX=n
CONFIG_UNIX2DOS=n
CONFIG_UNAME_OSNAME=GNU/Ponix
CONFIG_VI=n
CONFIG_CHPASSWD=n
CONFIG_FLOCK=n
CONFIG_SWITCH_ROOT=n
CONFIG_FEATURE_MOUNT_LOOP=n
CONFIG_CROND=n
CONFIG_CRONTAB=n
CONFIG_STRINGS=n
CONFIG_DNSDOMAINNAME=n
CONFIG_INETD=n
```
### Toolchain
```bash
CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
CT_EXTRA_CFLAGS_FOR_BUILD="-O3"
CT_EXTRA_LDFLAGS_FOR_BUILD="-O3"
CT_TARGET_CFLAGS="-pipe -O3"
CT_ARCH_TUNE=""
CT_ARCH_ARCH="" # Set to your target arch manually
CT_CC_GCC_ENABLE_TARGET_OPTSPACE=n
```
# Compiler extra flags
It is possible to add compiler flags for the entire build by wrapping toolchain binaries in script and hardlinking them.
### How to install
1. Build the toolchain
2. Move original binaries from `toolchain/out/bin` to `toolchain/out/bin_original`
3. Copy `wrapper.sh` and `setup_hardlinks.sh` to `toolchain/out/bin`
4. Execute `setup_hardlinks.sh`
5. Edit compiler and linker flags (`-O3` by default) in `wrapper.sh` to suit your needs
# Expanding further
There are more changes that could have been done, but they failed to apply.
See [here](FAILED_MODIFICATIONS.md)
# Contributing
All issues and pull requests are welcome! Feel free to open an issue if you've got an idea or a problem. You can open a pull request if you are able to implement it yourself.
---
Made with ponies and love!
GNU GPL © Ryze 2023