roar-ng and Subito GNU/Linux 0.9.5 Beta
Posted: Sat 04 Feb 2012, 19:17
Introduction
roar-ng is a generic distribution building system originally forked from Woof, the Puppy Linux build system.
You can follow its development in GitHub, where I host its code now. If you want to use it, check out its code using Git.
It provides an architecture-independent, flexible and portable infrastructure for the creation of fast, "live" GNU/Linux distributions with support for persistency and dynamic loading of modules. It provides support for the binary package format and repositories of various GNU/Linux distributions.
The development of roar-ng started as a collection of source hacks of Woof and evolved into a complete, independent re-implementation. It provides advanced features not found in Woof, such as parallel downloads, automatic package splitting, simple branding and easy porting to different processor architectures.
Overview
roar-ng, as mentioned earlier, is a build system: it's a tool which receives a list of binary packages, appropriate download locations and the result distribution's details as its input and outputs a ready, bootable image of the distribution.
It consists of 5 main scripts; their names and roles are inherited from Woof:
- 0setup - a script which downloads the package repositories information and converts it into a common format used by roar-ng in order to provide the support for multiple distributions.
- 1download - a script used to download all binary packages specified in the package list.
- 2createpackages - a package processing script used to extract, customize, optimize and split the downloaded binary packages.
- 3builddistro - a script which builds a bootable image of tDistribution Features
---------------------
The distributions built using roar-ng are unique and can compete directly with any popular "live" distribution easily. Their main features are:
- Easy maintenance - low cost, easy development which makes the product live longer and makes it more resilient to the biggest enemies of distributions - loss of developers or community support.
- Portability - the ability to run from any media supported by the kernel.
- Modularity - the ability to load extensions dynamically.
- Persistence - persistent sessions through automatically created save files.
- Extensibility - good quality, generic and well-documented code.
- Simplicity - simple configuration, package management and usage.
- "Native" feel - although the distribution is "live", it does not feel that way; it provides full access to the file system.
he distribution from the processed packages and an operating system skeleton shared by all the distributions built using the build system.
- 4buildpackage - a script which builds binary package within the distribution built using the former script, using build scripts.
With proper input, roar-ng should successfuly output a solid distribution.
History
The development of roar-ng was triggered by personal frustration with Woof's 3builddistro script, which wasn't flexible enough for a Puppy Linux derivative called "Next Puppy" and its successor, "Guy Dog". It started during the development of a Puppy Linux derivative codenamed "Humble Puppy", which was based on the Slackware-based Puppy Linux 5.3.1.
At first, roar-ng consisted of a modified 3builddistro script, which was much simpler and faster than the original, but produced a very similar result and provided minimal benefit. This modified script was soon replaced by a clean re-implementation, which provided much smaller output. In addition, several modifications were made to the Puppy Linux skeleton, which removed many legacy or rarely used components, while extras (such as a new package manager) were provided as packages.
Then, 1download was the second script modified; the most notable addition was parallel download of binary packages, which made it considerably faster. This addition made Woof faster.
Finally, 2createpackages, the most complex script of Woof, had very little room for improvement because of its poor quality, complexity and inefficience. This is the point where roar-ng's development as an independent projected started.
Finally, Builder, an automated package building framework, was merged into roar-ng during a big cycle major changes, which cut the final ties to Woof and Puppy Linux.
It is worth mentioning the roar-ng inherits much from Calf GNU/Linux, a concept distribution developed between 2010 and 2011. It served as a proof-of-concept for the developer's view of what Puppy Linux 6.0 should be.
Usage
roar-ng's configuration consists of 3 files:
- bootrc - boot settings; this file is read by the initial init script.
- distrorc - basic distribution details, such as its name, version, etc'.
- package_list - the list of packages included in the distribution; each package has its own source distribution (e.g the distribution it was taken from).
The configuration files should be prepared before roar-ng's scripts are executed. However, modification of the package list is possible after their execution.
Once the configuration is ready, the scripts should be executed in the following order:
- 0setup
- 1download
- 2createpackages
- 3builddistro
roar-ng's execution does not take a long time, when provided with a fast network connection and fast mirrors, since 1download is the slowest script to execute. 4buildpackage is an optional script useful only in cases where automatic package building is needed.
Distribution Features
The distributions built using roar-ng are unique and can compete directly with any popular "live" distribution easily. Their main features are:
- Easy maintenance - low cost, easy development which makes the product live longer and makes it more resilient to the biggest enemies of distributions - loss of developers or community support.
- Portability - the ability to run from any media supported by the kernel.
- Modularity - the ability to load extensions dynamically.
- Persistence - persistent sessions through automatically created save files.
- Extensibility - good quality, generic and well-documented code.
- Simplicity - simple configuration, package management and usage.
- "Native" feel - although the distribution is "live", it does not feel that way; it provides full access to the file system.
Dependencies
It is worth mentioning that roar-ng has several requirements; some packages must be included in the result distribution in order to make roar-ng's distribution skeleton function.
This is the full list of must-have dependencies of roar-ng and the
distributions built by it. Also, it specifies all special, "system" files
created by the init scripts and the distribution skeleton.
roar-ng Itself
- A POSIX-compliant shell (either Bash or DASH)
- Python (for package list conversion scripts called by 0setup)
- Squashfs tools
- cdrkit or cdrtools (for either mkisofs or genisoimage, respectively)
- GNU Binutils (for "strip")
- cpio
- gzip
- Squashfs tools
- For 4buildpackage: Aufs, in the host's kernel
- Recommended: aria2, for parallel downloads - makes 1download much faster.
- Recommended: AdvanceCOMP, OptiPNG and a recent version of file (for package optimization)
Distribution Kernel
- Squashfs (in mainline, built into kernel)
- Aufs (built into kernel)
- Drivers for all devices the distribution can boot from, built into the kernel
- File system drivers for file systems the distribution can load save files from, built into the kernel
Distribution Packages
- DASH (for many scripts)
- Busybox (with mdev)
- dialog (used for some wizards)
- udev
- dialog (used by many wizards)
- iptables (used by /etc/init.d/firewall)
- hsetroot (used by xinitrc), which pulls in imlib2
- gtkdialog (used by some wizards)
- cwm (the default window manager), which pulls in libbsd
- syslinux (to make the result ISO image bootable)
- librsvg (to generate PNG logo images from the default, SVG one)
Subito GNU/Linux Alpha 1
As mentioned earlier, Subito GNU/Linux is the flagship distribution built by roar-ng and its main use. Here's the beta release, in all its glory.
In its current form, Subito GNU/Linux has only a x86_64 port, so you'll need compatible hardware to use it.
ISO: subito-0.9.5.iso
devx: devx_subito-0.9.0.sfs
MD5: md5sums.txt
This ISO is hybrid, which means you can make a live USB easily, just dd it to the device.
Have fun!
roar-ng is a generic distribution building system originally forked from Woof, the Puppy Linux build system.
You can follow its development in GitHub, where I host its code now. If you want to use it, check out its code using Git.
It provides an architecture-independent, flexible and portable infrastructure for the creation of fast, "live" GNU/Linux distributions with support for persistency and dynamic loading of modules. It provides support for the binary package format and repositories of various GNU/Linux distributions.
The development of roar-ng started as a collection of source hacks of Woof and evolved into a complete, independent re-implementation. It provides advanced features not found in Woof, such as parallel downloads, automatic package splitting, simple branding and easy porting to different processor architectures.
Overview
roar-ng, as mentioned earlier, is a build system: it's a tool which receives a list of binary packages, appropriate download locations and the result distribution's details as its input and outputs a ready, bootable image of the distribution.
It consists of 5 main scripts; their names and roles are inherited from Woof:
- 0setup - a script which downloads the package repositories information and converts it into a common format used by roar-ng in order to provide the support for multiple distributions.
- 1download - a script used to download all binary packages specified in the package list.
- 2createpackages - a package processing script used to extract, customize, optimize and split the downloaded binary packages.
- 3builddistro - a script which builds a bootable image of tDistribution Features
---------------------
The distributions built using roar-ng are unique and can compete directly with any popular "live" distribution easily. Their main features are:
- Easy maintenance - low cost, easy development which makes the product live longer and makes it more resilient to the biggest enemies of distributions - loss of developers or community support.
- Portability - the ability to run from any media supported by the kernel.
- Modularity - the ability to load extensions dynamically.
- Persistence - persistent sessions through automatically created save files.
- Extensibility - good quality, generic and well-documented code.
- Simplicity - simple configuration, package management and usage.
- "Native" feel - although the distribution is "live", it does not feel that way; it provides full access to the file system.
he distribution from the processed packages and an operating system skeleton shared by all the distributions built using the build system.
- 4buildpackage - a script which builds binary package within the distribution built using the former script, using build scripts.
With proper input, roar-ng should successfuly output a solid distribution.
History
The development of roar-ng was triggered by personal frustration with Woof's 3builddistro script, which wasn't flexible enough for a Puppy Linux derivative called "Next Puppy" and its successor, "Guy Dog". It started during the development of a Puppy Linux derivative codenamed "Humble Puppy", which was based on the Slackware-based Puppy Linux 5.3.1.
At first, roar-ng consisted of a modified 3builddistro script, which was much simpler and faster than the original, but produced a very similar result and provided minimal benefit. This modified script was soon replaced by a clean re-implementation, which provided much smaller output. In addition, several modifications were made to the Puppy Linux skeleton, which removed many legacy or rarely used components, while extras (such as a new package manager) were provided as packages.
Then, 1download was the second script modified; the most notable addition was parallel download of binary packages, which made it considerably faster. This addition made Woof faster.
Finally, 2createpackages, the most complex script of Woof, had very little room for improvement because of its poor quality, complexity and inefficience. This is the point where roar-ng's development as an independent projected started.
Finally, Builder, an automated package building framework, was merged into roar-ng during a big cycle major changes, which cut the final ties to Woof and Puppy Linux.
It is worth mentioning the roar-ng inherits much from Calf GNU/Linux, a concept distribution developed between 2010 and 2011. It served as a proof-of-concept for the developer's view of what Puppy Linux 6.0 should be.
Usage
roar-ng's configuration consists of 3 files:
- bootrc - boot settings; this file is read by the initial init script.
- distrorc - basic distribution details, such as its name, version, etc'.
- package_list - the list of packages included in the distribution; each package has its own source distribution (e.g the distribution it was taken from).
The configuration files should be prepared before roar-ng's scripts are executed. However, modification of the package list is possible after their execution.
Once the configuration is ready, the scripts should be executed in the following order:
- 0setup
- 1download
- 2createpackages
- 3builddistro
roar-ng's execution does not take a long time, when provided with a fast network connection and fast mirrors, since 1download is the slowest script to execute. 4buildpackage is an optional script useful only in cases where automatic package building is needed.
Distribution Features
The distributions built using roar-ng are unique and can compete directly with any popular "live" distribution easily. Their main features are:
- Easy maintenance - low cost, easy development which makes the product live longer and makes it more resilient to the biggest enemies of distributions - loss of developers or community support.
- Portability - the ability to run from any media supported by the kernel.
- Modularity - the ability to load extensions dynamically.
- Persistence - persistent sessions through automatically created save files.
- Extensibility - good quality, generic and well-documented code.
- Simplicity - simple configuration, package management and usage.
- "Native" feel - although the distribution is "live", it does not feel that way; it provides full access to the file system.
Dependencies
It is worth mentioning that roar-ng has several requirements; some packages must be included in the result distribution in order to make roar-ng's distribution skeleton function.
This is the full list of must-have dependencies of roar-ng and the
distributions built by it. Also, it specifies all special, "system" files
created by the init scripts and the distribution skeleton.
roar-ng Itself
- A POSIX-compliant shell (either Bash or DASH)
- Python (for package list conversion scripts called by 0setup)
- Squashfs tools
- cdrkit or cdrtools (for either mkisofs or genisoimage, respectively)
- GNU Binutils (for "strip")
- cpio
- gzip
- Squashfs tools
- For 4buildpackage: Aufs, in the host's kernel
- Recommended: aria2, for parallel downloads - makes 1download much faster.
- Recommended: AdvanceCOMP, OptiPNG and a recent version of file (for package optimization)
Distribution Kernel
- Squashfs (in mainline, built into kernel)
- Aufs (built into kernel)
- Drivers for all devices the distribution can boot from, built into the kernel
- File system drivers for file systems the distribution can load save files from, built into the kernel
Distribution Packages
- DASH (for many scripts)
- Busybox (with mdev)
- dialog (used for some wizards)
- udev
- dialog (used by many wizards)
- iptables (used by /etc/init.d/firewall)
- hsetroot (used by xinitrc), which pulls in imlib2
- gtkdialog (used by some wizards)
- cwm (the default window manager), which pulls in libbsd
- syslinux (to make the result ISO image bootable)
- librsvg (to generate PNG logo images from the default, SVG one)
Subito GNU/Linux Alpha 1
As mentioned earlier, Subito GNU/Linux is the flagship distribution built by roar-ng and its main use. Here's the beta release, in all its glory.
In its current form, Subito GNU/Linux has only a x86_64 port, so you'll need compatible hardware to use it.
ISO: subito-0.9.5.iso
devx: devx_subito-0.9.0.sfs
MD5: md5sums.txt
This ISO is hybrid, which means you can make a live USB easily, just dd it to the device.
Have fun!