TheeMahns Operating System Builder
- Disclaimer / Introduction
- Pre-requisites / Requirements
- Usage / Help system
- How it works
- Building our first Operating System
- Enhancing our first Operating System
- The Anti-Malware inititive
- Customising our first Operating System
- Resulting Operating Systems
- Final Words
- Source Code
- Frequently Asked Questions
- Downloads
Disclaimer / Introduction:
I am Glenn "TheeMahn" Cady, leading developer of Ultimate Edition Linux and leading programmer of aforesaid Operating System. I have been building Ultimate Edition Operating Systems since the year 2006. I have been writing software in excess of 30 years, so I am no newbie in application development. I have slowly been removing tasks from my agenda of tasks I have at hand, which is large none the less. I have been doing so in production of software. What is TheeMahn's Operating System Builder?
TheeMahn's Operating System builder will build one of 84 different Operating Systems with the simplicity of a single command dropped in the terminal. It is not limited to the production of Ultimate Edition, it too will build a Ubuntu O/S from the ground up. Future versions could encapsulate Debain to do the same as an example.
I take 0 responsibity for hosing your current Operating System / software etc. This application will not run w/o the proper permissions and that is a solid root environment. With hightened permissions comes great responsibility. I personally have not hosed my Operating System, however I am quite savvy and very comfortable in a terminal. That being said; your milage may vary. Did you know another job I have is documentation management this entire document is a work in progress and you can rest assured will adjust as time goes on. No wonder I can't answer your emails etc. Remove one job at a time right? I do have software in works to autogenerate documentation. Certainly not as elaborate as this document is and only 1/2 done.
Pre-requisites / Requirements:
I highly suggest creating a subfolder to work out of open a terminal and enter the following:
- Code: Select all
mkdir wip/
cd wip
Assume the role of su (superuser), a password for this account will have to be made / set:
- Code: Select all
sudo passwd #Enter your current password & password for new account 2 times
su # Enter the password you set last
Software wise TheeMahn's O/S Builder does have additional software requirements (the deb will install these for you):
Depends: libc6(>=2.5-0ubuntu1),wget,rsync,squashfs-tools,lzma,genisoimage,memtest86+,python
Recommends: ttf-liberation, kvm, gnome-session-canberra, qemu-kvm
The depends line are absolute requirements, the recommends are for example if you intend to test the newly built Operating System (qemu). I do highly suggest installing the recommended as well.
Usage / Help system:
Let's begin, by delving into the poorly documented help system (I'm sure I will enhance as time goes on):
theemahn@JackHammer:~$ tmosb
DEBUGGING Number of switches passed: 0
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
Usage: tmosb -<-COMMAND> [OPTION]
Mandatory arguments to long options are identical for short options.
possible commands...
-b --build builds Operating System(s)
-B --buildiso builds ISO
-C --clearcache clears system cache
-c --cacheinfo displays various cache information
-e --extract extract ISO(s)
-h --help this help message
-p --pull pulls all source code to current folder
-t --test test ISO in virtual machine and exit
-u --upgrade distro upgrades existing Operating System(s)
-v --version dump version info and exit
tmosb --help [COMMAND] for further information.
theemahn@JackHammer:~$
Let's go right down the list the build [option], perhaps the most important:
theemahn@JackHammer:~$ tmosb --build
DEBUGGING Number of switches passed: 1
Switch 1: --build
1:--build 2: 3:
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
ERROR: Invalid switch. Generating valid switches:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.4 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.4-x86-lite.iso
tmosb --build ultimate-edition-3.4-x64-lite.iso
tmosb --build ultimate-edition-3.4-x86-gamers.iso
tmosb --build ultimate-edition-3.4-x64-gamers.iso
tmosb --build ultimate-edition-3.4-x64.iso
tmosb --build ultimate-edition-3.4-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.5 Precise Pangolin x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.5-x86-lite.iso
tmosb --build ultimate-edition-3.5-x64-lite.iso
tmosb --build ultimate-edition-3.5-x86-gamers.iso
tmosb --build ultimate-edition-3.5-x64-gamers.iso
tmosb --build ultimate-edition-3.5-x64.iso
tmosb --build ultimate-edition-3.5-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.6 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.6-x86-lite.iso
tmosb --build ultimate-edition-3.6-x64-lite.iso
tmosb --build ultimate-edition-3.6-x86-gamers.iso
tmosb --build ultimate-edition-3.6-x64-gamers.iso
tmosb --build ultimate-edition-3.6-x64.iso
tmosb --build ultimate-edition-3.6-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.7 Quantal Quetzal x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.7-x86-lite.iso
tmosb --build ultimate-edition-3.7-x64-lite.iso
tmosb --build ultimate-edition-3.7-x86-gamers.iso
tmosb --build ultimate-edition-3.7-x64-gamers.iso
tmosb --build ultimate-edition-3.7-x64.iso
tmosb --build ultimate-edition-3.7-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.8 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.8-x86-lite.iso
tmosb --build ultimate-edition-3.8-x64-lite.iso
tmosb --build ultimate-edition-3.8-x86-gamers.iso
tmosb --build ultimate-edition-3.8-x64-gamers.iso
tmosb --build ultimate-edition-3.8-x64.iso
tmosb --build ultimate-edition-3.8-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.9 Raring Ringtail x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.9-x86-lite.iso
tmosb --build ultimate-edition-3.9-x64-lite.iso
tmosb --build ultimate-edition-3.9-x86-gamers.iso
tmosb --build ultimate-edition-3.9-x64-gamers.iso
tmosb --build ultimate-edition-3.9-x64.iso
tmosb --build ultimate-edition-3.9-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.0 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.0-x86-lite.iso
tmosb --build ultimate-edition-4.0-x64-lite.iso
tmosb --build ultimate-edition-4.0-x86-gamers.iso
tmosb --build ultimate-edition-4.0-x64-gamers.iso
tmosb --build ultimate-edition-4.0-x64.iso
tmosb --build ultimate-edition-4.0-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.1 Saucy Salamander x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.1-x86-lite.iso
tmosb --build ultimate-edition-4.1-x64-lite.iso
tmosb --build ultimate-edition-4.1-x86-gamers.iso
tmosb --build ultimate-edition-4.1-x64-gamers.iso
tmosb --build ultimate-edition-4.1-x64.iso
tmosb --build ultimate-edition-4.1-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.2 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.2-x86-lite.iso
tmosb --build ultimate-edition-4.2-x64-lite.iso
tmosb --build ultimate-edition-4.2-x86-gamers.iso
tmosb --build ultimate-edition-4.2-x64-gamers.iso
tmosb --build ultimate-edition-4.2-x64.iso
tmosb --build ultimate-edition-4.2-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.3 Trusty Tahr x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.3-x86-lite.iso
tmosb --build ultimate-edition-4.3-x64-lite.iso
tmosb --build ultimate-edition-4.3-x86-gamers.iso
tmosb --build ultimate-edition-4.3-x64-gamers.iso
tmosb --build ultimate-edition-4.3-x64.iso
tmosb --build ultimate-edition-4.3-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.4 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.4-x86-lite.iso
tmosb --build ultimate-edition-4.4-x64-lite.iso
tmosb --build ultimate-edition-4.4-x86-gamers.iso
tmosb --build ultimate-edition-4.4-x64-gamers.iso
tmosb --build ultimate-edition-4.4-x64.iso
tmosb --build ultimate-edition-4.4-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.5 Utopic Unicorn x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.5-x86-lite.iso
tmosb --build ultimate-edition-4.5-x64-lite.iso
tmosb --build ultimate-edition-4.5-x86-gamers.iso
tmosb --build ultimate-edition-4.5-x64-gamers.iso
tmosb --build ultimate-edition-4.5-x64.iso
tmosb --build ultimate-edition-4.5-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.04 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.04-x86.iso
tmosb --build ubuntu-desktop-12.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.10 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.10-x86.iso
tmosb --build ubuntu-desktop-12.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.04 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.04-x86.iso
tmosb --build ubuntu-desktop-13.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.10 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.10-x86.iso
tmosb --build ubuntu-desktop-13.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.04 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.04-x86.iso
tmosb --build ubuntu-desktop-14.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.10 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.10-x86.iso
tmosb --build ubuntu-desktop-14.10-x64.iso
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
theemahn@JackHammer:~$
A pause for the cause, the above commands will build one of 84 above listed operating systems. No other input or interaction required on your end as the end user. I have spent a great amount of painstaking time to ensure ease of use. So utilizing the information above, to create something that just currently does not exist.
- Code: Select all
tmosb --build ultimate-edition-4.2-x86-gamers.iso
The above command for example will build a 32 bit version of Ultimate Edition Gamers 4.2 a LTS release. Pretty heavy application we are looking at here is it not? I will not rob you of the output of running such a command and thus the end results:
Continuing on:
theemahn@JackHammer:~$ tmosb --help buildiso
DEBUGGING Number of switches passed: 2
Switch 1: --help
Switch 2: buildiso
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
Usage buildiso;
tmosb -B [TARGETISO]
Invokes tmosb to build [TARGETISO] from a preivious build. The format of the ISO
must comply as follows:
[TARGETISO]
Valid arguments are as follows:
Existant folder, is optional. It will otherwise look for information in .disk/info
Example: tmosb --buildiso ultimate-edition-4.2-x64-lite/
Will build Ultimate Edition 4.2 64 bit Lite Operating System in ISO format.
theemahn@JackHammer:~$
We are going to do the next 2 out of order, there is a reason for this as I will soon explain, cacheinfo:
root@JackHammer:/home/theemahn/wip# tmosb --cacheinfo trusty
TheeMahn O/S Builder (tmosb) 1.8.7, 08/14/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Total cache usage: 21G ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Caching System Information ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒7.1M extract-cd.tar.gz
7.6G precise
2.6M quantal
2.6M raring
3.2G saucy
672M tmp
7.3G trusty
1.9G utopic
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ trusty Caching Information ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1.1M ubiquity-slideshow-kubuntu_90_all.deb
1.5M ultimate-edition-4.2-gamers-core-files.deb
1.5M ultimate-edition-4.2-lite-core-files.deb
1.5M ultimate-edition-4.3-gamers-core-files.deb
1.5M ultimate-edition-4.3-standard-core-files.deb
4.2G x64
3.1G x86
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
root@JackHammer:/home/theemahn/wip#
Cachinfo will display current caching statistics. I incorporated the cache system in order to accelerate future building of additional operating systems. It will cause the computer to make the determination on weather the application / game is availible locally and use it primarly as upposed to re-downloading the package in question.
theemahn@JackHammer:~/wip3$ tmosb --help cacheinfo
DEBUGGING Number of switches passed: 2
Switch 1: --help
Switch 2: cacheinfo
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
Usage cacheinfo;
tmosb -c
Displays various cache information.
Example: tmosb --cacheinfo
theemahn@JackHammer:~/wip3$
The caching system is distro specific as well as architecture specific. Work smarter not harder. The cache folder is located in a hidden folder in your currently executed folder under .cache/ the amount of data stored in this cache can be specifically controlled with the --clearcache option.
theemahn@JackHammer:~/wip3$ tmosb --help clearcache
DEBUGGING Number of switches passed: 2
Switch 1: --help
Switch 2: clearcache
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <[email protected]>.
Be sure to include the word tmosb somewhere in the Subject: field.
Usage clearcache;
tmosb -C <REQUIREMENT>
Clears cache by disgression.
<REQUIREMENT> is as follows:
<debootstrap> clears debootstrap image(s).
<minimal> clears minimal ISO image(s)
<all> clears the entire cache system.
Example: tmosb --clearcache debootstrap
theemahn@JackHammer:~/wip3$
While you are building you will see the following or thereby similar:
DEBUGGING: we are in /home/theemahn/wip3/ultimate-edition-4.2-x86-gamers
Pulling 3.8G of cache for trusty x86 build. Please wait: Success.
Initating Tmp cache sync operation of 628M. please wait: Success.
INITIATING FINAL BUILD PROCESS FOR ultimate-edition-4.2-x86-gamers.iso
Future Operating system build(s) will not have to download the additional 3.8GB of data + the 628MB, a tremendous savings in time and bandwidth I can assure you even on high speed internet. To make things better it does it in a fassion that let's say in your cache you have version 1.9 of a program and the internet has 2.0 it will pull from the internet v/s cache, so once again work smarter, not harder.
Onward, enter --extract:
theemahn@JackHammer:~/Documents$ tmosb --help extract
DEBUGGING HELP FUNCTION: 1:--help 2:extract 3:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <[email protected]>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Usage extract;
tmosb -e <ISO>
Extracts <ISO> for further processing.
Example: tmosb --extract ultimate-edition-4.0-x64.iso
theemahn@JackHammer:~/Documents$
Originally I wrote the extraction function to be mindful of multiple Operating systems and have since learned some operating systems utilize different methods in compression persay in the method of compression of the Operating System. I have since enhanced this function to detect as it is extracting it weather an older system or not. To put this in perspective I am going to use the extraction command to demonstrate this fact:
root@JackHammer:/home/theemahn/wip# ls
ultimate-edition-2.6-x64-lite.iso ultimate-edition-4.2.1-lite-x64.iso
root@JackHammer:/home/theemahn/wip# tmosb --extract
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <[email protected]>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Processing 1 of 2 detected Operating systems, please wait. ▒
▒ Operating System Version detected: 2.6 ▒
▒ Creating folder ultimate-edition-2.6-x64-lite/ ▒
▒ Moving ultimate-edition-2.6-x64-lite.iso to ultimate-edition-2.6-x64-lite/ ▒
▒ Operating System Version detected: 4.2.1 ▒
▒ Creating folder ultimate-edition-4.2.1-lite-x64/ ▒
▒ Moving ultimate-edition-4.2.1-lite-x64.iso to ultimate-edition-4.2.1-lite-x64/ ▒
▒ Scanning folders... ▒
▒ Processing Folder: ultimate-edition-2.6-x64-lite/ ▒
▒ Mounting ultimate-edition-2.6-x64-lite.iso ▒
▒ Synchronizing ultimate-edition-2.6-x64-lite.iso ▒
▒ Mounting SquashFs ▒
▒ Copying SquashFs ▒
▒ Unmounting SquashFS ▒
▒ Unmounting ultimate-edition-2.6-x64-lite.iso ▒
▒ Cleaning up... ▒
▒ Processing Folder: ultimate-edition-4.2.1-lite-x64/ ▒
▒ Mounting ultimate-edition-4.2.1-lite-x64.iso ▒
▒ Synchronizing ultimate-edition-4.2.1-lite-x64.iso ▒
▒ Mounting SquashFs ▒
▒ Copying SquashFs ▒
▒ Unmounting SquashFS ▒
▒ Unmounting ultimate-edition-4.2.1-lite-x64.iso ▒
▒ Cleaning up... ▒
▒ All ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Execution Time: 2m33s
root@JackHammer:/home/theemahn/wip#
O.K. so it almost makes me breakfast & does my laundry, we are not done. I won't waste my time or others on the help system other then telling you if you want to learn any of the commands therein involved it is tmosb --help [command], tmosb --help extract for example.
PULL
Are you too an Operating System Architect? I, in deliberation wrote this option to allow you to make miraculous changes here in the way tmosb works. Pull will pull the source code into your current folder allowing you to modify it to your hearts content. The software is smart enough to notice you have done so and will utilize your version v/s tmosb. That my friends is a true definition of a code warrior & an open source entusiast. It too has your back:
root@JackHammer:/home/theemahn/wip# tmosb --pull
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <[email protected]>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Copying source tmosb to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source uecorebuilder to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source usplash-builder to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source tmgrub to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source internal to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Feel free to modify the source in your favorite editor ▒
▒ Example: gedit internal ▒
root@JackHammer:/home/theemahn/wip#
If or not you have made an error, tmosb is here to evaluate the entire situation:
root@JackHammer:/home/theemahn/wip# tmosb --pull
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <[email protected]>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: tmosb exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: uecorebuilder exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: usplash-builder exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: tmgrub exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: internal exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Feel free to modify the source in your favorite editor ▒
▒ Example: gedit internal ▒
root@JackHammer:/home/theemahn/wip#
How it works(Still in works):
Everything is done in 3 stages, by 1 program and 4 sub-programs.
The Programs
- tmosb - The main program (control flow)
- uecore-builder - Builds the core of the Operating System.
- usplash-builder - Builds the Ubiquity Splash files pulls donors list and also includeds those that have donated.
- internal - Software that runs in the chroot environment. Adds desktop environments and customizations.
- tmgrub - Refreshes the kernel and builds initramfs
- Stage 1 - Debootstrap, these files are tared at the end of operation and shoved to cache to accelerate future building.
- Stage 2 - Internal Software, all apt-cache is shoved to .cache/ to accelerate any future builds, via architecture and dist.
- Stage 3 - tmgrub, forces installation of dependancies and refreshes initramfs and kernel.
Source Code (for the adventurous):
Please be fully advised the below has not been released to the internet at time of post and provides new features this code will constantly be changing, until I have stability across all platforms & architectures.
I am a true code warrior and love to give away free software as well as the source code therein involved. It makes me happy to know if just one person I have made happy in the incarnation of a program. People ultilize source I have written to enhance existing software they have written as well. Seagate and Nasup comes to mind here. Feel free to utilize any software I have dropped to the net to date as you see fit.
There are 5 programs, err 1 program and 4 sub-programs that work the magic of TheeMahn's O/S builder as of version 1.8.8 (released to the public) and 1.8.9 below. Information copied from the unfinished how it works section above.
Everything is done in 3 stages, by 1 program and 4 sub-programs.
The Programs
- tmosb - The main program (control flow)
- uecore-builder - Builds the core of the Operating System.
- usplash-builder - Builds the Ubiquity Splash files pulls donors list and also includeds those that have donated to Ultimate Edition.
- internal - Software that runs in the chroot environment. Adds desktop environments and customizations.
- tmgrub - Refreshes the kernel and builds initramfs
- Tmosb - Verify's what the user wants in building thier perhaps custom Operating System.
- Stage 1 - Debootstrap, these files are tared at the end of operation and shoved to cache to accelerate future building.
- Stage 2 - Internal Software, all apt-cache is shoved to .cache/ to accelerate any future builds, via architecture and dist.
- Stage 3 - tmgrub at this point, forces installation of dependancies, refreshes initramfs, adds additional wifi support and refeshes kernel / grub.
- Tmosb - Generates final Operating System, prompts the user for optional testing & loading to a thumbdrive (thumbos if existant) .
declare -a OLDRELEASES=("2.6" "2.7");
Why the heck would I go and do that? I installed Ultimate Edition 2.6.8 yesterday and still love it. I find that everything just works there. You would like to think running it you are screwed, no updates... If Canonical (Ubuntu) has a stoke over the software and encurring additional load on thier servers of the software I am writing. I will purchase another server and mirror every package they host. It is not beyond me, I have done the same where getdeb is involved when they kept going down. I do not have unlimited funds and may bite off more then I can chew there I implemented a cache system to prevent or circumvent from such happening. Anyways a bit of coding via TheeMahn, brings Lucid back from the dead
- Code: Select all
DEFAULTREPO='http://us.archive.ubuntu.com/ubuntu/'
for OST in ${OLDRELEASES[@]}
do
if [[ $OST == $CVERSION ]]; then
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
DEFAULTREPO='http://old-releases.ubuntu.com'
fi
array_counter=$(($array_counter + 1))
done
echo -e "${bldgrn}Injecting $DEFAULTREPO of CODEBASE: $CODEBASE into sources list...${txtrst}"
echo '###### '$UOS 'Repos' > edit/etc/apt/sources.list
echo 'deb '$DEFAULTREPO' '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
The above code will check against what you are trying to build and inject old repositories if applicable. It may seem to the untrained eye I have added 2 Operating Systems, the fact is when I get arm, armel , gamers, lite into the picture will build 100's of Operating Systems, many non-existing. A chunk of the code was pre-built for me using code-cleanup a part of the ultimate-edition-code-cleanup-package. Onto the code TheeMahn already:
/bin/tmosb:
- Code: Select all
#!/bin/bash
# ==============================================================================
# title :TheeMahn's O/S Builder
# description :Builds Ultimate Edition Operating Systems.
# author :theemahn <[email protected]>
# date :08/31/2014
# version :1.8.9
# usage :tmosb --help
# manual :man tmosb
# notes :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8: Initial public release
#
# ==============================================================================
# Version Control
APPNAME="TheeMahn O/S Builder"
PROGNAME="tmosb"
VERSION="1.8.9"
BUILDDATE="08/26/2014"
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"
# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
# Logging output
# exec 1> /var/log/tmosb-session.log
# exec 1>> /var/log/tmosb-session.log 2>&1
LOG_FILE="/var/log/tmosb.log"
# exec 1 | tee ${LOG_FILE}
# exec 2 | tee ${LOG_FILE}
# Will I utilize this? To be determined.
declare -a DISKSIZES=('KB' 'MB' 'GB' 'TB' 'PB' 'EB' 'ZB' 'YB')
#declare -i KBS
# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0
# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)
# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0
# Declare integer for whether a drive is detachable.
declare -i DETACHABLE
# Not required, but optional. No prompting for testing etc. if false.
QEMUINSTALLED=$(which kvm)
# set colors so errors etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
# Get Directory executed in.
CURRENT=$PWD
BUMPVERSION=$1
# Set some internal variables and arrays
OS='ultimate-edition'
COS="Ultimate_Edition"
UOS="Ultimate Edition"
STARTM=`date -u "+%s"`
# Try to think of the below as a basic database where the values coincide
# Example when it detects 14.10 the arrays will be cycled through looking for
# the value of 14.10 as the UEARRAY would be value[16] the value of
# [16] of DISTARRAY would be Trusty Tahr
DISTSSUPPORTED=15
declare -a ISLTS=("2.6" "2.7" "3.4" "3.5" "4.2" "4.3" "12.04" "14.04");
declare -a OSARRAY=('lucid' 'lucid' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic');
declare -a UEARRAY=("2.6" "2.7" "3.4" "3.5" "3.6" "3.7" "3.8" "3.9" "4.0" "4.1" "4.2" "4.3" "4.4" "4.5" '12.04' '12.10' '13.04' '13.10' '14.04' '14.10' );
declare -a UETYPES=("lite" "gamers")
declare -a DISTARRAY=("Lucid Lynx" "Lucid Lynx" "Precise Pangolin" "Precise Pangolin" "Quantal Quetzal" "Quantal Quetzal" "Raring Ringtail" "Raring Ringtail" "Saucy Salamander" "Saucy Salamander" "Trusty Tahr" "Trusty Tahr" "Utopic Unicorn" "Utopic Unicorn" "Precise Pangolin" "Quantal Quetzal" "Raring Ringtail" "Saucy Salamander" "Trusty Tahr" "Utopic Unicorn");
declare -a UEARCH=("i386" "amd64" "armel" "armhf");
declare -a OLDRELEASES=("2.6" "2.7");
declare -a CYCLE=("x86" "x64" "armel" "armhf");
declare -a EXTRADE=("XFCE" "MATE" "KDE" "LXDE" "AWESOME" "GNOME" "RAZORQT")
declare -i CVER;
declare -i CSIZE;
declare -a APPLICATIONS=('tmosb' 'uecorebuilder' 'usplash-builder' 'tmgrub' 'internal');
declare -a APPSRC=('/bin' '/bin' '/bin' '/usr/share/ultimate_edition' '/usr/share/ultimate_edition');
declare -a ARGUMENTS=();
declare -a ARGLENGTH=();
declare -a LOGFILEZ=("edit/var/log/bootstrap.log" "edit/var/log/apt/history.log" "edit/var/log/dpkg.log");
# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
# Basic caching Structure
mkdir -p .cache/tmp/
# Debugging function to monitor passed arguments.
function CommandLineInterpreter () {
#echo -e "${bldgrn}Number of switches passed: $#"
for var in "$@"
do
array_counter=$(($array_counter + 1))
#echo "Switch $array_counter: $var"
done
}
# Future implementation - log all chroot results.
function LogResults () {
echo -e "${bldgrn}Initiating Logging function... in $PWD${txtrst}"
for EACH in ${LOGFILEZ[@]}
do
echo -en "${bldgrn}Checking for $EACH: "
if [[ -f $EACH ]]; then
echo "Found $EACH Logging to ${LOG_FILE}"
else
echo "Non-existant."
fi
done
}
# BEGIN CODE Borrowed from TMOSB, massively customized. This function when
# written fully will enter code cleanup application and I will not look back ;)
function Columnize () {
# Columnize is an internally called function exclusively.
# EXAMPLE
# -t to shove through the column titles we will count the number of switches and
# calculate spacing eventually.
if [[ $1 == '-t' ]]; then
#echo -e "${bldgrn}Number of switches passed: $#"
for ARG in "$@"
do
array_counter=$(($array_counter + 1))
if [[ $array_counter -gt 2 ]]; then
#echo "Switch $array_counter: $ARG"
ARGUMENTS[$array_counter]=$ARG
tLen=${#ARGUMENTS[$array_counter]}
if [[ $tLen -ge $WIDEST ]]; then
WIDEST=$tLen
fi
#echo "Length of ${ARGUMENTS[$array_counter]} is $tLen"
fi
#echo "The widest passed varible is $WIDEST"
done
else
#echo -e "${bldgrn}Number of switches passed: $#"
for ARG in "$@"
do
array_counter=$(($array_counter + 1))
if [[ $array_counter -gt 1 ]]; then
#echo "Switch $array_counter: $ARG"
ARGUMENTS[$array_counter]=$ARG
tLen=${#ARGUMENTS[$array_counter]}
if [[ $tLen -ge $WIDEST ]]; then
WIDEST=$tLen
fi
#echo "Length of ${ARGUMENTS[$array_counter]} is $tLen"
fi
#echo "The widest passed varible is $WIDEST"
done
fi
#echo "#: $# VARS: $*"
LONGESTLENGTH=${#2}
#echo "Length of $2 is $LONGESTLENGTH"
#echo $COLUMNZ
MAINS=$(echo "scale=2; $COLUMNZ-30" | bc)
MAINS=${MAINS%.*}
#echo $MAINS
MAINS=$(expr $MAINS - 2)
MAINS=$(expr $MAINS / 4)
#echo $MAINS
if [[ $1 = '-t' ]]; then
#"#" "DEV" "VENDOR" "LABEL" "TYPE" "SIZE"
printf "%-0s %-16s %-7s %-16s %-7s %-3s %-13s %-3s %-16s %-1s\n" "▒" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
else
#MAINS=$(expr $MAINS / 2)
printf "%-0s %-16s %-7s %-16s %-7s %-3s %-13s %-3s %-16s %-1s\n" "▒" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
fi
}
# Function for outputting to X-11 screen a notification of completion and playing sound.
# The sound file is from the "Optional" ultimate-edition-sound-theme
function Notification () {
# Is X11 running?
X=$( pidof X )
# Does the user have the optional Ultimate Edition Sound scheme installed?
if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
WAVE=1
fi
# Is the user in an X11 GUI environment and have notification OSD installed?
if [[ $X && $NOTIFY ]]; then
a=$(notify-send "$APPNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
fi
# Does the user have pre-requisites? If so, break out the Cylon voice.
if [[ $SOUND && $WAVE ]]; then
a=$(canberra-gtk-play -i itisdone 2>/dev/null)
fi
# Display message in terminal unconditionally
echo $1
}
# Usage: Eye Candy "Message"
function EyeCandy() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
echo -e "▒ "$STP" ▒"
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
fi
}
function Encapsulate() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
DISTANCE=$(expr $COLUMNZ - $STRLEN)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
echo -en "▒ "$STP
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
fi
}
# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}
# Center data passed to function on screen
function Center () {
STP=$1
if [[ $STP ]]; then
STRLEN=${#STP}
CENTER=$(expr $STRLEN / 2 )
#CENTER=CENTER-1
TCENTER=$(expr $COLUMNZ / 2 )
#TCENTER=TCENTER-1
DISTANCE=$(expr $TCENTER - $CENTER)
DISTANCE=$(expr $DISTANCE - 2)
echo -en "${txtrst}"
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
echo -en "${bldgrn} $STP ${txtrst}"
TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
CALC=$(expr $RR + $TT + $STRLEN + 2)
if [[ $CALC -lt $COLUMNZ ]]; then
ZZZ=0; while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
fi
# Dubugging:
fi # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}
function Error () {
echo -en "${bldred}"
FullBar
Center "$1"
FullBar
echo -en "${txtrst}"
}
# Version dump header
#function VersionDump {
# if [[ -w ${LOG_FILE} ]]; then
# echo -e "${undwht}$APPNAME ($PROGNAME) $VERSION, $BUILDDATE${txtrst}" 2>&1 | tee ${LOG_FILE}
# echo "GNU $PROGNAME ("$APPNAME") home page: <http://$WEBSITE/>." 2>&1 | tee --append ${LOG_FILE}
# # echo "COMMAND EXECUTED: "$* | tee --append ${LOG_FILE}
# else
# echo -e "${undwht}$APPNAME ($PROGNAME) $VERSION, $BUILDDATE${txtrst}"
# echo "GNU $PROGNAME ("$APPNAME") home page: <http://$WEBSITE/>."
# fi
# echo "E-mail bug reports to: $EMAIL."
# echo "Be sure to include the word $PROGNAME somewhere in the Subject: field."
#}
function VersionDump {
Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
Encapsulate "E-mail bug reports to: $EMAIL."
Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
FullBar
}
# Virtual machine testing function.
function Virtual {
TOPROCESS=$1
if [[ $TOPROCESS == "--test" ]];then
TOPROCESS=$2
fi
if [[ $TOPROCESS == "-t" ]];then
TOPROCESS=$2
fi
#echo -e "${bldylw}DEBUGGING PASSED VARS: 1:$1 2:$2 3:$3${txtrst} PROCESS: $TOPROCESS"
if ! [[ $DISPLAY ]]; then
echo -e "${bldred}No X11 session detected. Exiting.${txtrst}"
exit 0;
fi
# Declare a few integer variables
declare -i MEMORY
declare -i DEDICATED
TEMPO=$(cat /proc/meminfo | grep 'MemTotal'|cut -d ':' -f2 | sed 's/ kB//g')
MEMORY=$TEMPO
# See if end user has 3GB or greater memory
if [[ $MEMORY -ge 3096000 ]]; then
# If so set maximum the virtual machine can have.
DEDICATED=2047
else
# Limited resources. Use a quarter the end users memory.
MAINS=$(echo "scale=2; $MEMORY/1000*.25" | bc)
# dump the decimal, we want a raw integer.
DEDICATED=${MAINS%.*}
fi
# Snatch the number of CPU Core(s) the end user has.
CORES=$(cat /proc/cpuinfo | grep "processor" | sed '/model/d' | wc -l)
# Dump data to the end user.
echo -e "${bldgrn}"$MEMORY "memory and "$CORES "CPU core(s) detected.\nUtilizing $DEDICATED MB of memory and $CORES CPU Core(s) to full potential."
# Check for existence of ISO, if so launch VM, enable kvm acceleration.
DEVICE=$(echo $TOPROCESS | grep "/dev")
ISISO=$(echo $TOPROCESS | grep ".iso")
#echo -e "${bldylw}DEBUGGING (this will be removed prior to final release):\n"
if [[ $DEVICE ]]; then
echo -e "DEVICE: $DEVICE"
fi
if [[ $ISISO ]]; then
echo -e "ISO: $ISISO\n"
fi
echo "INFOLDER: $PWD"
if [ -f $ISISO ]; then
EyeCandy "TMOSB: Testing ISO $TOPROCESS in a virtual machine.${txtrst}"
A=$(qemu-system-x86_64 -enable-kvm -m $DEDICATED --boot d menu=on cdrom=$TOPROCESS 2>/dev/null)
#if ! [[ $A ]]; then
a=$(kvm -m $DEDICATED -smp $CORES -usb -boot d -cdrom $TOPROCESS -name TMOSB 2>/dev/null)
#fi
else
# Block device?
if [[ $DEVICE ]]; then
if [[ -b $1 ]]; then
EyeCandy "TMOSB: Testing Thumb-drive $1 in a virtual machine.${txtrst}"
A=$(qemu-system-x86_64 -enable-kvm -m $DEDICATED --boot d menu=on cdrom=$TOPROCESS 2>/dev/null)
if ! [[ -r $1 && $A ]]; then
A=$(kvm -m $DEDICATED -smp $CORES -usb -boot d -cdrom $TOPROCESS -name TMOSB 2>/dev/null)
else
echo -e "${bldred}ERROR: Permission is denied${txtrst}, please use escalated permission."
echo "sudo TMOSB --test $*"
exit 0;
fi
else
# Lost in space !!! ;)
echo -e "${bldred}Error: Invalid option $TOPROCESS"
Help test $1
exit 0
fi
else
TD='/dev/'$TOPROCESS
if [[ -b $TD ]]; then
EyeCandy "TMOSB: Testing Thumb-drive $TD in a virtual machine.${txtrst}"
A=$(qemu-system-x86_64 -enable-kvm -m $DEDICATED --boot d cdrom=$TD 2>/dev/null)
if ! [[ $A ]]; then
if [[ -r $TD ]]; then
kvm -m $DEDICATED -smp $CORES -usb -boot d -cdrom $TD -name TMOSB
else
echo -e "${bldred}ERROR: Permission is denied${txtrst}, please use escalated permission."
echo "sudo TMOSB --test $*"
exit 0;
fi
fi
else
# Lost in space !!! ;)
echo -e "${bldred}Error: Invalid option $TOPROCESS"
Help test $1
exit 0
fi
fi
fi
Notification "All operations completed successfully."
}
# END Code borrowed from ThumbOS 1.0.8
# Pushes stored cache if any, into the chroot environment.
function PushCache(){
BASEPULL=$1
ARCH=$2
# echo "DEBUGGING: we are in $PWD"
if ! [[ $BASEPULL && $ARCH ]]; then
echo -e "CRITICAL ERROR Push Cache: Invalid caching switches provided. BASE: $1 ARCH:$2"
exit 0;
fi
if [[ $BASEPULL ]]; then
# APT CACHE - WE ARE ALWAYS LOOKING TO ACCELERATE THE ENTIRE PROCESS
# Why rsync as we did way down below when we can move files.
# Much faster to just straight up move the files back and forth.
if [[ -d $CURRENT/.cache/$BASEPULL/$ARCH/apt/ ]]; then
CACHESIZE=$(du -hs $CURRENT/.cache/$BASEPULL/$ARCH/apt/ | awk '{print $1}')
echo -e -n "${bldgrn}Pushing $CACHESIZE of cache for $BASEPULL $ARCH build. Please wait: ${txtrst}"
SUCCESS=$((mv $CURRENT/.cache/$BASEPULL/$ARCH/apt/*.deb edit/var/cache/apt/archives/) 2>/dev/null)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
echo -e "${bldylw}No cache folder, first $BASEPULL $ARCH based O/S build?${txtrst}"
mkdir -p .cache/$BASEPULL/$ARCH/apt/
fi
#TMP CACHE
if [[ -d $CURRENT/.cache/tmp/ ]]; then
CACHESIZE=$(du -hs $CURRENT/.cache/tmp/ | awk '{print $1}')
if [[ $CACHESIZE ]]; then
echo -e -n "${bldgrn}Pushing $CACHESIZE of temp cache for $BASEPULL $ARCH build. Please wait: ${txtrst}"
fi
SUCCESS=$((mv $CURRENT/.cache/tmp/*.deb edit/tmp/) 2>/dev/null)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
echo -e "${bldylw}No Temp cache folder, first build?${txtrst}"
mkdir -p $CURRENT/.cache/tmp/
fi
sync
else
echo -e "${bldred}CRITICAL ERROR: FUNCTION Push Cache called without or missing switch."
# echo "debug: 1:$1 @:$@"
exit 0;
fi
}
# Displays various caching information.
function CacheInfo(){
DISTRIBUTION=$2
# echo "1: $1 2: $2 3:$3 4:$4"
TOTALUSAGE=$((du -hs .cache/ | awk '{print $1}') 2>/dev/null)
if [[ $TOTALUSAGE ]]; then
VersionDump
FullBar
Encapsulate "Total cache usage: $TOTALUSAGE"
FullBar
Center "Caching System Information"
cd .cache/
for EACH in $(ls)
do
du -hs $EACH
done
Center "$2 Caching Information"
if [[ $2 && -d $2 ]]; then
cd $2
for EACH in $(ls)
do
du -hs $EACH
done
FullBar
fi
fi
}
# Pulls stored cache if any, from the chroot environment to the .cache/ folder.
function PullCache(){
BASEPULL=$1
ARCH=$2
# echo "DEBUGGING: we are in $PWD"
if ! [[ $BASEPULL && $ARCH ]]; then
echo -e "CRITICAL ERROR Pull Cache: Invalid caching switches provided. BASE: $1 ARCH:$2"
exit 0;
fi
if [[ $BASEPULL ]]; then
if [[ -d $CURRENT/.cache/$BASEPULL/$ARCH/apt/ ]]; then
CACHESIZE=$(du -hs edit/var/cache/apt/archives/ | awk '{print $1}')
echo -e -n "${bldgrn}Pulling $CACHESIZE of cache for $BASEPULL $ARCH build. Please wait: ${txtrst}"
SUCCESS=$((mv edit/var/cache/apt/archives/*.deb $CURRENT/.cache/$BASEPULL/$ARCH/apt/) 2>/dev/null)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
echo -e "${bldylw}No cache folder, first $BASEPULL $ARCH based O/S build?${txtrst}"
mkdir -p $CURRENT/.cache/$BASEPULL/$ARCH/apt/
fi
#TMP CACHE
CACHESIZE=""
CACHESIZE=$(du -hs edit/tmp/ | awk '{print $1}')
if [[ $CACHESIZE ]]; then
if [[ -d $CURRENT/.cache/tmp/ ]]; then
echo -e -n "${bldgrn}Initiating Temp cache sync operation of $CACHESIZE. please wait: "
SUCCESS=$((mv edit/tmp/*.deb $CURRENT/.cache/tmp/) 2>/dev/null)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
echo -e "${bldylw}No Temp cache folder, first build?${txtrst}"
mkdir -p $CURRENT/.cache/tmp/
fi
else
echo -e "${bldylw}No Temp cache folder, first build?${txtrst}"
mkdir -p $CURRENT/.cache/tmp/
fi
sync
else
echo -e "${bldred}CRITICAL ERROR: FUNCTION Pull Cache called without or missing switch."
# echo "debug: 1:$1 @:$@"
exit 0;
fi
}
function PrebuildInfo () {
if [[ $2 == "" ]]; then
DATA=$1
else
DATA=$2
fi
ISO=$(echo $DATA | grep '.iso')
if [[ $ISO ]]; then
ISO=$DATA
EXTENSION="${DATA##*.}"
FOLDER="${DATA%.*}"
if [[ -d $FOLDER ]]; then
cd $FOLDER
else
CONTAINS=$(echo $PWD | grep $FOLDER)
if ! [[ $CONTAINS ]]; then
mkdir $FOLDER
fi
fi
else
ISO=$DATA
EXTENSION="${DATA##*.}"
FOLDER="${DATA%.*}"
if [[ $ISO && -d $DATA ]]; then
ISO=$DATA".iso"
cd $DATA
else
mkdir $ISO
fi
fi
z=$2
CVERSION=$(echo $z | cut -d "-" -f3)
#cd $z
# Default naming scheme for Ultimate Edition
ARCH=$(echo $z | grep -i 'x86')
# Nothing? Is the user wanting a ubuntu build?
if ! [[ $ARCH ]]; then
ARCH=$(echo $z | grep -i 'i386')
fi
# Wanting Lite / Gamers? This data will be pushed to the internal app
# and adjusted accordingly.
LITE=$(echo $z | grep -i 'lite')
GAMERS=$(echo $z | grep -i 'gamers')
if [[ $ARCH ]]; then
ARCH='x86'
DOUT="i386"
else
ARCH='x64'
DOUT="amd64"
fi
# Process via default name if Ubuntu:
# ubuntu-13.10-desktop-amd64.iso
EXTENSION="${z##*.}"
FILENAME="${z%.*}"
UBUNTU=$(echo $z | grep -i 'ubuntu')
if [[ $UBUNTU ]]; then
CVERSION=$(echo $z | cut -d "-" -f2)
fi
# Check to see if release is Long Term Supported.
LTS='NO'
LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
#echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
CVERSION="${CVERSION%.*}"
fi
for zx in ${ISLTS[@]}
do
if [[ "$CVERSION" == "$zx" && $LTS == 'NO' ]]; then
LTS='YES'
fi
done
EVENODD="${CVERSION##*.}"
ODD=$(( $EVENODD % 2 ))
echo "EVENODD:$EVENODD ODD:$ODD"
DE=""
if ! [[ $ODD -eq 0 ]]; then
DE="KDE"
DTYPE="FULL"
fi
if [[ $LITE ]] ; then
DE="MATE"
DTYPE='LITE'
fi
if [[ $GAMERS ]] ; then
DE="MATE"
DTYPE='GAMERS'
fi
if ! [[ $DE ]]; then
DE="GNOME"
DTYPE="FULL"
fi
array_counter=0;
for OST in ${UEARRAY[@]}
do
# DEBUGGING
# echo "Checking: $OST"
if [[ $OST == $CVERSION ]]; then
# DEBUGGING
# echo "YES: $OST DIST: ${OSARRAY[$array_counter]} NAME: ${DISTARRAY[$array_counter]}"
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
fi
array_counter=$(($array_counter + 1))
done
if [[ $UBUNTU ]]; then
OUTDISTRO="Ubuntu"
else
OUTDISTRO="Ultimate Edition"
fi
################ EXTRA DE'S?
# PULL $2, $3 etc for extra DE's
PROCESS=0;
for var in "$@"
do
array_counter=$(($array_counter + 1))
# echo "Switch $array_counter: $var"
CSWITCH=$(echo $var | grep 'iso')
if [[ $PROCESS == 1 ]]; then
nested_array=0;
for TE in ${EXTRADE[@]}
do
DETC=${EXTRADE[$nested_array]}
# echo "Comparing $DETC to $var"
if [[ $var == $DETC ]]; then
DE=$DE', '$var
fi
nested_array=$(($nested_array + 1))
done
fi
if [[ $CSWITCH && $PROCESS=0 ]]; then
PROCESS=1
fi
done
if [[ $LONGVERSION -gt 1 ]]; then
#Relinquish the proper version as originally requested.
CVERSION=$(echo $z | cut -d "-" -f3)
fi
}
# Extracts existing ISO(s)
function ExtractISO () {
# Call the Version Dump Function
VersionDump
# Scan for ISO's. Suppress errors if they do not exist.
ISOS=$((ls *.iso) 2>/dev/null)
# Process ISO's only if they exist.
if [[ $ISOS ]]; then
# TODO: add error suppression for non-existence.
# Grab all ISO's in current folder.
NISOS=$(ls *.iso | wc -l)
# Setup a counter to initiate at the value of 1
array_counter=$(($array_counter + 1))
Encapsulate "Processing $array_counter of $NISOS detected Operating systems, please wait."
# Cycle all found ISO's
# TODO: Add ability to process a single ISO if the user requests it.
for i in `ls *.iso`
do
EXTENSION="${i##*.}"
FILENAME="${i%.*}"
CVERSION=$(echo $FILENAME | cut -d "-" -f3)
Encapsulate "Operating System Version detected: $CVERSION"
if [[ -d $FILENAME ]]; then
Encapsulate "Folder already exists."
else
Encapsulate "Creating folder $FILENAME"
mkdir $FILENAME
fi
# Does the user have write permissions?
if [[ -w $i ]]; then
Encapsulate "Moving $i to $FILENAME"
mv $i $FILENAME/
else
Error "ERROR: Insufficient privileges to move $i."
exit 0;
fi
done
else
Error "No ISO's to process in current folder. Are we building ISO(s)? Continuing..."
fi
# Begin extracting ISO's
Encapsulate "Scanning folders..."
for z in `ls -d */`
do
Encapsulate "Processing Folder: $z"
cd $z
#prepare
ISOS=$((ls *.iso) 2>/dev/null)
if [[ $ISOS ]]; then
for i in `ls *.iso`
do
if ! [[ -d edit ]]; then
mkdir edit
fi
if ! [[ -d extract-cd ]]; then
mkdir extract-cd
fi
if ! [[ -d mnt ]]; then
mkdir mnt
fi
if ! [[ -d squashfs ]]; then
mkdir squashfs
fi
#mount & extract
if [[ -f $i ]]; then
# TODO: Add additional checks we can never be too
# Safe when it comes to mounting / permissions
Encapsulate "Mounting $i"
ENGAGEMOUNT=$(mount -o loop $i mnt/ 2>/dev/null)
Encapsulate "Synchronizing $i$"
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
Encapsulate "Mounting SquashFs"
mount -t squashfs -o loop mnt/casper/filesystem.squashfs squashfs
Encapsulate "Copying SquashFs"
cp -a squashfs/* edit/
Encapsulate "Unmounting SquashFS"
umount squashfs/
Encapsulate "Unmounting $i"
umount mnt/
# echo -e "${bldred}Failure mounting $i, exiting...${txtrst}"
# exit 0
#fi
fi
Encapsulate "Cleaning up..."
if [[ -d mnt ]]; then
rm -R mnt
fi
if [[ -d squashfs ]]; then
rm -R squashfs
fi
SUCCESS=$(ls edit/)
if [[ $SUCCESS ]]; then
if [[ -f $i ]]; then
rm $i
fi
else
Error "ERROR: Synchronization error, not deleting $i. Are you a superuser?"
exit 0;
fi
done
fi
cd $CURRENT
done
Encapsulate "All extraction operations completed successfully."
Notification "All extraction operations completed successfully."
LogResults
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo -e "${bldgrn}Execution Time: $TTIMEM"
}
# Builds only the ISO, zero customization
function BuildISO () {
VersionDump
INFOLDER=$PWD
PrebuildInfo $*
cd $INFOLDER
ISO=$(echo $2 | grep '.iso')
if [[ $ISO ]]; then
ISO=$2
EXTENSION="${2##*.}"
FOLDER="${2%.*}"
if [[ -d $FOLDER ]]; then
cd $FOLDER
else
EXISTENCE=$(echo $PWD | grep $FOLDER)
if [[ $EXISTANCE ]]; then
echo -e "${bldred}CRITICAL ERROR: $FOLDER, does not exist exiting.${txtrst}"
exit 0;
fi
fi
else
ISO=$2
EXTENSION="${2##*.}"
FOLDER="${2%./}"
if [[ $ISO && -d $2 ]]; then
ISO=$2".iso"
cd $2
else
echo "In $PWD"
echo -e "${bldred}CRITICAL ERROR: $FOLDER, does not exist exiting.${txtrst}"
exit 0;
fi
fi
KERNEL=$((ls edit/boot/vmlinuz-*) 2>/dev/null)
INITRD=$((ls edit/boot/initrd.img-*) 2>/dev/null)
# echo -e "${bldred}DEBUG: in $PWD KERNEL DETECTED: $KERNEL${txtrst}"
# echo -e "${bldred}PASSED:" "$OUTDISTRO" "$CVERSION" "$FULLNAME" "$ARCH" "$LTS" "$DTYPE" "$DE" "$DTB"
if [[ $KERNEL && $INITRD ]]; then
# ISOLINUX
if [[ -f /usr/lib/syslinux/isolinux.bin ]]; then
echo -en "${bldgrn}Injecting isolinux: ${txtrst}"
cp /usr/lib/syslinux/isolinux.bin extract-cd/isolinux/
echo "Done."
else
echo -e "${bldred}FATAL ERROR: Isolinux not found.${txtrst}"
echo "sudo apt-get install isolinux"
exit 0;
fi
# MEMTEST
if [[ -f /boot/memtest86+.bin ]]; then
echo -en "${bldgrn}Injecting Memtest: ${txtrst}"
cp /boot/memtest86+.bin extract-cd/install/memtest
echo "Done."
else
echo -e "${bldylw}Memtest not installed on host, not populating: sudo apt-get install memtest86+${txtrst}"
fi
echo -en "${bldgrn}Copying Kernel: $KERNEL: ${txtrst}"
cp $KERNEL extract-cd/casper/vmlinuz
echo "Done."
echo -en "${bldgrn}Copying Initrd: $INITRD: ${txtrst}"
cp $INITRD extract-cd/casper/initrd.lz
echo "Done."
fi
echo -e "${bldgrn}DISRO STAMPING EXTERNAL:${txtrst}"
if ! [[ -f .disk/info ]]; then
echo "$OUTDISTRO $CVERSION \"$FULLNAME\" - Release $ARCH (`date +"%Y%m%d"`)" > extract-cd/.disk/info
cat extract-cd/.disk/info
else
cat extract-cd/.disk/info
fi
if [[ -f extract-cd/casper/filesystem.squashfs ]]; then
echo -e "${bldgrn}Scraping old squash filesystem, we will build a new one.${txtrst}"
rm extract-cd/casper/filesystem.squashfs
fi
echo -e "${bldgrn}Building new squash file system: ${txtrst}"
mksquashfs edit extract-cd/casper/filesystem.squashfs -no-sparse
echo -en "${bldgrn}Manifesting new operating system, please wait: "
#manifest
touch extract-cd/casper/filesystem.manifest
chmod +w extract-cd/casper/filesystem.manifest
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
echo "Done."
#calculate disksize or ubiquity will be inaccurate
printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size
#report this info to me in red so it is easy to find:
echo -en "${bldred}DiskSize: ${txtrst}"
cat extract-cd/casper/filesystem.size
#calculate crc
echo -en "\n${bldgrn}Calculating CRC: ${txtrst}"
cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
echo "Done."
echo -e "${bldgrn}Creating final ISO, please wait.${txtrst}"
GREPIT=$(echo $OUTDISTRO | grep 'LTS')
NUSER=$(grep 1000 /etc/passwd | cut -f1 -d:)
if ! [[ $NUSER ]]; then
NUSER="root"
fi
if ! [[ $GREPIT ]]; then
echo "DEBUGGING OUTDISTRO:$OUTDISTRO VER:$CVERSION NUSER:$NUSER ISO:$ISO"
mkisofs -r -V "$OUTDISTRO $CVERSION" -p $NUSER -P "TMOSB" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../$ISO .
else
OUTDISTRO=$(echo $OUTDISTRO | sed "s/ LTS//g")
echo "DEBUGGING OUTDISTRO:$OUTDISTRO VER:$CVERSION NUSER:$NUSER ISO:$ISO"
mkisofs -r -V "$OUTDISTRO $CVERSION" -p $NUSER -P "TMOSB" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../$ISO .
fi
cd ..
if [[ -f $ISO ]]; then
echo "DISTRO INFO:"
cat edit/etc/lsb-release
echo "External Dist Info:"
cat extract-cd/.disk/info
echo -e "${bldgrn}SUCCESSFULLY BUILT: $ISO"
echo -e "Moving $ISO back to $CURRENT."
mv $ISO $CURRENT
echo "rm -R $z"
echo "kvm -m 2047 -smp 8 -usb -boot d -cdrom $ISO -name Ultimate"
echo -e "${txtrst}To test, if you are satisfied."
else
echo -e "${bldred}ERROR: BUILD FAILURE FOR $ISO"
exit 0;
fi
LogResults
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo -e "${bldgrn}Execution Time: $TTIMEM"
cd $CURRENT
if [[ $QEMUINSTALLED ]]; then
while true; do
FullBar
read -p "Would you like to test the drive now in a virtual machine?. (Y/N)? " yn
case $yn in
[Nn]* ) echo -e "${txtrst}"; echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf $FOLDER/edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully."; exit 0;;
[Yy]* ) echo -e "${txtgrn}"
echo "Booting $2...";
break;;
* ) echo "Please answer y or n.";;
esac
done
Virtual "$ISO"
fi
THUMBOS=$(which thumbos)
if [[ $THUMBOS ]]; then
while true; do
FullBar
read -p "Would you like to load the resulting O/S out to a thumbdrive? (Y/N)? " yn
case $yn in
[Nn]* ) echo -e "${txtrst}"; echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf $FOLDER/edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully."; exit 0;;
[Yy]* ) echo -e "${txtgrn}"
echo "Initiatiating Thumbos $2...";
break;;
* ) echo "Please answer y or n.";;
esac
done
thumbos --load "$ISO"
fi
echo -e "${txtrst}"; echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully.";
}
# Dump vaild build switches to the end user.
function InvalidBuildSwitch () {
GREPIT=$(echo $* | grep 'build')
if [[ $GREPIT ]]; then
CBE="--build"
fi
GREPIT=$(echo $* | grep 'debootstrap')
if [[ $GREPIT ]]; then
CBE="--debootstrap"
fi
if ! [[ $CBE ]]; then
echo "FATAL ERROR: No switch provided to internal InvalidBuildSwitch function."
exit 0;
fi
echo -e "${bldred}ERROR: Invalid switch. Generating valid switches:${txtrst}"
Ultimate Edition="ultimate-edition"
UBUNTUBASE="ubuntu-desktop"
ARCH32='x86'
ARCH64='x64'
LITE='lite'
OUTDISTRO="Ultimate Edition"
echo -e -n "${undgrn}"
counter=0
for OST in ${UEARRAY[@]}
do
#echo "Checking: $OST"
VER=$(echo $OST | cut -d "." -f2)
EVENODD=$(( $VER % 2 ))
DIST=${OSARRAY[$counter]}
FULLNAME=${DISTARRAY[$counter]}
counter=$(($counter + 1))
# Check to see if release is Long Term Supported.
LTS='NO'
for zx in ${ISLTS[@]}
do
if [[ "$OST" == "$zx" && $LTS == 'NO' ]]; then
LTS='YES'
fi
done
#echo "VERSION: $VER"
if [[ $VER == '04' ]]; then
OUTDISTRO="Ubuntu"
fi
if ! [[ $EVENODD -eq 0 ]]; then
DTYPE='STANDARD'
DE="KDE"
else
DTYPE='LITE/STANDARD'
DE="MATE"
fi
echo -e -n "${txtrst}"
FullBar
Columnize -t 'OPERATING SYSTEM' 'VERSION' 'RELEASE BASE' 'ARCH' 'LTS' 'DIST TYPE' 'DE(s)'
#echo -e -n "${undwht}"
FullBar
Columnize "$OUTDISTRO" "$OST" "$FULLNAME" "x86/x64" "$LTS" "$DTYPE" "$DE"
#echo "$OUTDISTRO" "$OST" "$FULLNAME" "x86/x64" "$LTS" "$DTYPE" "$DE"
FullBar
echo -e "${txtgrn}Default Build command(s):${txtrst}"
if [[ $counter -lt $DISTSSUPPORTED ]]; then
if [[ $EVENODD ]]; then
for EACH in ${UETYPES[@]}
do
echo "$PROGNAME $CBE $UE-$OST-$ARCH32-$EACH.iso"
echo "$PROGNAME $CBE $UE-$OST-$ARCH64-$EACH.iso"
done
echo "$PROGNAME $CBE $UE-$OST-$ARCH64.iso"
echo "$PROGNAME $CBE $UE-$OST-$ARCH32.iso"
#echo "tmosb --build $UE-$OST-$ARCH64-$LITE.iso"
else
echo "$PROGNAME $CBE $UE-$OST-$ARCH32.iso"
echo "$PROGNAME $CBE $UE-$OST-$ARCH64.iso"
fi
else
echo "$PROGNAME $CBE $UBUNTUBASE-$OST-$ARCH32.iso"
echo "$PROGNAME $CBE $UBUNTUBASE-$OST-$ARCH64.iso"
#array_counter=$(($array_counter + 1))
fi
#array_counter=$(($array_counter + 1))
done
Help build 3
exit 0;
}
function BuildNEWISO() {
ID=$2
if [[ $3 != '--no-cache' ]]; then
CACHE="--cache"
fi
EXTENSION="${ID##*.}"
FILENAME="${ID%.*}"
if [[ -d $2 && -f $2.iso ]]; then
echo "Smash the ISO."
exit 0;
fi
# DEBUGGING
# echo "1:$1 2:$2 3:$3"
# UPGRADE ROUTINE - Did the user request an ISO? Does the ISO exist?
# If so extract the ISO...
if ! [[ -d $FILENAME ]]; then
if [[ -f $ID ]]; then
ExtractISO $ID
fi
fi
if [[ -d $ID ]]; then
FILENAME=$2
EXTENSION="FOLDER"
fi
#prepare
# TODO: ADD CODE TO PREVENT FALURE FROM RETURNING FUNCTION VALUES [.ISO]
if [[ $FILENAME == "" ]]; then
InvalidBuildSwitch $*
else
VersionDump
fi
#ISO Check
if ! [[ $EXTENSION == 'iso' ]]; then
FILENAME=$2
mkdir -p $2
else
mkdir -p $FILENAME
fi
#Folder?
cd $CURRENT
for z in `ls -d */`
do
PrebuildInfo $*
################
echo -e "${bldwht}Operating System pre-build information for${txtrst}: $2"
echo -e -n "${bldgrn}"
FullBar
Columnize -t "OPERATING SYSTEM" "VER" "RELEASE BASE" "ARCH" "LTS" "TYPE" "DE(s)"
Columnize "$OUTDISTRO" "$CVERSION" "$FULLNAME" "$ARCH" "$LTS" "$DTYPE" "$DE"
Encapsulate "Is the above correct?"
FullBar
echo -e "${bldylw}"
while true; do
read -p "WARNING: this will take a long time and download vast quantanties of data. (Y/N)? " yn
case $yn in
[Nn]* ) echo -e "${txtrst}"; exit 0;;
[Yy]* ) echo -e "${txtgrn}"
echo "Initiating build of $2 ...";
break;;
* ) echo "Please answer y or n.";;
esac
done
if ! [[ -d $CURRENT/.cache/$BASEPULL/apt/ ]]; then
mkdir -p $CURRENT/.cache/$DIST/$ARCH/apt/
fi
### CORE FILES ? ###
if [[ -s $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
echo -e "${bldgrn}Pulling core files from cache."
cp $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb .
else
echo -e "${bldgrn}Building prerequisites, passing control to external uecorebuilder.${txtrst}"
# echo "DEBUGGING: 2:$2"
GAMERS=$(echo $2 | grep -i "gamers")
if [[ $LITE ]]; then
DEBTYPE='lite'
if [[ -f uecorebuilder ]]; then
./uecorebuilder $CVERSION lite
else
uecorebuilder $CVERSION lite
fi
fi
if [[ $GAMERS ]]; then
DEBTYPE='gamers'
if [[ -f uecorebuilder ]]; then
./uecorebuilder $CVERSION gamers
else
uecorebuilder $CVERSION gamers
fi
fi
if ! [[ $DEBTYPE ]]; then
DEBTYPE='standard'
if [[ -f uecorebuilder ]]; then
./uecorebuilder $CVERSION
else
uecorebuilder $CVERSION
fi
fi
fi
if [[ -s ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
echo -e "${bldgrn}Core files for Ultimate Edition $CVERSION successfully built."
echo -e -n "${bldgrn}Copying core files for $CVERSION to cache: "
SUCCESS=$(cp ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb $CURRENT/.cache/$DIST/)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
echo -e "${bldred}ERROR: Failure building core files for Ultimate Edition $CVERSION.${txtrst}"
exit 0;
fi
### SPLASH ###
if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb ]]; then
FILEISCACHED=1
cp $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb .
fi
if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb ]]; then
FILEISCACHED=1
cp $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb .
fi
if ! [[ $FILEISCACHED ]]; then
echo -e "${bldgrn}Building prerequisites, passing control to external usplash-builder.${txtrst}"
# echo -e "${bldred}DEBUGGING LITE: $LITE | GAMERS: $GAMERS | STANDARD: $DEBTYPE${txtrst}"
if [[ $LITE ]]; then
DEBTYPE='lite'
if [[ -f usplash-builder ]]; then
./usplash-builder $CVERSION lite
else
usplash-builder $CVERSION lite
fi
fi
if [[ $GAMERS ]]; then
DEBTYPE='gamers'
if [[ -f usplash-builder ]]; then
./usplash-builder $CVERSION gamers
else
usplash-builder $CVERSION gamers
fi
fi
if [[ $DEBTYPE == 'standard' ]]; then
if [[ -f usplash-builder ]]; then
./usplash-builder $CVERSION
else
# echo "DEBUGGING: usplash-builder $CVERSION"
usplash-builder $CVERSION
fi
fi
echo -e -n "${bldgrn}Copying Usplash files for $CVERSION to cache: "
SUCCESS=""
if [[ -s ubiquity-slideshow-ubuntu_90_all.deb ]]; then
SUCCESS=$(cp ubiquity-slideshow-ubuntu_90_all.deb $CURRENT/.cache/$DIST/)
fi
if [[ -s ubiquity-slideshow-kubuntu_90_all.deb ]]; then
SUCCESS=$(cp ubiquity-slideshow-kubuntu_90_all.deb $CURRENT/.cache/$DIST/)
fi
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
fi
if [[ -f ubiquity-slideshow-kubuntu_90_all.deb || -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
echo -e "${bldgrn}Usplash files for Ultimate Edition $CVERSION successfully built."
else
echo -e "${bldred}ERROR: Failure building Usplash files for Ultimate Edition $CVERSION.\nDEBUG DEBTYPE: $DEBTYPE${txtrst}"
exit 0;
fi
#if ! [[ -d $FILENAME ]]; then mkdir $FILENAME; fi
#cd $FILENAME
mkdir -p {edit,extract-cd}
if ! [[ -f extract-cd/README.diskdefines ]]; then
if ! [[ -f ../.cache/extract-cd.tar.gz ]]; then
echo -e "${bldgrn}Downloading a generic extract-cd contents...${txtrst}"
cd extract-cd/
wget http://ultimateedition.info/Toolz/extract-cd.tar.gz
mkdir -p ../../.cache/
cp extract-cd.tar.gz ../../.cache/
else
echo -e "${bldgrn}Pulling archive from cache, this saves you from having to re-download it.${txtrst}"
mkdir -p extract-cd/
cd extract-cd/
mkdir -p ../../.cache/
cp ../../.cache/extract-cd.tar.gz .
fi
echo -e -n "${bldgrn}Extracting archive: "
SUCCESS=$(tar xfv extract-cd.tar.gz 2>/dev/null)
sync
if [[ $SUCCESS ]]; then
echo -e "Success${txtrst}"
else
echo -e "${bldred}ERROR in extraction.${txtrst}"
exit 0;
fi
cp extract-cd.tar.gz ../../.cache/extract-cd.tar.gz
rm extract-cd.tar.gz
chown root:root -R *
#mv isolinux/txt.cfg isolinux/isolinux.cfg
cd ..
find 'extract-cd/' -type d -exec chmod 755 {} \;
chmod 644 extract-cd/isolinux/* extract-cd/autorun.inf extract-cd/logo.ico
else
echo -e "${bldylw}Previous build detected, not downloading the extract-cd contents.${txtrst}"
fi
echo -e -n "${bldgrn}${txtrst}"
echo -e "${bldgrn}Operating System Output: $OUTDISTRO"
echo -e "${bldgrn}Operating System version requested: $CVERSION${txtrst}"
echo -e "${bldgrn}Operating System distribution base: $DIST${txtrst}"
echo -e "${bldgrn}Architecture requested: $DOUT${txtrst}"
echo -e "${bldgrn}Distribution Long Name: $FULLNAME${txtrst}"
if [[ $IUSER != 'root' ]]; then
echo -e "${bldred}ERROR: This operation requires true root (su) access.${txtrst}"
exit 0;
fi
#PREVIOUS MINIMAL ISO & NO EDIT/
if [[ -f ../.cache/$DIST/$ARCH/debootstrap.tar.gz ]]; then
echo -e "${bldgrn}Debootstrap has been previously backed up to cache.${txtrst}"
if ! [[ -f edit/etc/lsb-release ]]; then
echo -e -n "${bldgrn}Pulling bootstrap from cache: "
cp ../.cache/$DIST/$ARCH/debootstrap.tar.gz .
if [[ -f debootstrap.tar.gz ]]; then
echo -e "Success."
else
echo -e "${bldred}FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
fi
echo -e -n "${bldgrn}Extracting archive: "
SUCCESS=$(tar -xf debootstrap.tar.gz 2>/dev/null)
if [[ -f edit/etc/lsb-release ]]; then
echo "Success."
else
echo -e "${bldred} FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
exit 0;
fi
else
echo -e "${bldylw}Prior debootstrap / build exists for $DIST $ARCH build.${txtrst}"
fi
else
echo -e "${bldylw}Prior debootstrap / build does not exist for $DIST $ARCH build. First build?\nEntering Stage 1 - debootstrap.${txtrst}"
fi
if ! [[ -f edit/etc/lsb-release ]]; then
if [[ $DOUT && $DIST ]]; then
debootstrap --arch=$DOUT $DIST edit ## Initiate debootstrap process...
if ! [[ -f edit/etc/lsb-release ]]; then
echo -e "CRITICAL ERROR: Debootstrap failed. DEBUG: DIST | $DIST ARCH | $ARCH"
exit 0;
fi
echo -e -n "${bldgrn}Compressing debootstrap:"
SUCCESS=$(tar -zcvf debootstrap.tar.gz edit)
if [[ $SUCCESS ]]; then
echo -e "${bldgrn}Successfully compressed.${txtrst}"
sync
echo -e "${bldgrn}Moving debootstrap.tar to cache.${txtrst}"
mkdir -p ../.cache/$DIST/$ARCH/
mv debootstrap.tar.gz ../.cache/$DIST/$ARCH/
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo -e "${bldgrn}This caching process will save you aprox $TTIMEM in future builds."
else
echo -e "${bldred}FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
exit 0;
fi
else
echo -e "${bldred}ERROR: Invalid switch please see $PROGNAME --help build${txtrst}"
exit 0;
fi
else
echo -e "${bldylw}Previous build detected, skipping Stage 1: debootstrap.${txtrst}"
fi
if [[ $DE ]]; then
echo $DE | tr [a-z] [A-Z] > edit/tmp/DE
else
if [ $LITE ]; then
echo 'MATE' > edit/tmp/DE
fi
if [ $GAMERS ]; then
echo 'MATE' > edit/tmp/DE
fi
if ! [[ $LITE && $GAMERS && $ODD ]]; then
echo 'GNOME' > edit/tmp/DE
fi
if ! [[ $EVENODD ]]; then
echo 'KDE' > edit/tmp/DE
fi
fi
# exit 0;
# PULL $2, $3 etc for extra DE's
PROCESS=0;
for var in "$@"
do
array_counter=$(($array_counter + 1))
# echo "Switch $array_counter: $var"
CSWITCH=$(echo $var | grep 'iso')
if [[ $PROCESS == 1 ]]; then
nested_array=0;
for TE in ${EXTRADE[@]}
do
DETC=${EXTRADE[$nested_array]}
# echo "Comparing $DETC to $var"
if [[ $var == $DETC ]]; then
echo "$var" | tr [a-z] [A-Z] >> edit/tmp/DE
fi
nested_array=$(($nested_array + 1))
done
fi
if [[ $CSWITCH && $PROCESS=0 ]]; then
PROCESS=1
fi
done
#PUSH CORE FILEZ into chroot
#Core files previously built? TODO: ADD Check and retrieve.
if [[ -f ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
echo -e "${bldgrn}Moving Core files to chroot environment.${txtrst}"
SUCCESS=$(mv ubiquity-slideshow-kubuntu_90_all.deb edit/tmp/ 2>/dev/null)
SUCCESS=$(mv ubiquity-slideshow-ubuntu_90_all.deb edit/tmp/ 2>/dev/null)
SUCCESS=$(mv ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb edit/tmp/)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Installing Core files in the chroot environment, ignore errors. We will fix them later (Stage 3).${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; dpkg -i ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb"
fi
else
echo "MASSIVE FAILURE: No core Files."
exit 0
fi
echo "CODEBASE: $DIST"
PushCache $DIST $ARCH
#exit 0;
##############################################################################################################
# echo -e "${bldgrn}Entering Stage 2 of 3: Internal software.${txtrst}"
# if [[ -f internal ]]; then
# echo -e "${bldgrn}Copying modified internal script to chroot environment.${txtrst}"
# SUCCESS=$(cp internal edit/tmp/)
# if ! [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
# fi
# else
# echo -e "${bldgrn}Copying internal script to chroot environment.${txtrst}"
# SUCCESS=$(cp /usr/share/ultimate_edition/internal edit/tmp/)
# if ! [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
# fi
# fi
if [[ $LITE ]]; then
LITE='lite'
echo $UOS' '$CVERSION Lite '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
ISO="$OS-$CVERSION-$ARCH-$LITE.iso"
else
LITE=''
echo 'Ultimate Edition '$CVERSION '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
ISO="$OS-$CVERSION-$ARCH.iso"
fi
cat extract-cd/.disk/info
done
cd $CURRENT
UpgradeISO $*
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully.";
echo -e "${bldgrn}Execution Time: $TTIMEM"
}
function ClearCache() {
VersionDump
if [[ $2 == 'debootstrap' ]]; then
CACHETOCLEAR="debootstrap"
fi
if [[ $2 == 'apt' ]]; then
CACHETOCLEAR='apt'
fi
if [[ $2 == 'all' ]]; then
CACHETOCLEAR='all'
fi
for EACH in ${OSARRAY[@]}
do
if [[ $2 == $EACH ]]; then
DISTBASE=$EACH
#echo "Distbase: $DISTBASE"
for ARCHS in ${CYCLE[@]}
do
if [[ $3 == $ARCHS ]]; then
ARCHITECTURETOCLEAR=$ARCHS
#echo "Architecture: $ARCHITECTURETOCLEAR"
fi
done
fi
done
if [[ $DISTBASE && $ARCHITECTURETOCLEAR ]]; then
if [[ -d .cache/$DISTBASE/$ARCHITECTURETOCLEAR ]]; then
CTC=$(du -hs .cache/$DISTBASE/$ARCHITECTURETOCLEAR | awk '{print $1}')
CAPS=$(echo $DISTBASE | tr [a-z] [A-Z])
echo -en "${bldgrn}CLEARING $CTC OF $CAPS $ARCHITECTURETOCLEAR CACHE: ${txtrst}"
SUPPRESS=$((rm -R .cache/$DISTBASE/$ARCHITECTURETOCLEAR) 2>/dev/null)
echo "Done."
exit 0;
else
echo -e "${bldred}ERROR: There is no $DISTBASE $ARCHITECTURETOCLEAR CACHE, exiting...${txtrst}"
exit 0;
fi
fi
if ! [[ $ARCHITECTURETOCLEAR && $DISTBASE ]]; then
if [[ -d .cache/$DISTBASE ]]; then
CTC=$(du -hs .cache/$DISTBASE/ | awk '{print $1}')
CAPS=$(echo $DISTBASE | tr [a-z] [A-Z])
echo -en "${bldgrn}CLEARING $CTC OF $CAPS CACHE: ${txtrst}"
SUPPRESS=$((rm -R .cache/$DISTBASE/$ARCHITECTURETOCLEAR) 2>/dev/null)
echo "Done."
exit 0;
else
echo -e "${bldred}ERROR: There is no $DISTBASE CACHE, exiting...${txtrst}"
exit 0;
fi
fi
if [[ $CACHETOCLEAR ]]; then
#Default option is to scrap it all.
#all cache
echo -e -n "${bldgrn}Clearing $CACHETOCLEAR Cache: "
if [[ $CACHETOCLEAR == 'all' ]]; then
if [[ -d '.cache' ]]; then
if [[ -w '.cache' ]]; then
SUCCESS=$(rm -rf .cache/* > /dev/null 2>&1)
if [[ $SUCCESS ]]; then
echo "Success."
else
echo -e "${bldred}Failure${txtrst}"
fi
else
echo -e "${bldred}You do not have permission to access the cache folder, are you su?${txtrst}"
fi
else
echo -e "${bldred}There is no cache, did you already clear it?${txtrst}"
fi
fi
#CLEAR DEBOOTSTRAP
if [[ $CACHETOCLEAR == 'debootstrap' ]]; then
DEBOOTSTRAP=$(find .cache/ -name debootstrap.tar.gz)
if [[ $DEBOOTSTRAP ]]; then
SUCCESS=$(rm -f $DEBOOTSTRAP)
if [[ $SUCCESS ]]; then
echo "Success"
else
echo -e "${bldred}Failure, no debootstrap?${txtrst}"
fi
else
echo -e "${bldred}Failure, no debootstrap?${txtrst}"
fi
fi
#MINIMAL
if [[ $CACHETOCLEAR == 'minimal' ]]; then
MINIMAL=$(find .cache/ -name MINIMAL-*)
if [[ $MINIMAL ]]; then
SUCCESS=$(rm -f $MINIMAL)
if ! [[ $SUCCESS ]]; then
echo "Success"
else
echo -e "${bldred}Failure, no prior minimal ISO?${txtrst}"
fi
else
echo -e "${bldred}Failure, no prior minimal ISO?${txtrst}"
fi
fi
#APT
if [[ $CACHETOCLEAR == 'apt' ]]; then
MINIMAL=$(find .cache/ -type d -name "apt")
if [[ $MINIMAL ]]; then
SUCCESS=$(rm -R $MINIMAL)
if ! [[ $SUCCESS ]]; then
echo "Success"
else
echo -e "${bldred}Failure, no apt cache?${txtrst}"
fi
else
echo -e "${bldred}Failure, no prior apt cache?${txtrst}"
fi
fi
else
Help clearcache a
fi
}
function UpgradeISO() {
# echo -e "${bldred}DEBUGGING UPGRADEISO function: 1:$1 2:$2 3:$3 4:$4${txtrst}"
ID=$2
# Currently unused switch - I can't imagine why someone would prefer to not use cache.'
if [[ $3 != '--no-cache' ]]; then
CACHE="--cache"
fi
EXTENSION="${ID##*.}"
FILENAME="${ID%.*}"
# DEBUGGING
# echo "1:$1 2:$2 3:$3"
# exit 0;
# UPGRADE ROUTINE - Did the user request an ISO? Does the ISO exist?
# If so extract the ISO...
if [[ -f $ID ]]; then
if ! [[ -d $FILENAME ]]; then
ExtractISO $ID
else
echo -e "${bldred}$ID exists. Scrapping, we will build a new one.${txtrst}"
rm $ID
fi
fi
if [[ $ID == '' ]]; then
ExtractISO
fi
if [[ -d $ID ]]; then
FILENAME=$ID
EXTENSION="FOLDER"
fi
#prepare
#ISO Check
if [[ $EXTENSION == 'iso' ]]; then
ID=$FILENAME
fi
#Folder?
echo -e "${bldgrn}Upgrade routine is processing $ID${txtrst}"
echo -e "${bldgrn}TYPE=$EXTENSION${txtrst}"
echo -e "${bldgrn}NAME=$FILENAME${txtrst}"
# Did the user request a directory? Does the directory exist?
if [[ -d $ID ]]; then
cd $CURRENT
for z in `ls -d */`
do
CVERSION=$(echo $z | cut -d "-" -f3)
cd $z
echo -e "${bldgrn}Processing Folder: $z${txtrst}"
ARCH=$(echo $z | grep -i 'x86')
LITE=$(echo $z | grep -i 'lite')
if [[ $ARCH ]]; then
ARCH='x86'
DOUT="i386"
else
ARCH='x64'
DOUT="amd64"
fi
#DISRO STAMPING EXTERNAL:
if [[ -f extract-cd/.disk/info ]]; then
DISTNAME=$(cat extract-cd/.disk/info | sed 's/.*"\(.*\)"[^"]*$/\1/')
if [[ $DISTNAME ]]; then
echo -e "${bldgrn}External distro name detected: $DISTNAME${txtrst}"
else
echo -e "${bldred}ERROR: No Distro name detected exiting...${txtrst}"
echo -e "${bldred}DEBUG DATA:${txtrst}"
cat extract-cd/.disk/info
exit 0;
fi
else
echo -e "${bldred}MAJOR ERROR: No Distro name detected exiting...${txtrst}"
exit 0;
fi
if [[ $LITE ]]; then
LITE='lite'
ULTIMATEEDITION="Ultimate Edition Lite"
echo $UOS' '$CVERSION Lite '"'$DISTNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
echo -e "${bldgrn}Upgrading $UOS $CVERSION $LITE${txtrst}"
ISO="$OS-$CVERSION-$ARCH-$LITE.iso"
else
ULTIMATEEDITION="Ultimate Edition"
LITE=''
if [[ $GAMERS ]]; then
echo -e "${bldgrn}Upgrading $UOS $CVERSION $GAMERS${txtrst}"
ISO="$OS-$CVERSION-$ARCH-gamers.iso"
fi
echo -e "${bldgrn}Upgrading $UOS $CVERSION $LITE${txtrst}"
echo 'Ultimate Edition '$CVERSION '"'$DISTNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
if ! [[ $DTB ]]; then
ISO="$OS-$CVERSION-$ARCH.iso"
fi
fi
#exit 0;
#Detect current code-base / distribution
if [[ -f edit/etc/lsb-release ]]; then
OSR=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_ID=[ \t]*\(.*\)/\1/p')
DISTREL=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p')
DISTDESC=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_DESCRIPTION=[ \t]*\(.*\)/\1/p')
CODEBASE=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_CODENAME=[ \t]*\(.*\)/\1/p')
for OST in ${UEARRAY[@]}
do
if [[ $OST == $CVERSION ]]; then
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
fi
array_counter=$(($array_counter + 1))
done
if [[ $LITE ]]; then
UNDERSCORED="$COS"'_Lite'
else
UNDERSCORED="$COS"
fi
#sed -i "s/$DISTREL/$CVERSION/g" edit/etc/lsb-release
#sed -i "s/$OSR/$COS/g" edit/etc/lsb-release
#sed -i "s/^DISTRIB_DESCRIPTION=.*/DISTRIB_DESCRIPTION=\"Ultimate Edition $CVERSION $FULLNAME\"/g" edit/etc/lsb-release
fi
DEFAULTREPO='http://us.archive.ubuntu.com/ubuntu/'
for OST in ${OLDRELEASES[@]}
do
if [[ $OST == $CVERSION ]]; then
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
DEFAULTREPO='http://old-releases.ubuntu.com'
fi
array_counter=$(($array_counter + 1))
done
echo -e "${bldgrn}Injecting $DEFAULTREPO of CODEBASE: $CODEBASE into sources list...${txtrst}"
echo '###### '$UOS 'Repos' > edit/etc/apt/sources.list
echo 'deb '$DEFAULTREPO' '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src '$DEFAULTREPO' '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '' >> edit/etc/apt/sources.list
echo '###### '$UOS' Update Repos' >> edit/etc/apt/sources.list
echo 'deb '$DEFAULTREPO' '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
echo 'deb '$DEFAULTREPO' '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
echo 'deb '$DEFAULTREPO' '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
echo 'deb '$DEFAULTREPO' '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '' >> edit/etc/apt/sources.list
echo '###### '$UOS' Partner Repo' >> edit/etc/apt/sources.list
echo 'deb http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
echo '# deb-src http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
echo '' >> edit/etc/apt/sources.list
echo '###### '$UOS' Extras Repo' >> edit/etc/apt/sources.list
echo 'deb http://extras.ubuntu.com/ubuntu '$CODEBASE' main' >> edit/etc/apt/sources.list
#UPGRADE PROCESS
if ! [[ $CACHE ]]; then
touch edit/tmp/cache
fi
if ! [[ -f edit/run/resolvconf/resolv.conf ]]; then
if [[ -f /run/resolvconf/resolv.conf ]]; then
echo -e "${bldgrn}Restoring network information.${txtrst}"
cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf
fi
else
echo -e "${bldred}Network information detected.${txtrst}"
fi
if [[ $CACHE ]]; then
echo -e "${bldgrn}Caching previously downloaded packages.${txtrst}"
echo "DIST: $DIST CODEBASE: $CODEBASE"
PushCache $CODEBASE $ARCH
# See CACHEPULL / CACHEPUSH FUNCTION above - This was WAY slower.
# if [[ -d ../.cache/$CODEBASE/apt/ ]]; then
# echo -e -n "${bldgrn}Initating cache sync operation. please wait: ${txtrst}"
# SUCCESS=$(rsync -avz ../.cache/$CODEBASE/apt/ edit/var/cache/apt/ 2>/dev/null)
# if [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Operation sucessful.${txtrst}"
# else
# echo -e "${bldred}Operation failed.${txtrst}"
# fi
# else
# echo -e "${bldylw}No cache folder, first $CODEBASE $ARCH based O/S build?${txtrst}"
# fi
# if [[ -d ../.cache/tmp/ ]]; then
# echo -e -n "${bldgrn}Initating Tmp cache sync operation. please wait: "
# SUCCESS=$(rsync -avz ../.cache/tmp/ edit/tmp/ 2>/dev/null)
# if [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Operation sucessful.${txtrst}"
# else
# echo -e "${bldred}Operation failed.${txtrst}"
# fi
# else
# echo -e "${bldylw}No Tmp cache folder, first build?${txtrst}"
# fi
# else
# echo -e "${bldylw}No cache switch was used, we will be clearing the cache on this build.${txtrst}"
# fi
#PRIOR SUCCESSFUL BUILD?
# if ! [[ -f /$CURRENT/.cache/$CODEBASE/$ARCH/$MIN ]]; then
if ! [[ -f $CURRENT/internal ]]; then
echo -e "${bldgrn}Copying internal script to chroot environment.${txtrst}"
cp /usr/share/ultimate_edition/internal edit/tmp/
fi
if [[ -f $CURRENT/internal ]]; then
echo -e "${bldgrn}Copying custom internal script to chroot environment.${txtrst}"
cp $CURRENT/internal edit/tmp/
fi
echo -e "${bldgrn}Stage 2 of 3: Internal Software (Chrooting)${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
#KERNEL UPGRADED????
mkdir -p extract-cd/{casper,isolinux,install,.disk}
#if [[ -w extract-cd/install/memtest ]]; then
#echo -e "${bldgrn}Making $DTB bootable...${txtrst}"
#cp /usr/lib/syslinux/isolinux.bin extract-cd/isolinux/
#if [[ -f /boot/memtest86+.bin ]]; then
# echo -e "${bldgrn}Injecting Memtest.${txtrst}"
# cp /boot/memtest86+.bin extract-cd/install/memtest
#else
# echo -e "${bldylw}Warning: Memtest not found, not populating. sudo apt-get install grub-image${txtrst}"
#fi
#cp edit/boot/vmlinuz-* extract-cd/casper/vmlinuz
#cp edit/boot/initrd.img-* extract-cd/casper/initrd.lz
#else
#echo -e "${bldred}ERROR: Insufficient privilages. I hope you did not upgrade the kernel.${txtrst}"
#fi
# CACHING out at each stage ...
if [[ $CACHE ]]; then
# SUCCESS=$(rsync -avz edit/var/cache/apt/ ../.cache/$CODEBASE/apt/ 2>/dev/null)
if [[ -f edit/tmp/internal ]]; then
rm edit/tmp/internal
fi
if [[ -f edit/tmp/internal ]]; then
rm edit/tmp/internal
fi
if [[ -f edit/tmp/tmgrub ]]; then
rm edit/tmp/tmgrub
fi
# PullCache "$CODEBASE" "$ARCH"
#echo -e -n "${bldgrn}Rsyncing tmp folder: ${txtrst}"
#SUCCESS=$(rsync -avz edit/tmp/ ../.cache/tmp/ 2>/dev/null)
#if [[ $SUCCESS ]]; then
#echo -e "${bldgrn}Cache sync operation successful.${txtrst}"
#else
#echo -e "${bldred}Cache sync operation failed.${txtrst}"
fi
#echo -e "${bldgrn}Clearing tmp from chroot environment.${txtrst}"
#rm -rf edit/tmp/* edit/tmp/.* > /dev/null 2>&1
#//Added
#echo -e -n "${bldgrn}Super hook: "
#if [[ -d edit/dev ]]; then
# HOOK=$(mount --bind /dev/ edit/dev/)
#fi
#if ! [[ $HOOK ]]; then
# echo -e "Success.${txtrst}"
#else
# echo -e "${bldred}FAILURE${txtrst}"
# exit 0
#fi
# if [[ -f $CURRENT/tmgrub ]]; then
# echo -e "${bldgrn}RE-ENTERING CHROOT Stage 2 of 3 Grub section:"
# echo -e "passing control to internal software.${txtrst}"
# cp $CURRENT/tmgrub edit/tmp/
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
# else
# if [[ -f /usr/share/ultimate_edition/tmgrub ]]; then
# echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Grub section:"
# echo -e "passing control to internal software.${txtrst}"
# cp /usr/share/ultimate_edition/tmgrub edit/tmp/
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
# else
# echo -e "${bldred}ERROR: Missing internal grub script.${txtrst}"
# exit 0;
# fi
# fi
#echo -e -n "${bldgrn}Unhooking: "
sync
#if [[ -d edit/dev ]]; then
# HOOK=$(umount edit/dev/)
#fi
#if ! [[ $HOOK ]]; then
# echo -e "Success.${txtrst}"
#else
# echo -e "${bldred}FAILURE${txtrst}"
# exit 0
#fi
# if [[ $ULTIMATEEDITION ]]; then
# echo -e "${bldgrn}Internal distro stamping, initiating...${txtrst}"
# DIST_NAME=$UNDERSCORED
# DIST_VERSION=$CVERSION
# DIST_BASE=$CODEBASE
# DIST_NAME_LONG=$ULTIMATEEDITION' '$DISTVER
#lsb_release
# echo 'DISTRIB_ID='$DIST_NAME > edit/etc/lsb-release
# echo 'DISTRIB_RELEASE='$DIST_VERSION >> edit/etc/lsb-release
# echo 'DISTRIB_CODENAME='$DIST_BASE >> edit/etc/lsb-release
# echo 'DISTRIB_DESCRIPTION="'$DIST_NAME_LONG$DIST_VERSION'"' >> edit/etc/lsb-release
#issue
# echo $DIST_NAME_LONG'\n \l' > edit/etc/issue
# echo $DIST_NAME_LONG > edit/etc/issue.net
#os-release
# echo 'NAME="'$DIST_NAME'"' > edit/etc/os-release
# echo 'VERSION='$DIST_VERSION', "'$DIST_BASE'"' >> edit/etc/os-release
# echo 'ID=ultimate' >> edit/etc/os-release
# echo 'ID_LIKE=debian' >> edit/etc/os-release
# echo 'PRETTY_NAME="'$DIST_NAME_LONG'('$DIST_VERSION')"' >> edit/etc/os-release
# echo 'VERSION_ID='$DIST_VERSION >> edit/etc/os-release
# if [[ -f edit/etc/update-motd.d/10-help-text ]]; then
# echo -e "${bldgrn}Stamping MOTD with Ultimate Edition Goodness.${txtrst}"
# sed -i 's/URL=.*/URL=\"http:\/\/forumubuntusoftware.info\/"/g' edit/etc/update-motd.d/10-help-text
# fi
#
# if [[ -f edit/run/resolvconf/resolv.conf ]]; then
# echo -e "${bldgrn}Removing network information.${txtrst}"
# rm edit/run/resolvconf/resolv.conf
# else
# echo -e "${bldred}No network information detected.${txtrst}"
# fi
# fi
echo -e "${bldgrn}Final deployment information:...${txtrst}"
cat edit/etc/lsb-release
cat edit/etc/os-release
cat edit/etc/issue
cat edit/etc/issue.net
#//added///
#BUILD A MINIMAL ISO, THIS WILL ALSO ACCELERATE FUTURE BUILDS.
fi
# else
### ADD MINIMAL ISO EXTRACTION HERE
# echo -e "${bldgrn}Stage 1 previously completed successfully, skipping.${txtrst}"
# STAGE=2
# fi
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo -e "${bldgrn}This cache processing will save you aprox $TTIMEM in future builds."
#exit 0;
#TODO:ADD CHECK EDIT IF NOT [EXIST] THEN MOUNT AND EXTRACT MINIMAL ISO.
# STAGE 2 OF 3
#cd $CURRENT
# chroot edit apt-get update
# echo -e "DEBUG: 1:$1 2:$2 3:$3 4:$4 LITE:$LITE Lite2: $ISLITE"
if [ $LITE ]; then
echo 'MATE' > edit/tmp/DE
fi
if [ $GAMERS ]; then
echo 'MATE' > edit/tmp/DE
fi
if ! [[ $LITE || $GAMERS ]]; then
if [[ $ODD ]]; then
echo 'KDE' > edit/tmp/DE
else
echo 'GNOME' > edit/tmp/DE
fi
fi
# PULL $2, $3 etc for extra DE's
PROCESS=0;
# Turn off case sensitivity, we want the user to be able to use XFCE and xfce
shopt -s nocaseglob
for var in "$*"
do
array_counter=$(($array_counter + 1))
# echo "Switch $array_counter: $var"
CSWITCH=$(echo $var | grep 'iso')
if [[ $PROCESS == 1 ]]; then
nested_array=0;
for TE in ${EXTRADE[@]}
do
DETC=${EXTRADE[$nested_array]}
# echo "Comparing $DETC to $var"
if [[ $var == $DETC ]]; then
echo "$var" >> edit/tmp/DE
fi
nested_array=$(($nested_array + 1))
done
fi
if [[ $CSWITCH && $PROCESS=0 ]]; then
PROCESS=1
fi
done
# RE-PULL CACHE, We had to clean it when we built the minimal ISO
# if [[ $CACHE ]]; then
# echo -e "${bldgrn}Re-pulling cache, this may save you from downloading many packages.${txtrst}"
# if [[ -d ../.cache/$CODEBASE/apt/ ]]; then
# echo -e -n "${bldgrn}Initating cache sync operation. please wait: ${txtrst}"
# SUCCESS=$(rsync -avz ../.cache/$CODEBASE/apt/ edit/var/cache/apt/ 2>/dev/null)
# if [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Operation sucessful.${txtrst}"
# else
# echo -e "${bldred}Operation failed.${txtrst}"
# fi
# else
# echo -e "${bldylw}No cache folder, first $CODEBASE $ARCH based O/S build?${txtrst}"
# fi
# if [[ -d ../.cache/tmp/ ]]; then
# echo -e -n "${bldgrn}Initating Tmp cache sync operation. please wait:"
# SUCCESS=$(rsync -avz ../.cache/tmp/ edit/tmp/ 2>/dev/null)
# if [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Operation sucessful.${txtrst}"
# else
# echo -e "${bldred}Operation failed.${txtrst}"
# fi
# else
# echo -e "${bldylw}No Tmp cache folder, first build?${txtrst}"
# fi
# else
# echo -e "${bldylw}No cache switch was used, we will be clearing the cache on this build.${txtrst}"
# fi
if ! [[ -f edit/run/resolvconf/resolv.conf ]]; then
echo -e "${bldgrn}Restoring network information.${txtrst}"
cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf
else
echo -e "${bldred}Network information detected.${txtrst}"
fi
#Cache out stage 2...
if [[ $CACHE ]]; then
#echo -e "${bldgrn}Rsyncing cache. This could take a long time the first time it is ran, please wait...${txtrst}"
#PullCache $DIST $ARCH
#SUCCESS=$(rsync -avz edit/var/cache/apt/ ../.cache/$CODEBASE/apt/ 2>/dev/null)
if [[ -f edit/tmp/minimal ]]; then
rm edit/tmp/minimal
fi
if [[ -f edit/tmp/internal ]]; then
rm edit/tmp/internal
fi
if [[ -f edit/tmp/tmgrub ]]; then
rm edit/tmp/tmgrub
fi
#echo -e -n "${bldgrn}Rsyncing tmp folder: ${txtrst}"
# SUCCESS=$(rsync -avz edit/tmp/ ../.cache/tmp/ 2>/dev/null)
# if [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Success.${txtrst}"
#else
# echo -e "${bldred}Failure.${txtrst}"
#fi
#echo -e "${bldgrn}Clearing tmp from chroot environment.${txtrst}"
#rm -rf edit/tmp/* edit/tmp/.* > /dev/null 2>&1
fi
# ///// Scrap me.....
#echo -e -n "${bldgrn}Super hook: "
#if [[ -d edit/dev ]]; then
# HOOK=$(mount --bind /dev/ edit/dev/)
#fi
#if ! [[ $HOOK ]]; then
# echo -e "Success.${txtrst}"
#else
# echo -e "${bldred}FAILURE${txtrst}"
# exit 0
#fi
if [[ -f $CURRENT/tmgrub ]]; then
echo -e "${bldgrn}Stage 3 of 3: Grub section:"
echo -e "Passing control to tmgrub software.${txtrst}"
cp $CURRENT/tmgrub edit/tmp/
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
else
if [[ -f /usr/share/ultimate_edition/tmgrub ]]; then
echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Grub section:"
echo -e "passing control to internal software.${txtrst}"
cp /usr/share/ultimate_edition/tmgrub edit/tmp/
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
else
echo -e "${bldred}ERROR: Missing internal grub script.${txtrst}"
exit 0;
fi
fi
#if [[ -f $CURRENT/internal ]]; then
# echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Desktop Environment section:"
# echo -e "passing control to internal software.${txtrst}"
# cp $CURRENT/internal edit/tmp/
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
#else
# if [[ -f /usr/share/ultimate_edition/internal ]]; then
# echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Desktop Environment section:"
# echo -e "passing control to internal software.${txtrst}"
# cp /usr/share/ultimate_edition/internal edit/tmp/
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
# else
# echo -e "${bldred}ERROR: Missing internal script.${txtrst}"
# exit 0;
# fi
#fi
#echo -e -n "${bldgrn}Unhooking: "
sync
#if [[ -d edit/dev ]]; then
# HOOK=$(umount edit/dev/)
#fi
#if ! [[ $HOOK ]]; then
# echo -e "Success.${txtrst}"
#else
# echo -e "${bldred}FAILURE${txtrst}"
# exit 0
#fi
#////////
#umount $CURRENT/edit/dev
echo -e "${bldgrn}Creating Readme file${txtrst}"
if ! [[ -f extract-cd/README ]]; then
echo "This Operating System was auto generated using:" > extract-cd/README.TXT
VersionDump >> extract-cd/README.TXT
# echo "GNU tmosb (TheeMahn O/S Builder) home page: <http://ultimateedition.info/>." >> extract-cd/README.TXT
# echo "E-mail bug reports to: <[email protected]>." >> extract-cd/README.TXT
# echo "Be sure to include the word tmosb somewhere in the Subject: field." >> extract-cd/README.TXT
echo "" >> extract-cd/README.TXT
echo -e -n "Using the command: tmosb " >> extract-cd/README.TXT
echo $@ >> extract-cd/README.TXT
echo "on `date`" >> extract-cd/README.TXT
fi
PullCache $CODEBASE $ARCH
if [[ -f edit/run/resolvconf/resolv.conf ]]; then
echo -e "${bldgrn}Removing network information from chroot.${txtrst}"
rm edit/run/resolvconf/resolv.conf
fi
echo -e "${bldgrn}INITIATING FINAL BUILD PROCESS FOR $DTB${txtrst}"
#RE-BUILD IT
echo -en "${bldgrn}Clearing tmp from chroot: "
SUPPRESS=$((rm -R /tmp/.*) 2>/dev/null)
SUPPRESS=$((rm -f /tmp/*) 2>/dev/null)
echo "Success."
echo -en "${bldgrn}Pushing initramfs to dvd: ${txtrst}"
mkdir -p extract-cd/{casper,isolinux,install,.disk}
cp /usr/lib/syslinux/isolinux.bin extract-cd/isolinux/
if [[ -f /boot/memtest86+.bin ]]; then
echo -e -n "${bldgrn}Copying memtest: "
cp /boot/memtest86+.bin extract-cd/install/memtest
echo "Success."
else
echo -e "${bldylw}Memtest not installed on host, not populating: sudo apt-get install memtest86+"
fi
FULLNAME=$OUTDISTRO" "$CVERSION
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
#cd $CURRENT
BuildISO --buildiso $ISO
exit 0;
done
else
echo -e "${bldred}ERROR: $1 Not found.${txtrst}"
fi
# mount --bind /dev /edit/dev
# mount $CURRENT/edit/dev
}
function Help() {
# echo "DEBUGGING HELP FUNCTION: 1:$1 2:$2 3:$3"
if [[ $2 == "" ]]; then
VersionDump
PRAM="ALL"
else
if ! [[ $3 ]]; then
VersionDump
PRAM=$2
else
PRAM=$2
fi
fi
case $PRAM in
ALL)
echo -e "${bldgrn}Usage: $PROGNAME -<-COMMAND> [OPTION]${txtrst}"
FullBar
echo "Mandatory arguments to long options are identical for short options."
echo -e " possible commands...\n"
echo ' -b --build builds Operating System(s)'
echo ' -B --buildiso builds ISO'
echo ' -C --clearcache clears system cache'
echo ' -c --cacheinfo displays various cache information'
echo ' -e --extract extract ISO(s)'
echo ' -h --help this help message'
echo ' -p --pull pulls all source code to current folder'
echo ' -t --test test ISO in virtual machine and exit'
echo ' -u --upgrade distro upgrades existing Operating System(s)'
echo -e ' -v --version dump version info and exit\n'
FullBar
echo -e "${bldgrn}$PROGNAME --help [COMMAND] for further information.${txtrst}";;
ALL|b|build)
FullBar
echo -e "\n${bldwht}Usage build;${txtrst}"
EyeCandy "$PROGNAME -b <TARGETISO>"
echo -e "Invokes $PROGNAME to build <TARGETISO> from scratch. The format of the ISO"
echo "must comply as follows:"
echo "<DISTRO>-<VERSION>-<ARCHITECTURE>-[LITE/GAMERS].[ISO] [DE]"
echo "Valid arguments are as follows:"
echo "Distro: ubuntu, ultimate-edition"
echo "Version: 12.04, 12.10, 13.04, 13.10, 14.04 for Ubuntu"
echo "Version: 3.4, 3.5, - , 4.5 for Ultimate Edition"
echo "Architecture: x86, x64, armel, armhf"
echo "Lite: lite"
echo "Gamers: gamers"
echo "Desktop Environment (DE): mate, kde, xfce, awesome, lxde, razorqt and / or gnome to add [OPTIONAL] Desktop Environment(s)"
echo "iso, lite, gamers and DE as per synopsis is [OPTIONAL]"
FullBar
echo -e "${bldgrn}Example: ${bldwht}$PROGNAME --build ultimate-edition-4.2-x64-lite.iso xfce${txtrst}"
echo "Will build Ultimate Edition 4.2 64 bit Lite Operating System in ISO format."
echo "adding the optional XFCE DE";;
ALL|B|buildiso)
echo -e "\n${bldwht}Usage buildiso;${txtrst}"
echo -e "${txtgrn}$PROGNAME -B [TARGETISO]${txtrst}"
echo -e "Invokes $PROGNAME to build [TARGETISO] from a preivious build. The format of the ISO"
echo "must comply as follows:"
echo "[TARGETISO]"
echo "Valid arguments are as follows:"
echo "Existant folder, is optional. It will otherwise look for information in .disk/info"
echo -e "${bldgrn}Example: ${bldwht}$PROGNAME --buildiso ultimate-edition-4.2-x64-lite/${txtrst}"
echo "Will build Ultimate Edition 4.2 64 bit Lite Operating System in ISO format.";;
ALL|C|clearcache)
echo -e "\n${bldwht}Usage clearcache;${txtrst}"
echo -e "${txtgrn}$PROGNAME -C <REQUIREMENT>${txtrst}"
echo "Clears cache by disgression."
echo "<REQUIREMENT> is as follows:"
echo "<debootstrap> clears debootstrap image(s)."
echo "<minimal> clears minimal ISO image(s)"
echo "<all> clears the entire cache system."
echo -e "${bldgrn}Example: $PROGNAME --clearcache debootstrap${txtrst}";;
ALL|c|cacheinfo)
echo -e "\n${bldwht}Usage cacheinfo;${txtrst}"
echo -e "${txtgrn}$PROGNAME -c${txtrst}"
echo "Displays various cache information."
echo -e "${bldgrn}Example: $PROGNAME --cacheinfo${txtrst}";;
ALL|e|extract)
echo -e "\n${bldwht}Usage extract;${txtrst}"
echo -e "${txtgrn}$PROGNAME -e <ISO>${txtrst}"
echo "Extracts <ISO> for further processing."
echo -e "${bldgrn}Example: $PROGNAME --extract ultimate-edition-4.0-x64.iso${txtrst}";;
ALL|p|pull)
echo -e "\n${bldwht}Usage pull;${txtrst}"
echo -e "${txtgrn}$PROGNAME -p [option]${txtrst}"
echo -e "Pulls all source code to current folder to allow you to modify it.\n The [option] switch allows you to overwrite if existant source code."
echo -e "${bldgrn}Example: $PROGNAME --pull --overwrite${txtrst}";;
ALL|u|upgrade)
echo -e "\n${bldwht}Usage upgrade;${txtrst}"
echo -e "${txtgrn}$PROGNAME -u [ISO]${txtrst}"
echo "Will mount and extract [ISO] image and invoke distribution upgrade."
echo "The [ISO] is only [OPTIONAL] because it will process folders as well."
echo -e "\nExample: $PROGNAME --upgrade ultimate-edition-3.4-x64.iso";;
ALL|t|test)
echo -e "\n${bldwht}Usage test;${txtrst}"
echo -e "${txtgrn}$PROGNAME -t [ISO]${txtrst}"
echo "Invokes a virtual machine to boot [ISO]."
echo -e "Example: $PROGNAME --test ultimate-edition-4.2-x64.iso";;
ALL|v|version)
echo -e "\n${bldwht}Usage version;${txtrst}"
echo -e "${txtgrn}$PROGNAME -v${txtrst}"
echo -e "Displays $PROGNAME's version number and exits.";;
ALL|h|help|\?)
echo -e "\n${bldwht}Useage Help [COMMAND];${txtrst}"
echo -e "${txtgrn}$PROGNAME -h [COMMAND]${txtrst}"
echo "Displays this message. For futher information $PROGNAME help [COMMAND]"
echo -e "or refer to the manpages.\n"
echo -e "man $PROGNAME"
echo -e "${txtgrn}"
echo -e "Example: $PROGNAME -h version"
echo -e "${txtwht}Will display help about the command version${txtrst}"
esac
exit 0
}
# Pull the souce code to the current running folder.
function PullSource () {
VersionDump
# echo -e "${bldgrn}DEBUGGING PULLSOURCE function: 1:$1 2:$2 3:$3"
array_counter=0;
for i in ${APPLICATIONS[@]}
do
APPLICATIONSOURCE=${APPSRC[$array_counter]}
if [[ -f $i && $2 != '--overwrite' ]]; then
echo -e "${bldred}ERROR: $i exists, not overwriting. \nUse: tmosb --pull --overwrite if you are sure.${txtrst}"
else
if [[ -f $APPLICATIONSOURCE/$i ]]; then
echo -e -n "${bldgrn}Copying source $i to $PWD: ${txtrst}"
FTG=$(cp $APPLICATIONSOURCE/$i . 2>/dev/null)
if [[ -f $i ]]; then
echo -e "${bldgrn}Success."
else
echo -e "${bldred}Failure. Source missing?"
fi
else
echo -e "${bldred}ERROR FILE NOT FOUND: $APPLICATIONSOURCE/$i${txtrst}"
fi
fi
array_counter=$(($array_counter + 1))
done
echo -e "${bldgrn}Feel free to modify the source in your favorite editor\nExample: gedit internal${txtrst}"
}
function Debootstrap () {
ID=$2
if [[ $3 != '--no-cache' ]]; then
CACHE="--cache"
fi
EXTENSION="${ID##*.}"
FILENAME="${ID%.*}"
# DEBUGGING
# echo "1:$1 2:$2 3:$3"
# UPGRADE ROUTINE - Did the user request an ISO? Does the ISO exist?
# If so extract the ISO...
if [[ $IUSER != 'root' ]]; then
echo -e "${bldred}ERROR: This operation requires true root (su) access.${txtrst}"
exit 0;
fi
if ! [[ -d $FILENAME ]]; then
if [[ -f $ID ]]; then
ExtractISO $ID
fi
fi
if [[ -d $ID ]]; then
FILENAME=$2
EXTENSION="FOLDER"
fi
#prepare
# TODO: ADD CODE TO PREVENT FALURE FROM RETURNING FUNCTION VALUES [.ISO]
if [[ $FILENAME == "" ]]; then
VersionDump
InvalidBuildSwitch $*
Help debootstrap 3
exit 0;
else
VersionDump
fi
#ISO Check
if ! [[ $EXTENSION == 'iso' ]]; then
FILENAME=$2
mkdir -p $2
else
mkdir -p $FILENAME
fi
#Folder?
cd $CURRENT
for z in `ls -d */`
do
CVERSION=$(echo $z | cut -d "-" -f3)
cd $z
# Default naming scheme for Ultimate Edition
ARCH=$(echo $z | grep -i 'x86')
# Nothing? Is the user wanting a ubuntu build?
if ! [[ $ARCH ]]; then
ARCH=$(echo $z | grep -i 'i386')
fi
# Wanting Lite? This data will be pushed to the internal app
# and adjusted accordingly.
# TODO: ADD GAMERS ETC?
LITE=$(echo $z | grep -i 'lite')
GAMERS=$(echo $z | grep -i 'gamers')
if [[ $ARCH ]]; then
ARCH='x86'
DOUT="i386"
else
ARCH='x64'
DOUT="amd64"
fi
# Process via default name if Ubuntu:
# ubuntu-13.10-desktop-amd64.iso
EXTENSION="${z##*.}"
FILENAME="${z%.*}"
UBUNTU=$(echo $z | grep -i 'ubuntu')
if [[ $UBUNTU ]]; then
CVERSION=$(echo $z | cut -d "-" -f2)
fi
# Check to see if release is Long Term Supported.
LTS='NO'
for zx in ${ISLTS[@]}
do
if [[ "$CVERSION" == "$zx" && $LTS == 'NO' ]]; then
LTS='YES'
fi
done
array_counter=0;
for OST in ${UEARRAY[@]}
do
# DEBUGGING
# echo "Checking: $OST"
if [[ $OST == $CVERSION ]]; then
# DEBUGGING
# echo "YES: $OST DIST: ${OSARRAY[$array_counter]} NAME: ${DISTARRAY[$array_counter]}"
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
fi
array_counter=$(($array_counter + 1))
done
if [[ $UBUNTU ]]; then
OUTDISTRO="Ubuntu"
else
OUTDISTRO="Ultimate Edition"
fi
EVENODD="${2##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
DTYPE='FULL'
DE="KDE"
else
DTYPE='STANDARD'
DE="GNOME"
fi
if [[ $LITE ]]; then
DTYPE='LITE'
DE="MATE"
else
DTYPE='STANDARD'
fi
if [[ $GAMERS ]]; then
DTYPE='GAMERS'
DE="MATE"
fi
################ EXTRA DE'S?
# PULL $2, $3 etc for extra DE's
PROCESS=0;
shopt -s nocaseglob
for var in "$*"
do
array_counter=$(($array_counter + 1))
# echo "Switch $array_counter: $var"
CSWITCH=$(echo $var | grep 'iso')
if [[ $PROCESS == 1 ]]; then
nested_array=0;
for TE in ${EXTRADE[@]}
do
DETC=${EXTRADE[$nested_array]}
# echo "Comparing $DETC to $var"
if [[ $var == $DETC ]]; then
DE=$DE', '$var
fi
nested_array=$(($nested_array + 1))
done
fi
if [[ $CSWITCH && $PROCESS=0 ]]; then
PROCESS=1
fi
done
################
VER=$(echo $CVERSION | cut -d "." -f2)
if ! [[ $VER =~ ^-?[0-9]+$ ]]; then
InvalidBuildSwitch $*
else
if [[ $VER ]]; then
if [[ $(( $VER % 2)) -eq 0 ]]; then
DE="MATE"
else
DE="KDE"
fi
fi
fi
if ! [[ $OUTDISTRO || $CVERSION || $FULLNAME || $ARCH || $LTS || $DTYPE || $DE ]]; then
InvalidBuildSwitch $*
fi
echo -e "${bldwht}Operating System pre-build information for${txtrst}: $2"
PrebuildInfo $*
################
echo -e "${bldwht}Operating System pre-build information for${txtrst}: $2"
echo -e -n "${bldgrn}"
FullBar
Columnize -t "OPERATING SYSTEM" "VER" "RELEASE BASE" "ARCH" "LTS" "TYPE" "DE(s)"
Columnize "$OUTDISTRO" "$CVERSION" "$FULLNAME" "$ARCH" "$LTS" "$DTYPE" "$DE"
Encapsulate "Is the above correct?"
FullBar
echo -e "${bldylw}"
while true; do
read -p "WARNING: this will take a long time and download vast quantanties of data. (Y/N)? " yn
case $yn in
[Nn]* ) echo -e "${txtrst}"; exit 0;;
[Yy]* ) echo -e "${txtgrn}"
echo "Initiating build of $2 ...";
break;;
* ) echo "Please answer y or n.";;
esac
done
if ! [[ -d $CURRENT/.cache/$BASEPULL/apt/ ]]; then
mkdir -p $CURRENT/.cache/$DIST/$ARCH/apt/
fi
### CORE FILES ? ###
if [[ -s $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
echo -e "${bldgrn}Pulling core files from cache."
cp $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb .
else
echo -e "${bldgrn}Building prerequisites, passing control to external uecorebuilder.${txtrst}"
# echo "DEBUGGING: 1:$1"
GAMERS=$(echo $1 | grep -i "gamers")
if [[ $LITE ]]; then
DEBTYPE='lite'
if [[ -f uecorebuilder ]]; then
./uecorebuilder $CVERSION lite
else
uecorebuilder $CVERSION lite
fi
fi
if [[ $GAMERS ]]; then
DEBTYPE='gamers'
if [[ -f uecorebuilder ]]; then
./uecorebuilder $CVERSION gamers
else
uecorebuilder $CVERSION gamers
fi
fi
if ! [[ $DEBTYPE ]]; then
DEBTYPE='standard'
if [[ -f uecorebuilder ]]; then
./uecorebuilder $CVERSION
else
uecorebuilder $CVERSION
fi
fi
fi
if [[ -s ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
echo -e "${bldgrn}Core files for Ultimate Edition $CVERSION successfully built."
echo -e -n "${bldgrn}Copying core files for $CVERSION to cache: "
SUCCESS=$(cp ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb $CURRENT/.cache/$DIST/)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
echo -e "${bldred}ERROR: Failure building core files for Ultimate Edition $CVERSION.${txtrst}"
exit 0;
fi
### SPLASH ###
if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb ]]; then
FILEISCACHED=1
cp $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb .
fi
if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb ]]; then
FILEISCACHED=1
cp $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb .
fi
if ! [[ $FILEISCACHED ]]; then
echo -e "${bldgrn}Building prerequisites, passing control to external usplash-builder.${txtrst}"
if [[ $LITE ]]; then
if [[ -f usplash-builder ]]; then
./usplash-builder $CVERSION lite
else
usplash-builder $CVERSION lite
fi
else
if [[ -f usplash-builder ]]; then
./usplash-builder $CVERSION
else
usplash-builder $CVERSION
fi
fi
echo -e -n "${bldgrn}Copying Usplash files for $CVERSION to cache: "
SUCCESS=""
if [[ -s ubiquity-slideshow-ubuntu_90_all.deb ]]; then
SUCCESS=$(cp ubiquity-slideshow-ubuntu_90_all.deb $CURRENT/.cache/$DIST/)
fi
if [[ -s ubiquity-slideshow-kubuntu_90_all.deb ]]; then
SUCCESS=$(cp ubiquity-slideshow-kubuntu_90_all.deb $CURRENT/.cache/$DIST/)
fi
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
fi
if [[ -f ubiquity-slideshow-kubuntu_90_all.deb || -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
echo -e "${bldgrn}Usplash files for Ultimate Edition $CVERSION successfully built."
else
echo -e "${bldred}ERROR: Failure building Usplash files for Ultimate Edition $CVERSION.${txtrst}"
exit 0;
fi
#if ! [[ -d $FILENAME ]]; then mkdir $FILENAME; fi
#cd $FILENAME
mkdir -p {edit,extract-cd}
if ! [[ -f extract-cd/README.diskdefines ]]; then
if ! [[ -f ../.cache/extract-cd.tar.gz ]]; then
echo -e "${bldgrn}Downloading a generic extract-cd contents...${txtrst}"
cd extract-cd/
wget http://ultimateedition.info/Toolz/extract-cd.tar.gz
mkdir -p ../../.cache/
cp extract-cd.tar.gz ../../.cache/
else
echo -e "${bldgrn}Pulling archive from cache, this saves you from having to re-download it.${txtrst}"
mkdir -p extract-cd/
cd extract-cd/
mkdir -p ../../.cache/
cp ../../.cache/extract-cd.tar.gz .
fi
echo -e -n "${bldgrn}Extracting archive: "
SUCCESS=$(tar xfv extract-cd.tar.gz 2>/dev/null)
sync
if [[ $SUCCESS ]]; then
echo -e "Success${txtrst}"
else
echo -e "${bldred}ERROR in extraction.${txtrst}"
exit 0;
fi
cp extract-cd.tar.gz ../../.cache/extract-cd.tar.gz
rm extract-cd.tar.gz
chown root:root -R *
#mv isolinux/txt.cfg isolinux/isolinux.cfg
cd ..
find 'extract-cd/' -type d -exec chmod 755 {} \;
chmod 644 extract-cd/isolinux/* extract-cd/autorun.inf extract-cd/logo.ico
else
echo -e "${bldylw}Previous build detected, not downloading the extract-cd contents.${txtrst}"
fi
echo -e -n "${bldgrn}${txtrst}"
echo -e "${bldgrn}Operating System Output: $OUTDISTRO"
echo -e "${bldgrn}Operating System version requested: $CVERSION${txtrst}"
echo -e "${bldgrn}Operating System distribution base: $DIST${txtrst}"
echo -e "${bldgrn}Architecture requested: $DOUT${txtrst}"
echo -e "${bldgrn}Distribution Long Name: $FULLNAME${txtrst}"
if [[ -f ../.cache/$DIST/$ARCH/debootstrap.tar.gz ]]; then
echo -e "${bldgrn}Debootstrap has been previously backed up to cache.${txtrst}"
if ! [[ -f edit/etc/lsb-release ]]; then
echo -e -n "${bldgrn}Pulling bootstrap from cache: "
cp ../.cache/$DIST/$ARCH/debootstrap.tar.gz .
if [[ -f debootstrap.tar.gz ]]; then
echo -e "Success."
else
echo -e "${bldred}FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
fi
echo -e -n "${bldgrn}Extracting archive: "
SUCCESS=$(tar -xf debootstrap.tar.gz 2>/dev/null)
if [[ -f edit/etc/lsb-release ]]; then
echo "Success."
else
echo -e "${bldred} FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
exit 0;
fi
else
echo -e "${bldylw}Prior debootstrap / build exists for $DIST $ARCH build.${txtrst}"
fi
else
echo -e "${bldylw}Prior debootstrap / build does not exist for $DIST $ARCH build. First build?\nEntering Stage 1 - debootstrap.${txtrst}"
fi
if ! [[ -f edit/etc/lsb-release ]]; then
if [[ $DOUT && $DIST ]]; then
debootstrap --arch=$DOUT $DIST edit ## Initiate debootstrap process...
echo -e -n "${bldgrn}Compressing debootstrap:"
SUCCESS=$(tar -zcvf debootstrap.tar.gz edit)
if [[ $SUCCESS ]]; then
echo -e "${bldgrn}Successfully compressed.${txtrst}"
sync
echo -e "${bldgrn}Moving debootstrap.tar to cache.${txtrst}"
mkdir -p ../.cache/$DIST/$ARCH/
mv debootstrap.tar.gz ../.cache/$DIST/$ARCH/
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo -e "${bldgrn}This caching process will save you aprox $TTIMEM in future builds."
else
echo -e "${bldred} FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
exit 0;
fi
else
echo -e "${bldred}ERROR: Invalid switch please see $PROGNAME --help build${txtrst}"
exit 0;
fi
else
echo -e "${bldylw}Previous build detected, skipping Stage 1: debootstrap.${txtrst}"
fi
#PUSH CORE FILEZ into chroot
#Core files previously built? TODO: ADD Check and retrieve.
if [[ -f ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
echo -e "${bldgrn}Moving Core files to chroot environment.${txtrst}"
SUCCESS=$(mv ubiquity-slideshow-kubuntu_90_all.deb edit/tmp/ 2>/dev/null)
SUCCESS=$(mv ubiquity-slideshow-ubuntu_90_all.deb edit/tmp/ 2>/dev/null)
SUCCESS=$(mv ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb edit/tmp/)
if ! [[ $SUCCESS ]]; then
echo -e "${bldgrn}Installing Core files in the chroot environment\nignore errors. We will fix them later (Stage 3).${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; dpkg -i ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb"
fi
else
echo "MASSIVE FAILURE: No core Files."
exit 0
fi
# Only update sources list if they have not already been updated.
if ! [[ -f edit/var/cache/apt/pkgcache.bin ]]; then
echo -e "${bldgrn}Updating Sources list in chroot environment.${txtrst}"
# Snatch missing keys while we are at it.
/usr/sbin/chroot edit /bin/sh -c 'apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver $KEYSERVER --recv $key && gpg --export --armor $key | apt-key add -; done'
fi
echo -e "${bldgrn}Fixing any prior errors.${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; apt-get install -f -y"
echo -e "${bldgrn}Distribution updgrading chroot environment.${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; apt-get dist-upgrade -y"
echo -e "${bldgrn}Installing the bare minimum to allow distro to boot\nOnce again ignore errors, we will fix them later (Stage 3).${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; apt-get install --yes --no-install-recommends linux-generic ubuntu-standard casper lupin-casper software-properties-gtk laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils command-not-found bash fonts-liberation"
echo -e "${bldgrn}Fixing any prior errors.${txtrst}"
/usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; DEBIAN_PRIORITY=critical ; DEBCONF_FRONTEND=noninteractive ; mount none -t proc /proc ; mount none -t sysfs /sys ; mount none -t devpts /dev/pts ; export HOME=/root ; export LC_ALL=C ; apt-get install -f -y ; umount /proc ; umount /sys ; umount /dev/pts"
CODEBASE=$DIST
PushCache $DIST $ARCH
echo -e "${bldgrn}Injecting CODEBASE: $CODEBASE sources list...${txtrst}"
echo '###### '$UOS 'Repos' > edit/etc/apt/sources.list
echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '' >> edit/etc/apt/sources.list
echo '###### '$UOS' Update Repos' >> edit/etc/apt/sources.list
echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
echo '' >> edit/etc/apt/sources.list
echo '###### '$UOS' Partner Repo' >> edit/etc/apt/sources.list
echo 'deb http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
echo '# deb-src http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
echo '' >> edit/etc/apt/sources.list
echo '###### '$UOS' Extras Repo' >> edit/etc/apt/sources.list
echo 'deb http://extras.ubuntu.com/ubuntu '$CODEBASE' main' >> edit/etc/apt/sources.list
#exit 0;
##############################################################################################################
# echo -e "${bldgrn}Entering Stage 2 of 3: Internal software.${txtrst}"
# if [[ -f internal ]]; then
# echo -e "${bldgrn}Copying modified internal script to chroot environment.${txtrst}"
# SUCCESS=$(cp internal edit/tmp/)
# if ! [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
# fi
# else
# echo -e "${bldgrn}Copying internal script to chroot environment.${txtrst}"
# SUCCESS=$(cp /usr/share/ultimate_edition/internal edit/tmp/)
# if ! [[ $SUCCESS ]]; then
# echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
# /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
# fi
# fi
if [[ $LITE ]]; then
LITE='lite'
echo $UOS' '$CVERSION Lite '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
DTB="$OS-$CVERSION-$ARCH-$LITE.iso"
else
LITE=''
echo 'Ultimate Edition '$CVERSION '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
DTB="$OS-$CVERSION-$ARCH.iso"
fi
if [[ -f extract-cd/.disk/info ]]; then
cat extract-cd/.disk/info
fi
done
cd $CURRENT
STOPM=`date -u "+%s"`
RUNTIMEM=`expr $STOPM - $STARTM`
if (($RUNTIMEM>59)); then
TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
else
TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
fi
echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully.";
echo -e "${bldgrn}Execution Time: $TTIMEM"
}
# Command line pre-processor
# SAMPLE INPUTS
# tmos --build ultimate-edition-3.8-x64
# tmos --upgrade ultimate-edition-4.0-x64.iso
# Switch debugging will be removed in the final product
CommandLineInterpreter $*
#echo "DEBUG CLI: $1"
case "$1" in
-b|--build) BuildNEWISO $*; exit 0;;
-B|--buildiso) BuildISO $*; exit 0;;
-c|--cacheinfo) CacheInfo $*; exit 0;;
-C|--clearcache) ClearCache $*; exit 0;;
-d|--debootstrap) Debootstrap $*; exit 0;;
-e|--extract) ExtractISO $*; exit 0;;
-h|--help|-\?) Help $*; exit 0;;
-p|--pull) PullSource $*; exit 0;;
-t|--test) VersionDump; Virtual $*; exit 0;;
-u|--upgrade) UpgradeISO $*; exit 0;;
-v|--version) VersionDump; exit 0;;
*) Help; exit 0;;
esac
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title :code-cleanup
# description :Bash code cleanup script
# Author :root
# date :10/23/2013
# version :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================
/bin/usplash-builder:
- Code: Select all
#!/bin/bash
# ==============================================================================
# title :usplash-builder
# description :Builds Usplash debian packages.
# author :theemahn <[email protected]>
# date :08/31/2014
# version :1.8.9
# usage :usplash-builder --help
# manual :man usplash-builder
# notes :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.9: Initial public release
# ==============================================================================
APPNAME="TheeMahn O/S Builder"
PROGNAME="usplash-builder"
BUILDDATE="08/31/2014"
VERSION="1.8.9"
EXEC=$PWD
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"
# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0
# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)
# Declare integer to span eyecandy routine
declare -i RR
RR=0
declare -i TT
TT=0
# set colors so errors etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
# Try to think of the below as a basic database where the values coincide
# Example when it detects 14.10 the arrays will be cycled through looking for
# the value of 14.10 as the UEARRAY would be value[16] the value of
# [16] of DISTARRAY would be Trusty Tahr
DISTSSUPPORTED=15
declare -a ISLTS=("2.6" "2.7" "3.4" "3.5" "4.2" "4.3" "12.04" "14.04");
declare -a OSARRAY=('lucid' 'lucid' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic');
declare -a UEARRAY=("2.6" "2.7" "3.4" "3.5" "3.6" "3.7" "3.8" "3.9" "4.0" "4.1" "4.2" "4.3" "4.4" "4.5" '12.04' '12.10' '13.04' '13.10' '14.04' '14.10' );
declare -a UETYPES=("lite" "gamers")
declare -a DISTARRAY=("Lucid Lynx" "Lucid Lynx" "Precise Pangolin" "Precise Pangolin" "Quantal Quetzal" "Quantal Quetzal" "Raring Ringtail" "Raring Ringtail" "Saucy Salamander" "Saucy Salamander" "Trusty Tahr" "Trusty Tahr" "Utopic Unicorn" "Utopic Unicorn" "Precise Pangolin" "Quantal Quetzal" "Raring Ringtail" "Saucy Salamander" "Trusty Tahr" "Utopic Unicorn");
declare -a UEARCH=("i386" "amd64" "armel" "armhf");
declare -a OLDRELEASES=("2.6" "2.7");
declare -a CYCLE=("x86" "x64" "armel" "armhf");
declare -a EXTRADE=("XFCE" "MATE" "KDE" "LXDE" "AWESOME" "GNOME" "RAZORQT");
declare -i CVER;
declare -i CSIZE;
declare -a APPLICATIONS=('tmosb' 'uecorebuilder' 'usplash-builder' 'tmgrub' 'internal');
declare -a APPSRC=('/bin' '/bin' '/bin' '/usr/share/ultimate_edition' '/usr/share/ultimate_edition');
declare -a ARGUMENTS=();
declare -a ARGLENGTH=();
declare -a LOGFILEZ=("edit/var/log/bootstrap.log" "edit/var/log/apt/history.log" "edit/var/log/dpkg.log");
# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0
# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)
# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0
# Function for outputting to X-11 screen a notification of completion and playing sound.
# The sound file is from the "Optional" ultimate-edition-sound-theme
function Notification () {
# Is X11 running?
X=$( pidof X )
# Does the user have the optional Ultimate Edition Sound scheme installed?
if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
WAVE=1
fi
# Is the user in an X11 GUI environment and have notification OSD installed?
if [[ $X && $NOTIFY ]]; then
a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
fi
# Does the user have pre-requisites? If so, break out the Cylon voice.
if [[ $SOUND && $WAVE ]]; then
a=$(canberra-gtk-play -i itisdone 2>/dev/null)
fi
# Display message in terminal unconditionally
echo $1
}
# Usage: Eye Candy "Message"
function EyeCandy() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
echo -e "▒ "$STP" ▒"
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
fi
}
function Encapsulate() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
DISTANCE=$(expr $COLUMNZ - $STRLEN)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
echo -en "▒ "$STP
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
fi
}
# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}
# Center data passed to function on screen
function Center () {
STP=$1
if [[ $STP ]]; then
STRLEN=${#STP}
CENTER=$(expr $STRLEN / 2 )
#CENTER=CENTER-1
TCENTER=$(expr $COLUMNZ / 2 )
#TCENTER=TCENTER-1
DISTANCE=$(expr $TCENTER - $CENTER)
DISTANCE=$(expr $DISTANCE - 2)
echo -en "${txtrst}"
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
echo -en "${bldgrn} $STP ${txtrst}"
TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
CALC=$(expr $RR + $TT + $STRLEN + 2)
if [[ $CALC -lt $COLUMNZ ]]; then
ZZZ=0; while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
fi
# Dubugging:
fi # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}
# $1 FOLDER TO PROCESS $2 DONATION LOG
#Set defaults
DISTRO="Ultimate Edition"
VERSIONCHECK=$(echo $* | grep "[0-9]\.[0-9]" | sed 's/ .*//g')
CHECKIT=$(echo $VERSIONCHECK | grep ".[0-9]")
DONORSFILE=$(echo $2 | grep '.csv')
if ! [[ $DONORSFILE && -f $DONORSFILE ]]; then
DONORSFILE='donors.csv'
fi
function VersionDump {
Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
Encapsulate "E-mail bug reports to: $EMAIL."
Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
FullBar
}
# Try to think of the below as a basic database where the values coincide
# Example when it detects 14.10 the arrays will be cycled through looking for
# the value of 14.10 as the UEARRAY would be value[16] the value of
# [16] of DISTARRAY would be Trusty Tahr
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic');
declare -a EVEN=('3.4' '3.6' '3.8' '4.0' '4.2' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a ODD=('3.5' '3.7' '3.9' '4.1' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=("Precise Pangolin" "Precise Pangolin" "Quantal Quetzal" "Quantal Quetzal" "Raring Ringtail" "Raring Ringtail" "Saucy Salamander" "Saucy Salamander" "Trusty Tahr" "Trusty Tahr" "Utopic Unicorn" "Utopic Unicorn" "Precise Pangolin" "Quantal Quetzal" "Raring Ringtail" "Saucy Salamander" "Trusty Tahr" "Utopic Unicorn");
VersionDump
echo "DEBUGGING: $*"
if [[ $1 == "" ]]; then
echo -e "${bldred}Please provide switch. Example:"
echo -e "${bldwht}usplash-builder 4.2 lite${txtrst}"
exit 0
fi
LITE=$(echo $* | grep -i 'lite')
GAMERS=$(echo $* | grep -i 'gamers')
#Code borrowed from Repostorm & ThumbOS
function Columnize () {
#echo $COLUMNZ
MAINS=$(echo "scale=2; $COLUMNZ-30" | bc)
MAINS=${MAINS%.*}
#echo $MAINS
MAINS=$(expr $MAINS - 2)
MAINS=$(expr $MAINS / 4)
#echo $MAINS
if ! [[ $1 ]]; then
#"#" "DEV" "VENDOR" "LABEL" "TYPE" "SIZE"
printf "%-0s %-4s %-8s %-32s %-7s %-1s\n" "▒" "#" "DATE" "FIRST_LAST" "AMOUNT"
else
#MAINS=$(expr $MAINS / 2)
printf "%-0s %-4s %-8s %-32s %-7s %-1s\n" "▒" $1 $2 $3 $4
fi
}
# Debugging function to monitor passed arguments.
function CommandLineIntrepreter(){
echo -e "${bldgrn}Number of switches passed: $#"
for var in "$@"
do
array_counter=$(($array_counter + 1))
echo "Switch $array_counter: $var"
done
}
CVERSION=$VERSIONCHECK
EVENODD="${VERSIONCHECK##*.}"
if ! [[ "$(( EVENODD % 2))" -ne 0 ]]; then
DTYPE='STANDARD'
PACKAGE='ubiquity-slideshow-ubuntu_90_all'
else
DTYPE='KUBUNTU BUILD'
PACKAGE='ubiquity-slideshow-kubuntu_90_all'
fi
for OST in ${UEARRAY[@]}
do
if [[ $OST == $CVERSION ]]; then
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
fi
array_counter=$(($array_counter + 1))
done
if [[ $UBUNTU ]]; then
OUTDISTRO="Ubuntu"
else
OUTDISTRO="Ultimate Edition"
fi
DONORS=$DONORSFILE
FullBar
if ! [[ $OUTDISTRO && $CVERSION && $DIST && $FULLNAME && $DTYPE && $PACKAGE ]]; then
echo "DEBUG: $OUTDISTRO || $CVERSION || $DIST || $FULLNAME || $DTYPE || $PACKAGE"
echo -e "${bldred}Please provide switch. Example:"
echo -e "${bldwht}usplash-builder 4.2 donors.csv${txtrst}"
FullBar
exit 0;
fi
if [[ $LITE ]]; then
DTYPE="lite"
fi
Encapsulate "Operating System Output: $OUTDISTRO"
Encapsulate "Operating System version requested: $CVERSION"
Encapsulate "Operating System distribution base: $DIST"
Encapsulate "Distribution Long Name: $FULLNAME"
Encapsulate "Distribution Type: $DTYPE"
if [[ -f $DONORSFILE ]]; then
Encapsulate "Donors File: $DONORSFILE (exists)"
else
Encapsulate "Donors File: $DONORSFILE (non-existant, will pull from server / local)"
fi
FullBar
Center "DEBIAN PACKAGE TO BUILD: $PACKAGE.deb"
FullBar
while true; do
echo -e -n "${bldred}"
read -p "Is the above information correct (Y/N)? " yn
case $yn in
[Nn]* ) echo -e "${txtrst}"; exit 0;;
[Yy]* ) echo -e "${txtgrn}"
echo "Initiating process...";
break;;
* ) echo "Please answer y or n.";;
esac
done
echo -e "${bldgrn}Package to contruct: $PACKAGE.deb${txtrst}"
#GENERIC UBIQUITY SPLASH
if [[ -f /usr/share/ultimate_edition/$PACKAGE.tar.gz && ! -d $PACKAGE ]]; then
echo -e "${bldgrn}Pulling generic tar $PACKAGE.tar.gz"
cp /usr/share/ultimate_edition/$PACKAGE.tar.gz .
echo -e -n "${bldgrn}Extracting archive: "
SUCCESS=$(tar xfv $PACKAGE.tar.gz)
sync
if [[ $SUCCESS ]]; then
echo -e "Success${txtrst}"
rm $PACKAGE.tar.gz
else
echo -e "${bldred}ERROR in extraction.${txtrst}"
exit 0;
fi
else
if [[ -d $PACKAGE ]]; then
echo -e "${bldgrn}Previous build exists. Continuing.${txtrst}"
else
echo -e "${bldred}CRITICAL ERROR: /usr/share/ultimate_edition/$PACKAGE.tar.gz not found.${txtrst}"
exit 0;
fi
fi
#DONORS LIST
if ! [[ -f $DONORS ]]; then
echo -e "${bldgrn}Pulling donors list...${txtrst}"
wget http://ultimateedition.info/$DONORS
if ! [[ -f $DONORS ]]; then
if [[ -f /usr/share/ultimate_edition/donors.csv ]]; then
echo -e -n "${bldred}Donors list is not on the server, pulling local copy: ${txtrst}"
cp /usr/share/ultimate_edition/$DONORS .
if [[ -f $DONORS ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}CRITICAL ERROR: $DONORS not found.${txtrst}"
fi
else
echo -e "${bldred}CRITICAL ERROR: /usr/share/ultimate_edition/$DONORS not found.${txtrst}"
exit 0;
fi
else
echo -e "${bldgrn}Donors list exists, continuing.${txtrst}"
fi
else
echo -e "${bldgrn}Donors list exists, continuing.${txtrst}"
fi
FOLDER=$PACKAGE
FTP=$FOLDER/usr/share/ubiquity-slideshow/slides/
FTYPE='html'
cd $FTP
echo -e "${bldgrn}Processing donors list:"
#Drop the header
echo '<div class="header"><h1 class="title">Donors</h1></div>
<div class="main">
<div class="content wrap-top">
<p>We have recently began asking for <a href="http://ultimateedition.info/donations/">donations</a>. The below people are the ones responsible for keeping #DISTRO a float. Thanks,</p>
<b>Donors</b> (in chronological order):<br>
<center>
<table id="wp-table-reloaded-id-1-no-1" border="1">
<tbody>' > donors.html
#Process list of donors written in comma seperated value.
cd $EXEC
cat $DONORS | while read LINE
do
DDON=$(echo $LINE | cut -d"," -f1)
DNAME=$(echo $LINE | cut -d"," -f2| sed 's/\"//g')
DAMOUNT=$(echo $LINE | cut -d"," -f4)
echo "<tr><td>"$DDON"</td><td>"$DNAME"</td><td>"$DAMOUNT"</td></tr>" >> $FTP/donors.html
if [[ $NDONORS -ge 1 ]]; then
DNAME=$(echo $DNAME | sed "s/<.*//g" | sed 's/ /_/g')
Columnize "$NDONORS" "$DDON" "$DNAME" "$DAMOUNT"
else
Columnize
fi
NDONORS=$((NDONORS + 1))
done
cd $FTP
#close out the html
echo '</tbody>
</table>
</center></p>
</div>
<img class="icon" src="icons/ubuntu-logo.png" alt="" />' >> donors.html
cd $EXEC
if [[ -d $PACKAGE ]]; then
echo -e "${bldgrn}Processing $PACKAGE${txtrst}"
cd $FTP
for i in $( ls *.html )
do
echo "Processing html file:" $i
sed -i "s/#DISTRO/$DISTRO/g" $i
sed -i "s/#VERSION/$CVERSION/g" $i
done
fi
cd $EXEC
echo -e -n "${bldgrn}Donors list & HTML has been processed, building DEBIAN Package: "
SUCCESS=$(dpkg --build $PACKAGE)
if [[ -f $PACKAGE.deb ]]; then
echo -e "${bldgrn}Success.${txtrst}"
else
echo -e "${bldred}FAILURE.${txtrst}"
fi
echo -e "${bldgrn}Cleaning up."
if [[ -f donors.csv ]]; then
SUPRESS=$(rm donors.csv)
fi
if [[ -d $PACKAGE/ ]]; then
SUPRESS=$(rm -R $PACKAGE/)
fi
function Help() {
VersionDump
if [[ $1 == "" ]];
then
PRAM="ALL"
else
PRAM=$1
fi
case $PRAM in
ALL)
echo -e "
${bldgrn}Usage: $PROGNAME -<-COMMAND>${txtrst}
Mandatory arguments to long options are identical for short options.
possible commands...
-h --help this help message
-v --version dump version info
${bldgrn}$PROGNAME --help [COMMAND] for further information.${txtrst}";;
ALL|v|version)
echo -e "
${bldwht}Usage version;${txtrst}
${txtgrn}$PROGNAME -v${txtrst}
Displays $PROGNAMEs version number and exits.";;
ALL|h|help|\?)
echo -e "
${bldwht}Useage Help [COMMAND];${txtrst}
${txtgrn}$PROGNAME -h [COMMAND]${txtrst}
Displays this message. For futher information $PROGNAME help [COMMAND]
or refer to the manpages.
man $PROGNAME"
echo -e "${txtgrn}"
echo -e "Example: $PROGNAME -h version"
echo -e "${txtwht}Will display help about the command version${txtrst}"
esac
exit 0
}
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title :code-cleanup
# description :Bash code cleanup script
# Author :root
# date :10/23/2013
# version :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================
/bin/uecorebuilder:
- Code: Select all
#!/bin/bash
# ==============================================================================
# title :ultimate-edition-core-builder
# description :Builds Ultimate Edition core files.
# author :theemahn <[email protected]>
# date :08/26/2014
# version :1.8.9
# usage :uecorebuilder --help
# manual :man uecorebuilder
# notes :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8: Initial public release
# 1.8.9: Added LTS support 4.2.1 for example will build.
# ==============================================================================
# Version Control
APPNAME="TheeMahn O/S Builder"
PROGNAME="uecorebuilder"
VERSION="1.8.9"
BUILDDATE="08/26/2014"
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"
# set colors so errors etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0
# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)
# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0
# Function for outputting to X-11 screen a notification of completion and playing sound.
# The sound file is from the "Optional" ultimate-edition-sound-theme
function Notification () {
# Is X11 running?
X=$( pidof X )
# Does the user have the optional Ultimate Edition Sound scheme installed?
if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
WAVE=1
fi
# Is the user in an X11 GUI environment and have notification OSD installed?
if [[ $X && $NOTIFY ]]; then
a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
fi
# Does the user have pre-requisites? If so, break out the Cylon voice.
if [[ $SOUND && $WAVE ]]; then
a=$(canberra-gtk-play -i itisdone 2>/dev/null)
fi
# Display message in terminal unconditionally
echo $1
}
# Usage: Eye Candy "Message"
function EyeCandy() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
echo -e "▒ "$STP" ▒"
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
fi
}
function Encapsulate() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
DISTANCE=$(expr $COLUMNZ - $STRLEN)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
echo -en "▒ "$STP
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
fi
}
# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}
# Center data passed to function on screen
function Center () {
STP=$1
if [[ $STP ]]; then
STRLEN=${#STP}
CENTER=$(expr $STRLEN / 2 )
#CENTER=CENTER-1
TCENTER=$(expr $COLUMNZ / 2 )
#TCENTER=TCENTER-1
DISTANCE=$(expr $TCENTER - $CENTER)
DISTANCE=$(expr $DISTANCE - 2)
echo -en "${txtrst}"
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
echo -en "${bldgrn} $STP ${txtrst}"
TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
CALC=$(expr $RR + $TT + $STRLEN + 2)
if [[ $CALC -lt $COLUMNZ ]]; then
ZZZ=0; while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
fi
# Dubugging:
fi # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}
#Distribution Layout VARS:
DIST_NAME='Ultimate_Edition'
DIST_VERSION=$1
DIST_NAME_LONG='Ultimate Edition '$1
DIST_UNDERSCORED='Ultimate_Edition_'$1
PACKAGE='ultimate-edition-core-files-0.0.1_all'
PACKAGEVERSION='0.0.1'
PACKAGENAME='ultimate-edition-'$1'-core-files'
PACKAGE=$PACKAGENAME
BASEPACK='ultimate-edition'
function VersionDump {
Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
Encapsulate "E-mail bug reports to: $EMAIL."
Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
FullBar
}
declare -a ISLTS=("3.4" "3.4.1" "3.4.2" "3.5" "4.2" "4.2.1" "4.2.2" "4.3" "4.3.1" "12.04" "14.04");
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'quantal' 'raring' 'saucy' 'trusty' 'utopic');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=('Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr' 'Utopic Unicorn' 'Utopic Unicorn' 'Precise Pangolin' 'Quantal Quetzal' 'Raring Ringtail' 'Saucy Salamander' 'Trusty Tahr' 'Utopic Unicorn');
VersionDump
if [[ $IUSER != 'root' ]]; then
echo -e "${bldred}ERROR: This operation requires true root (su) access.${txtrst}"
exit 0;
fi
if [[ $1 == "" ]]; then
echo -e "${bldred}Please provide switch. Example:"
echo -e "${bldwht}uecorebuilder 4.0 lite${txtrst}"
exit 0
fi
CVERSION=$1
LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
#echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
CVERSION="${CVERSION%.*}"
LONGVERSION=$1
else
LONGVERSION=$CVERSION
fi
EVENODD="${CVERSION##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
DTYPE='STANDARD'
DE="MATE"
else
DTYPE='FULL'
DE="KDE"
fi
for OST in ${UEARRAY[@]}
do
if [[ $OST == $CVERSION ]]; then
DIST=${OSARRAY[$array_counter]}
FULLNAME=${DISTARRAY[$array_counter]}
fi
array_counter=$(($array_counter + 1))
done
#Check for LTS
array_counter=0
LTS="NO"
for OST in ${ISLTS[@]}
do
if [[ $CVERSION == $OST ]]; then
LTS="YES"
fi
array_counter=$(($array_counter + 1))
done
if ! [[ $DIST ]]; then
DIST=$2
echo -e "${bldred}Critical ERROR: Halting..."
#exit 0;
fi
if [[ $UBUNTU ]]; then
OUTDISTRO="Ubuntu"
else
OUTDISTRO="Ultimate Edition"
fi
LITE=$(echo $2 | grep -i "lite")
GAMERS=$(echo $2 | grep -i "gamers")
#LTS? 4.2.1 etc... Not fully implemented as of 1.8.5
LONGLTS=$(echo $1 | grep -E '(.*\.){2}')
if [[ $LITE ]]; then
DISTTYPE='Lite'
DTYPE='Lite'
DEBNAME='lite'
fi
if [[ $GAMERS ]]; then
DISTTYPE='Gamers'
DTYPE='Gamers'
DEBNAME='gamers'
fi
if ! [[ $DISTTYPE ]]; then
DISTTYPE='Standard'
DTYPE='Standard'
DEBNAME='standard'
fi
if [[ $LTS == "YES" ]]; then
if [[ $DISTTYPE == 'Standard' ]]; then
OUTDISTRO+=" "$LONGVERSION" LTS"
else
OUTDISTRO+=" "$LONGVERSION" "$DISTTYPE" LTS"
fi
else
if [[ $DISTTYPE == 'Standard' ]]; then
OUTDISTRO+=" "$LONGVERSION
else
OUTDISTRO+=" "$LONGVERSION" "$DISTTYPE
fi
fi
PACKAGENAME='ultimate-edition-'$1'-'$DEBNAME'-core-files'
PACKAGE=$PACKAGENAME
Encapsulate "Operating System Output: $OUTDISTRO"
Encapsulate "Operating System version requested: $LONGVERSION"
Encapsulate "Operating System distribution base: $DIST"
Encapsulate "Distribution Long Name: $FULLNAME"
Encapsulate "Distribution Type: $DTYPE"
Encapsulate "Long Term Supported (LTS): $LTS"
Encapsulate "Desktop Environment (DE): $DE"
DISTBASE=$DIST
UEVERSION=$1
FullBar
Center "Package to contruct: $PACKAGENAME.deb"
FullBar
# DEBIAN STRUCTURE
mkdir -p $PACKAGE/usr/share/doc/$PACKAGE/
mkdir -p $PACKAGE/lib/plymouth/themes/
mkdir -p $PACKAGE/etc/lightdm/
mkdir -p $PACKAGE/etc/skel/.config/dconf/
mkdir -p $PACKAGE/etc/update-motd.d/
mkdir -p $PACKAGE/DEBIAN/
mkdir -p $PACKAGE/usr/share/software-center/softwarecenter/distro/
mkdir -p $PACKAGE/usr/share/glib-2.0/schemas/
mkdir -p $PACKAGE/usr/share/applications/
mkdir -p $PACKAGE/usr/share/python-apt/templates/
mkdir -p $PACKAGE/etc/dpkg/origins/
mkdir -p $PACKAGE/usr/lib/ubiquity/apt-setup/generators/
mkdir -p $PACKAGE/etc/xdg/autostart/
mkdir -p $PACKAGE/usr/share/applications/
mkdir -p $PACKAGE/usr/share/python-apt/templates/
mkdir -p $PACKAGE/usr/share/software-center/ui/gtk3/css/
mkdir -p $PACKAGE/usr/share/software-center/ui/gtk3/art/
# Check if we are creating a Lite distribution if so create auto login files for mate
if [[ $DTYPE == 'Lite' ]]; then
Encapsulate "Lite distribution detected. Setting up auto login for mate."
echo "[SeatDefaults]" > $PACKAGE/etc/lightdm/lightdm.conf
echo "autologin-user=ultimate" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "autologin-user-timeout=0" >> $PACKAGE/etc/lightdm/lightdm.conf
# echo "user-session=mate" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "greeter-session=unity-greeter" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "[Desktop]" > $PACKAGE/etc/skel/.dmrc
echo "Session=mate" >> $PACKAGE/etc/skel/.dmrc
fi
# Gamers? Repeat above process, Gamers runs on a lite distribution to allow more space for games.
if [[ $DTYPE == 'Gamers' ]]; then
Encapsulate "Lite distribution detected. Setting up auto login for mate."
echo "[SeatDefaults]" > $PACKAGE/etc/lightdm/lightdm.conf
echo "autologin-user=ultimate" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "autologin-user-timeout=0" >> $PACKAGE/etc/lightdm/lightdm.conf
# echo "user-session=mate" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "greeter-session=unity-greeter" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "[Desktop]" > $PACKAGE/etc/skel/.dmrc
echo "Session=mate" >> $PACKAGE/etc/skel/.dmrc
fi
if [[ $DE == "KDE" ]]; then
Encapsulate "Odd number distribution detected. Setting up auto login for KDE."
echo "[SeatDefaults]" > $PACKAGE/etc/lightdm/lightdm.conf
echo "autologin-user=ultimate" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "autologin-user-timeout=0" >> $PACKAGE/etc/lightdm/lightdm.conf
# echo "user-session=kde-plasma" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "greeter-session=unity-greeter" >> $PACKAGE/etc/lightdm/lightdm.conf
echo "[Desktop]" > $PACKAGE/etc/skel/.dmrc
echo "Session=kde-plasma" >> $PACKAGE/etc/skel/.dmrc
fi
# Core files
echo 'DISTRIB_ID='$DIST_NAME > $PACKAGE/etc/lsb-release
echo 'DISTRIB_RELEASE='$LONGVERSION >> $PACKAGE/etc/lsb-release
echo 'DISTRIB_CODENAME='$DIST >> $PACKAGE/etc/lsb-release
echo 'DISTRIB_DESCRIPTION="'$OUTDISTRO'"' >> $PACKAGE/etc/lsb-release
#issue
echo $DIST_NAME_LONG'\n \l' > $PACKAGE/etc/issue
echo $DIST_NAME_LONG > $PACKAGE/etc/issue.net
#os-release
echo 'NAME="'$DIST_NAME'"' > $PACKAGE/etc/os-release
echo 'VERSION='$LONGVERSION', "'$DIST'"' >> $PACKAGE/etc/os-release
echo 'ID=ultimate' >> $PACKAGE/etc/os-release
echo 'ID_LIKE=debian' >> $PACKAGE/etc/os-release
echo 'PRETTY_NAME="'$DIST_NAME' ('$DIST_VERSION')"' >> $PACKAGE/etc/os-release
echo 'VERSION_ID='$LONGVERSION >> $PACKAGE/etc/os-release
#Templates = for synaptic etc.
#apt-get install software-center
cp /usr/share/ultimate_edition/Ultimate_Edition.info $PACKAGE/usr/share/python-apt/templates/$DIST_NAME.info
cp /usr/share/ultimate_edition/Ultimate_Edition.mirrors $PACKAGE/usr/share/python-apt/templates/$DIST_NAME.mirrors
sed -i 's/Ubuntu/Ultimate_Edition/g' $PACKAGE/usr/share/python-apt/templates/$DIST_NAME.info
if [[ -f /usr/share/software-center/softwarecenter/distro/ubuntu.py ]]; then
cp /usr/share/software-center/softwarecenter/distro/ubuntu.py $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
sed -i 's/Ubuntu/Ultimate_edition/g' $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
INJECTED=1
#apt-get install --reinstall software-center
fi
if [[ -f /usr/share/software-center/softwarecenter/distro/Ubuntu.py ]]; then
INJECTED=1
cp /usr/share/software-center/softwarecenter/distro/Ubuntu.py $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
sed -i 's/Ubuntu/Ultimate_edition/g' $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
#apt-get install --reinstall software-center
fi
if [[ $INJECTED ]]; then
Encapsulate "Software center fix has been injected into the deb."
else
Encapsulate "Software center is not installed on host system."
fi
# Create Message of the day
cp /etc/update-motd.d/10-help-text $PACKAGE/etc/update-motd.d/
sed -i 's/URL=.*/URL=\"http:\/\/forumubuntusoftware.info\/"/g' $PACKAGE/etc/update-motd.d/10-help-text
#### CUSOMIZATION SECTION ####
# /etc/X11/default-display-manager contained lightdm instead of /usr/sbin/lightdm
#CUSTOM LightDM - optional & will be empty
#Edit the following file :
# Check if the user has requested odd release IE 4.2.1 (non -standard from database)
#if ! [[ $LONGLTS ]]; then
#echo -en "${bldgrn}Setting up auto login for $DIST_NAME_LONG: "
#echo '[com.canonical.unity-greeter]' > $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'draw-user-backgrounds=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'draw-grid=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'theme-name='$DIST_NAME_LONG >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background='/usr/share/wallpapers/$DIST_UNDERSCORED.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "logo='/usr/share/pixmaps/"$DIST_VERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-logo='/usr/share/pixmaps/"$DIST_VERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "icon-theme-name='Ultimate Edition Dark Glass'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'play-ready-sound=true' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "font-name='Liberation Sans 10'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-color='#000000'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#if [[ -f $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override ]]; then
# echo -en "1 Success, "
# else
# echo -en "${bldred}1 Failure, "
# fi
#echo "[greeter]" > $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "background=/usr/share/wallpapers/Ultimate_Edition_$CVERSION.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "draw-grid=false" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "logo=/usr/share/pixmaps/$CVERSION-logo.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "theme-name=Ultimate Edition $CVERSION" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "icon-theme-name=Ultimate Edition Dark Glass" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "font-name=Liberation Sans 11" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-antialias=true" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-dpi=96" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-hintstyle=hintfull" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-rgba=rgb" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "indicators=~language;~session;~power" >> $PACKAGE/etc/lightdm/unity-greeter.conf
# 14.04 + moved files on me
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter.conf
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter-ubuntu.conf
#if [[ -f $PACKAGE/etc/lightdm/unity-greeter.conf ]]; then
# Encapsulate "Success."
#else
# echo -e "${bldred}Failure.${txtrst}"
#fi
#if [[ -f $PACKAGE/etc/lightdm/unity-greeter.conf ]]; then
# echo -e "Success.${txtrst}"
#else
# echo -e "${bldred}Failure.${txtrst}"
#fi
#else
# NEWVERSION=$(echo $LONGLTS | cut -d. -f1-2)
# NEW_DIST_UNDERSCORED=$(echo $DIST_UNDERSCORED | cut -d. -f1-2)
# NEWTHEMENAME=$(echo $DIST_NAME_LONG | cut -d. -f1-2)
# Encapsulate "Setting up auto login for $NEWTHEMENAME:"
#echo '[com.canonical.unity-greeter]' > $PACKAGE/usr/share/glib-2.0/schemas/10_unity_greeter_background.gschema.override
#echo 'draw-user-backgrounds=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'draw-grid=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'theme-name='$NEWTHEMENAME >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background='/usr/share/wallpapers/$NEW_DIST_UNDERSCORED.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "logo='/usr/share/pixmaps/"$NEWVERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-logo='/usr/share/pixmaps/"$NEW_VERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "icon-theme-name='Ultimate Edition Dark Glass'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'play-ready-sound=true' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "font-name='Liberation Sans 10'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-color='#000000'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#if [[ -f $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override ]]; then
# echo -e -n "1 Success, "
#else
# echo -e "${bldred}1 Failure, "
#fi
#echo "[greeter]" > $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "background=/usr/share/wallpapers/Ultimate_Edition_$NEW_VERSION.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "draw-grid=false" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "logo=/usr/share/pixmaps/$NEW_VERSION-logo.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "theme-name=Ultimate Edition $NEWVERSION" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "icon-theme-name=Ultimate Edition Dark Glass" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "font-name=Liberation Sans 11" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-antialias=true" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-dpi=96" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-hintstyle=hintfull" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-rgba=rgb" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "indicators=~language;~session;~power" >> $PACKAGE/etc/lightdm/unity-greeter.conf
# 14.04 + moved files on me
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter.conf
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter-ubuntu.conf
#if [[ -f $PACKAGE/etc/lightdm/unity-greeter.conf ]]; then
# echo -e "Success.${txtrst}"
#else
# echo -e "${bldred}Failure.${txtrst}"
#fi
#fi
# POST AND PRE-INST Files.
cp /usr/share/ultimate_edition/postinst $PACKAGE/DEBIAN/
cp /usr/share/ultimate_edition/preinst $PACKAGE/DEBIAN/
# Plymouth Stamping
echo '[Plymouth Theme]' > $PACKAGE/lib/plymouth/themes/text.plymouth
echo 'Name=Ultimate Edition Text' >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo 'Description=Text mode theme based on ubuntu-logo theme' >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo 'ModuleName=ubuntu-text' >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "[ubuntu-text]" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "title=Ultimate '$1'" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "black=0x000000" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "white=0xffffff" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "brown=0xcccccc" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "blue=0xff0000" >> $PACKAGE/lib/plymouth/themes/text.plymouth
# Distro Templates
# Software Center - Skin it with a dark theme
if [[ -f "/usr/share/ultimate_edition/uebuilder/Software-Center/softwarecenter.css" ]]; then
Encapsulate "Skinning Software center to support dark themes."
cp "/usr/share/ultimate_edition/uebuilder/Software-Center/softwarecenter.css" $PACKAGE/usr/share/software-center/ui/gtk3/css/
if [[ -f /usr/share/ultimate_edition/uebuilder/Software-Center/stipple.png ]]; then
cp "/usr/share/ultimate_edition/uebuilder/Software-Center/stipple.png" $PACKAGE/usr/share/software-center/ui/gtk3/art/
fi
fi
# Software Center Icon Stamping
if ! [[ -f "$PACKAGE/usr/share/applications/ubuntu-software-center.desktop" ]]; then
echo '[Desktop Entry]' > $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Name=Ultimate Edition Software Center' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'GenericName=Software Center' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Comment=Lets you choose from thousands of applications available for Ultimate Edition' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Exec=/usr/bin/software-center %u' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Icon=logo' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Terminal=false' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Type=Application' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Categories=PackageManager;GTK;System;Settings;' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'MimeType=application/x-deb;application/x-debian-package;x-scheme-handler/apt;' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'StartupNotify=true' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'X-Ubuntu-Gettext-Domain=software-center' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'X-Unity-IconBackgroundColor=#ffbf87' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
echo 'Keywords=Sources;PPA;Install;Uninstall;Remove;Purchase;Catalogue;Store;Apps;' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
Encapsulate "Stamping Application Icon for software center: Success."
fi
SUCCESS=$((cp -R /usr/share/ultimate_edition/skel/ $PACKAGE/etc/) 2>/dev/null)
if [[ -f $PACKAGE/etc/skel/.face ]]; then
Encapsulate "Setting up /etc/skel: Success"
else
Encapsulate "Setting up /etc/skel: Failure."
fi
# Setup Theme distribution specific:
if [[ -f $PACKAGE/etc/skel/.gconf/apps/metacity/general/%gconf.xml ]]; then
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gconf/apps/metacity/general/%gconf.xml
Encapsulate "Setting up Theme specific to $CVERSION: Success."
fi
# Set Firefox distribution specific:
if [[ -f $PACKAGE/etc/skel/.mozilla/firefox/q2l51o82.default/prefs.js ]]; then
sed -i "s/#VERSION/$LONGVERSION/g" $PACKAGE/etc/skel/.mozilla/firefox/q2l51o82.default/prefs.js
sed -i "s/#ARCH/$ARCH/g" $PACKAGE/etc/skel/.mozilla/firefox/q2l51o82.default/prefs.js
Encapsulate "Setting up mozilla firefox specific to $LONGVERSION: Success."
fi
#Create ORIGIN - aditional core files
echo 'Vendor: Ultimate Edition' > $PACKAGE/etc/dpkg/origins/$DIST_NAME
echo 'Vendor-URL: http://www.ultimateedition.info/' >> $PACKAGE/etc/dpkg/origins/$DIST_NAME
echo 'Bugs: https://launchpad.net/ubuntu.ultimate/+filebug' >> $PACKAGE/etc/dpkg/origins/$DIST_NAME
echo 'Parent: Debian' >> $PACKAGE/etc/dpkg/origins/$DIST_NAME
# Create CONTROL FILE
echo 'Package: '$PACKAGENAME > $PACKAGE/DEBIAN/control
echo 'Version: '$DIST_VERSION >> $PACKAGE/DEBIAN/control
echo 'Architecture: all
Maintainer: Ultimate Edition Team <[email protected]>
Installed-Size: 5104
Replaces: gnome-system-monitor, mate-system-monitor, mate-system-monitor, mate-system-monitor-common, base-files, bash, unity-greeter, metacity-common, gsettings-desktop-schemas, nautilus-data, ultimate-edition-customizations, software-center, '$PACKAGENAME', mate-desktop-common, network-manager, network-manager-gnome, ubiquity, xubuntu-default-settings, lightdm-gtk-greeter, caja-common, marco-common, mate-panel, mate-control-center-common, mate-control-center, pluma-common, mate-desktop-environment
Section: web
Depends: libglib2.0-bin, gconf2, dconf-cli
Homepage: http://ultimateedition.info/
Priority: optional' >> $PACKAGE/DEBIAN/control
echo 'Description: Ultimate Edition base files' >> $PACKAGE/DEBIAN/control
echo ' Ultimate Edition specific distribution defaults. This package' >> $PACKAGE/DEBIAN/control
echo ' was auto generated using TheeMahns OS Builder (uecorebuilder).' >> $PACKAGE/DEBIAN/control
#if [[ -f /usr/share/applications/mate-about.desktop ]]; then
Encapsulate "Setting up base files for $PACKAGE."
cp -R /usr/share/ultimate_edition/uebuilder/* $PACKAGE/usr/share/
#Set Wallpaper
if [[ $LONGLTS ]]; then
Encapsulate "1: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
else
Encapsulate "2: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
fi
#SET LOGIN:
if [[ $LONGLTS ]]; then
Encapsulate "1: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
#THEMENAME
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
#LIGHTDM
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
#THEMENAME
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
if [[ -f $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini ]]; then
Encapsulate "Setting theme as Ultimate Edition $CVERSION"
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0
fi
if [[ -f $PACKAGE/etc/skel/.gtkrc-2.0-kde4 ]]; then
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0-kde4
fi
if [[ -f /usr/share/ultimate_edition/dist-specific/$CVERSION ]]; then
Encapsulate "Checking for distibution specific files: Found & transfering to deb."
cp -f /usr/share/ultimate_edition/dist-specific/$CVERSION $PACKAGE/etc/skel/.config/dconf/
mv $PACKAGE/etc/skel/.config/dconf/$CVERSION $PACKAGE/etc/skel/.config/dconf/user
else
Encapsulate "$CVERSION does not exist setting 4.2 as default."
Encapsulate "Please report this error to theemahn <[email protected]>"
cp /usr/share/ultimate_edition/dist-specific/user $PACKAGE/etc/skel/.config/dconf/
fi
else
Encapsulate "2: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
#THEMENAME
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
#LIGHTDM
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
#THEMENAME
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
if [[ -f $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini ]]; then
Encapsulate "Setting theme as Ultimate Edition $CVERSION"
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0
fi
if [[ -f $PACKAGE/etc/skel/.gtkrc-2.0-kde4 ]]; then
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0-kde4
fi
if [[ -f /usr/share/ultimate_edition/dist-specific/$CVERSION ]]; then
Encapsulate "Checking for distibution specific files: Found & transfering to deb."
cp -f /usr/share/ultimate_edition/dist-specific/$CVERSION $PACKAGE/etc/skel/.config/dconf/
mv $PACKAGE/etc/skel/.config/dconf/$CVERSION $PACKAGE/etc/skel/.config/dconf/user
else
Encapsulate "$CVERSION does not exist setting 4.2 as default."
Encapsulate "Please report this error to theemahn <[email protected]>"
cp /usr/share/ultimate_edition/dist-specific/user $PACKAGE/etc/skel/.config/dconf/
fi
fi
if [[ -f /usr/share/ultimate_edition/00_site_settings ]]; then
mkdir -p $PACKAGE/etc/dconf/db/site.d/
SUPPRESS=$(cp /usr/share/ultimate_edition/00_site_settings $PACKAGE/etc/dconf/db/site.d/)
sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/etc/dconf/db/site.d/00_site_settings
sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/dconf/db/site.d/00_site_settings
sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/etc/dconf/db/site.d/00_site_settings
if ! [[ $SUPPRESS ]]; then
Encapsulate "Setting sitewide settings: Done."
else
Encapsulate "Setting sitewide settings: Failure."
fi
fi
# If this file exists from Ubuiquity package exists installation will fail, a
# workagound is to touch the object and pre-requiste a replaces ubiquity in the
# control file.
Encapsulate "Fixing Installation halt."
touch $PACKAGE/usr/lib/ubiquity/apt-setup/generators/40cdrom
# Set networking as automanaged.
Encapsulate "Repairing networking issues."
mkdir -p $PACKAGE/etc/NetworkManager/
echo "[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq
[ifupdown]
managed=true" > $PACKAGE/etc/NetworkManager/NetworkManager.conf
# Set startup applications.
echo "[Desktop Entry]
Name=Network
Comment=Manage your network connections
Icon=nm-device-wireless
Exec=nm-applet
Terminal=false
Type=Application
NoDisplay=true
NotShowIn=KDE;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=NetworkManager
X-GNOME-Bugzilla-Component=nm-applet
X-GNOME-UsesNotifications=true
X-Ubuntu-Gettext-Domain=nm-applet" > $PACKAGE/etc/xdg/autostart/nm-applet.desktop
Encapsulate "Populating documentation for $PACKAGE."
cp /usr/share/ultimate_edition/doc/copyright $PACKAGE/usr/share/doc/$PACKAGE/
cp /usr/share/ultimate_edition/doc/changelog.gz $PACKAGE/usr/share/doc/$PACKAGE/
if [[ -d $PACKAGE ]]; then
CURRENT=$PWD
if [[ -d $PACKAGE/etc/ ]]; then
Encapsulate "Scanning /etc to build conffiles."
cd $PACKAGE
find etc/ -name '*' -type f > DEBIAN/conffiles
#search and replace etc/ with /etc/
sed -i 's/etc/\/etc/g' DEBIAN/conffiles
cd $CURRENT
else
Encapsulate "No /etc/ so need to build conffiles."
fi
cd $PACKAGE
Encapsulate "Calculating MD5SUMS in "$PACKAGE
find -name "DEBIAN" -prune -o -type f -exec md5sum {} + > DEBIAN/md5sums
cd $CURRENT
Encapsulate "Setting ownership to root in $PACKAGE"
sudo chown -R root:root $PACKAGE
sudo find $PACKAGE -type d -exec chmod 755 {} \;
Encapsulate "Chmodding folders to 755: Success."
#set 644 for files
sudo find $PACKAGE -type f -exec chmod 644 {} \;
Encapsulate "Chmodding files to 644: Success."
Encapsulate "Scanning for executables in $PACKAGE."
FullBar
echo -en "${txtcyn}"
find $PACKAGE -name "DEBIAN" -prune -o -type f -exec sh -c 'test "$(head -c 2 "$1")" = "#!"' sh {} \; -print -exec chmod 755 {} \;
cd $PACKAGE/DEBIAN/
echo "Setting permissions rights for control etc."
sudo chmod 755 * 2>/dev/null
sudo chmod 644 control 2>/dev/null
sudo chmod 644 md5sums 2>/dev/null
sudo chmod 644 conffiles 2>/dev/null
sudo chmod 644 shlibs 2>/dev/null
sudo chmod 644 symbols 2>/dev/null
sudo chmod 644 templates 2>/dev/null
cd $CURRENT
sudo chmod 755 $PACKAGE/etc/update-motd.d/10-help-text
#sudo chmod 755 $PACKAGE/usr/share/applications/ubuntu-about.desktop
else
echo -e "${bldred}CRITICAL ERROR: $PACKAGE, not found.${txtrst}"
exit 0;
fi
FullBar
echo -e -n "${bldgrn}Building Package $PACKAGENAME.deb: "
SUCCESS=$(dpkg --build $PACKAGENAME)
if [[ $SUCCESS ]]; then
#mv ultimate-edition-core*.deb ultimate-edition-$1-core-files.deb
echo -e "${bldgrn}Success.${txtrst}"
echo -e "${bldgrn}Cleaning up.${txtrst}"
TRASH=$(rm -R ultimate-edition-"$1"-"$DEBNAME"-core-files/)
FullBar
Center "$APPNAME($PROGNAME): All operations completed successfully."
FullBar
else
echo -e "${bldred}ERROR: Fatal${txtrst}"
fi
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title :code-cleanup
# description :Bash code cleanup script
# Author :root
# date :10/23/2013
# version :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================
/usr/share/ultimate_edition/internal:
- Code: Select all
#!/bin/bash
# ==============================================================================
# title :TheeMahn's O/S Builder
# description :Internal build software to build Ultimate Edition Operating Systems.
# author :theemahn <[email protected]>
# date :08/31/2014
# version :1.8.9
# usage :tmosb --help
# manual :man tmosb
# notes :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8: Initial public release
#
# ==============================================================================
# Version Control
APPNAME="TheeMahn O/S Builder"
PROGNAME="internal"
BUILDDATE="08/31/2014"
VERSION="1.8.9"
EXEC=$PWD
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"
# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0
# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)
# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0
# set colors so Error "s etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
# Get Directory executed in.
CURRENT=$PWD
BUMPVERSION=$1
OS='ultimate-edition'
if [ `getconf LONG_BIT` = "64" ]; then
ARCH='amd64'
else
ARCH='i386'
fi
ROOTFOLDER='http://os-builder.com/UETOYS'
declare -a DESKTOPS=('mate' 'kde' 'xfce' 'gnome' 'unity');
#DEB LIST GENERATOR for TheeMahn's personal use: for i in `ls *.deb`; do echo -e -n " '"; dpkg-deb --info $i | grep 'Package:' |cut -d: -f2 | sed 's/ //g' | tr '\n' "'"; done
declare -a FILELIST=('ultimate-edition-os-builder-1.8.9_all.deb' '100-emerald-themes-0.0.1_all.deb' 'any-color-you-like-icon-theme-0.9.4_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'boje-themes-1.2.1-all.deb' 'conky-builder-1.23_all.deb' 'conky-fonts-0.0.2_all.deb' 'copy_agent-1.46.0380_'$ARCH'.deb' 'faenza-cupertino-0.0.1_all.deb' 'faenza-darker-0.0.1_all.deb' 'gimp-brushes-1.1.0_all.deb' 'gimp-scripts-2.8.0_all.deb' 'grey-deck-theme-pack_0.0.1.deb' 'nouvegnomegray-0.0.1_all.deb' 'revolt-0.0.2_all.deb' 'tm-rename-1.0-4_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-female-themes-1.0-all.deb' 'ultimate-edition-icons-baby-blue-0.0.1_all.deb' 'ultimate-edition-icons-dark-glass.0.0.1_all.deb' 'ultimate-edition-icons-dark-one-0.0.1_all.deb' 'ultimate-edition-icons-gold-0.0.1_all.deb' 'ultimate-edition-icons-light-0.0.1_all.deb' 'ultimate-edition-icons-red-0.0.1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-mp4tomp3-1.0.0_all.deb' 'ultimate-edition-multi-monitor_1.7.5_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-sound-scheme-0.0.5_all.deb' 'ultimate-edition-thumbos_1.0.9_all.deb' 'ultimate-edition-user-contributed-wallpapers-1.0_all.deb' 'zoncolor-0.0.1_all.deb' 'zoncolorbrown-0.0.1_all.deb' 'zoncolorgreen-0.0.1_all.deb' 'zoncolorgrey-0.0.1_all.deb' 'zoncolormaroon-0.0.1_all.deb' 'zoncolororange-0.0.1_all.deb' 'zoncolorpink-0.0.1_all.deb' 'zoncolorpurple-0.0.1_all.deb' 'zoncolorred-0.0.1_all.deb' 'zoncolorsilver-0.0.1_all.deb' 'zoncolorsky-0.0.1_all.deb' 'zoncolorslate-0.0.1_all.deb' 'zoncolorturquoise-0.0.1_all.deb' 'zoncolorwhite-0.0.1_all.deb' 'zoncolorxtra-faenzadarkest-0.0.1_all.deb' 'zoncolorxtra-silverfaenzadarkest-0.0.1_all.deb' 'zoncolorxtra-skyfaenzalight-0.0.1_all.deb' 'zoncolorxtra-slatefaenzalight-0.0.1_all.deb');
#CUSTOM MATE? - add to the below to the above list.
#'mate-core_1.6.0.3+quantal_all.deb' 'mate-desktop-environment_1.6.0.3+quantal_all.deb'
#'ultimate-player_1.0.1~precise_amd64.deb' 'ultimate-player_1.0.1~precise_i386.deb'
#declare -a FILELIST=('100-emerald-themes-0.0.1_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'conky-builder-1.22_all.deb' 'conky-fonts-0.0.2_all.deb' 'radiotray_0.7.3_all.deb' 'tm-rename-1.0-4_all.deb' 'ultamatix-2.0.1_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-keysnatcher-1.0.0_all.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-multi-monitor_1.7.1-6_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-nautilus-scripts-1.6.3_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-thumbos_1.0.3_all.deb' 'yarssr_0.2.2-4_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-icons-dark-glass.0.0.2_all.deb');
declare -a INSTALLNAMES=('ultimate-edition-os-builder' '100-emerald-themes' 'any-color-you-like-icon-theme' 'apt-fast' 'bin2iso' 'boje-themes' 'conky-builder' 'conky-fonts' 'copy-agent' 'faenza-cupertino-icon-theme' 'faenza-darker-icon-theme' 'gimp-brushes' 'gimp-scripts' 'grey-deck-theme-pack' 'nouvegnomegray-icon-theme' 'revolt' 'tm-rename' 'ultimate-cover-grabber' 'ultimate-edition-code-cleanup' 'ultimate-edition-cursors' 'ultimate-edition-female-themes-1.0' 'ultimate-edition-icons-baby-blue' 'ultimate-edition-icons-dark-glass' 'ultimate-edition-icons-dark-one' 'ultimate-edition-icons-gold' 'ultimate-edition-icons-light' 'ultimate-edition-icons-red' 'ultimate-edition-installation-guide' 'ultimate-edition-mergepdf' 'ultimate-edition-mp4tomp3' 'ultimate-edition-multi-monitor' 'ultimate-edition-nas-tools' 'ultimate-edition-repairtheme' 'ultimate-edition-sound-scheme' 'ultimate-edition-thumbos' 'ultimate-edition-user-contributed-wallpapers' 'zoncolor-icon-theme' 'zoncolorbrown-icon-theme' 'zoncolorgreen-icon-theme' 'zoncolorgrey-icon-theme' 'zoncolormaroon-icon-theme' 'zoncolororange-icon-theme' 'zoncolorpink-icon-theme' 'zoncolorpurple-icon-theme' 'zoncolorred-icon-theme' 'zoncolorsilver-icon-theme' 'zoncolorsky-icon-theme' 'zoncolorslate-icon-theme' 'zoncolorturquoise-icon-theme' 'zoncolorwhite-icon-theme' 'zoncolorxtra-faenzadarkest-icon-theme' 'zoncolorxtra-silverfaenzadarkest-icon-theme' 'zoncolorxtra-skyfaenzalight-icon-theme' 'zoncolorxtra-slatefaenzalight-icon-theme');
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=('Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr' 'Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr');
declare -a UETHEMES=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5');
# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
function Notification () {
# Is X11 running?
X=$( pidof X )
# Does the user have the optional Ultimate Edition Sound scheme installed?
if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
WAVE=1
fi
# Is the user in an X11 GUI environment and have notification OSD installed?
if [[ $X && $NOTIFY ]]; then
a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
fi
# Does the user have pre-requisites? If so, break out the Cylon voice.
if [[ $SOUND && $WAVE ]]; then
a=$(canberra-gtk-play -i itisdone 2>/dev/null)
fi
# Display message in terminal unconditionally
echo $1
}
# Usage: Eye Candy "Message"
function EyeCandy() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
echo -e "▒ "$STP" ▒"
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
fi
}
function Error () {
echo -en "${bldred}"
FullBar
Center "$1"
FullBar
echo -en "${txtrst}"
}
function Encapsulate() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
DISTANCE=$(expr $COLUMNZ - $STRLEN)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
echo -en "▒ "$STP
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
fi
}
# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}
# Center data passed to function on screen
function Center () {
STP=$1
if [[ $STP ]]; then
STRLEN=${#STP}
CENTER=$(expr $STRLEN / 2 )
#CENTER=CENTER-1
TCENTER=$(expr $COLUMNZ / 2 )
#TCENTER=TCENTER-1
DISTANCE=$(expr $TCENTER - $CENTER)
DISTANCE=$(expr $DISTANCE - 2)
echo -en "${txtrst}"
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
echo -en "${bldgrn} $STP ${txtrst}"
TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
CALC=$(expr $RR + $TT + $STRLEN + 2)
if [[ $CALC -lt $COLUMNZ ]]; then
while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
fi
# Dubugging:
fi # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}
function EXIT () {
if [[ -f /usr/lib/ubiquity/apt-setup/generators/40cdrom ]];then
Encapsulate "Removing apt-cdrom."
FullBar
rm /usr/lib/ubiquity/apt-setup/generators/40cdrom
fi
#rm /etc/resolv.conf
#rm /var/lib/apt/extended_states
#rm /var/crash/*
#BAIL OUT
Encapsulate "Unmounting..."
QUIET=$(umount -f /proc/sys/fs/binfmt_misc > /dev/null 2>&1)
#Lazily umount -l device
#umount /proc
#umount /sys
#umount /dev/pts
for D in `mount | sed 's/.*on \(\/.\+\) type.*/\1/'`; do echo -e -n "\e[0;32mUNMOUNTING $D..."; umount -l $D; echo -e " [DONE]\e[0m"; > /dev/null 2>&1 || echo -e "\e[1;31mError: Can not umount $D lsof please\e[0m"; done;
Encapsulate "Cleaning up tmp files and history..."
SUPPRESS=$(rm -rf ~/.bash_history /var/cache/apt/*.bin /home/root/.bash_history /root/.bash_history /etc/apt/*.save /etc/apt/sources.list.d/*.save /var/crash/* /*.old 2>/dev/null)
#rm -R /var/cache/apt /var/lib/apt/lists /var/cache/apt/*.bin
if [[ -f /etc/lsb-release ]]; then
FullBar
Center "Final internal deployment information:..."
FullBar
lsb_release -a
cat /etc/os-release
cat /etc/issue
cat /etc/issue.net
fi
Center "Exiting Chroot environment."
FullBar
exit
}
function VersionDump {
Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
Encapsulate "E-mail bug reports to: $EMAIL."
Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
FullBar
}
# Dump program header
VersionDump
#DETECT CHROOTED ARCH
if [ `getconf LONG_BIT` = "64" ]; then
Center "64 Bit chrooted architecture detected."
ARCH='amd64'
else
Center "32 Bit chrooted architecture detected."
ARCH='i386'
fi
function Download() {
local url=$1
echo -n " "
wget --progress=dot $url 2>&1 | grep --line-buffered "%" | \
sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
echo -ne "\b\b\b\b"
echo " Done."
}
# Check inode of rootfs if anything other then 2 we are in a chroot environment
# use above IUSER results to further our cause.& guarantee our success ;)
# Inform user of current findings:
root_inode=$(stat -c %i /);
if [ $root_inode -ne 2 ]; then
Encapsulate "Chroot environment detected. Setting up appropriately."
else
Error "Non-chroot environment detected. I refuse to execute. Exiting..."
exit 0;
fi
#This was a rough one to chew ;)
#Detecting 32 bit or 64 bit in a chroot when the end user
#Could be running a 64 bit host building a 32 bit client.
cd /tmp/
Encapsulate "Mounting necessary points."
#mount -t devpts none /dev/pts
#mount -t proc none /proc
#mount -t sysfs none /sys
export HOME=/root
export LC_ALL=C
cd /tmp/
#Turn off prompting for packages.
export DEBIAN_FRONTEND=noninteractive
INSTALLED=$((dpkg-query -l 'wget' | grep 'ii')2>/dev/null)
LISTS=$((ls /var/cache/apt/*.bin) 2>/dev/null)
Encapsulate "Pulling preliminary sources list, please wait..."
FullBar
echo -e "${txtrst}"
SUPPRESS=$(apt-get update)
if ! [[ $INSTALLED ]]; then
Center "Rectifing dependency issues."
FullBar
apt-get install -f -y
Center "Pulling preliminary apps & prerequisites."
FullBar
apt-get install -y --force-yes --no-install-recommends software-properties-common nano wget python-software-properties bc
fi
DISTREL=$((cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p') 2>/dev/null)
VER=$(echo $DISTREL | cut -d "." -f2)
EVENODD=$(( $VER % 2 ))
INSTALLED=$((dpkg-query -l 'ultimate-edition-repositories' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Retriving Ultimate Edition Repositories..."
FullBar
if ! [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
wget $ROOTFOLDER/ultimate-edition-repositories-0.1.3_all.deb
fi
if [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
dpkg -i ultimate-edition-repositories-0.1.3_all.deb
if [[ -f cache ]]; then
rm ultimate-edition-repositories-0.1.3_all.deb
fi
fi
else
Center "Ultimate Edition Repositories already installed."
fi
INSTALLED=$((dpkg-query -l 'ultimate-edition-keysnatcher' | grep 'ii') 2>/dev/null)
KEYSNATCHER='ultimate-edition-keysnatcher-1.0.4_all.deb'
if ! [[ $INSTALLED ]]; then
# Future builds will be SPECIFIC via $DISTREL value
# wget http://ultimateedition.info/Ultimate_Edition_$DISTREL/ultimate-edition-keysnatcher-1.0.0_all.deb
if ! [[ -f $KEYSNATCHER ]]; then
echo -n "Downloading $KEYSNATCHER:"
Download $ROOTFOLDER/$KEYSNATCHER
fi
if [[ -s $KEYSNATCHER ]]; then
dpkg -i $KEYSNATCHER
if [[ -f cache ]]; then
rm $KEYSNATCHER
fi
else
Error "File not found: $KEYSNATCHER"
fi
else
Center "Ultimate Edition Keysnatcher previously installed."
fi
INSTALLED=$((dpkg-query -l 'dbus' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing dbus..."
apt-get install --yes dbus
else
Center "Dbus previously installed."
fi
EXISTS=$(which keysnatcher)
if [[ -f /etc/lsb-release ]]; then
Center "Distro release info:"
FullBar
lsb_release -a
FullBar
LITE=$(cat /etc/lsb-release | grep -i "lite")
GAMERS=$(cat /etc/lsb-release | grep -i "gamers")
ULTIMATEEDITION=$(cat /etc/lsb-release | grep -i "ultimate")
#Center "DEBUGGING: ULTIMATEEDITION: $ULTIMATEEDITION GAMERS:$GAMERS LITE:$LITE"
else
Error "ERROR: Massive failure, no dist-release info, exiting."
EXIT
fi
if ! [[ -f ~/.keysnatcher ]]; then
if [[ $EXISTS ]]; then
keysnatcher --timeout
keysnatcher --snatch
keysnatcher --fixerrors
else
apt-get update
fi
fi
#Center "Inserting diversion..."
#dbus-uuidgen > /var/lib/dbus/machine-id
#dpkg-divert --local --rename --add /sbin/initctl
#ln -s /bin/true /sbin/initctl
Center "Distribution Upgrading..."
FullBar
#PUSH ALL UPGRADES
apt-get -f -y dist-upgrade
#BARE-ESSENTIALS - Have to have a kernel and casperfs to read from:
#TODO: DIST SPECIFIC DATA ENTER HERE CASE THE JOINT
if [[ -f DE ]]; then
for ZZ in `cat DE`
do
case "$ZZ" in
MATE) INSTALLED=$((dpkg-query -l "mate-desktop-environment" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING MINIMAL DE FOR LITE O/S"; FullBar; apt-get install -y -f --no-install-recommends mate-core mate-desktop-environment; Center "Installing Lightdm display manager & Xorg."; FullBar; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; FullBar; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications."; FullBar; apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
KDE) INSTALLED=$((dpkg-query -l 'kubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING KDE."; apt-get install -y -f kubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
XFCE) INSTALLED=$((dpkg-query -l 'xubuntu-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING XFCE."; apt-get install -y -f xubuntu-desktop;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
GNOME) INSTALLED=$((dpkg-query -l 'ubuntu-gnome-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Gnome Desktop."; apt-get install -y -f ubuntu-gnome-desktop gnome-session-fallback;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
LXDE) INSTALLED=$((dpkg-query -l 'lubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING LXDE."; apt-get install -y -f lubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
AWESOME) INSTALLED=$((dpkg-query -l 'awesome' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Awesome DE."; apt-get install -y -f awesome; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
RAZORQT) INSTALLED=$((dpkg-query -l 'razorqt' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING RazorQT."; apt-get install -y -f razorqt; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
*) INSTALLED=$((dpkg-query -l "cups" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING FULL MONTE DE FOR NON LITE O/S"; apt-get install -f -y mate-core mate-desktop-environment lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter ubiquity-frontend-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator network-manager build-essential cups; fi;;
esac
done
fi
#UBIQUITY INSTALLED? ADD MATE TO THE LIST...
if [[ -f /usr/share/applications/ubiquity-gtkui.desktop ]]; then
Center "Ubiquity installation Detected adding Mate to list."
sed -i 's/OnlyShowIn=GNOME;XFCE;Unity;/OnlyShowIn=MATE;GNOME;XFCE;Unity;/g' /usr/share/applications/ubiquity-gtkui.desktop
fi
Center "Ignore the above and below Error(s), we will fix them at stage 3 later."
Center "Entering Distro customization section..."
for i in ${INSTALLNAMES[@]}
do
INSTALLED=$(dpkg-query -l "$i" 2>/dev/null | grep 'ii' 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Checking installation of $i: Not Installed."
FTG=${FILELIST[$array_counter]}
if ! [[ -f $FTG ]]; then
echo -e "${bldgrn}Checking cache for $FTG: ${bldylw}Does not exist."
echo -en "${bldgrn}Downloading $i: "
Download $ROOTFOLDER/$FTG
if [[ -s $FTG ]]; then
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installing $i: Installed.${txtrst}"
else
Error "Installing $i: Failed."
fi
else
Error "Failed to download $i."
fi
else
echo -e "${bldgrn}Checking cache for $FTG: Exists.${txtrst}"
echo -en "${bldgrn}Installing $i: "
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
else
Error "Failed to install $i."
fi
fi
if [[ -f cache ]]; then
rm $FTG
fi
else
Center "$i has already been Installed."
fi
array_counter=$(($array_counter + 1))
done
Center "Installing Ultimate Edition Themes..."
echo -e "\n"
for i in ${UETHEMES[@]}
do
PRE="ultimate-edition"
POST=""
ZZ="ultimate-edition-theme-$i"
# ultimate-edition-theme-4.4-all.deb
DEBFILE="ultimate-edition-theme-$i-all.deb"
echo -en "${bldgrn}Checking installation of $ZZ: "
INSTALLED=$(dpkg-query -l "$ZZ" 2>/dev/null | grep 'ii' 2>/dev/null)
if ! [[ $INSTALLED ]]; then
echo -e "${bldylw}Not installed."
echo -en "${bldgrn}Checking cache: "
FTG=$DEBFILE
if ! [[ -f $FTG ]]; then
echo -e "${bldylw}Does not exist."
echo -en "${bldgrn}Downloading $ZZ: "
Download $ROOTFOLDER/$FTG
if [[ -s $FTG ]]; then
echo -en "${bldgrn}Installing $ZZ: "
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Done.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
Error "Failed to download $ZZ"
Error "Please report issue to TheeMahn <[email protected]>."
fi
else
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installing $i from cache: Done${txtrst}"
else
Error "Installing $i from cache: Failed."
fi
fi
if [[ -f cache ]]; then
rm $FTG
fi
else
echo -e "\n"
Center "Ultimate edition $i theme has been installed."
fi
array_counter=$(($array_counter + 1))
done
Center "Fixing any dependency issues..."
apt-get install -f -y
#Fix for hosed modemmanager.
if ! [[ -f /etc/init.d/modemmanager ]];then
INSTALLED=$((dpkg-query -l "modemmanager" | grep 'ii') 2>/dev/null)
if [[ $INSTALLED ]]; then
Error "Repairing modem manager issue."
touch /etc/init.d/modemmanager
apt-get remove --purge -y -f modemmanager
if [[ -f /etc/init.d/modemmanager ]]; then
rm /etc/init.d/modemmanager
fi
fi
fi
# ultimate-edition-4.4-plymouth_all.deb
INSTALLED=$(dpkg-query -l "ultimate-edition-$DISTREL-plymouth" | grep 'ii')
if ! [[ $INSTALLED ]]; then
if ! [[ -f ultimate-edition-plymouth-"$DISTREL"-plymouth_all.deb ]]; then
echo -e -n "${bldgrn}Retrieving plymouth splash for Ultimate Edition $DISTREL: "
Download "$ROOTFOLDER/ultimate-edition-plymouth-"$DISTREL"_all.deb"
if [[ -f ultimate-edition-plymouth-"$DISTREL"_all.deb ]]; then
echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb: "
INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
else
Error "Failed."
fi
else
echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb from cache: "
INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
else
Error "Failed."
fi
fi
if [[ -f "ultimate-edition-plymouth-"$DISTREL"_all.deb" ]]; then
if [[ -f cache ]]; then
rm "ultimate-edition-plymouth-"$DISTREL"_all.deb"
fi
fi
else
Center "Ultimate Edition $DISTREL Plymouth already installed."
fi
fi
apt-get install -f -y
#DE SPECIFIC STUFF
Center "Installed sessions:"
ls /usr/share/xsessions/
if [[ -f /usr/share/xsessions/mate.desktop ]]; then
Center "Mate Installation detected... Setting Mate as default Desktop Environment."
if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
/usr/lib/lightdm/lightdm-set-defaults -s mate
fi
fi
if [[ -f /usr/share/xsessions/kde-plasma.desktop ]]; then
Center "KDE Installation detected... Setting KDE as default Desktop Environment."
if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
/usr/lib/lightdm/lightdm-set-defaults -s kde-plasma
fi
if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png && /usr/share/wallpapers/kde-default.png ]]; then
Center "Setting Ultimate Edition $DISTREL Wallpaper as default for KDE."
SUPRESS=$(rm /usr/share/wallpapers/kde-default.png)
SUPRESS=$(ln -s /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/kde-default.png)
mkdir -p /usr/share/wallpapers/Elarun/contents/images/
cp /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/Elarun/contents/images/2560x1600.png
else
if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png ]]; then
Error "Error: Ultimate Edition $DISTREL wallpaper not installed."
fi
if [[ -f /usr/share/wallpapers/kde-default.png ]]; then
Error "Error: NO KDE default wallpaper."
fi
fi
INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-kubuntu' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]] ; then
apt-get remove -f -y --purge ubiquity-frontend-gtk
apt-get install -y -f ubiquity-frontend-kde
if ! [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
echo -e -n "${bldgrn}Downloading ubiquity-slideshow-kubuntu_90_all.deb: "
Download "$ROOTFOLDER/ubiquity-slideshow-kubuntu_90_all.deb"
fi
if [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
echo -e -n "${bldgrn}Installing ubiquity-slideshow-kubuntu_90_all.deb: "
INSTALL=$(dpkg -i ubiquity-slideshow-kubuntu_90_all.deb 2>/dev/null)
if [[ $INSTALL ]]; then
Center "Installed."
else
Error "Failed."
fi
if [[ -f cache ]]; then
rm ubiquity-slideshow-kubuntu_90_all.deb
fi
else
Error "Error: File not found: ubiquity-slideshow-kubuntu_90_all.deb"
fi
fi
else
INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-ubuntu' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]] ; then
apt-get remove -f -y --purge ubiquity-frontend-kde
apt-get install -y -f ubiquity-frontend-gtk
if [[ -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
echo "Installing Ubiquity Slideshow for Mate / Gnome etc."
INSTALL=$(dpkg -i ubiquity-slideshow-ubuntu_90_all.deb 2>/dev/null)
fi
fi
fi
##CUSTOMIZE GRUB MENU
if [[ -f /etc/default/grub ]]; then
PRECUSTOM=$((cat /etc/default/grub | grep 'Ultimate') 2>/dev/null)
if ! [[ $PRECUSTOM ]]; then
GFONT=$(which grub-mkfont)
if [[ $GFONT ]]; then
Center "Customizing the Grub Menu, please wait."
#Build font
Center "Building grub font..."
grub-mkfont --size=16 --output=/boot/grub/liberation.pf2 /usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf
echo 'GRUB_BACKGROUND="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
echo 'export GRUB_MENU_PICTURE="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
echo 'export GRUB_COLOR_NORMAL="black/black"' >> /etc/default/grub
echo 'export GRUB_COLOR_HIGHLIGHT="red/black"' >> /etc/default/grub
echo 'GRUB_FONT="/boot/grub/liberation.pf2"' >> /etc/default/grub
else
Error "Error: grub-mkfont not availible, grub will not be customized."
fi
else
Center "Grub menu is already customised."
fi
else
Error "Error: Grub is currently not installed."
fi
CVERSION=$DISTREL
LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
#echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
CVERSION="${CVERSION%.*}"
LONGVERSION=$1
else
LONGVERSION=$CVERSION
fi
EVENODD="${DISTREL##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
DTYPE='STANDARD'
DE="MATE"
else
DTYPE='FULL'
DE="KDE"
fi
#APPZ
INSTALLED=$((dpkg-query -l 'vlc' | grep 'ii') 2>/dev/null)
if [[ $ULTIMATEEDITION ]]; then
if [[ $LITE || $GAMERS ]]; then
if ! [[ $INSTALLED ]]; then
Center "Installing $DISTREL Lite / Gamers applications."
apt-get install -y -f udisks gnome-disk-utility gnome-themes-standard broadcom-sta-common ubuntu-restricted-extras p7zip-full alien alsa-oss arj b43-fwcutter bchunk binutils bootchart build-essential bum bzip2 bzr cheese cvs devede dkms faac faad fakeroot ffmpeg2theora flac fslint ftp genisoimage gftp gimp glade gnome-codec-install wavpack preload pidgin-plugin-pack gstreamer-tools debootstrap unrar mppenc gstreamer0.10-plugins-ugly vorbis-tools ksnapshot pidgin-extprefs pidgin-themes gnome-icon-theme-suede icedtea-7-plugin xvid4conf gtkpod id3v2 hardinfo patchutils gnome-icon-theme-gperfection2 nrg2iso qemu python-chm gstreamer0.10-plugins-bad-multiverse soundkonverter qt4-designer dh-buildinfo mp3gain vorbisgain squashfs-tools isomaster qemu-launcher gnome-themes-extras k3b phatch tidy gnupod-tools kvirc pidgin-guifications kdeartwork-emoticons oss-compat qt4-qmake devscripts gtk-recordmydesktop rar phatch-cli cabextract gstreamer0.10-fluendo-mp3 qtcreator wireshark murrine-themes pidgin ubuntu-dev-tools wifi-radar mpg321 gnome-icon-theme-nuovo ntfs-config sysinfo winbind xnest unace htop lintian linux-firmware-nonfree youtube-dl qemuctl qemubuilder ndiswrapper-utils-1.9 broadcom-sta-common k3b-extrathemes libk3b6-extracodecs imagination terminator vlc gdebi samba calibre clementine fonts-unfonts-extra fonts-unfonts-core mediainfo system-config-samba synaptic xscreensaver-gl-extra xscreensaver-data-extra dconf-tools git subversion cmake qdbus gtk3-engine* transmission-gtk firefox hddtemp xbmc libreoffice ubuntu-restricted* firefox libreoffice xbmc
WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
if ! [[ $WINE ]]; then
Center "Installing Wine."
FullBar
apt-get install -f -y wine
fi
WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
if [[ $WINE ]]; then
Download "$ROOTFOLDER/PlayOnLinux_4.2.4.deb"
else
Error "Installation of wine failed, not installing play on linux."
fi
if [[ -f PlayOnLinux_4.2.4.deb ]]; then
echo -e -n "${bldgrn}Installing PlayOnLinux_4.2.4.deb: "
INSTALL=$(dpkg -i PlayOnLinux_4.2.4.deb 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
fi
if [[ -f cache && -f PlayOnLinux_4.2.4.deb ]]; then
rm PlayOnLinux_4.2.4.deb
fi
else
Error "Error: File not found: PlayOnLinux_4.2.4.deb"
fi
apt-get install -f -y ubuntu-tweak tovid
# apt-get install -f -y conky-all
Error "Purging Nautilus..."
apt-get remove --purge -y nautilus
else
Center "Ultimate Edition $DISTREL Lite applications already installed."
fi
fi
if ! [[ $LITE || $GAMERS ]]; then
Center "Odd release detected."
Center "Installing a pantheon of applications..."
FullBar
apt-get install -y -f abiword abiword-plugin-grammar abiword-plugin-mathview aisleriot alien alsa-oss arj aspell b43-fwcutter backintime-gnome bc bchunk big-cursor binutils blender bootchart brasero broadcom-sta-common build-essential bum bzip2 bzr cabextract cairo-clock calibre calligra ccd2iso cdparanoia cdrdao cervisia chameleon-cursor-theme checkgmail cheese clamav clamav-freshclam clamtk cmake conky-all crystalcursors cvs dconf-tools dctrl-tools debootstrap devede devscripts dh-buildinfo dkms dragonplayer dvdrip dvdrip-utils dvd-slideshow dvdstyler dvgrab elinks entagged exaile faac faad fakeroot fancontrol ffmpeg2theora file-roller flac fonts-unfonts-core fonts-unfonts-extra fslint f-spot ftp gddrescue gdebi gdesklets gedit genisoimage gftp gimp git glade gnome-codec-install gnome-disk-utility gnome-icon-theme-gperfection2 gnome-icon-theme-nuovo gnome-icon-theme-suede gnome-icon-theme-yasis gnome-themes-extras gnome-themes-standard gnumeric gnupod-tools gphpedit gpp gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer-tools gtkpod gtk-recordmydesktop hardinfo hddtemp htop hydrogen icedtea-7-plugin id3v2 imagination industrialtango-theme inkscape isomaster istanbul k3b k3b-extrathemes k3d kdeartwork-emoticons kdemultimedia-kio-plugins kdenlive kino kolourpaint4 kompare kopete kopete-message-indicator krita krosspython ksnapshot ktorrent kvirc libk3b6-extracodecs lintian linux-firmware-nonfree lives lynx mdf2iso mediainfo medit metacity-themes mkvtoolnix mp3gain mpg321 mppenc murrine-themes ndisgtk ndiswrapper-utils-1.9 nrg2iso ntfs-config oss-compat outdoors-theme oxygen-cursor-theme-extra p7zip p7zip-full perl-tk phatch phatch-cli pidgin pidgin-extprefs pidgin-guifications pidgin-plugin-pack pidgin-sipe pidgin-themes preload python-chm python-lxml python-numpy python-pyexiv2 python-renderpm python-reportbug python-reportlab python-reportlab-accel python-uniconvertor python-wxversion qemu qemubuilder qemuctl qemu-launcher qt4-designer qt4-dev-tools qt4-qmake qtcreator rar recordmydesktop ripoff samba sbackup screenlets shutter sound-juicer soundkonverter squashfs-tools subversion synaptic sysinfo system-config-samba t1-xfree86-nonfree terminator tidy transmission-gtk ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac tvtime ubuntu-dev-tools udisks unace unrar vamps videotrans vlc vorbisgain vorbis-tools wavpack wdiff wifi-radar winbind wireshark xcftools xnest xscreensaver-data-extra xscreensaver-gl-extra xvid4conf yakuake youtube-dl firefox libreoffice xbmc ubuntu-restricted*
apt-get install -f -y ubuntu-tweak tovid tovidgui
Center "Installing Wine."
apt-get install -f -y wine
else
Center "Non-Odd release detected."
fi
fi
if [[ $GAMERS ]]; then
apt-get install -y -f broadcom-sta-common ubuntu-restricted-extras p7zip-full alsa-oss arj b43-fwcutter bzip2 conky-all preload gstreamer-tools unrar gstreamer0.10-plugins-ugly icedtea-7-plugin xvid4conf gstreamer0.10-plugins-bad-multiverse rar gstreamer0.10-fluendo-mp3 ntfs-config ndiswrapper-utils-1.9 broadcom-sta-common terminator vlc gdebi samba system-config-samba gtk3-engine*
Center "Installing Games for Ultimate Edition Gamers $CVERSION"
FullBar
apt-get install -f -y childsplay capitalism billard-gl chromium-bsu megaglest scummvm spring dreamchess warzone2100 supertuxkart defendguin xboard djl scorched3d enigma gnome-games armagetronad gelide alien-arena freeciv-client-sdl pax-britannica
FullBar
Center "Installing Wine."
apt-get install -f -y wine
Error "Purging Nautilus..."
apt-get remove --purge -y nautilus
fi
#Templates = for synaptic etc.
#apt-get install software-center
#INTERNAL DISTRO STAMPING
#Distribution Layout VARS:
#Necessary for Ultimate Edition Software center to function.
INSTALLED=$((dpkg-query -l 'software-center' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing software center."
FullBar
apt-get install -f -y --no-install-recommends software-center
fi
INSTALLED=$((dpkg-query -l 'software-properties-gtk' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing software properties & unhiding it for $DISTREL"
FullBar
apt-get install -y -f software-properties-gtk
if [[ -f /usr/share/applications/software-properties-gtk.desktop ]]; then
sed -i s/NoDisplay=true/NoDisplay=false/ /usr/share/applications/software-properties-gtk.desktop
fi
fi
#INTERNAL DISTRO STAMPING
#INSTALLED=$(dpkg-query -l "ultimate-edition-customizations" | grep 'ii')
#if ! [[ $INSTALLED ]]; then
# Center "Installing customizations for $DISTREL"
# FTG='ultimate-edition-customizations-'$DISTREL'_all.deb'
# wget $ROOTFOLDER/$FTG
# if [[ -f $FTG ]]; then
# dpkg -i --force-overwrite $FTG
# #sudo apt-get -o Dpkg::Options::="--force-overwrite" install $FTG
# rm $FTG
# else
# Error "Error ": File not found $FTG."
# fi
#else
# echo "Ultimate Edition Customizations already installed."
#fi
DISTREL=$(cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p')
PRECUSTOM=""
Center "Setting up Startup applications..."
FullBar
#Startup apps:
#Yarssr
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing Yet Another RSS Reader for $DISTREL"
FullBar
apt-get install -f -y yarssr
else
Center "YARSSR is already installed."
fi
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/yarssr.desktop && $INSTALLED ]]; then
echo -e -n "${bldgrn}Creating startup file for YARSSR: "
echo '[Desktop Entry]' > /etc/xdg/autostart/yarssr.desktop
echo 'Name=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
echo 'Name[en_GB]=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
echo 'Type=Application' >> /etc/xdg/autostart/yarssr.desktop
echo 'Exec=yarssr' >> /etc/xdg/autostart/yarssr.desktop
echo 'Terminal=false' >> /etc/xdg/autostart/yarssr.desktop
echo 'Icon=gnome-do' >> /etc/xdg/autostart/yarssr.desktop
echo 'Comment=Grab News feeds with low resource usage.' >> /etc/xdg/autostart/yarssr.desktop
echo 'Categories=Internet;' >> /etc/xdg/autostart/yarssr.desktop
if [[ -f /etc/xdg/autostart/yarssr.desktop ]]; then
Center "Success."
else
Error "Failure."
fi
else
Center "Startup file for YARSSR already exists."
fi
#Radiotray
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing Radiotray for $DISTREL"
FullBar
apt-get install -f -y radiotray
else
Center "Radiotray is installed."
FullBar
fi
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/radiotray.desktop && $INSTALLED ]]; then
echo -e -n "${bldgrn}Creating startup file for radiotray: "
echo '[Desktop Entry]' > /etc/xdg/autostart/radiotray.desktop
echo 'Name=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Name[en_GB]=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Type=Application' >> /etc/xdg/autostart/radiotray.desktop
echo 'Exec=radiotray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Terminal=false' >> /etc/xdg/autostart/radiotray.desktop
echo 'Icon=radiotray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Comment=Streams Radio stations.' >> /etc/xdg/autostart/radiotray.desktop
echo 'Categories=Internet;' >> /etc/xdg/autostart/radiotray.desktop
if [[ -f /etc/xdg/autostart/radiotray.desktop ]]; then
Center "Success."
else
Error "Failure."
fi
else
Center "Startup file for radiotray already exists."
FullBar
fi
INSTALLED=$((dpkg-query -l 'conky-builder' | grep 'ii') 2>/dev/null)
CONKY='conky-builder-1.23_all.deb'
if ! [[ $INSTALLED ]]; then
if ! [[ -f $CONKY ]]; then
echo -n "Downloading $CONKY:"
Download $ROOTFOLDER/$CONKY
fi
if [[ -s $CONKY ]]; then
dpkg -i $CONKY
if [[ -f cache ]]; then
rm $CONKY
fi
else
Error "Error: File not found $CONKY"
fi
else
Center "Conky Builder previously installed."
FullBar
fi
INSTALLED=$((dpkg-query -l "conky-builder" | grep 'ii') 2>/dev/null)
#Conky Builder
if ! [[ -f /etc/xdg/autostart/cbuilder.desktop && $INSTALLED ]]; then
echo -e -n "${bldgrn}Creating startup file for Conky Builder: "
echo '[Desktop Entry]' > /etc/xdg/autostart/cbuilder.desktop
echo 'Name=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Name[en_GB]=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Type=Application' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Exec=/usr/share/ultimate_edition/conkybuilder.sh' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Terminal=false' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Icon=gnome-do' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Comment=Builds Conky skelaton.' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Categories=System;' >> /etc/xdg/autostart/cbuilder.desktop
if [[ -f /etc/xdg/autostart/cbuilder.desktop ]]; then
Center "Success."
else
Error "Failure."
fi
else
Center "Startup file for conky-builder already exists."
FullBar
fi
# Fusion Icon deliberatly removed from list, broken in mate.
# INSTALLED=$(dpkg-query -l "fusion-icon" | grep 'ii')
# if ! [[ $INSTALLED ]]; then
# Center "Installing Fusion Icon for $DISTREL"
# apt-get install -f -y fusion-icon
# else
# Center "Fusion Icon is installed."
# fi
# #Fusion
# echo '[Desktop Entry]
# Name=Fusion Icon
# Name[en_GB]=Fusion Icon
# Type=Application
# Exec=fusion-icon
# Terminal=false
# Icon=fusion-icon
# Comment=Enables access to compiz and emerald.
# Categories=System;' > /etc/xdg/autostart/fusion.desktop
#Fix for hosed woopsie.
INSTALLED=$((dpkg-query -l "woopsie" | grep 'ii') 2>/dev/null)
if [[ -f /etc/init.d/woopsie && $INSTALLED ]];then
Error "Repairing woopsie issue."
touch /etc/init.d/woopsie
if [[ $INSTALLED ]]; then
apt-get remove --purge -y -f woopsie;
fi
if [[ -f /etc/init.d/woopsie ]]; then
rm /etc/init.d/woopsie
fi
fi
apt-get install -f -y
INSTALLED=$((dpkg-query -l "xfsprogs" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing additional filesystem support."
FullBar
apt-get install -f -y mtools e2fsprogs jfsutils reiserfsprogs xfsprogs mdadm btrfs-tools ntfs-3g mdadm
fi
if [[ -f cache ]]; then
Center "Cleaning up..."
apt-get autoremove -y --force-yes
apt-get clean
apt-get autoclean
else
Center "Not cleaning up old packages, cache switched engaged"
echo -e "We will move them out to keep the cache when we exit chroot."
apt-get autoremove -y --force-yes
fi
Center "Cleaning up configuration files. Please ignore any Errors."
FullBar
SUCCESS=$((dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge) 2>/dev/null)
EXIT
#if [[ -f /var/lib/dbus/machine-id ]]; then
# Center "Removing diversion."
# rm /sbin/initctl
# dpkg-divert --rename --remove /sbin/initctl
# rm /var/lib/dbus/machine-id
#fi
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title :code-cleanup
# description :Bash code cleanup script
# Author :root
# date :10/23/2013
# version :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================
/usr/share/ultimate_edition/tmgrub:
- Code: Select all
#!/bin/bash
# ==============================================================================
# title :TheeMahn's O/S Builder
# description :Internal build software to build Ultimate Edition Operating Systems.
# author :theemahn <[email protected]>
# date :08/31/2014
# version :1.8.9
# usage :tmosb --help
# manual :man tmosb
# notes :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8: Initial public release
#
# ==============================================================================
# Version Control
APPNAME="TheeMahn O/S Builder"
PROGNAME="internal"
BUILDDATE="08/31/2014"
VERSION="1.8.9"
EXEC=$PWD
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"
# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0
# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)
# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0
# set colors so Error "s etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
# Get Directory executed in.
CURRENT=$PWD
BUMPVERSION=$1
OS='ultimate-edition'
if [ `getconf LONG_BIT` = "64" ]; then
ARCH='amd64'
else
ARCH='i386'
fi
ROOTFOLDER='http://os-builder.com/UETOYS'
declare -a DESKTOPS=('mate' 'kde' 'xfce' 'gnome' 'unity');
#DEB LIST GENERATOR for TheeMahn's personal use: for i in `ls *.deb`; do echo -e -n " '"; dpkg-deb --info $i | grep 'Package:' |cut -d: -f2 | sed 's/ //g' | tr '\n' "'"; done
declare -a FILELIST=('ultimate-edition-os-builder-1.8.9_all.deb' '100-emerald-themes-0.0.1_all.deb' 'any-color-you-like-icon-theme-0.9.4_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'boje-themes-1.2.1-all.deb' 'conky-builder-1.23_all.deb' 'conky-fonts-0.0.2_all.deb' 'copy_agent-1.46.0380_'$ARCH'.deb' 'faenza-cupertino-0.0.1_all.deb' 'faenza-darker-0.0.1_all.deb' 'gimp-brushes-1.1.0_all.deb' 'gimp-scripts-2.8.0_all.deb' 'grey-deck-theme-pack_0.0.1.deb' 'nouvegnomegray-0.0.1_all.deb' 'revolt-0.0.2_all.deb' 'tm-rename-1.0-4_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-female-themes-1.0-all.deb' 'ultimate-edition-icons-baby-blue-0.0.1_all.deb' 'ultimate-edition-icons-dark-glass.0.0.1_all.deb' 'ultimate-edition-icons-dark-one-0.0.1_all.deb' 'ultimate-edition-icons-gold-0.0.1_all.deb' 'ultimate-edition-icons-light-0.0.1_all.deb' 'ultimate-edition-icons-red-0.0.1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-mp4tomp3-1.0.0_all.deb' 'ultimate-edition-multi-monitor_1.7.5_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-sound-scheme-0.0.5_all.deb' 'ultimate-edition-thumbos_1.0.9_all.deb' 'ultimate-edition-user-contributed-wallpapers-1.0_all.deb' 'zoncolor-0.0.1_all.deb' 'zoncolorbrown-0.0.1_all.deb' 'zoncolorgreen-0.0.1_all.deb' 'zoncolorgrey-0.0.1_all.deb' 'zoncolormaroon-0.0.1_all.deb' 'zoncolororange-0.0.1_all.deb' 'zoncolorpink-0.0.1_all.deb' 'zoncolorpurple-0.0.1_all.deb' 'zoncolorred-0.0.1_all.deb' 'zoncolorsilver-0.0.1_all.deb' 'zoncolorsky-0.0.1_all.deb' 'zoncolorslate-0.0.1_all.deb' 'zoncolorturquoise-0.0.1_all.deb' 'zoncolorwhite-0.0.1_all.deb' 'zoncolorxtra-faenzadarkest-0.0.1_all.deb' 'zoncolorxtra-silverfaenzadarkest-0.0.1_all.deb' 'zoncolorxtra-skyfaenzalight-0.0.1_all.deb' 'zoncolorxtra-slatefaenzalight-0.0.1_all.deb');
#CUSTOM MATE? - add to the below to the above list.
#'mate-core_1.6.0.3+quantal_all.deb' 'mate-desktop-environment_1.6.0.3+quantal_all.deb'
#'ultimate-player_1.0.1~precise_amd64.deb' 'ultimate-player_1.0.1~precise_i386.deb'
#declare -a FILELIST=('100-emerald-themes-0.0.1_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'conky-builder-1.22_all.deb' 'conky-fonts-0.0.2_all.deb' 'radiotray_0.7.3_all.deb' 'tm-rename-1.0-4_all.deb' 'ultamatix-2.0.1_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-keysnatcher-1.0.0_all.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-multi-monitor_1.7.1-6_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-nautilus-scripts-1.6.3_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-thumbos_1.0.3_all.deb' 'yarssr_0.2.2-4_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-icons-dark-glass.0.0.2_all.deb');
declare -a INSTALLNAMES=('ultimate-edition-os-builder' '100-emerald-themes' 'any-color-you-like-icon-theme' 'apt-fast' 'bin2iso' 'boje-themes' 'conky-builder' 'conky-fonts' 'copy-agent' 'faenza-cupertino-icon-theme' 'faenza-darker-icon-theme' 'gimp-brushes' 'gimp-scripts' 'grey-deck-theme-pack' 'nouvegnomegray-icon-theme' 'revolt' 'tm-rename' 'ultimate-cover-grabber' 'ultimate-edition-code-cleanup' 'ultimate-edition-cursors' 'ultimate-edition-female-themes-1.0' 'ultimate-edition-icons-baby-blue' 'ultimate-edition-icons-dark-glass' 'ultimate-edition-icons-dark-one' 'ultimate-edition-icons-gold' 'ultimate-edition-icons-light' 'ultimate-edition-icons-red' 'ultimate-edition-installation-guide' 'ultimate-edition-mergepdf' 'ultimate-edition-mp4tomp3' 'ultimate-edition-multi-monitor' 'ultimate-edition-nas-tools' 'ultimate-edition-repairtheme' 'ultimate-edition-sound-scheme' 'ultimate-edition-thumbos' 'ultimate-edition-user-contributed-wallpapers' 'zoncolor-icon-theme' 'zoncolorbrown-icon-theme' 'zoncolorgreen-icon-theme' 'zoncolorgrey-icon-theme' 'zoncolormaroon-icon-theme' 'zoncolororange-icon-theme' 'zoncolorpink-icon-theme' 'zoncolorpurple-icon-theme' 'zoncolorred-icon-theme' 'zoncolorsilver-icon-theme' 'zoncolorsky-icon-theme' 'zoncolorslate-icon-theme' 'zoncolorturquoise-icon-theme' 'zoncolorwhite-icon-theme' 'zoncolorxtra-faenzadarkest-icon-theme' 'zoncolorxtra-silverfaenzadarkest-icon-theme' 'zoncolorxtra-skyfaenzalight-icon-theme' 'zoncolorxtra-slatefaenzalight-icon-theme');
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=('Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr' 'Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr');
declare -a UETHEMES=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5');
# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
function Notification () {
# Is X11 running?
X=$( pidof X )
# Does the user have the optional Ultimate Edition Sound scheme installed?
if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
WAVE=1
fi
# Is the user in an X11 GUI environment and have notification OSD installed?
if [[ $X && $NOTIFY ]]; then
a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
fi
# Does the user have pre-requisites? If so, break out the Cylon voice.
if [[ $SOUND && $WAVE ]]; then
a=$(canberra-gtk-play -i itisdone 2>/dev/null)
fi
# Display message in terminal unconditionally
echo $1
}
# Usage: Eye Candy "Message"
function EyeCandy() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
# ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
echo -e "▒ "$STP" ▒"
RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
fi
}
function Error () {
echo -en "${bldred}"
FullBar
Center "$1"
FullBar
echo -en "${txtrst}"
}
function Encapsulate() {
# Verify a message has been sent to this function otherwise do squat.
# Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
# ▒ Repostorm 1.7.7 is entering extraction mode. ▒
STP="$1"
if [[ $STP ]]; then
STRLEN=${#STP}
STRLEN=$(expr $STRLEN + 3)
DISTANCE=$(expr $COLUMNZ - $STRLEN)
GREPPED=$(echo $STP | grep -E '\e')
if [[ $GREPPED ]]; then
STRLEN=$(expr $STRLEN - 13)
fi
echo -en "▒ "$STP
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
fi
}
# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}
# Center data passed to function on screen
function Center () {
STP=$1
if [[ $STP ]]; then
STRLEN=${#STP}
CENTER=$(expr $STRLEN / 2 )
#CENTER=CENTER-1
TCENTER=$(expr $COLUMNZ / 2 )
#TCENTER=TCENTER-1
DISTANCE=$(expr $TCENTER - $CENTER)
DISTANCE=$(expr $DISTANCE - 2)
echo -en "${txtrst}"
RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
echo -en "${bldgrn} $STP ${txtrst}"
TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
CALC=$(expr $RR + $TT + $STRLEN + 2)
if [[ $CALC -lt $COLUMNZ ]]; then
while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
fi
# Dubugging:
fi # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}
function EXIT () {
if [[ -f /usr/lib/ubiquity/apt-setup/generators/40cdrom ]];then
Encapsulate "Removing apt-cdrom."
FullBar
rm /usr/lib/ubiquity/apt-setup/generators/40cdrom
fi
#rm /etc/resolv.conf
#rm /var/lib/apt/extended_states
#rm /var/crash/*
#BAIL OUT
Encapsulate "Unmounting..."
QUIET=$(umount -f /proc/sys/fs/binfmt_misc > /dev/null 2>&1)
#Lazily umount -l device
#umount /proc
#umount /sys
#umount /dev/pts
for D in `mount | sed 's/.*on \(\/.\+\) type.*/\1/'`; do echo -e -n "\e[0;32mUNMOUNTING $D..."; umount -l $D; echo -e " [DONE]\e[0m"; > /dev/null 2>&1 || echo -e "\e[1;31mError: Can not umount $D lsof please\e[0m"; done;
Encapsulate "Cleaning up tmp files and history..."
SUPPRESS=$(rm -rf ~/.bash_history /var/cache/apt/*.bin /home/root/.bash_history /root/.bash_history /etc/apt/*.save /etc/apt/sources.list.d/*.save /var/crash/* /*.old 2>/dev/null)
#rm -R /var/cache/apt /var/lib/apt/lists /var/cache/apt/*.bin
if [[ -f /etc/lsb-release ]]; then
FullBar
Center "Final internal deployment information:..."
FullBar
lsb_release -a
cat /etc/os-release
cat /etc/issue
cat /etc/issue.net
fi
Center "Exiting Chroot environment."
FullBar
exit
}
function VersionDump {
Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
Encapsulate "E-mail bug reports to: $EMAIL."
Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
FullBar
}
# Dump program header
VersionDump
#DETECT CHROOTED ARCH
if [ `getconf LONG_BIT` = "64" ]; then
Center "64 Bit chrooted architecture detected."
ARCH='amd64'
else
Center "32 Bit chrooted architecture detected."
ARCH='i386'
fi
function Download() {
local url=$1
echo -n " "
wget --progress=dot $url 2>&1 | grep --line-buffered "%" | \
sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
echo -ne "\b\b\b\b"
echo " Done."
}
# Check inode of rootfs if anything other then 2 we are in a chroot environment
# use above IUSER results to further our cause.& guarantee our success ;)
# Inform user of current findings:
root_inode=$(stat -c %i /);
if [ $root_inode -ne 2 ]; then
Encapsulate "Chroot environment detected. Setting up appropriately."
else
Error "Non-chroot environment detected. I refuse to execute. Exiting..."
exit 0;
fi
#This was a rough one to chew ;)
#Detecting 32 bit or 64 bit in a chroot when the end user
#Could be running a 64 bit host building a 32 bit client.
cd /tmp/
Encapsulate "Mounting necessary points."
#mount -t devpts none /dev/pts
#mount -t proc none /proc
#mount -t sysfs none /sys
export HOME=/root
export LC_ALL=C
cd /tmp/
#Turn off prompting for packages.
export DEBIAN_FRONTEND=noninteractive
INSTALLED=$((dpkg-query -l 'wget' | grep 'ii')2>/dev/null)
LISTS=$((ls /var/cache/apt/*.bin) 2>/dev/null)
Encapsulate "Pulling preliminary sources list, please wait..."
FullBar
echo -e "${txtrst}"
SUPPRESS=$(apt-get update)
if ! [[ $INSTALLED ]]; then
Center "Rectifing dependency issues."
FullBar
apt-get install -f -y
Center "Pulling preliminary apps & prerequisites."
FullBar
apt-get install -y --force-yes --no-install-recommends software-properties-common nano wget python-software-properties bc
fi
DISTREL=$((cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p') 2>/dev/null)
VER=$(echo $DISTREL | cut -d "." -f2)
EVENODD=$(( $VER % 2 ))
INSTALLED=$((dpkg-query -l 'ultimate-edition-repositories' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Retriving Ultimate Edition Repositories..."
FullBar
if ! [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
wget $ROOTFOLDER/ultimate-edition-repositories-0.1.3_all.deb
fi
if [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
dpkg -i ultimate-edition-repositories-0.1.3_all.deb
if [[ -f cache ]]; then
rm ultimate-edition-repositories-0.1.3_all.deb
fi
fi
else
Center "Ultimate Edition Repositories already installed."
fi
INSTALLED=$((dpkg-query -l 'ultimate-edition-keysnatcher' | grep 'ii') 2>/dev/null)
KEYSNATCHER='ultimate-edition-keysnatcher-1.0.4_all.deb'
if ! [[ $INSTALLED ]]; then
# Future builds will be SPECIFIC via $DISTREL value
# wget http://ultimateedition.info/Ultimate_Edition_$DISTREL/ultimate-edition-keysnatcher-1.0.0_all.deb
if ! [[ -f $KEYSNATCHER ]]; then
echo -n "Downloading $KEYSNATCHER:"
Download $ROOTFOLDER/$KEYSNATCHER
fi
if [[ -s $KEYSNATCHER ]]; then
dpkg -i $KEYSNATCHER
if [[ -f cache ]]; then
rm $KEYSNATCHER
fi
else
Error "File not found: $KEYSNATCHER"
fi
else
Center "Ultimate Edition Keysnatcher previously installed."
fi
INSTALLED=$((dpkg-query -l 'dbus' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing dbus..."
apt-get install --yes dbus
else
Center "Dbus previously installed."
fi
EXISTS=$(which keysnatcher)
if [[ -f /etc/lsb-release ]]; then
Center "Distro release info:"
FullBar
lsb_release -a
FullBar
LITE=$(cat /etc/lsb-release | grep -i "lite")
GAMERS=$(cat /etc/lsb-release | grep -i "gamers")
ULTIMATEEDITION=$(cat /etc/lsb-release | grep -i "ultimate")
#Center "DEBUGGING: ULTIMATEEDITION: $ULTIMATEEDITION GAMERS:$GAMERS LITE:$LITE"
else
Error "ERROR: Massive failure, no dist-release info, exiting."
EXIT
fi
if ! [[ -f ~/.keysnatcher ]]; then
if [[ $EXISTS ]]; then
keysnatcher --timeout
keysnatcher --snatch
keysnatcher --fixerrors
else
apt-get update
fi
fi
#Center "Inserting diversion..."
#dbus-uuidgen > /var/lib/dbus/machine-id
#dpkg-divert --local --rename --add /sbin/initctl
#ln -s /bin/true /sbin/initctl
Center "Distribution Upgrading..."
FullBar
#PUSH ALL UPGRADES
apt-get -f -y dist-upgrade
#BARE-ESSENTIALS - Have to have a kernel and casperfs to read from:
#TODO: DIST SPECIFIC DATA ENTER HERE CASE THE JOINT
if [[ -f DE ]]; then
for ZZ in `cat DE`
do
case "$ZZ" in
MATE) INSTALLED=$((dpkg-query -l "mate-desktop-environment" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING MINIMAL DE FOR LITE O/S"; FullBar; apt-get install -y -f --no-install-recommends mate-core mate-desktop-environment; Center "Installing Lightdm display manager & Xorg."; FullBar; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; FullBar; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications."; FullBar; apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
KDE) INSTALLED=$((dpkg-query -l 'kubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING KDE."; apt-get install -y -f kubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
XFCE) INSTALLED=$((dpkg-query -l 'xubuntu-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING XFCE."; apt-get install -y -f xubuntu-desktop;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
GNOME) INSTALLED=$((dpkg-query -l 'ubuntu-gnome-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Gnome Desktop."; apt-get install -y -f ubuntu-gnome-desktop gnome-session-fallback;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
LXDE) INSTALLED=$((dpkg-query -l 'lubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING LXDE."; apt-get install -y -f lubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
AWESOME) INSTALLED=$((dpkg-query -l 'awesome' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Awesome DE."; apt-get install -y -f awesome; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
RAZORQT) INSTALLED=$((dpkg-query -l 'razorqt' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING RazorQT."; apt-get install -y -f razorqt; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
*) INSTALLED=$((dpkg-query -l "cups" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING FULL MONTE DE FOR NON LITE O/S"; apt-get install -f -y mate-core mate-desktop-environment lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter ubiquity-frontend-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator network-manager build-essential cups; fi;;
esac
done
fi
#UBIQUITY INSTALLED? ADD MATE TO THE LIST...
if [[ -f /usr/share/applications/ubiquity-gtkui.desktop ]]; then
Center "Ubiquity installation Detected adding Mate to list."
sed -i 's/OnlyShowIn=GNOME;XFCE;Unity;/OnlyShowIn=MATE;GNOME;XFCE;Unity;/g' /usr/share/applications/ubiquity-gtkui.desktop
fi
Center "Ignore the above and below Error(s), we will fix them at stage 3 later."
Center "Entering Distro customization section..."
for i in ${INSTALLNAMES[@]}
do
INSTALLED=$(dpkg-query -l "$i" 2>/dev/null | grep 'ii' 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Checking installation of $i: Not Installed."
FTG=${FILELIST[$array_counter]}
if ! [[ -f $FTG ]]; then
echo -e "${bldgrn}Checking cache for $FTG: ${bldylw}Does not exist."
echo -en "${bldgrn}Downloading $i: "
Download $ROOTFOLDER/$FTG
if [[ -s $FTG ]]; then
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installing $i: Installed.${txtrst}"
else
Error "Installing $i: Failed."
fi
else
Error "Failed to download $i."
fi
else
echo -e "${bldgrn}Checking cache for $FTG: Exists.${txtrst}"
echo -en "${bldgrn}Installing $i: "
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
else
Error "Failed to install $i."
fi
fi
if [[ -f cache ]]; then
rm $FTG
fi
else
Center "$i has already been Installed."
fi
array_counter=$(($array_counter + 1))
done
Center "Installing Ultimate Edition Themes..."
echo -e "\n"
for i in ${UETHEMES[@]}
do
PRE="ultimate-edition"
POST=""
ZZ="ultimate-edition-theme-$i"
# ultimate-edition-theme-4.4-all.deb
DEBFILE="ultimate-edition-theme-$i-all.deb"
echo -en "${bldgrn}Checking installation of $ZZ: "
INSTALLED=$(dpkg-query -l "$ZZ" 2>/dev/null | grep 'ii' 2>/dev/null)
if ! [[ $INSTALLED ]]; then
echo -e "${bldylw}Not installed."
echo -en "${bldgrn}Checking cache: "
FTG=$DEBFILE
if ! [[ -f $FTG ]]; then
echo -e "${bldylw}Does not exist."
echo -en "${bldgrn}Downloading $ZZ: "
Download $ROOTFOLDER/$FTG
if [[ -s $FTG ]]; then
echo -en "${bldgrn}Installing $ZZ: "
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Done.${txtrst}"
else
echo -e "${bldred}Failed.${txtrst}"
fi
else
Error "Failed to download $ZZ"
Error "Please report issue to TheeMahn <[email protected]>."
fi
else
INSTALL=$(dpkg -i $FTG 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installing $i from cache: Done${txtrst}"
else
Error "Installing $i from cache: Failed."
fi
fi
if [[ -f cache ]]; then
rm $FTG
fi
else
echo -e "\n"
Center "Ultimate edition $i theme has been installed."
fi
array_counter=$(($array_counter + 1))
done
Center "Fixing any dependency issues..."
apt-get install -f -y
#Fix for hosed modemmanager.
if ! [[ -f /etc/init.d/modemmanager ]];then
INSTALLED=$((dpkg-query -l "modemmanager" | grep 'ii') 2>/dev/null)
if [[ $INSTALLED ]]; then
Error "Repairing modem manager issue."
touch /etc/init.d/modemmanager
apt-get remove --purge -y -f modemmanager
if [[ -f /etc/init.d/modemmanager ]]; then
rm /etc/init.d/modemmanager
fi
fi
fi
# ultimate-edition-4.4-plymouth_all.deb
INSTALLED=$(dpkg-query -l "ultimate-edition-$DISTREL-plymouth" | grep 'ii')
if ! [[ $INSTALLED ]]; then
if ! [[ -f ultimate-edition-plymouth-"$DISTREL"-plymouth_all.deb ]]; then
echo -e -n "${bldgrn}Retrieving plymouth splash for Ultimate Edition $DISTREL: "
Download "$ROOTFOLDER/ultimate-edition-plymouth-"$DISTREL"_all.deb"
if [[ -f ultimate-edition-plymouth-"$DISTREL"_all.deb ]]; then
echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb: "
INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
else
Error "Failed."
fi
else
echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb from cache: "
INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
else
Error "Failed."
fi
fi
if [[ -f "ultimate-edition-plymouth-"$DISTREL"_all.deb" ]]; then
if [[ -f cache ]]; then
rm "ultimate-edition-plymouth-"$DISTREL"_all.deb"
fi
fi
else
Center "Ultimate Edition $DISTREL Plymouth already installed."
fi
fi
apt-get install -f -y
#DE SPECIFIC STUFF
Center "Installed sessions:"
ls /usr/share/xsessions/
if [[ -f /usr/share/xsessions/mate.desktop ]]; then
Center "Mate Installation detected... Setting Mate as default Desktop Environment."
if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
/usr/lib/lightdm/lightdm-set-defaults -s mate
fi
fi
if [[ -f /usr/share/xsessions/kde-plasma.desktop ]]; then
Center "KDE Installation detected... Setting KDE as default Desktop Environment."
if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
/usr/lib/lightdm/lightdm-set-defaults -s kde-plasma
fi
if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png && /usr/share/wallpapers/kde-default.png ]]; then
Center "Setting Ultimate Edition $DISTREL Wallpaper as default for KDE."
SUPRESS=$(rm /usr/share/wallpapers/kde-default.png)
SUPRESS=$(ln -s /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/kde-default.png)
mkdir -p /usr/share/wallpapers/Elarun/contents/images/
cp /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/Elarun/contents/images/2560x1600.png
else
if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png ]]; then
Error "Error: Ultimate Edition $DISTREL wallpaper not installed."
fi
if [[ -f /usr/share/wallpapers/kde-default.png ]]; then
Error "Error: NO KDE default wallpaper."
fi
fi
INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-kubuntu' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]] ; then
apt-get remove -f -y --purge ubiquity-frontend-gtk
apt-get install -y -f ubiquity-frontend-kde
if ! [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
echo -e -n "${bldgrn}Downloading ubiquity-slideshow-kubuntu_90_all.deb: "
Download "$ROOTFOLDER/ubiquity-slideshow-kubuntu_90_all.deb"
fi
if [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
echo -e -n "${bldgrn}Installing ubiquity-slideshow-kubuntu_90_all.deb: "
INSTALL=$(dpkg -i ubiquity-slideshow-kubuntu_90_all.deb 2>/dev/null)
if [[ $INSTALL ]]; then
Center "Installed."
else
Error "Failed."
fi
if [[ -f cache ]]; then
rm ubiquity-slideshow-kubuntu_90_all.deb
fi
else
Error "Error: File not found: ubiquity-slideshow-kubuntu_90_all.deb"
fi
fi
else
INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-ubuntu' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]] ; then
apt-get remove -f -y --purge ubiquity-frontend-kde
apt-get install -y -f ubiquity-frontend-gtk
if [[ -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
echo "Installing Ubiquity Slideshow for Mate / Gnome etc."
INSTALL=$(dpkg -i ubiquity-slideshow-ubuntu_90_all.deb 2>/dev/null)
fi
fi
fi
##CUSTOMIZE GRUB MENU
if [[ -f /etc/default/grub ]]; then
PRECUSTOM=$((cat /etc/default/grub | grep 'Ultimate') 2>/dev/null)
if ! [[ $PRECUSTOM ]]; then
GFONT=$(which grub-mkfont)
if [[ $GFONT ]]; then
Center "Customizing the Grub Menu, please wait."
#Build font
Center "Building grub font..."
grub-mkfont --size=16 --output=/boot/grub/liberation.pf2 /usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf
echo 'GRUB_BACKGROUND="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
echo 'export GRUB_MENU_PICTURE="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
echo 'export GRUB_COLOR_NORMAL="black/black"' >> /etc/default/grub
echo 'export GRUB_COLOR_HIGHLIGHT="red/black"' >> /etc/default/grub
echo 'GRUB_FONT="/boot/grub/liberation.pf2"' >> /etc/default/grub
else
Error "Error: grub-mkfont not availible, grub will not be customized."
fi
else
Center "Grub menu is already customised."
fi
else
Error "Error: Grub is currently not installed."
fi
CVERSION=$DISTREL
LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
#echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
CVERSION="${CVERSION%.*}"
LONGVERSION=$1
else
LONGVERSION=$CVERSION
fi
EVENODD="${DISTREL##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
DTYPE='STANDARD'
DE="MATE"
else
DTYPE='FULL'
DE="KDE"
fi
#APPZ
INSTALLED=$((dpkg-query -l 'vlc' | grep 'ii') 2>/dev/null)
if [[ $ULTIMATEEDITION ]]; then
if [[ $LITE || $GAMERS ]]; then
if ! [[ $INSTALLED ]]; then
Center "Installing $DISTREL Lite / Gamers applications."
apt-get install -y -f udisks gnome-disk-utility gnome-themes-standard broadcom-sta-common ubuntu-restricted-extras p7zip-full alien alsa-oss arj b43-fwcutter bchunk binutils bootchart build-essential bum bzip2 bzr cheese cvs devede dkms faac faad fakeroot ffmpeg2theora flac fslint ftp genisoimage gftp gimp glade gnome-codec-install wavpack preload pidgin-plugin-pack gstreamer-tools debootstrap unrar mppenc gstreamer0.10-plugins-ugly vorbis-tools ksnapshot pidgin-extprefs pidgin-themes gnome-icon-theme-suede icedtea-7-plugin xvid4conf gtkpod id3v2 hardinfo patchutils gnome-icon-theme-gperfection2 nrg2iso qemu python-chm gstreamer0.10-plugins-bad-multiverse soundkonverter qt4-designer dh-buildinfo mp3gain vorbisgain squashfs-tools isomaster qemu-launcher gnome-themes-extras k3b phatch tidy gnupod-tools kvirc pidgin-guifications kdeartwork-emoticons oss-compat qt4-qmake devscripts gtk-recordmydesktop rar phatch-cli cabextract gstreamer0.10-fluendo-mp3 qtcreator wireshark murrine-themes pidgin ubuntu-dev-tools wifi-radar mpg321 gnome-icon-theme-nuovo ntfs-config sysinfo winbind xnest unace htop lintian linux-firmware-nonfree youtube-dl qemuctl qemubuilder ndiswrapper-utils-1.9 broadcom-sta-common k3b-extrathemes libk3b6-extracodecs imagination terminator vlc gdebi samba calibre clementine fonts-unfonts-extra fonts-unfonts-core mediainfo system-config-samba synaptic xscreensaver-gl-extra xscreensaver-data-extra dconf-tools git subversion cmake qdbus gtk3-engine* transmission-gtk firefox hddtemp xbmc libreoffice ubuntu-restricted* firefox libreoffice xbmc
WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
if ! [[ $WINE ]]; then
Center "Installing Wine."
FullBar
apt-get install -f -y wine
fi
WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
if [[ $WINE ]]; then
Download "$ROOTFOLDER/PlayOnLinux_4.2.4.deb"
else
Error "Installation of wine failed, not installing play on linux."
fi
if [[ -f PlayOnLinux_4.2.4.deb ]]; then
echo -e -n "${bldgrn}Installing PlayOnLinux_4.2.4.deb: "
INSTALL=$(dpkg -i PlayOnLinux_4.2.4.deb 2>/dev/null)
if [[ $INSTALL ]]; then
echo -e "${bldgrn}Installed.${txtrst}"
fi
if [[ -f cache && -f PlayOnLinux_4.2.4.deb ]]; then
rm PlayOnLinux_4.2.4.deb
fi
else
Error "Error: File not found: PlayOnLinux_4.2.4.deb"
fi
apt-get install -f -y ubuntu-tweak tovid
# apt-get install -f -y conky-all
Error "Purging Nautilus..."
apt-get remove --purge -y nautilus
else
Center "Ultimate Edition $DISTREL Lite applications already installed."
fi
fi
if ! [[ $LITE || $GAMERS ]]; then
Center "Odd release detected."
Center "Installing a pantheon of applications..."
FullBar
apt-get install -y -f abiword abiword-plugin-grammar abiword-plugin-mathview aisleriot alien alsa-oss arj aspell b43-fwcutter backintime-gnome bc bchunk big-cursor binutils blender bootchart brasero broadcom-sta-common build-essential bum bzip2 bzr cabextract cairo-clock calibre calligra ccd2iso cdparanoia cdrdao cervisia chameleon-cursor-theme checkgmail cheese clamav clamav-freshclam clamtk cmake conky-all crystalcursors cvs dconf-tools dctrl-tools debootstrap devede devscripts dh-buildinfo dkms dragonplayer dvdrip dvdrip-utils dvd-slideshow dvdstyler dvgrab elinks entagged exaile faac faad fakeroot fancontrol ffmpeg2theora file-roller flac fonts-unfonts-core fonts-unfonts-extra fslint f-spot ftp gddrescue gdebi gdesklets gedit genisoimage gftp gimp git glade gnome-codec-install gnome-disk-utility gnome-icon-theme-gperfection2 gnome-icon-theme-nuovo gnome-icon-theme-suede gnome-icon-theme-yasis gnome-themes-extras gnome-themes-standard gnumeric gnupod-tools gphpedit gpp gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer-tools gtkpod gtk-recordmydesktop hardinfo hddtemp htop hydrogen icedtea-7-plugin id3v2 imagination industrialtango-theme inkscape isomaster istanbul k3b k3b-extrathemes k3d kdeartwork-emoticons kdemultimedia-kio-plugins kdenlive kino kolourpaint4 kompare kopete kopete-message-indicator krita krosspython ksnapshot ktorrent kvirc libk3b6-extracodecs lintian linux-firmware-nonfree lives lynx mdf2iso mediainfo medit metacity-themes mkvtoolnix mp3gain mpg321 mppenc murrine-themes ndisgtk ndiswrapper-utils-1.9 nrg2iso ntfs-config oss-compat outdoors-theme oxygen-cursor-theme-extra p7zip p7zip-full perl-tk phatch phatch-cli pidgin pidgin-extprefs pidgin-guifications pidgin-plugin-pack pidgin-sipe pidgin-themes preload python-chm python-lxml python-numpy python-pyexiv2 python-renderpm python-reportbug python-reportlab python-reportlab-accel python-uniconvertor python-wxversion qemu qemubuilder qemuctl qemu-launcher qt4-designer qt4-dev-tools qt4-qmake qtcreator rar recordmydesktop ripoff samba sbackup screenlets shutter sound-juicer soundkonverter squashfs-tools subversion synaptic sysinfo system-config-samba t1-xfree86-nonfree terminator tidy transmission-gtk ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac tvtime ubuntu-dev-tools udisks unace unrar vamps videotrans vlc vorbisgain vorbis-tools wavpack wdiff wifi-radar winbind wireshark xcftools xnest xscreensaver-data-extra xscreensaver-gl-extra xvid4conf yakuake youtube-dl firefox libreoffice xbmc ubuntu-restricted*
apt-get install -f -y ubuntu-tweak tovid tovidgui
Center "Installing Wine."
apt-get install -f -y wine
else
Center "Non-Odd release detected."
fi
fi
if [[ $GAMERS ]]; then
apt-get install -y -f broadcom-sta-common ubuntu-restricted-extras p7zip-full alsa-oss arj b43-fwcutter bzip2 conky-all preload gstreamer-tools unrar gstreamer0.10-plugins-ugly icedtea-7-plugin xvid4conf gstreamer0.10-plugins-bad-multiverse rar gstreamer0.10-fluendo-mp3 ntfs-config ndiswrapper-utils-1.9 broadcom-sta-common terminator vlc gdebi samba system-config-samba gtk3-engine*
Center "Installing Games for Ultimate Edition Gamers $CVERSION"
FullBar
apt-get install -f -y childsplay capitalism billard-gl chromium-bsu megaglest scummvm spring dreamchess warzone2100 supertuxkart defendguin xboard djl scorched3d enigma gnome-games armagetronad gelide alien-arena freeciv-client-sdl pax-britannica
FullBar
Center "Installing Wine."
apt-get install -f -y wine
Error "Purging Nautilus..."
apt-get remove --purge -y nautilus
fi
#Templates = for synaptic etc.
#apt-get install software-center
#INTERNAL DISTRO STAMPING
#Distribution Layout VARS:
#Necessary for Ultimate Edition Software center to function.
INSTALLED=$((dpkg-query -l 'software-center' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing software center."
FullBar
apt-get install -f -y --no-install-recommends software-center
fi
INSTALLED=$((dpkg-query -l 'software-properties-gtk' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing software properties & unhiding it for $DISTREL"
FullBar
apt-get install -y -f software-properties-gtk
if [[ -f /usr/share/applications/software-properties-gtk.desktop ]]; then
sed -i s/NoDisplay=true/NoDisplay=false/ /usr/share/applications/software-properties-gtk.desktop
fi
fi
#INTERNAL DISTRO STAMPING
#INSTALLED=$(dpkg-query -l "ultimate-edition-customizations" | grep 'ii')
#if ! [[ $INSTALLED ]]; then
# Center "Installing customizations for $DISTREL"
# FTG='ultimate-edition-customizations-'$DISTREL'_all.deb'
# wget $ROOTFOLDER/$FTG
# if [[ -f $FTG ]]; then
# dpkg -i --force-overwrite $FTG
# #sudo apt-get -o Dpkg::Options::="--force-overwrite" install $FTG
# rm $FTG
# else
# Error "Error ": File not found $FTG."
# fi
#else
# echo "Ultimate Edition Customizations already installed."
#fi
DISTREL=$(cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p')
PRECUSTOM=""
Center "Setting up Startup applications..."
FullBar
#Startup apps:
#Yarssr
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing Yet Another RSS Reader for $DISTREL"
FullBar
apt-get install -f -y yarssr
else
Center "YARSSR is already installed."
fi
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/yarssr.desktop && $INSTALLED ]]; then
echo -e -n "${bldgrn}Creating startup file for YARSSR: "
echo '[Desktop Entry]' > /etc/xdg/autostart/yarssr.desktop
echo 'Name=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
echo 'Name[en_GB]=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
echo 'Type=Application' >> /etc/xdg/autostart/yarssr.desktop
echo 'Exec=yarssr' >> /etc/xdg/autostart/yarssr.desktop
echo 'Terminal=false' >> /etc/xdg/autostart/yarssr.desktop
echo 'Icon=gnome-do' >> /etc/xdg/autostart/yarssr.desktop
echo 'Comment=Grab News feeds with low resource usage.' >> /etc/xdg/autostart/yarssr.desktop
echo 'Categories=Internet;' >> /etc/xdg/autostart/yarssr.desktop
if [[ -f /etc/xdg/autostart/yarssr.desktop ]]; then
Center "Success."
else
Error "Failure."
fi
else
Center "Startup file for YARSSR already exists."
fi
#Radiotray
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing Radiotray for $DISTREL"
FullBar
apt-get install -f -y radiotray
else
Center "Radiotray is installed."
FullBar
fi
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/radiotray.desktop && $INSTALLED ]]; then
echo -e -n "${bldgrn}Creating startup file for radiotray: "
echo '[Desktop Entry]' > /etc/xdg/autostart/radiotray.desktop
echo 'Name=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Name[en_GB]=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Type=Application' >> /etc/xdg/autostart/radiotray.desktop
echo 'Exec=radiotray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Terminal=false' >> /etc/xdg/autostart/radiotray.desktop
echo 'Icon=radiotray' >> /etc/xdg/autostart/radiotray.desktop
echo 'Comment=Streams Radio stations.' >> /etc/xdg/autostart/radiotray.desktop
echo 'Categories=Internet;' >> /etc/xdg/autostart/radiotray.desktop
if [[ -f /etc/xdg/autostart/radiotray.desktop ]]; then
Center "Success."
else
Error "Failure."
fi
else
Center "Startup file for radiotray already exists."
FullBar
fi
INSTALLED=$((dpkg-query -l 'conky-builder' | grep 'ii') 2>/dev/null)
CONKY='conky-builder-1.23_all.deb'
if ! [[ $INSTALLED ]]; then
if ! [[ -f $CONKY ]]; then
echo -n "Downloading $CONKY:"
Download $ROOTFOLDER/$CONKY
fi
if [[ -s $CONKY ]]; then
dpkg -i $CONKY
if [[ -f cache ]]; then
rm $CONKY
fi
else
Error "Error: File not found $CONKY"
fi
else
Center "Conky Builder previously installed."
FullBar
fi
INSTALLED=$((dpkg-query -l "conky-builder" | grep 'ii') 2>/dev/null)
#Conky Builder
if ! [[ -f /etc/xdg/autostart/cbuilder.desktop && $INSTALLED ]]; then
echo -e -n "${bldgrn}Creating startup file for Conky Builder: "
echo '[Desktop Entry]' > /etc/xdg/autostart/cbuilder.desktop
echo 'Name=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Name[en_GB]=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Type=Application' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Exec=/usr/share/ultimate_edition/conkybuilder.sh' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Terminal=false' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Icon=gnome-do' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Comment=Builds Conky skelaton.' >> /etc/xdg/autostart/cbuilder.desktop
echo 'Categories=System;' >> /etc/xdg/autostart/cbuilder.desktop
if [[ -f /etc/xdg/autostart/cbuilder.desktop ]]; then
Center "Success."
else
Error "Failure."
fi
else
Center "Startup file for conky-builder already exists."
FullBar
fi
# Fusion Icon deliberatly removed from list, broken in mate.
# INSTALLED=$(dpkg-query -l "fusion-icon" | grep 'ii')
# if ! [[ $INSTALLED ]]; then
# Center "Installing Fusion Icon for $DISTREL"
# apt-get install -f -y fusion-icon
# else
# Center "Fusion Icon is installed."
# fi
# #Fusion
# echo '[Desktop Entry]
# Name=Fusion Icon
# Name[en_GB]=Fusion Icon
# Type=Application
# Exec=fusion-icon
# Terminal=false
# Icon=fusion-icon
# Comment=Enables access to compiz and emerald.
# Categories=System;' > /etc/xdg/autostart/fusion.desktop
#Fix for hosed woopsie.
INSTALLED=$((dpkg-query -l "woopsie" | grep 'ii') 2>/dev/null)
if [[ -f /etc/init.d/woopsie && $INSTALLED ]];then
Error "Repairing woopsie issue."
touch /etc/init.d/woopsie
if [[ $INSTALLED ]]; then
apt-get remove --purge -y -f woopsie;
fi
if [[ -f /etc/init.d/woopsie ]]; then
rm /etc/init.d/woopsie
fi
fi
apt-get install -f -y
INSTALLED=$((dpkg-query -l "xfsprogs" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
Center "Installing additional filesystem support."
FullBar
apt-get install -f -y mtools e2fsprogs jfsutils reiserfsprogs xfsprogs mdadm btrfs-tools ntfs-3g mdadm
fi
if [[ -f cache ]]; then
Center "Cleaning up..."
apt-get autoremove -y --force-yes
apt-get clean
apt-get autoclean
else
Center "Not cleaning up old packages, cache switched engaged"
echo -e "We will move them out to keep the cache when we exit chroot."
apt-get autoremove -y --force-yes
fi
Center "Cleaning up configuration files. Please ignore any Errors."
FullBar
SUCCESS=$((dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge) 2>/dev/null)
EXIT
#if [[ -f /var/lib/dbus/machine-id ]]; then
# Center "Removing diversion."
# rm /sbin/initctl
# dpkg-divert --rename --remove /sbin/initctl
# rm /var/lib/dbus/machine-id
#fi
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title :code-cleanup
# description :Bash code cleanup script
# Author :root
# date :10/23/2013
# version :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================
Massive changes are coming, what does not work today WILL work tomorrow, figuratively speaking of course.
theemahn@JackHammer:~$ tmosb --build
ERROR: Invalid switch. Generating valid switches:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.6 Lucid Lynx x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.6-x86-lite.iso
tmosb --build ultimate-edition-2.6-x64-lite.iso
tmosb --build ultimate-edition-2.6-x86-gamers.iso
tmosb --build ultimate-edition-2.6-x64-gamers.iso
tmosb --build ultimate-edition-2.6-x64.iso
tmosb --build ultimate-edition-2.6-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.7 Lucid Lynx x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.7-x86-lite.iso
tmosb --build ultimate-edition-2.7-x64-lite.iso
tmosb --build ultimate-edition-2.7-x86-gamers.iso
tmosb --build ultimate-edition-2.7-x64-gamers.iso
tmosb --build ultimate-edition-2.7-x64.iso
tmosb --build ultimate-edition-2.7-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.4 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
Adjustment of code and your cellphone / tablet comes to life. The potential for the app is once again massive:
theemahn@JackHammer:~$ tmosb --build
ERROR: Invalid switch. Generating valid switches:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.6 Lucid Lynx x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.6-x86-lite.iso
tmosb --build ultimate-edition-2.6-x64-lite.iso
tmosb --build ultimate-edition-2.6-x86-gamers.iso
tmosb --build ultimate-edition-2.6-x64-gamers.iso
tmosb --build ultimate-edition-2.6-x64.iso
tmosb --build ultimate-edition-2.6-x86.iso
tmosb --build ultimate-edition-2.6-armel.iso
tmosb --build ultimate-edition-2.6-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.7 Lucid Lynx x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.7-x86-lite.iso
tmosb --build ultimate-edition-2.7-x64-lite.iso
tmosb --build ultimate-edition-2.7-x86-gamers.iso
tmosb --build ultimate-edition-2.7-x64-gamers.iso
tmosb --build ultimate-edition-2.7-x64.iso
tmosb --build ultimate-edition-2.7-x86.iso
tmosb --build ultimate-edition-2.7-armel.iso
tmosb --build ultimate-edition-2.7-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.4 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.4-x86-lite.iso
tmosb --build ultimate-edition-3.4-x64-lite.iso
tmosb --build ultimate-edition-3.4-x86-gamers.iso
tmosb --build ultimate-edition-3.4-x64-gamers.iso
tmosb --build ultimate-edition-3.4-x64.iso
tmosb --build ultimate-edition-3.4-x86.iso
tmosb --build ultimate-edition-3.4-armel.iso
tmosb --build ultimate-edition-3.4-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.5 Precise Pangolin x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.5-x86-lite.iso
tmosb --build ultimate-edition-3.5-x64-lite.iso
tmosb --build ultimate-edition-3.5-x86-gamers.iso
tmosb --build ultimate-edition-3.5-x64-gamers.iso
tmosb --build ultimate-edition-3.5-x64.iso
tmosb --build ultimate-edition-3.5-x86.iso
tmosb --build ultimate-edition-3.5-armel.iso
tmosb --build ultimate-edition-3.5-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.6 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.6-x86-lite.iso
tmosb --build ultimate-edition-3.6-x64-lite.iso
tmosb --build ultimate-edition-3.6-x86-gamers.iso
tmosb --build ultimate-edition-3.6-x64-gamers.iso
tmosb --build ultimate-edition-3.6-x64.iso
tmosb --build ultimate-edition-3.6-x86.iso
tmosb --build ultimate-edition-3.6-armel.iso
tmosb --build ultimate-edition-3.6-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.7 Quantal Quetzal x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.7-x86-lite.iso
tmosb --build ultimate-edition-3.7-x64-lite.iso
tmosb --build ultimate-edition-3.7-x86-gamers.iso
tmosb --build ultimate-edition-3.7-x64-gamers.iso
tmosb --build ultimate-edition-3.7-x64.iso
tmosb --build ultimate-edition-3.7-x86.iso
tmosb --build ultimate-edition-3.7-armel.iso
tmosb --build ultimate-edition-3.7-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.8 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.8-x86-lite.iso
tmosb --build ultimate-edition-3.8-x64-lite.iso
tmosb --build ultimate-edition-3.8-x86-gamers.iso
tmosb --build ultimate-edition-3.8-x64-gamers.iso
tmosb --build ultimate-edition-3.8-x64.iso
tmosb --build ultimate-edition-3.8-x86.iso
tmosb --build ultimate-edition-3.8-armel.iso
tmosb --build ultimate-edition-3.8-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.9 Raring Ringtail x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.9-x86-lite.iso
tmosb --build ultimate-edition-3.9-x64-lite.iso
tmosb --build ultimate-edition-3.9-x86-gamers.iso
tmosb --build ultimate-edition-3.9-x64-gamers.iso
tmosb --build ultimate-edition-3.9-x64.iso
tmosb --build ultimate-edition-3.9-x86.iso
tmosb --build ultimate-edition-3.9-armel.iso
tmosb --build ultimate-edition-3.9-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.0 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.0-x86-lite.iso
tmosb --build ultimate-edition-4.0-x64-lite.iso
tmosb --build ultimate-edition-4.0-x86-gamers.iso
tmosb --build ultimate-edition-4.0-x64-gamers.iso
tmosb --build ultimate-edition-4.0-x64.iso
tmosb --build ultimate-edition-4.0-x86.iso
tmosb --build ultimate-edition-4.0-armel.iso
tmosb --build ultimate-edition-4.0-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.1 Saucy Salamander x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.1-x86-lite.iso
tmosb --build ultimate-edition-4.1-x64-lite.iso
tmosb --build ultimate-edition-4.1-x86-gamers.iso
tmosb --build ultimate-edition-4.1-x64-gamers.iso
tmosb --build ultimate-edition-4.1-x64.iso
tmosb --build ultimate-edition-4.1-x86.iso
tmosb --build ultimate-edition-4.1-armel.iso
tmosb --build ultimate-edition-4.1-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.2 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.2-x86-lite.iso
tmosb --build ultimate-edition-4.2-x64-lite.iso
tmosb --build ultimate-edition-4.2-x86-gamers.iso
tmosb --build ultimate-edition-4.2-x64-gamers.iso
tmosb --build ultimate-edition-4.2-x64.iso
tmosb --build ultimate-edition-4.2-x86.iso
tmosb --build ultimate-edition-4.2-armel.iso
tmosb --build ultimate-edition-4.2-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.3 Trusty Tahr x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.3-x86-lite.iso
tmosb --build ultimate-edition-4.3-x64-lite.iso
tmosb --build ultimate-edition-4.3-x86-gamers.iso
tmosb --build ultimate-edition-4.3-x64-gamers.iso
tmosb --build ultimate-edition-4.3-x64.iso
tmosb --build ultimate-edition-4.3-x86.iso
tmosb --build ultimate-edition-4.3-armel.iso
tmosb --build ultimate-edition-4.3-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.4 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.4-x86-lite.iso
tmosb --build ultimate-edition-4.4-x64-lite.iso
tmosb --build ultimate-edition-4.4-x86-gamers.iso
tmosb --build ultimate-edition-4.4-x64-gamers.iso
tmosb --build ultimate-edition-4.4-x64.iso
tmosb --build ultimate-edition-4.4-x86.iso
tmosb --build ultimate-edition-4.4-armel.iso
tmosb --build ultimate-edition-4.4-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.5 Utopic Unicorn x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.5-x86-lite.iso
tmosb --build ultimate-edition-4.5-x64-lite.iso
tmosb --build ultimate-edition-4.5-x86-gamers.iso
tmosb --build ultimate-edition-4.5-x64-gamers.iso
tmosb --build ultimate-edition-4.5-x64.iso
tmosb --build ultimate-edition-4.5-x86.iso
tmosb --build ultimate-edition-4.5-armel.iso
tmosb --build ultimate-edition-4.5-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.04 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.04-x86.iso
tmosb --build ubuntu-desktop-12.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.10 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.10-x86.iso
tmosb --build ubuntu-desktop-12.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.04 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.04-x86.iso
tmosb --build ubuntu-desktop-13.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.10 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.10-x86.iso
tmosb --build ubuntu-desktop-13.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.04 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.04-x86.iso
tmosb --build ubuntu-desktop-14.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.10 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.10-x86.iso
tmosb --build ubuntu-desktop-14.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn O/S Builder (tmosb) 1.8.9, 08/26/2014 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <[email protected]>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
theemahn@JackHammer:~$
The Anti-Malware Inititive
If you don't know what zeitgeist is I suggest a read of a few articles:
http://wiki.zeitgeist-project.com/Getti ... _Zeitgeist
Don't be fooled, Canonical The company behind Ubuntu, this includes Mint etc. as they are now in cohoots with Ubuntu as well uses the data it collects on users I'm sure in various forms. One such tragedy is to send you relevant ads and direct you to amazon etc. based on the data collected. I understand they want to make money, spying on their users is not the way to go about it. Software is in production to ensure that does not happen to Ultimate Edition users:
- Code: Select all
declare -a MALWARE=('zeitgeist');
#Smash spyware, we want our users free to do as they like w/o being spied on...
function AntiMalware () {
# Begin cycling array - allows for future introduction of other nasty programs
for EACH in ${MALWARE[@]}
do
# Check for installation of spyware one program at a time.
INSTALLED=$((dpkg-query -l $EACH | grep 'ii')2>/dev/null)
if [[ $INSTALLED ]]; then
# Thusly inform the user there is spyware in thier system.
Center "MALWARE detected: $EACH purging $EACH from the system."
# Scrap it from thier system.
apt-get remove --purge -y -f $EACH
fi
done
}
While the above code does beautifully in tmgrub a subprogram of tmosb, will render any Unity based O/S worthless. I may have to take a more stringent approach, I do not want our users to have to live w/o Unity because of a simple spyware program which Unity "REQUIRES". I declared an array in the above code to allow me to expand it's detection and removal of additional software should they so develop additional nastiness
I hope I got my point across. Few adjustments in software make large changes in the overall picture. Many doors will soon open... Unpubished currently. I wont allow a programmer to come in after analysing my code to tell me I should consoidate code. Encapsulate, Center functions etc. is in all programs. I hate to say this I hate the C language, sould I #include the popular functions / software?
To be honest would accelerate my development and avoid some errors. Please tell me why I did not do so. Hard to replace a job that pays that well, a programmer makes squat compared to that of a Operating System Architect. I will replace that position, even if I have to load software onto a server (most likely locally) to fix problems before they are introduced into your system. I may have to setup a build server with repostorm on it.
Earlier when I said a more stringent approach, I'm talking downloading the source for Zeitgeist and ripping out all reporting to Canonical, so fuctionality remains. Damn, I love open source. I could also aproach it from another perspective and build an empty binary that does absolutely nothing, debianize / repostorm it and inject it into the Operating System. Now, I love being a programmer
I could drop a 100 links of people begging to get rid of Zeitgeist, I won't waste my time or others. I'm not here to question things, I am here to fix things. If its's not me doing so, it will be software doing so for me. Now that I really think about this... It is not my place to say, but I'm betting the entire OZ Unity hopes I resolve the issue. Thier O/S is plauged by this very issue across the board, not thier fault. Shysty individuals ruin everything down the chain, no consideration.
Article progression ~ 50%