Arch Linux is rock solid although last update broke Virtualbox

I installed Arch Linux UEFI on my main workstation on 04 November 2015 at ~03:10 hrs. I got my trusted lieutenant, Xfce, installed immediately. I used this recipe as a guide.

Now, Linux does not tell us the installation time the way Windows does with the systeminfo command. 

Windows systeminfo command output

Windows systeminfo command output

How, then, do I know when I installed Arch Linux ?

sudo tune2fs -l /dev/sda2 | grep 'Filesystem created:'

The result

Filesystem created:       Wed Nov  4 03:10:39 2015

tune2fs allows the system administrator to adjust various tunable filesystem parameters on Linux ext2, ext3, or ext4 filesystems.

Prior to that I had allowed openSUSE Tumbleweed to rule my workstation. I was very happy for quite a long time. However, stability tumbled away and I was left with an OS that froze every now and then. I believe it was all due to Plasma 5. I had the same experience with it on Arch Linux too. I installed it because I was bored with Xfce.

I had never faced an update issue in the past almost one year. Yesterday’s update, however, broke Virtualbox. A very minor thing. This breakage notwithstanding, I think, this level of stability for a rolling-release is just unbelievable. This is something Corporates with unending supply of money and resources aim to achieve.

BROKEN VIRTUALBOX

Started Virtualbox after the update and tried to launch my Windows 7 virtual machine. The update had nuked Virtualbox and it cried

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing

‘/sbin/vboxconfig’

as root.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) – The support driver is not installed. On linux, open returned ENOENT.

I did what the message asked me to do:

sudo /sbin/vboxconfig

This is what I got in return

sudo: /sbin/vboxconfig: command not found

I did the following in /sbin directory:

ls | grep vbox

The result was

rcvboxdrv
vboxballoonctrl
vboxheadless
vboxmanage
vboxreload
vboxsdl
vboxwebsrv

Now, where is /sbin/vboxconfig?

I purged Virtualbox and installed again. No change in results.

Since the message said that it was the loading of vboxdrv that had failed, I thought of loading the driver myself and it worked 🙂

sudo modeprobe vboxdrv

ROLE OF DKMS

dkms is supposed to do the dirty work of updating modules for me. dkms has been extremely reliable all these months. Never had a trouble. On Arch Linux you need to install Virtualbox dkms package. Let me query my packages and show you:

sudo pacman -Q | grep virtualbox

The result of the query is

virtualbox 5.1.6-1
virtualbox-guest-iso 5.1.6-1
virtualbox-host-dkms 5.1.6-1

 CONCLUSION

My Arch Linux experience has been extraordinary. I trust it so much that I have it installed on my main workstation. It may break some day down the line, but I will not hesitate to spend a couple of hours to install it back and get things back on track.

Opera browser in Arch Linux: A very mature and professional browser

I was surprised, quite pleasantly, to read that Opera browser is a pioneer in browser technology as per Wikipedia

Opera has been noted for originating many features later adopted by other web browsers. A prominent example is Speed Dial.

I use Fastmail (in addition to Zoho Mail) which was acquired by Opera some years ago. I like it a lot. It is a very polished service. I, thus, decided to take Opera browser for a spin. I was expecting the same maturity and quality I was accustomed to in Fastmail.

GETTING OPERA AND FLASH PLUG-IN

I have been running Arch Linux as my main workstation OS for the past three months. I decided to move to Arch from openSUSE Tumbleweed due to back-to-back breakages I faced. I had a very positive experience with it for around ten months before I started spending more time fixing issues than getting work done. I wanted to stick with a rolling-release distro and  got Arch installed with UEFI enabled.

Now, I had to find Opera in Arch repos. The mandatory Arch Wiki reading was performed, the terminal was invoked and the command was issued

sudo pacman -S opera

This got me the Opera browser version 34

Opera 34 (based on Chromium 47) for Mac, Windows, and Linux and Android is out! To find out what’s new for users, see our Desktop and Mobile blogs. Here’s what it means for web developers.

Yes, Opera is based on Chromium. Great! they did not re-invent the wheel 🙂

I could browse, but flash content was not available. The following point from the Arch Wiki is to be kept in mind

Opera no longer supports the Netscape plugin API (NPAPI), so chromium-pepper-flashAUR should be used instead of flashplugin. Make sure the plugin is enabled in opera://plugins.

The chromium-pepper-flash is an AUR entity. Thus, some extra magic is required. The old school manual way of getting AUR packages:

  1. Get the required tar.gz package manually or use wget, curl etc.
  2. Extract the tar.gz package in some directory owned by the current user. In the current case, I used a sub-directory in my home directory
    $ tar xvzf chromium-pepper-flash.tar.gz
  3. Use makepkg to build the package. In the current context
    $ cd chromium-pepper-flash
    $ makepkg
  4. If build fails due to missing dependencies do this
    $ makepkg -s
  5. If the build is successful, a pkg.tar.xz will be generated. This is the package that can be installed using pacman. In the present case
    sudo pacman -S chromium-pepper-flash-1:20.0.0.228-1-x86_64.pkg.tar.xz

This makepkg build process does not require administrator\root privileges. Also, it is important to remember the packages installed via AUR are not officially supported by Arch

DISCLAIMER: AUR packages are user produced content. Any use of the provided files is at your own risk.

There are a few helper utilities that can automate the process. However, they do not appeal to me.

THE OPERA EXPERIENCE

I have been using Opera for a week and can say that it is a very polished, mature browser that oozes quality. Everything about it is professional. It launches quickly, renders pages fast, has all important extensions or plug-ins that I need and can be configured.

DuckDuckGo search-engine was already installed, but Google Search was marked as default. I swapped the latter with the former. I also got StartPage search-engine installed. Instructions to add StartPage to Opera can be found here. I could not find a way to get rid of certain default search-engines I do not wish to use or see in the list.

I use DuckDuckGo for almost all of my search needs. Only sometimes, I invoke StartPage.

Since we cannot delete (I have not found a way yet) default search engines, and can install more, we end up with a lot of search engines at our disposal. There is a nifty feature in Opera (inherited from Chromium) wherein every search engine has a keyword associated with it and this keyword can be used in the search text-box (the address bar in Opera) to tell the browser the search engine to invoke. All new search engines that the user adds also need user-defined keywords. The figure below shows the keywords associated with search enignes in the black rectangle. The figure also shows the details one need to fill in order to add a new search engine.

OperaBrowser_SearchEngines

Search Engine settings in Opera

For example,

  • g how to install arch linux will invoke Google search engine and the string “how to install arch linux” will be used to perform the search.
  • y how to install arch linux will invoke Yahoo search engine and the string “how to install arch linux” will be used to perform the search.
  • sp how to install arch linux will invoke StartPage search engine and the string “how to install arch linux” will be used to perform the search.

I also installed the Garamond Font and set it as the the default font on Opera. This font is renowned for its readability.

wget -P ~/.fonts -A ttf -r -np -nd http://garamond.org/urw/
mkfontdir ~/.fonts && xset fp rehash

Firefox has a very useful MAFF plug-in that can

  • Open web pages saved with Internet Explorer or other browsers (MHT)
  • Save many tabs, video and audio reliably, in a single ZIP file (MAFF)
  • Return to the original site you saved a page from, and more!

I have found this very useful and there was no alternative on Opera. I, then, started hunting for an extension that could save webpages as high quality PDF files. I did not find any with good ratings. Eventually, I did something I should have done in the beginning. I hit Ctrl + P. The following popped-up

OperaBrowser_SaveAsPDF

Opera’s own Save as PDF (different from system’s print to PDF dialog)

When compared to the Print using system dialog… (Shift + Ctrl + P),  marked in the image, there is one advantage in the Opera’s way of saving PDFs – the background graphics of the webpage can be added to the PDF (via Background graphics option). This creates very beautiful and close to the original PDFs. This is not possible in via the system dialog. The system dialog, however, has more number of PDF layouts available when compared to Opera.

CONCLUSION

I am going to stick with Opera. It has all features I want, is fast, clean and mature. I was looking for a Firefox replacement and I seem have found it.

Bitnami LAMP stack and WordPress module – A portable Content Management System

This article is primarily for Linux users. If you are a Windows user, worry not. Keep reading and thou shalt not be disappointed. 🙂

I had written an article, sometime back, on how to install WordPress on Arch Linux. My primary aim was (still is) to use WordPress as a personal desktop Content Management System (CMS). On Linux, WordPress needs the LAMP stack to work.

LAMP_software_bundle.svg

LAMP stack diagram by Shmuel Csaba Otto Traian [CC BY-SA 3.0] via Wikimedia Commons

The installation of LAMP stack + WordPress on Arch was painful and one needed to take care of a lot of things. There were many config files to tweak. A mistake here or there could open up the machine for cyber attacks. Maintaining such a system is a very taxing business. Also, such a system is completely bound to a specific machine. If you want to work on your workstation, you need the CMS installed on it. You cannot take your CMS with you unless you have it installed on your laptop. There is no concept of portability in it.

In an ideal world, the LAMP stack and WordPress would be installed on a USB hard drive that can be plugged in on any machine and accessed seamlessly. Availability is the key in today’s world and portability is a highly desired quality.

Why would anyone invest so much time and effort to install and maintain a CMS when portable and “available everywhere” applications like Evernote and OneNote are so freely available?
One of the important issues is that there is no Linux client for Evernote or OneNote. These services can be accessed via web using a browser as client on Linux, but it is just not the same deal as a native client. This is a deal-breaker for people whose lives, in whatever way, revolves around GNU-Linux. Most importantly for me, I just do not trust them.

The pain of maintaining WordPress on Arch Linux made me look for alternatives. I used CherryTree, a hierarchical note taking application by Giuseppe Penone (aka giuspen), for a while and was mightily impressed. This application has all the basic features and new features are being added. Written in Python, the app runs on Windows and Linux. I wished to contribute code to this app, but got too busy. I can recommend CherryTree to anybody whose needs are basic. Give it a try, you will love it.

cherrytree-main_window_code

CherryTree is good, but my CMS needs are very complex. I had to find a way to get WordPress working minus the installation and maintenance troubles. I am just too busy and want things to just work.

I want only the baby, not the labour pain


BITNAMI LAMP STACK AND WORDPRESS MODULE INSTALLERS

I knew about the WAMPServer. I had deployed it at my workplace to prove the benefits of a CMS. I always wished there was a similar package for Linux. I found XAMPP during one of my regular tool searches.

XAMPP is a completely free, easy to install Apache distribution containing MySQL, PHP, and Perl. The XAMPP open source package has been set up to be incredibly easy to install and to use.

I started exploring XAMPP website and found a link to Bitnami. Bitnami has installers for a large number of CMSs, WordPress included. Bitnami has its own LAMP stack installer apart from having WAMP and MAMP stack installers.

Bitnami LAMP Stack provides a complete, fully-integrated and ready to run LAMP development environment.

Bitnami provides Virtual Machines with LAMP pre-installed

Bitnami virtual machine images contain a minimal Linux operating system and a fully configured Bitnami application stack. Running virtual machine images requires a hypervisor such as VMware or VirtualBox, so it is recommended for system administrators and advanced users.

Bitnami also has cloud Images for a very flexible developer workflow

Bitnami Cloud Images extend stack appliances to run in a cloud computing environment. You can run Bitnami applications on a pay-as-you-go basis, programmatically starting and stopping them. Bitnami Cloud Images are currently available for Amazon EC2, Microsoft Azure, and Google Cloud Platform, with support for additional cloud environments planned for the future.


HOW TO USE BITNAMI INSTALLERS

Bitnami LAMP stack and WordPress module can be installed in a few minutes. The process is so easy that a chimp could do it. I kid you not. I have added a GIF below to demonstrate the insanely simple installation.

There are, however, a few subtle points that I would like to bring to light before we watch the GIF:

  • Bitnami LAMP stack + WordPress module (WP CMS, henceforth) installation is completely self-contained. There is no external dependency.
  • The WP CMS is, by default, configured for localhost access ONLY. This is a security measure that the installers employ. This is a boon for me. I do not have to fear accidentally opening up my machine’s ports for attacks. I do not need my WP CMS to have any connection to or from the internet. The articles that I add to WP CMS will surely have links and they will work when I have internet access, but that is completely different from opening ports inadvertently (this explanation was for beginners).
  • Multiple instances of WP CMS can be installed on the same machine, separated only by the directories they are installed in.
  • A very interesting consequence of the above facts is that the WP CMS can be installed on an external USB hard drive, thereby allowing the user full portability. For example, I installed the WP CMS on a USB hard drive, as shown in the GIF, from my workstation running openSUSE 13.2. I took the same USB hard drive and plugged it into my laptop running Arch Linux and the WP CMS worked without any issue. The goal of portability has been achieved.
    “Available everywhere” services make life easier, but privacy is tossed into the dumpster. With the current WP CMS solution, the goal of availability has still eluded us. However, if we are willing to carry our USB hard drive with us our problem is solved. A small sacrifice in comfort to safeguard our privacy.
  • Backing up the WP CMS is also very easy. Just backup the whole directory, if you are not really space-challenged. Else, WordPress alone can be completely backed up using WordPress guide or by installing backup plugins.
  • Upgrading WP CMS is also straightforward.

BitnamiLAMP&WordpressInstallation
POST-INSTALLATION STEPS

  • Get a good WordPress theme. I chose Customizr.
    A good theme can liven up the experience of using the WP CMS.
  • Get a good backup plugin if you do not want to backup manually. I chose Updraftplus.
    Backup is not optional. It is mandatory. **Do not skip this**. In fact, you should backup everything, not just WP CMS. Have multiple copies of backup in multiple media at multiple locations.
  • Delete all default plugins that WordPress comes with. We do not need them. We are not running a website, remember? Why would we need plugins that make our “website” faster etc.?
  • Now, start using… 🙂

openSUSE 13.2: Day-1 troubles and troubleshooting – VLC, wireless etcetera

Spent a considerable amount of time yesterday, configuring the system to my liking. Installed Virtualbox and VirtualBox Extension Pack to run the various virtual machines I have. Installed VLC hoping to watch a couple of movies during the weekend. Had a wonderful time installing wireless Broadcom BCM43228 driver.

Wireless troubled me again. I have not automated the loading of the wl.ko driver which I compiled yesterday using Broadcom sources. What I do is:

sudo modprobe lib80211
sudo modprobe cfg80211
cd <Path where the wl.ko driver is>
sudo insmod ./wl.ko

I tried loading the wl.ko driver using modprobe but wireless did not work. Do not know why. Need to learn more about it.
Well, wireless worked once the drivers were loaded. But today wireless stopped working. I was not able to connect at all. The NetworkManager notifier provided a list of available connections. So, wireless driver was fine. I removed the wireless connection from the NetworkManager UI and added it again by filling all required values. Wireless is back in business.

With wireless troubles decimated, I tried to launch VLC. No matter what file I chose, I was greeted by errors only. The codecs were missing. So, I did the following:

sudo zypper in vlc-codecs

Now VLC has got rid of its dementia. Maybe, I will go ahead and watch a couple of movies.

openSUSE 13.2 and Broadcom BCM43228 wireless: Driver woes in the Linux world

openSUSE 13.2 arrived in the beginning of November 2014. I was a bit too busy to try it. I found some free time yesterday and utilized it to install openSUSE on my workstation.

My workstation is a Dell Optiplex 9020 with i7-4770 CPU, 32 GB RAM and Broadcom BCM43228 based Dell 1540 wireless module. I managed to avoid the Microsoft Windows tax because Dell was savvy enough to ship me a machine with Linux (Ubuntu) preinstalled.

The driver for the said wireless module was already available in Ubuntu. So, when I received the machine everything was working like clockwork. I wanted to remove Ubuntu but I also wanted to avoid hunting down the drivers in the World Wide Web. Disappointingly, openSUSE did not have the driver binary in its repositories. I tried Manjaro as it was the only other distro that boasted of precompiled binaries for Broadcom BCM43228. Manjaro did not disappoint me.

For some reason, I like openSUSE more than all the other distros. I really do not know why. So, I decided to do whatever it would take to get openSUSE working on my workstation.

I searched and found that Broadcom provides the source code for the following modules:

BCM4311-, BCM4312-, BCM4313-, BCM4321-, BCM4322-, BCM43224-, and BCM43225-, BCM43227- and BCM43228-based hardware

Make sure that your device is in the above list. To detect the device ID, do the following:

sudo lspci | grep "Broad"
 04:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n

To build any kernel module, the following packages are necessary. I had downloaded them earlier to compile the vbox driver for Virtualbox:

sudo zypper in kernel-devel gcc make

I downloaded the 64-bit version of the source. The README.txt (available for download on the Broadcom website) is an utterly important document. Read that carefully.

I started the compilation and found some errors:

<path to the extracted source>/src/wl/sys/wl_cfg80211_hybrid.c:2074:4: error: too few arguments to function ‘cfg80211_ibss_joined’ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);

There is a solution to this problem. Look for the following file in the extracted Broadcom source code:

<path to the extracted source>src/wl/sys/wl_cfg80211_hybrid.c

Now, look for the following line:


cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);

Replace the above line with the following piece of code:


#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, &wl->conf->channel, GFP_KERNEL);
#else
cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
#endif

Evidently, the Kernel API has changed and the code is not compatible with it. Compile again.

It worked fine for me and I had a driver ready to be deployed in quick time.

I just hope Broadcom fixes this issue and releases the updated code.

Further Reading:

How to load the wl.ko driver

Text boot : Getting rid of bootsplash/Plymouth in Manjaro or Arch Linux

I like seeing my kernel spewing messages on my terminal when I boot my PC. I like the transparency, the openness. Having kernel messages visible can also help in understanding certain boot issues.

This is how to get a completely GUI free/bootsplash free/plymouth free, fully terminal or text based boot process on Manjaro/Arch Linux:

Open /etc/default/grub:

sudo nano /etc/default/grub

nano is the editor I chose. Other editors can be used provided they are opened with root privileges.

The /etc/default/grub file has many lines but only the below one is to be modified to attain our objective:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

The above line needs to be transformed to the following:

GRUB_CMDLINE_LINUX_DEFAULT="quiet text"

We are not done yet. Do the following:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Now reboot and rejoice!

The terminal resolution might be a bit of a concern for those with an eye for details. If that is the case, find the following lines in /etc/default/grub:

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=480x480

Change the value of GRUB_GFXMODE to the resolution of your liking:

GRUB_GFXMODE=1920x1200

Done!

Further Research:

Kernel parameters

Accessing USB devices from Virtualbox Windows guest on Linux host

This is one issue that had troubled me for long but was not important enough for me to put any effort into soving it. All this changed when I had to upgrade my BIOS on my Dell Optiplex 9020 machine. The problems are:

  • One cannot upgrade BIOS from a Linux machine, a Windows installation is a must. At least, a DOS bootable CD, USB Flash drive is needed
  • I run Manjaro on this machine and installing Windows just for the BIOS upgrade is just too much

So, I had to find a way to access USB devices on my Windows VM guest. I have never been able to do that. Primarily because, I never tried. This time I had to. So here is what is needed:

  1. Go to the Virtualbox Downloads page
  2. If the Virtualbox installed on the system is not the latest move to the Virtualbox Old Builds section
  3. Download the Extension PackVirtualboxWebsite_ExtensionPackLink
  4. Hit the link and the Firefox Save File Dialog pops up with Virtualbox selected as the app to open the file with. Just say OK:Firefox_SaveFileDialog_VirtualboxExtensionPack
  5. Virtualbox will try to install the Extension Pack. It will pop up the following EULA. Scroll to the bottom and the I Agree and I Disagree buttons will get enabled. You know what to choose:Virtualbox_ExtensionPack_EULA
  6. If all goes well, Virtualbox will throw this at you:Virtualbox_ExtensionPack_InstalledSuccessfully
  7. It is time for some radical changes in the system. Bring to life a terminal emulator and feed it the following command to add the desired user to the vboxusers group:
     usermod -a G vboxusers <User_Name>
  8. Now move to the settings of the Virtualbox Windows guest and click the USB settings. Make sure that you click on all checkboxes and finally the settings dialog looks like this:Virtualbox_USBSettings_AddFilter
  9. Make sure that the device that you want to access in the Windows guest is NOT mounted on the Linux host. If it is, unmount it. Then, click on the button with the USB icon which has the green colored plus (+) sign. The above picture shows the tooltip for the said button. Click on that and all available USB devices on the machine will be listed. Choose the one you want to add a filter for. Adding a filter will make the device available on the Windows guest. This makes the device completely inaccessible on the host. Every time you bootstrap the Windows guest, the filter will make sure that the device is available in the guest.
  10. Some driver installations will happen in the guest once the filter is added. A restart of the guest and host would be good for the society.

 

 

 

 

Unified Extensible Firmware Interface (UEFI) and Logical Volume Manager (LVM) adventures: How upgrading to UEFI resulted in this epic post

This is a work-in-progress…

It all started when I found my backup plan lacking in all ways imaginable. To be really honest, I never had one. This is not because I am digitally retarded or lazy (this is debatable) or lack resources. I did not have much to back up. Yes, in this age where digital asset accumulation is natural and people tend to have terabytes of data without even realizing, I had nothing worth a planned back-up:

  • The important documents, that are very few in number, have been sitting cosily in my mails
  • I, somehow, relied only on text based learning materials which were available online

In the past few months, I have seen myself learning a lot using videos – Mathematics, Computer Science, Arts etcetera. This, inevitably, means a growing digital wealth. One fine day, last week, I found that my 1 Tera Byte (TB) disk was more than 50% full. That is when I realized the folly in my ways.

I purchased a couple of the Transcend 2 TB Hard Drives:

I immediately backed-up all my digital belongings. With all my data safe, my brain started its creative endeavours. What was unthinkable became a real possibility now. Suddenly it occured to me:

  • That I was using Legacy Boot Options on my Dell Optiplex 9020 machine when UEFI was very much waiting for me
  • That the BIOS my machine was shipped with was version A01 while A07 was available on Dell’s website
  • That I was using the old partition scheme on my machine and had never experimented with Logical Volume Manager (LVM)
  • That Manjaro installation had some troubles as the GUI windows weren’t refreshing properly and making me mad (this was a minor inconvinience but humans are just insatiable)

Some History

When I installed Manjaro in the first week of October 2013, there was no UEFI or LVM support in the distro. They added these to the distro only in December 2013. I had very little idea as to how UEFI and LVM actually work and was not bothered to learn because I was already burdened with a lot of stuff. With no knowledge to bank on, using advanced features would have been foolish. So, I decided not to play with them.

Unified Extensible Firmware Interface Upgrade

This is quite easy. Just hit F2 after powering on the machine and the BIOS menu appears. Change the boot option to UEFI. Make sure that the Secure Boot option is not touhed at all. But, I knew that my BIOS version was very old and had to be upgraded compulsarily. This is a problem when you are on the Linux distro. This has nothing to do with Linux. This issue exists due to the attitude of large corporations towards FOSS.This is what Dells’s website instructs:

Installation instructions
BIOS Update Executable for Windows/DOS
Download
1. Click Download File to download the file.
2. When the File Download window appears, click Save to save the file to your hard drive.

Run the BIOS update utility from Windows environment
1. Browse to the location where you downloaded the file and double-click the new file.
2. Windows System will auto restart and update BIOS while system startup screen.
3. After BIOS update finished, system will auto reboot to take effect.

Run the BIOS update utility from DOS environment if Legacy Boot Mode(Non-Windows users).
1. Copy the downloaded file to a bootable DOS USB key.
2. Power on the system, then Press F12 key and Select "USB Storage Device" and Boot to DOS prompt.
3. Run the file by typing copied file name where the executable is located. 
4. DOS System will auto restart and update BIOS while system startup screen. 
5. After BIOS update finished, system will auto reboot to take effect.

Run the BIOS update utility from DOS environment if UEFI boot mode with Load Legacy Option disabled (Non-Windows users)
1. Copy the downloaded file to a bootable DOS USB key.
2. Power on the system, then go to BIOS Setup by pressing F2 and go to "General-Boot Sequence - Boot List Option".
3. Change "UEFI" to "Legacy" of Boot List Option.
4. Click "Apply","Exit" to save changes and reboot system.
5. Press F12, then Select "USB Storage Device" and Boot to DOS prompt.
6. Run the file by typing copied file name where the executable is located. 
7. DOS system will auto restart and update BIOS while system startup screen.
8. After BIOS update finished, system will auto reboot.
9. Go to BIOS Setup by pressing F2 and go to "General > Boot Sequence > Boot List Option".
10. Change "Legacy" to "UEFI" Boot Option.
11. Go to "Exit > Exit Save Changes" and reboot system.
--------------------------------------------------------------------------------
Note 1: You will need to provide a bootable DOS USB key. This executable file does not createthe DOS system files.
Note 2: Please make sure you suspend BitLocker encryption before updating BIOS on a BitLocker enabled system. 
If you don't enable BitLocker on your system you can ignore it.

You need Windows/DOS to flash the new version of the BIOS. Linux will NOT work. I had some choices, though:

  • Install Windows temporarily on the machine and flash the BIOS. Then, reinstall Manjaro. What happens if another update arrives in the near future? Will I be willing to install Windows temporarily and suffer the consequential pain? NO.
  • Use Virtualbox + Windows guest + Rufus or UNetBootin utility in Windows guest to create a bootable FreeDOS. This seems painless and an ideal way to handle the scenario.

The second option might not be clear to many. What is FreeDOS, some may ask. For that let us first see what DOS is:

DOS/dɒs/, short for Disk Operating System,[1] is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 including the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.

Related systems include MS-DOS, PC DOS, DR-DOS, FreeDOS, ROM-DOS, and PTS-DOS.

So, when Microsoft decided to kill DOS, many users were left in the lurch. FreeDOS was an attempt to help those users:

FreeDOS is a free DOS-compatible operating system that can be used to play games, run legacy software, or support embedded systems. FreeDOS is basically like the old MS-DOS, but better! For example, FreeDOS lets you access FAT32 file systems and use large disk support (LBA) — a feature not available in MS-DOS, and only included in Windows 95 and newer.

I knew I had to go the FreeDOS way and use Virtualbox to get a bootable FreeDOS USB. I decided to install latest Manjaro with UEFI enabled and then upgrading the BIOS.

So, I downloaded the latest Manjaro XFCE  edition with full support for UEFI and LVM. Then I did the following:

  • Used the dd command and created a bootable USB flash drive for Manjaro installation
  • Changed the Boot option from Legacy to UEFI in my BIOS settings (hit F2 after powering on the machine)
  • Started the Manjaro installation procedure

Manjaro Graphical Installation With UEFI and LVM Features

Manjaro’s graphical installer is a very beautifully crafted software. It resembles Ubuntu’s installer and is very practical and intuitive. The Installation type dialog had the options for an LVM partitioning in the automatic mode:

ManjaroGraphicalInstaller_InstallationType_LVM

and seemingly the LVM option is not available in the advanced mode:

ManjaroGraphicalInstaller_AdvancedInstallationMode

So, I chose automatic mode and let Manjaro installer choose the best partition scheme for me. There seems to be no way to modify the partition scheme to LVM in the automatic mode. This is limiting and would surely be addressed.

The lsblk command spits out this:

NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0 931.5G  0 disk  
├─sda1                 8:1    0     2M  0 part  
├─sda2                 8:2    0   100M  0 part  /boot/efi
├─sda3                 8:3    0   256M  0 part  /boot
└─sda4                 8:4    0 931.2G  0 part  
  └─cryptManjaro     254:0    0 931.2G  0 crypt 
    ├─ManjaroVG-ManjaroRoot
                     254:1    0  29.3G  0 lvm   /
    ├─ManjaroVG-ManjaroHome
                     254:2    0 886.2G  0 lvm   /home
    └─ManjaroVG-ManjaroSwap
                     254:3    0  15.7G  0 lvm   [SWAP]

Evidently, my 1 TB hard drive (sda) was partitioned automatically into four partitions (sda1, sda2, sda3, sda4). The sda4 is used as an LVM that hosts the logical /, /home and SWAP partitions. I had chosen a separate partition for /home in the Installation type dialog’s automatic option. And yes, the LVM is LUKS encrypted:

GnomeDiskUtility_DiskLayout

Now, what exactly is LVM? This needs to be answered so as to understand whatever has been described in this section:

The full explanation of the concept would be quite a task. Thus, I resort to copying the important facts copied from the Ubuntu Wiki. It would be really benefitial for the reader to also read the following pages to understand LVM properly:

What is LVM?
LVM stands for Logical Volume Management. It is a system of managing logical volumes, or filesystems, that is much more advanced and flexible than the traditional method of partitioning a disk into one or more segments and formatting that partition with a filesystem.
Why use LVM?
For a long time I wondered why anyone would want to use LVM when you can use gparted to resize and move partitions just fine. The answer is that lvm can do these things better, and some nifty new things that you just can’t do otherwise. I will explain several tasks that lvm can do and why it does so better than other tools, then how to do them. First you should understand the basics of lvm.
The Basics
There are 3 concepts that LVM manages:
Volume Groups
Physical Volumes
Logical Volumes
A Volume Group is a named collection of physical and logical volumes. Typical systems only need one Volume Group to contain all of the physical and logical volumes on the system, and I like to name mine after the name of the machine. Physical Volumes correspond to disks; they are block devices that provide the space to store logical volumes. Logical volumes correspond to partitions: they hold a filesystem. Unlike partitions though, logical volumes get names rather than numbers, they can span across multiple disks, and do not have to be physically contiguous.

LVMComponents

Copied from http://www.markus-gattol.name/ws/lvm.html, Markus Gattol’s blog

[The five points below have been copied from the Ubuntu Wiki without modifications]

The Specifics
One of the biggest advantages LVM has is that most operations can be done on the fly, while the system is running. Most operations that you can do with gparted require that the partitions you are trying to manipulate are not in use at the time, so you have to boot from the livecd to perform them. You also often run into the limits of the msdos partition table format with gparted, including only 4 primary partitions, and all logical partitions must be contained within one contiguous extended partition.
Resizing Partitions
With gparted you can expand and shrink partitions, but only if they are not in use. LVM can expand a partition while it is mounted, if the filesystem used on it also supports that ( like the usual ext3/4 ). When expanding a partition, gparted can only expand it into adjacent free space, but LVM can use free space anywhere in the Volume Group, even on another disk. When using gparted, this restriction often means that you must move other partitions around to make space to expand one, which is a very time consuming process that can result in massive data loss if it fails or is interrupted ( power loss ).
Moving Partitions
Moving partitions with gparted is usually only necessary in the first place because of the requirement that partitions be physically contiguous, so you probably won’t ever need to do this with LVM. If you do, unlike gparted, LVM can move a partition while it is in use, and will not corrupt your data if it is interrupted. In the event that your system crashes or loses power during the move, you can simply restart it after rebooting and it will finish normally. When I got my SSD drive, I simply plugged it in, booted it up, and asked lvm to move my running root filesystem to the new drive in the background while I continued working. Another reason you might want to move is to replace an old disk with a new, larger one. You can migrate the system to the new disk while using it, and then remove the old one later.
Many Partitions
If you like to test various Linux distributions, or just different version of Ubuntu, or both, you can quickly end up with quite a few partitions. With conventional msdos partitions, this becomes problematic due to its limitations. With LVM you can create as many Logical Volumes as you wish, and it is usually quite easy since you usually have plenty of free space left. Usually people allocate the entire drive to one partition when they first install, but since extending a partition is so easy with LVM, there is no reason to do this. It is better to allocate only what you think you will need, and leave the rest of the space free for future use. If you end up running out of the initial allocation, adding more space to that volume is just one command that completes immediately while the system is running normally.
Snapshots
This is something you simply can not do without LVM. It allows you freeze an existing Logical Volume in time, at any moment, even while the system is running. You can continue to use the original volume normally, but the snapshot volume appears to be an image of the original, frozen in time at the moment you created it. You can use this to get a consistent filesystem image to back up, without shutting down the system. You can also use it to save the state of the system, so that you can later return to that state if you mess things up. You can even mount the snapshot volume and make changes to it, without affecting the original.

Manjaro Post-Installation

The installtion procedure of Manjaro is like most other established distros – as Zohan would put it, “Silky Smooth”. Once I was done with it, I was focussed on getting my machine updated. I fired up pacman and well, updated. Now I had Manjaro installed and updated. It is time to prepare for a BIOS update. How am I going to do it? The answer took me on a Virtualbox advenutre.

Once I came back from the Virtualbox adventure, I had with me a USB flash drive readily accessible form the Windows VM guest. I  used Rufus to create a bootable FreeDOS USB flash drive from the Windows guest and copied the BIOS executable that I downloaded from the Dell Website. I restarted my machine and hit F12 to get to the one-time boot menu. I chose the USB flash drive for booting and got into FreeDOS. This is where things got a bit confusing.

I had downloaded the following ISO from the official website. This is lacking in some features which makes it inappropriate for BIOS upgrade. Download this if you need to test or learn etc. but not for BIOS upgrade. For BIOS upgrade you need FULL CD:

FreeDOS 1.1 Base

fd11src.iso

Bittorrentor, via bittorrent

Features

  • FreeDOS 1.1 Base CD
  • Contains packages from BASE, and several useful utilities
  • Includes source code for everything
  • Install only, does not include LiveCD
  • 40 MB

The menu options available after the booting of this ISO are:

FreeDOS_OfficialCD_MenuOptions

So, I had to search for a full ISO image that could help me. Further net surfing helped me get my hands on this:

http://ftp.gwdg.de/pub/misc/freedos/files/distributions/1.0/fdfullcd.iso at http://www.z80.eu/freedoscd.html

There may be many other sources too! The only difference is that this ISO image is around 150 MB in size.

I created another FreeDOS bootable USB flash drive with this ISO and the menu options changed favourably. Choose the option highlighted in the image below:

FreeDOS_OfficialFULLCD_MenuOptions

Once the highlighted option is selected, the following appers:

FreeDOS_OfficialFULLCD_AfterFreeDOSSafeModeOption

With the command prompt at A:\>, the BIOS executable that I copied was not available. I used the dir command to look at the files. I had to change the working directory to C: drive. With that done, my file was available. Now, I could type the name of the file and hit enter to execute it. The executable takes control of the situation and flashes the new BIOS, A07 version. Done!

WordPress local installation on Arch Linux

Matthew CharlesMattMullenweg (born January 11, 1984 in Houston, Texas) is an American online social mediaentrepreneur, web developer and musician living in San Francisco, California. He is best known for developing the free and open source web software WordPress, now managed by The WordPress Foundation.

I thank you and all those great souls who contribute to this wonderful system!

A Content Management System (CMS) is very necessary for anyone serious about knowledge and its management.There are many such systems available:

Choices are many and all have pros and cons. I stumbled upon WordPress and have been mesmerised by the power and beauty of the system. I have not tried the other systems due to the limited time available to me but WordPress seems to be the easiest CMS system. The epiphany that WordPress can be used locally for managing all my knowledge was just unbelievable. I created an intranet WordPress blogging system at my workplace and that blew everyone’s mind. Even mine! That was on a Windows machine. WAMP package is available for Windows which makes installing the complete WAMP Stack (Windows, Apache, MySQL, PHP) a breeze. I use Manjaro Linux as my primary OS at home. In Linux world we have the LAMP Stack (Linux, Apache, MySQL, PHP) but no single package equivalent to the WAMP.

Why exactly do we need a WordPress blog on local system?

  • The full power of WordPress in offline mode
  • Can be used as a diary, notebook, journal, knowledge repository etc. and is strictly personal
  • One can easily create a blog at WordPress.com and share with the world. For data not intended for sharing a local WordPress is great
  • Database driven and also maintains history – This is one of the most important features for students and researchers
  • Unlike Word documents or PDFs, links can be used to avoid a static linear mode of learning (which is boring)

It is certainly a big task, at least for someone who has no experience with the LAMP stack. Read the manual. There is no way around the Arch documentation. It is one of the best and needs to be respected. Reading the doc will save a lot of trouble. Let me jot down what I did to get the system up and running. This is just a summary. This worked for me and should for most of the people reading, but remember that there are too many variables and the great Arch documentation is the only place to get the complete information:

WordPress installation is pretty straightforward and takes only 5 minutes or so. It is the pre-requisites that will make buttocks sore.

The task can be broken down into the following smaller tasks:

  1. Install Apache server
  2. Install MySQL (On Arch and Arch based systems MariaDB has replaced MySQL. Why? Well, read this Wikipedia article.)
  3. Install PHP
  4. Install phpMyAdmin
  5. Install WordPress
  6. Configure Apache
  7. Configure MariaDB using the phpMyAdmin front-end (GUI)

Install pre-requisites

Install Apache

sudo pacman -S apache

Install MariaDB

sudo pacman -S mariadb

Install PHP

PHP: Hypertext Preprocessor or PHP can be installed using the following command:

sudo pacman -S php php-apache

Install phpMyAdmin

phpMyAdmin is a web-based tool to help manage MariaDB/MySQL databases using an Apache/PHP front-end. Commandline can be used for managing but it does not hurt to have a GUI.

sudo pacman -S phpmyadmin

Done installing all the pre-requisites. The LAMP stack is ready to rumble.

Configure pre-requisites

Configuring Apache

Once installed, Apache is ready to serve. The installation creates a User ID http and a Group ID http. These defaults should be good enough. Now use systemd and start the httpd service

sudo systemctl start httpd

This should start the Apache server. To test visit http://localhost/

The port option in the /etc/httpd/conf/httpd.conf needs some attention. The current setup is for a local WordPress with no internet access intended at all. That means, the server should listen to the local machine ONLY and serve no other request from any other machine.

So, change

Listen 80

to

Listen 127.0.0.1:80

The home directory permissions need to be properly set so that Apache can access the extracted WordPress directory. The following should do the trick:

chmod o+x ~

Configuring MariaDB

Start the MariaDB service

sudo systemctl start mysqld.service

There is a setup script which, when run, will configure MariaDB. Just type the following on the CLI

mysql_secure_installation

This setup script will ask a few questions. Answer them honestly:) At the end, MariaDB will be ready with a proper root user and password.

Configuring PHP

Apache needs to be configured to run PHP.

Enable PHP by adding the following lines to the /etc/httpd/conf/httpd.conf

  • Add the following in the LoadModule list anywhere after LoadModule dir_module modules/mod_dir.so:
LoadModule php5_module modules/libphp5.so
  • Add the following at the end of the Include list
Include conf/extra/php5_module.conf

Restart the httpd service

sudo systemctl restart httpd

Create a file called test.php in Apache DocumentRoot (in my case /srv/http) directory

<?php phpinfo(); ?>

To see if it works go to: http://localhost/test.php

Enable the mysqli and mcrypt extensions in PHP. Uncomment the following lines in /etc/php/php.ini:

extension=mysqli.so
extension=mcrypt.so

Note:

There is a possibility that the following error may show up

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1

When this happens open /etc/httpd/conf/httpd.conf and replace

LoadModule mpm_event_module modules/mod_mpm_event.so

with

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Configure MariaDB for WordPress using phpMyAdmin

First, configure phpMyAdmin. Create /etc/httpd/conf/extra/httpd-phpmyadmin.conf and add the following content to it

Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
     DirectoryIndex index.html index.php
     AllowOverride All
     Options FollowSymlinks
     Require all granted
</Directory>

Include it in /etc/httpd/conf/httpd.conf

# phpMyAdmin configuration
Include conf/extra/httpd-phpmyadmin.conf

Restart the Apache service

sudo systemctl restart httpd
  1. Go to http://localhost/phpmyadmin/
  2. Login as root with the password created during the MariaDB setup
  3. Create a user
  4. Create a DB for WordPress

Now that all the pre-requisites are installed and configured, it is time for the WordPress install.

Install WordPress

Do not install from the official Arch repositories. Why? Because,

Warning: While it is easier to let pacman manage updating your WordPress install, this is not necessary. WordPress has functionality built-in for managing updates, themes, and plugins. If you decide to install the official community package, you will not be able to install plugins and themes using the WordPress admin panel without a needlessly complex permissions setup, or logging into FTP as root. pacman does not delete the WordPress install directory when uninstalling it from your system regardless of whether or not you have added data to the directory manually or otherwise.

So, just get the zip from the WordPress.org website and unzip it.

Configure WordPress

Create /etc/httpd/conf/extra/httpd-wordpress.conf so that Apache can find WordPress and add the following content:

Alias /wordpress "/usr/share/webapps/wordpress"
<Directory "/usr/share/webapps/wordpress">
     AllowOverride All
     Options FollowSymlinks
     Require all granted
     php_admin_value open_basedir "/srv/:/tmp/:/usr/share/webapps/:/etc/webapps:$"
</Directory>

The alias /wordpress in the first line can be changed. For example, /myblog would require navigating to http://hostname/myblog to see the local WordPress website.
/usr/share/webapps/wordpress is the install location when WordPress is installed from the official repos. So, change the paths to WordPress install folder. Append the parent directory to the php_admin_value variable without fail:

Alias /myblog "/home/arandomuser/wordpress"
<Directory "/home/arandomuser/wordpress">
     AllowOverride All
     Options FollowSymlinks
     Require all granted
     php_admin_value open_basedir "/home/arandomuser/:/srv/:/tmp/:/usr/share/webapps/:/etc/webapps:$"
</Directory>

Now, open /etc/httpd/conf/httpd.conf and add the following line:

Include conf/extra/httpd-wordpress.conf

The extracted WordPress directory contains a file wp-config-sample.php which needs to be renamed to wp-config.php and modify the following lines correctly:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpressDB');

/** MySQL database username */
define('DB_USER', 'arandomuser');

/** MySQL database password */
define('DB_PASSWORD', 'thePassword');

/** MySQL hostname */
define('DB_HOST', 'localhost');

Once all this is done, navigate to http://localhost/wordpress

WordPress should be available for personal knowledge management.

WordPress Issues

The default permalinks are not pleasing at all. They need to be changed. For me, a permalink should have the following structure:

 http://localhost/wordpress/2014/06/08/sample-post/

So, I went to the Dashboard -> Settings -> Permalinks and looked at the options. The desired option was available. I chose the one I wanted and asked WordPress to save my permalink choice. It refused saying:

If your .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all.

It generated a text box that contained the following text which needs to be added to the .htaccess file:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]
</IfModule>

This is where the beauty of .htaccess file became quite apparent. The directory where WordPress was extracted, say, /home/arandomuser/wordpress, should have a .htaccess file with the aforementioned text to make new permalinks work. This is the same directory where the index.php file resides.

I went to the directory and found no .htaccess there. I created one and pasted the required text. I tried using the new permalink to navigate to my posts. No success!

Further research pointed me to the /etc/httpd/conf/httpd.conf file where a module needs to be enabled. So, I uncommented the following line:

LoadModule rewrite_module modules/mod_rewrite.so

Everything works now!

I will soon be installing WordPress at workplace on a dedicated server. It will be a Windows machine. It will surely be simpler than this but I will jot down my experience.

Further research

SUSE Studio: Create a custom Linux distribution with an openSUSE core

SUSEStudio_dister-waiterINTRODUCTION

openSUSE is one of the most robust and thus respected Linux distributions. It is a very polished and professional distro. There are many options available when it comes to downloading openSUSE, but the most exciting feature that is available to the user is the ability to create a custom distribution with an openSUSE core. Yes, it is true. The user can create a distribution with all the packages he needs and nothing more. I am talking about the venerable SUSE Studio. This is not a new feature but not many know about this. SUSE Studio provides the infrastructure for the user to create, test and distribute the custom distro.

I have been a diehard fan of openSUSE from the 11.x days. openSUSE has never let me down. openSUSE’s KDE implementation is one of the most seamless and beautiful work of art.

I like KDE but it is just too huge. I have many physical and virtual machines. I update all of them twice a month. With Desktop Environments (DE) like KDE and GNOME, I would end up with huge downloads during updates. This is not a trivial issue in countries like India. I had to look for a better DE or a very capable Window Manager (WM). I tested openbox, Xfce, Lxde and Enlightenment. I liked Xfce the most. Xfce is an excellent DE. It has a small disk and RAM footprint while providing a rich set of features. It is based on GTK+ 2. It is very customizable too.

The only problem is that openSUSE has no official spin for Xfce. What are my options?

  • Get Xfce from the openSUSE repositories and have it installed alongside KDE
  • Get Xfce from the openSUSE repositories and remove KDE. This is pure pain in the rear. Never do this.
  • Use the Net install and choose the DE to be installed
  • Use SUSE Studio and create own distro

The last option is by far the best one for any student of Linux. Thus, I decided to create one. There are many other reasons, apart from the one I mentioned above, for creating a custom distro based on openSUSE:

  • to learn
  • for fun
  • to create an ownCloud server or any other type of server for that matter
  • to scratch any other itch 🙂

What follows is a detailed explanation of how to create a custom distro, using the great SUSE Studio and based on openSUSE core. I am logging whatever I did for getting an Xfce system for my personal use. The packages to be selected may be different for creating other types of distros but the general principles will remain unchanged. I am detailing as much as possible so that even enthusiastic newbies can go ahead and play with SUSE Studio. This was a great learning experience for me.

SUSE STUDIO

SUSEStudio_SignInPage

Sign in or create a new account. One can login in many ways.

SUSEStudio_SigninORCreateNewAccount

Once the login is taken care of one enters the beautiful greenish world of SUSE Studio. The adventure is about to begin. So, be ready for it 🙂

SUSEStudio_Home

On the Home page, under the heading Actions, is the link to the real adventure. Click on the Create new appliance link and the following page opens up. The options available are very clearly explained.

CHOOSE A BASE TEMPLATE

As I  had decided to have the latest openSUSE as base, openSUSE 13.1 Just enough OS (JeOS), was the best choice. A light minimalistic DE is what I was looking for. Thus, there was no point in choosing the GNOME desktop or the KDE 4 desktop. One should avoid Server option because it is more suited for building a server, but can be used as base for creating a desktop too! Anything is possible in the FOSS world.

SELECT YOUR ARCHITECTURE

The architecture should be chosen based on what hardware we intend to target. The really old PCs may not have 64-bit CPUs. This restricts one’s choice to 32-bit. I have a Pentium D dual core 64-bit CPU with a chipset that supports 4 GB DDR2 RAM only. Thus, there is not much that I gain from having a 64-bit OS on that machine. I have many other modern machines too. They are all 64-bit. Thus, I benefit from having just one 64-bit distro ISO that would be capable of getting installed on all my PCs. Such things need to be considered while choosing the architecture.

NAME YOUR APPLIANCE

This is the most difficult thing to do. Wasting too much time here is not good for society.

CREATE APPLIANCE

The green enticing button needs to be pushed and a brand new base appliance is ready for further modifications.

SUSEStudio_CreateNewAppliance

Now that a base template appliance is ready for further tweaking, one should just move ahead without wasting any time. Let me get my custom distro ready before earth stops spinning. SUSE Studio took me to a page where one can edit the base template appliance. There are six tabs available on this page. I will move through all of them but let me first jot down a few words about each:

  • Start

The welcome tab where one can name/rename the appliance

  • Software

The tab where one can select packages from the openSUSE repositories. There is so much to choose that it can be a bit overwhelming.

  • Configuration

As the name suggests, here is where one can configure the various aspects of the system

  • Files

Files added here will be copied into the appliance after packages are installed. Adding files is optional. Single files will be copied to the specified directory. Archives (.tar, .tar.gz, .tar.bz2, .tgz, or .zip) will be extracted into the directory specified. Permissions and hierarchy will be preserved. Using archives is a great way to add many files at one time.

  • Build

Well, this tab helps build the appliance.

  • Share

Let the world know.

START TAB

Nothing much to do here apart from naming/renaming the appliance and viewing/reviewing the choices made till now. Only choices made on SUSE Studio can be reviewed here. Life’s choices can only be reviewed after death if the notion of God has any truth in it and if that God is really hell bent on doing a post-mortem of my life 😉

SUSEStudio_EditBaseAppliance

SOFTWARE TAB

This is where most of my time was spent. There are just too many packages to choose from. SUSE Studio has made it easy for the user by categorizing the packages and arranging everything in an intuitive way. Still, a new comer may be distracted. There is a logical way of breaking down the whole task of choosing the packages. The desktop distro needs the following components to work:

X Windowing System or X11 is a client-server system. X Server provides a mechanism for the X Clients to create GUI elements and manage them. A Desktop Environment like Xfce or KDE or GNOME has a X Client component known as the Window Manager that works in tandem with the X Server.

  • A Desktop Environment. I chose Xfce.
  • Package management/system administration tools. The command-line package management tool, zypper, is available by default. This may not be enough for all. Yast – Yet Another Setup Tool, the openSUSE system administration infrastructure can be added. Yast has many other system administration tools apart from package management.
  • Drivers
  • Network tools
  • Firefox Browser
  • VLC audio/video player
  • Office suite. Libre Office has very little competition here.
  • A Display Manager for graphical login. I chose LightDM. Without this component one would have to type in commands to login to the machine and launch the Desktop Environment.

This break-up made the task easier for me.

There are many ways of getting the packages. There is a search box that allows user to input search pattern strings. Also, there are various package groups available. When a package is selected, SUSE Studio does a good job of including all the required dependencies for the user. This makes the whole job very easy. Imagine if the user had to manage dependencies too. That would have been hell.

SUSEStudio_ChooseSoftwareOptions

The X Server packages

Type X11 in the search box and hit enter. SUSE Studio will list all packages matching the X11 pattern. The X11 X Window System package is the most important one. A lot of dependencies will be auto selected. The good thing about the table generated after during the search is that it can be sorted based on various parameters. Just click on the column name and the column can be sorted. Popularity column is the most interesting because that helps in understanding what package has the most popularity for a particular search pattern. This is a good indicator but not the absolute one:

SUSEStudio_ChooseX11Packages

Desktop Environment, Xfce packages

There are a lot if packages to be selected. The good thing is, the whole Xfce package set is very light. 70-100 MB would be enough to have a fully functioning DE. So, search for xfce4 pattern and add all the packages OR go through each package and choose what really is needed. The latter option may consume some time but helps in avoiding unnecessary packages. Once Xfce packages are selected, make sure that the following packages are also selected:

  • gtk2-engine-murrine
  • gtk2-engines

How do we know what package to choose from the list?

It needs some research and some experimentation. The package names are really self-explanatory and that helps a lot. The SUSE Studio Testdrive option also comes to the user’s assistance. To know about Testdrive keep reading…

The Xfce DE is extremely configurable. Xfce is based on GTK2 and needs the above-mentioned engines for proper working of external GTK2 themes. Now, these themes are easy to get from deviantArt and GNOME-LOOK.org. Installing these themes is easier still. That is the beauty of Xfce.

Yast, Yet Another Setup Tool

A one-stop shop for configuring everything on an openSUSE system. The following image shows yast2 in action. The complete openSUSE system can be managed from this application:

openSUSE_Yast2

Now search for yast2. Again, one can add all the packages OR go carefully through the list and add what is needed.

I had a lot of trouble getting the GUI for yast2 working. Whatever I did, yast2 would only run using ncurses after throwing the following error:

qt gui wanted, but not found, falling back to ncurses

I struggled a lot and found that the libyui-qt5 is necessary for yast2 to run with a GUI.

Drivers

This needs further breaking down:

Input drivers

The keyboard and mouse drivers:

  • xf86-input-keyboard
  • xf86-input-synaptics (This is needed for the laptop touchpad)
  • xf86-input-mouse
Video drivers

The display/monitor driver and graphics (ATI/AMD Radeon and NVIDIA etc.) driver:

  • xf86-video-intel
  • xf86-video-vesa
  • xf86-video-ati (opensource ATI/AMD Radeon)
  • xf86-video-nv (opensource NVIDIA)
  • xf86-video-fbdev

Network tools

The following packages should be enough:

  • NetworkManager
  • NetworkManager-gnome
  • wireless-tools
  • wpa_supplicant
  • wpa_supplicant-gui
  • yast2-network (this should already be in the selected list)

Firefox Browser

There are many choices when it comes to browsers. Firefox is the one that I use mostly. I have Midori too. Chromium is good too, but Google cannot be kept out of it. Search for firefox.

VLC audio/video player

There is not much competition for VLC on the desktop irrespective of the platform. Search for vlc.

Office suite

Libre Office is really good. Search for libreoffice.

Desktop Manager

There are just too many choices here. LightDM is light and beautiful. Search for lightdm.

CONFIGURATION TAB

This tab obviously helps the user to configure the distro being created 🙂

SUSEStudio_Configuration

There are many options available here:

  • General

Choose Default locale, Default time zoneNetwork, Firewall and Users and groups

  • Personalize

Choose Appliance logo and Appliance background:

SUSEStudio_Configuration_Personalize

  • Startup

Choose the Default runlevel. A desktop distro is being created and a Graphical Login would be the best option. The EULA option is mostly for corporate environment but an ordinary mortal too can include an EULA:

SUSEStudio_Configuration_Startup

  • Server

Skip this.

  • Desktop

 Nothing really to write in detail here.SUSEStudio_Configuration_Desktop

  • Appliance

The Appliance can be created in various formats. That is, one can have a VMWare image, for example. Here one can configure how much RAM and Disk space should be allocated to the VMWare image:

SUSEStudio_Configuration_Appliance

  • Scripts

One can create scripts and:

Run script at the end of the build OR Run script whenever the appliance boots

For a normal user, nothing needs to be done here but this is really a cool feature:

SUSEStudio_Configuration_Script

FILES TAB

This is where one can add custom files and archives to the appliance. The single files will go to the destination the user mentioned while the archive gets extracted to the desired location after the installation of the package. In case of VMWare images, the appliance will have these files already extracted as part of the build process:

SUSEStudio_AddFilesORArchive

BUILD TAB

Well, what else would one want to do after all that he has been through till now :)?

SUSEStudio_BuildApplianceThere are options here too:

  • Live CD/DVD (.iso)
  • USB stick / hard disk image
  • Preload ISO (.iso)
  • VMware / VirtualBox (.vmdk)
  • OVF virtual machine
  • Xen guest
  • Hyper-V (.vhd)
  • SUSE Cloud / OpenStack / KVM

These options are fully explained in the Selecting Appliance Formats article. Reading that is really essential for an easy life in the SUSE Studio world.

One can select a default format to build while also selecting multiple additional formats. What did I choose?

I chose Live CD/DVD (.iso) and USB stick / hard disk image. Why?

Live CD/DVD is basically what one gets from the official download locations of almost all distros. The Live CD/DVD helps the user get a feel of the complete system without really installing the distro.

USB stick / hard disk image is really helpful during SUSEStudio Testdrive. It has other purposes but its utility stands out during the Testdrive.

So, choose the correct formats and hit the big green build button SUSEStudio_BuildButton

A progress bar appears and indicates the build progress. The build process can build only one format at a time.

SUSEStudio_BuildProgressOnce the build is done the image is ready for Testdrive and Download. The Build additional button appears if other formats were selected in addition to the default format. Hit that button and the other format gets built.

SUSEStudio_BuildDone

SUSE STUDIO TESTDRIVE

Testdrive lets the user test the appliance in the browser using Flash plugin. No downloads at all. This test can be done using any format but the USB stick / hard disk image is the most important format. One can modify system files during test drive and get it included in the Files Tab only if one uses the USB stick / hard disk. So, test drive using the USB stick / hard disk and get the system properly running and then build other formats.

SUSEStudio_Testdrive

I had a problem with the LightDM Display Manager. I could not get it to work. I found that the /etc/sysconfig/displaymanager file needs to be modified. Just make sure that the beginning of the file looks like below:

## Path:    Desktop/Display manager
## Description:    settings to generate a proper displaymanager config

## Type:    string(kdm,kdm3,kdm4,xdm,gdm,wdm,entrance,console)
## Default:    “”
#
# Here you can set the default Display manager (kdm/xdm/gdm/wdm/entrance/console).
# all changes in this file require a restart of the displaymanager
#
DISPLAYMANAGER=”lightdm”

I modified the file while test driving the USB stick / hard disk image and got it included in the Files Tab. Now LightDM greets me when I try to login to my machine.

SUSEStudio_displaymanagerFile

SHARE TAB

After all the hardwork, let the world know about it:

SUSEStudio_ShareAppliance

My appliances:

The package list can be found here.

The package list can be found here.