Coder Social home page Coder Social logo

iso-tool's Introduction

Nitrux ISO Tool | Generic badge Generic badge Awesome

Overview

iso-tool is a shell script for generating Nitrux ISO files. The code is very readable and so self-documented.

This branch generates an ISO file with NX Desktop. The ISO image generated in this branch utilizes Calamares as its installer.

Please refer to our tutorial "How to install Nitrux" for more information about how to flash this ISO and install it to a storage device.

Licensing

The repository and its contents are licensed under BSD-3-Clause.

Issues

If you find problems with the contents of this repository, please create an issue.

ยฉ2022 Nitrux Latinoamericana S.C.

iso-tool's People

Contributors

anupam-git avatar lnxslck avatar lslvr avatar uriherrera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iso-tool's Issues

Set GRUB theme during build time

Currently, the GRUB theme is not being set even though the package grub2-theme-nomad is installed. This line has to be added to /etc/default/grub:

  • GRUB_THEME="/usr/share/grub/themes/nomad/theme.txt"

Reduce size of initramfs or kernel for performance

The initramfs should only contain what is necessary for the operating system to boot. We have to determine what that is, and then we can reduce its size.

This issue is in addition to #41. We're currently using initramfs-tools to generate it, but also dracut can be used; it seems that with dracut, its size is reduced.

But our scripts don't make use of it.


Another option is to reduce the size of the kernel that we use. As a comparison, our current Linux kernel starts in 4.7s vs. Clear Linux's 1.2s. The target should be to boot the system from GRUB to Desktop in 3 seconds, and this is not just for a better boot time for desktop computers, but for embedded devices where we can't have the luxury of have the user wait for the device to start up.

Replace Systemd as the init system in Nitrux

Nitrux currently uses Systemd as the init system (that we inherited from Ubuntu, not as a choice by us). We prefer to follow the Unix way of doing things, "do one thing and do it well."

znx, for example, doesn't attempt to do more than what it was designed to do. Our focus on AppImages also indicates that we prefer to have to manage one file (the AppImage file) instead of a multitude of packages. Nitrux itself is deployed as one file by znx. The operating systems that VMetal runs are also contained as a single file.

Systemd is more than an init system that doesn't follow that way. See Wikipedia:File:Systemd components.svg.

systemd, is a software suite, full replacement for init in Linux that includes an init daemon[...]

With that said, we should considerate simplifying our distribution by using a more straightforward init system.

The following are the options:

  • s6-init, s6-Linux-init is a set of minimalistic tools used to create an s6-based init system, including a /sbin/init binary, on a Linux kernel.
  • SysVinit, The traditional Linux SysV clone.
  • runit, a full cross-platform replacement for init with parallel starting of services.
  • OpenRC, a process spawner that utilizes system-provided init, while providing process isolation, parallelized startup, and service dependency.
  • busybox-init, suited for embedded operating systems.

Create a baseline build script for Ubuntu

Nomad desktop and the Nitrux OS is currently being built on the back of Ubuntu LTS. As of now however there is no easy way to build an Ubuntu ISO or derivatives with OverlayFS working with the proper persistence that Nitrux has.

With that in mind a script file to build Ubuntu LTS ISO with persistence is needed for those wanting to take advantage of anything outside of a live ISO. With the current Nitrux ISO tool there is a lot of extra components currently not needed to build just a vanilla Ubuntu ISO.

nsswitch.conf is empty after exiting the chroot and before creating the ISO

Describe the bug
ISOs have presented a bug where the use of sudo would show a message similar to sudo unable to resolve address associated with hostname meaning that the hostname wasn't being resolved by the system.

I have tracked this issue to the file nsswitch.conf being empty after the chroot exits. However, the file is neither empty before or during the chroot.

This issue was not present before and it might be related to new changes introduced in https://github.com/Nitrux/tools.

Screenshots
VirtualBox_Nitrux_31_03_2020_18_07_20

Error message after using sudo.

VirtualBox_Nitrux_31_03_2020_18_09_27

The file is empty on the packaged ISO.

Reduce the boot time of Nitrux

As commented in #33 the boot time is currently over 30 seconds (it's almost 50 in fact), and that's not acceptable.

We have to investigate why it takes the operating system so much time to boot.

Add the HASH_URL field to the .INFO file.

As znx is now capable of checking for updates (issue #59), we have to add support for this feature on our ISO image.

A new field: HASH_URL has to be added to the .INFO file. The URL should point to an md5 hash of the ISO image. We are already providing a sha256 hash, so it's just a matter of doing some tweaking.

Embed update information in the ISO file.

The update information should be embedded on the image, so znx is able to read from it. This is achieved by writting to the Volume Descriptor field of the ISO image (found at offset 33651).

Add vboxsf module

The mainline kernel includes two modules for VirtualBox integration, vboxguest and vboxvideo however it lacks a third module which is included in the Ubuntu kernel, vboxsf which provides the shared folders functionality.

Generate locales

Our current ISO suffers from a locale generation problem. We do include the translations for the software that we ship, but these are not available in System Settings.

Related Nitrux/nitrux-bug-tracker#4

Append file extension to ISO image and zsync file

Currently, the script is generating two files

  • nitrux_release_testing.iso and,
  • nitrux_release_testing.iso.zsync

The same name is given to both files and this is because of the value of IMAGE_NAME=
https://github.com/Nitrux/mkiso/blob/a39feb982df98847978d15840f02c2bfeda1b820/build.sh#L9

It seems that the file extension is only added to the zsync file but not the ISO image.
https://github.com/Nitrux/mkiso/blob/a39feb982df98847978d15840f02c2bfeda1b820/build.sh#L96-L107
https://github.com/Nitrux/mkiso/blob/a39feb982df98847978d15840f02c2bfeda1b820/build.sh#L112

Clean up scripts

Clean up the mkiso scripts and make use of meta-packages to build the ISO.

Better way to handle users

To better handle multiple users in a deployed system, we need a more human way of doing this. Currently, in a deployed system, if the user decides to create a new user and remove the default Live user, the image will boot to a black screen.

This behavior occurs because Casper loads its values for username from either a parameter in GRUB or from the file /etc/casper.conf.

The latest images include the configuration file in favor of the GRUB parameter, however, this file is ignored after a new user has been added and therefore edited by the user, due to Casper loading the file from the lower-dir of the OverlayFS.

Include a custom .profile and/or .mksh file

Although we do mostly focus on the end-user that uses graphical software, it's not a bad idea to also make the Terminal look and feel beautiful too.

Some custom features to include where appropriate:

  • Try to adapt Powerline to work with mksh.
  • Pre-configured Linuxbrew paths.
# Linuxbrew setup.
if [ -d /home/linuxbrew/.linuxbrew ]; then
    LINUXBREW=/home/linuxbrew/.linuxbrew
else
    LINUXBREW=$HOME/.linuxbrew
fi

export PATH="$LINUXBREW/bin:$PATH"
export MANPATH="$LINUXBREW/share/man:$MANPATH"
export INFOPATH="$LINUXBREW/share/info:$INFOPATH"

export PATH=$HOME/go/bin:$PATH
  • mksh autocomplete (necessary)
  • Others?

Support for Arch Linux

Do you have any plan for nomad desktop in arch linux?Atleast if you make a mkiso script for arch like ubuntu based, we can generate arch iso with the script. Nomad is awesome and very simple.

Remove agetty in favor of fgetty

fgetty is a minimal, efficient, console-only getty and login.

So small there's no documentation for it โ€” It's also very simple, so it's great for our use.

Development image not booting after using new znx parameter

Describe the bug
Deploying the development image results in the booting process being interrupted with an error about the command mount.

Mounting the partition to /isodevice results in failure since the directory /isodevice does not exist.

Then, creating the directory and mounting the partition where the image is deployed and exiting the initramfs shell to continue the boot process still results in an unknown error.

To Reproduce
Steps to reproduce the behavior:

  1. Download the Nitrux development image.
  2. Deploy it and reboot.

Expected behavior
The image boots to the desktop.

Screenshots
VirtualBox_Nitrux_21_10_2019_21_01_00

Desktop (please complete the following information):

  • OS: Nitrux

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.