Giter Site home page Giter Site logo

lemon's Introduction

Introduction

-----------------------------------------------------------------------------------------------------------------------------------------------------------

lemon is an installer for Arch Linux that aims to be able to clone just about any Arch installation (or install a completely fresh one!).

Both ext4 and btrfs are supported at present, and a sensible btrfs subvolume configuration is included. Btrfs can be enabled via lemon.conf.

pacman can be used to generate a list of all packages installed on any given system, which can then be used as a packagelist for lemon. AUR package support is present, and can be toggled via lemon.conf (enabled by default).

Note: Only systemd is officially supported. While it's technically possible to use other init systems with lemon, it will not configure them for you automatically. As always, YMMV.

Instructions

-----------------------------------------------------------------------------------------------------------------------------------------------------------
step 1:

clone this repository into any directory on a running Arch Linux installation ISO

git clone https://github.com/m1ndflay3r/lemon

.

step 2:

give lemon execute permissions

(note: the executable lemon, not the lemon folder)

chmod 755 /path/to/lemon/directory/lemon

.

step 3:

either manually write a packagelist with each package on its own line, or use pacman to generate a list on an existing installation (recommended).

pacman -Qqe > /path/to/lemon/directory/lists/packagelist

If you generate a packagelist from a preexisting system, you will need to manually copy it to the lists folder within lemon on the arch install iso.

Note: If you have any AUR packages installed, they will be added to the auto-generated list as well. In this case, it is highly recommended to enable both AURPACKAGELIST and RETRYASAUR in lemon.conf (both are enabled by default).

.

step 4:

create a servicelist containing every service you would like enabled during installation, with each service on its own line.

eg:

cd /path/to/lemon/directory

echo "ssh" >> lists/servicelist

echo "lightdm" >> lists/servicelist

echo "NetworkManager" >> lists/servicelist

.

step 5:

edit lemon.conf and adjust any flags you require (things like grub, refind, multilib usage, etc)

Note that there are certain behaviors that interact with eachother, for example disabling root will automatically enable non-root user regardless of its explicit setting. These interactions will only ever serve to make sure a working system is present at the end of the install.

Full information on each flag and its usage can be found in the comments inside lemon.conf.

.

step 6:

Launch lemon and begin the installation!

./path/to/lemon/directory/lemon

.

Optional: AUR packages

AUR package support exists, and can be toggled via the AURPACKAGELIST flag in lemon.conf (enabled by default).

To use this feature, create the file aurpackagelist in the same format as a regular packagelist (but using aur packages, obviously).

eg:

cd /path/to/lemon/directory/

echo "stress-ng" >> lists/aurpackagelist

echo "wine-staging-git" >> lists/aurpackagelist

.

Optional: post install scripts

Post install scripts can be added to /path/to/lemon/directory/postinstall, and will be executed at the very end of the install before exiting the chroot step.

This feature can be enabled via the POSTINSTALLSCRIPTS flag in lemon.conf.

.

Note: Only vanilla Arch Linux is officially supported. while this may work with arch-based distros such as manjaro, this is not officially supported (and will definitely require tweaking lemon.conf to prevent breakage). Your mileage may vary.

lemon's People

Contributors

m1ndflay3r avatar

Stargazers

Maciej Pędzich (Mac) avatar  avatar Paul avatar

Watchers

 avatar

Forkers

maciejpedzich

lemon's Issues

Add menu to change config options

Editing lemon.conf by hand works just fine, but isn't exactly user friendly. I want to add a menu within lemon to change opts to enabled or disabled simply and concisely without having to edit anything.

Todo: Unmount mounted partitions if lemon is interrupted / fails

Currently, if lemon successfully mounts partitions but fails or is interrupted at a later point, these partitions remain mounted causing lemon to fail on subsequent runs without either manually unmounting these partitions or restarting the device. This can be remedied by keeping a list of partitions mounted by lemon in a separate file in /tmp/ and having lemon check for the presence of that file on launch, unmounting mounted partitions contained within it if so.

Todo: check if drive exists in formatter

Currently the formatter trusts the user to be correct. If the user happens to make a typo and not notice it (eg, typing /dev/sdaa1 instead of /dev/sda1) it will proceed without checking and fail.

AUR package installer cannot write to log

Bizzare issue that popped up as of the newer arch install isos. Even with sudo, the unprivileged user used to install aur packages is unable to write to the log due to permission denied. Attempted to work around by having aur installer write to a local log in /home/aur, then have lemonaid copy its contents to the main log if present. Didn't work. Bash is angry with me and I've come to believe I've personally angered Brian Fox.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.