Open Source

My First Arch Linux Installation Experience

This article originally posted on 10/31/2010. The following was copied from Wayback Machine as I don’t have the original version anymore. The images in this article are also hosted on the Wayback Machine, so I removed “Click to Enlarge” in the article as there aren’t any enlarged version.

I first heard Arch Linux two years ago when I also discovered Linux from Scratch project. At that time, I didn’t have any experience on GNU/Linux nor the command line. I have finally chosen Ubuntu 8.04 because its good reputation on the Internet. However, I’m not interested in Ubuntu anymore since I recently upgraded to Ubuntu 10.10 and downgraded back to 10.04. Because my GNU/Linux skills have increased during the past years, I have decided to try Arch Linux.

During the installation process, I followed the installation instruction on the Arch Linux wiki:’_Guide

After transferring to USB using UNetBootIn, I have to change the USB drive label to ARCH_201005, otherwise it will display the following message:

To change the label, type “palimpsest” (without quote) in the terminal. Select the USB device on the left. Make sure to unmount the driver first, and then click the “Edit Filesystem Label” button to change the drive label to ARCH_201005.

And since I have both 64-bit laptop and 32-bit netbook, I downloaded the dual ISO which contains both 32-bit and 64-bit versions of the OS. After I copied the files to the USB drive through UNetBootIn and booted into the boot menu, the 32-bit and 64-bit selection items have no effect. The only option that works is the first “Default” one which is the 32-bit version. Because I want to install it on my 64bit-based laptop, I tried to figure out how to install the 64-bit version of Arch Linux. After looking into the boot options by press the tab key at the boot menu, I found out that all of the boot image files for each architecture are in the /boot folder. I also noticed that the working “Default” one is based on the two files in the root directory: ubninit and ubnkern. I think that these files are the same as the ones in the /boot/i636/ folder. Therefore I renamed these files with .32 extension and copied the only two files in the /boot/x86_64/ folder to the root directory with the same names as the ones with .32 extension. I then copied and renamed these files to the root directory with .64 extension for backup purpose. In the end, here is my current files in the root directory of the USB device:

Note that the two files without any extension (ubninit and ubnkern) are 64-bit files. I could delete them and replace with the .32 extension files in the near future once I decide to install Arch Linux on my netbook.

Since I was installing on the laptop, I have no wired Internet connection. I had to first connect to the Internet by using ifconfig, iwconfig, and dhcpcd utilities before the installation. Also, according to the wiki, I have to execute “dmesg | grep firmware” command in order to find out and install the appropriate wireless firmware during the installation.

Once I installed Arch Linux, I needed to solve the wireless auto-connection issue. Thanks to the netcfg wiki (, I quickly solved the issue. One last thing that I’ve done is to remove the network daemon in the DAEMONS section of /etc/rc.conf file since I have loaded net-profiles daemon and I think the net-profiles daemon has the same usage as the network daemon.

After I installed GNOME and Compiz, I noticed the title bar on all the windows were missing once I enabled Compiz through fusion-icon. Thanks for the tip on the Arch Linux forum (, I was able to regain the title bar. The solution is easy: open the ccsm (CompizConfig Settings Manager) and enable the Window Decoration plugin under the Effects section (make sure to enable Move Window and Resize Window plugins under Window Management section as well since they are basic window interaction elements). I also noticed that unlike Ubuntu and other similar distributions, all the Compiz plugins in Arch Linux are disabled by default since I installed GNOME from scratch.

The following are the reference sources that helped me during the installation:

If you have other tips on the Arch Linux installation and configuration process, please share them in the comments below.

Install LAMP on Ubuntu VPS

Install LAMP onto Ubuntu VPS

Thanks to the Host1Free VPS offer, I was able to administrator the server directly in the cloud without using any local resources, for the testing purpose at least. The advantages of using this free VPS is obviously its price of free, as well as the freedom of installing and experimenting with different utilities at system level compared to what you can do in the shared hosting environment. Although this free VPS configuration is not very fast, it can help me to learn everything about server administration and maintenance before I’m able to afford VPS with more power or even a dedicated server.

Anyway, here are the steps to use this VPS as a web development server.


  1. Make sure you have SSH client installed. Mac OS and Linux already have SSH installed. For those using Windows can use PuTTY. By using Mac OS or Linux, I assume that you already know how to use terminal. If not, you can google for the SSH GUI alternative for Mac OS or Linux.
  2. Once you verified that you have SSH client installed, the next step is to connect the VPS through SSH. Find out the IP address of your VPS. It’s generally displayed in your VPS control panel, in XXX.XXX.XXX.XXX format ( for instance). Ask me in the comment section below if you cannot find the IP address for your VPS.
  3. Open the terminal and type the following line (if you are using a GUI app, please refer to its documentation for help):

    ssh [email protected]

    Replace with your VPS IP address.

  4. If this is your first time SSH to the server, it will display a confirmation message confirming you to connect to the server. Type “yes” to confirm.
  5. After pressing enter and wait a while, you are now in your VPS server.

Note: If you restored the VPS image through your control panel and used SSH to access the server before, you need to delete the known_hosts file in .ssh folder in your user directory. Otherwise, you won’t be able to access the server again due to different host key:

Create a New User

In order to avoid being hacked and protect root account, we need to create a user account which does not have root privilege.

  1. Enter the following command:

    Replace the username with the username of your choice.

  2. Follow the prompts to enter the new password for your account, as well as detailed information about you. If you don’t want to enter any of your personal information, you just simply press enter to continue to the next field.
  3. When you are finished, type “y” to confirm that it’s the correct information.
  4. Your username has been created. Now you can login to the VPS with this username instead of root.
  5. Make sure to add your newly created username to /etc/sudoers to have temporary root privilege. Otherwise, you won’t be able to do system tasks such as upgrade in the next section.

    Locate the following section and press “i” to edit file

    Go to the end of this section and press enter to create a new line. Go up one line and type the following to add your username to the list:

    Make sure to replace “username” with your username. Press esc to exit the edit mode and type “:x!” to save this read-only file.

  6. If you want to learn more about vi text editor, or if you have any problem regarding the above steps, please let me know in the comments section below.
  7. Enter the following command to logout from your server:

  8. Connect to the server using your newly created account: ssh [email protected]
    Replace username with the username you created in the last section, and replace with the IP address for your server which you supposed to find out at the beginning of this tutoail.
  9. Enter the password when you created your username.

Update & Upgrade

If you just created this VPS or this is your first time logging into this VPS, the first task is to issue a upgrade command. Otherwise, most of the commands mentioned below won’t work.

  1. Type the following command and press enter:

  2. After the above command finished executing, issue the following command:

  3. There will be a lot of packages that need to be upgraded if this is a brand new VPS. After the upgrades are found, press y to confirm to install them.
  4. Wait until the system is upgraded. This will take a while.
  5. After the system is upgraded, it’s recommended to restart server before continuing:

LAMP on Ubuntu VPS

Now we are ready to begin the LAMP installation process.

  1. Login to the server once more with SSH due to the restart in the last step.
  2. Enter the following command (or copy and paste into the terminal if you don’t know how to type “^”) to start the LAMP installation:
    apt-get install lamp-server^
    Note: Ubuntu 12.04 seems to work very well for me when installing the LAMP server. Ubuntu 13.10 (which is the latest available version in my VPS control panel, the latest Ubuntu version as of this writing is 14.04) always hang during the installation of MySQL server, after it displays the MySQL change password error message.
  3. If you want to store the web server files to your home directory for backup purpose, you can edit the apache2 configuration file.

    Press i and replace the two places of “/var/www” to “/home/username/public_html”. Replace the username with your username.
    Press esc and type “:x” to save.
    Don’t forget to create the public_html folder inside your home directory.

    And to apply the new Apache configuration, restart Apache.

You have finished LAMP installation. Now you can visit your empty website by going to the IP address of your VPS. Well, it is empty until you upload some web pages.

Transferring files

With SSH set up in the first section of this tutorial, you can now also use SFTP to transfer files between local files and your server. The setup is easy. Just use your favorite FTP client to connect to the server. Make sure to select SFTP in the Protocol field for your client and fill out other necessary fields to connect to the server. Once connected, you are ready to publish your website.


With a VPS, you always can use the latest version of PHP and a variety of PHP extensions if you want. You can also install Ruby on Rails, Node.js, Git, and other additions you need without any restrictions set by the shared hosting. However, since you are basically using other people’s resources, it’s important to have a contingency plan to backing up all the files in the home directory on the VPS in case anything happens to the VPS server.

Remapping some keys on the Mac keyboard under Ubuntu

Using Apple Keyboard in Ubuntu

The keyboard layout in Ubuntu is based on Windows (the standard keyboard). On the Mac, there are two extra keys which Ubuntu does not recognize, the two Command keys. It’s configured with Super (Windows) keys instead.

It’s a waste of space to have two Super keys. This post shows you how to configure these keys to perform the functions they intend to (such as copy, paste, and close window, etc), also known as remapping.

  1. Open the terminal.
  2. Type the following commands and press enter to create a file called .xmodmap in the root of your home folder.
  3. You are free to edit the file using either gEdit or nano to suit your needs. You can test your keyboard and get the keycode or keysym for the keys you want to be mapped with the command “xev”. To end this command, just switch to another window or click the desktop and refocus the terminal window and press Ctrl + Z (Note: Not the command key).
  4. After you are satisfied with the result, it’s time to rename .xmodmap so it will automatically remap the keyboard whenever Ubuntu is started.
  5. Type the following command to the terminal to rename the file .xmodmap to .Xmodmap.
  6. Restart the system.

Enjoy Ubuntu with your remapped keyboard!

Note: Almost all the keyboard shortcuts work fine under the remapped keyboard except one. The keyboard shortcut for switching between windows in OS X is Command + Tab. However, since Windows uses Alt + Tab for this shortcut and the above steps mapped Command keys with Ctrl keys. Therefore, you have to change the habit of using Command + Tab to Alt + Tab for switching windows.

Do you have any other solutions or have problem to configure the keyboard under Ubuntu after following the above steps? Please leave a discussion below.


Charge iOS devices under Ubuntu

iPad not charging in Ubuntu resolved

Charging iPhones or iPod Touches under Ubuntu is no problem. However, when it comes to iPad, it always indicates “Not Charging” on the iPad screen when connecting to Ubuntu. This post discusses how to solve this “Not Charging” issue.

  1. Open the terminal and type the following command and enter your account password to install the required components:

  2. After the installation for the components has finished, type the following commands to get the source files for ipad_charge which uses to charge iPad:

  3. Do not rush to install. We need to make a little change to one of the files first. Open the file “95-ipad_charge.rules” using either gEdit or nano and change all the “ab” to “a-z” of ATTR{idProduct} values (there are two of them) as follows:

  4. The above code basically means to include all the possible device id for iPad. Otherwise, the device won’t automatically enter charging mode when connected to the system. For example, when I connected my iPad, the id is 129f, which is outside the scope of the original code (it only covers 129a or 129b). It won’t enter the charging mode on its own. I had to manually enter it by executing ipad_charge in the command line.
  5. Now install the program by typing the following commands:

  6. You can either reboot the system to see the result or just re-plugin the USB connection of your iPad.

Do you have any better suggestion on charging iPad on the Ubuntu system, or have any problem regarding the above steps? Feel free to discuss it in the comment section below.


Resolve Ubuntu not recognized by MBA issue

Ubuntu only in Macbook Air

After I formatted my MBA (Macbook Air) hard drive, wiped away OS X Mountain Lion, and installed Ubuntu, I was very excited to get hands on the newly installed Ubuntu. Unfortunately, MBA didn’t recognize the operating system at all. It didn’t show any boot option in the boot menu except “Internet Recovery” option (press alt/option after the boot sound).

The solution is simple.

  1. Restart MBA using the Ubuntu Live USB.
  2. Connect to Wifi.
  3. Open the terminal and type the following commands to add the Boot–Repair repo:

  4. Install the Boot-Repair utility by entering the following into the terminal:

  5. After the installation, the Boot-Repair program should automatically launch.
  6. After its checking was completed, a small dialog will appear.
  7. Click the Recommended repair button.
  8. After a little while, it will display an error message to notify you to visit the URL provided to view more information about the error. Just ignore this. It basically tells you that it could not install to USB drive. We are fine since our goal is to boot the installation on the local drive, not USB.
  9. Restart MBA.
  10. There is now a new option in the boot menu called “EFI Boot”. Select that.
  11. It now shows the GRUB boot menu. Select the first option. It should be “Ubuntu”.
  12. Now you should be entering installed Ubuntu for the first time.

Do you have any problem or suggestion for one or more of the above steps? Feel free to discuss in the comment area below.


New Blog Title, New Logo

Note: As this post was written long time ago, I’m currently use Mac OS on the MacBook Air. Until I find a stable way to run Ubuntu on my MBA, I will stick to use OS X.

As you already saw, I changed the title for this blog from “Robby Chen Personal Blog” to “Ubuntu Web Coder “as well as the logo.

One reason for changing the blog title is because I’m going to stick to Ubuntu, specifically Lucid Lynx (10.04.1), since I depend on some PPAs to get the updates. Maverick Meerkat (10.10) just doesn’t work for me. I will wait until Natty Narwhal (11.04) is out and see. If this still won’t work for me, I will stay with 10.04.1 and wait for the next release… Anyway, you get the idea.

As most of you who read this blog in the past know, I used to write code in Netbeans until I discovered the hidden potential of gedit for being such a good IDE. That’s why I abandoned Netbeans and replaced with gedit in the new logo. And I renamed blog title specifically to “coder” because I would like to try writing the code in each post from now on.

Besides the gedit logo in the new logo, I have also included two groups of logos, GNU/Linux and PHP. The GNU/Linux logos include Linux penguin, Chrome OS, Android, and Open Source. The PHP logos include PHP, CakePHP, and WordPress. I also included just released HTML5 logo created by W3C. I regularly use these tools and talked and will continue to talk about them in this blog. That’s why I included them in the logo.

What do you think about the new logo, blog title, and background color?

Bash Script to Install Ubuntu to CR-48 through USB easier (Updated)

Update (01/18/2011): Thanks to flyboy415’s comment below, it inspires me to add an optional parameter to the script that allows you to customize the path of your USB drive. You probably read my another post shows you how to mount the USB drive manually in Chrome OS. Now you can run this script with that directory that you created:

I spent last several days writing and testing the script which could help some of you installing Ubuntu onto CR-48 using USB drive a little easier.

This script is inspired by Jay’s script over at It’s also based on the steps over at the Chromium projects website. However, it uses your custom generated rootfs.bin in the USB drive instead of downloading the pre-made image.

Below is the entire script. You can either copy it directly to gEdit and save as .sh file or download the same script at github.

The Code

Few warnings before running this script

You need to running the script under bash instead of sh, for example

where ubuntu is the name of your script.

If you use sh instead, you won’t see the error messages produced on the screen and might need the recovery image to restore Chrome OS as stated in the script above.

The and files can be downloaded here which are provided by You might not have these two files during the chroot installation if you chose to get minilayout instead of the full layout of Chromium OS source code.

Other requirements, such as login as root, will be provided as you execute through the script.

Issues while running the script

If you have any issues while running this script, feel free to leave a comment or create an issue over at github.

More Storage Space for Ubuntu on Chromebook

Most of you download files within Ubuntu on the Chromebook with very limited hard drive space. What you may not know is that there are unmounted partitions listed above the bookmarks section in the file manager, especially the largest partition.

The process for acquiring additional storage space for use within Ubuntu is simple – just click the disk labeled largest GB File System” to mount it (make sure to replace largest with whatever the largest partition Ubuntu has detected), and then navigate to /home/chronos which is your home directory inside Chrome OS. Inside this folder, you can do the normal file operations like in your Ubuntu home folder. This will gives you additional gigabytes of hard drive space to save your documents.

Note that you cannot edit the files outside the chronos home folder. Only the “largest GB File System”, and C-OEM partition, which only has very small amount of free space available, can be accessed by Ubuntu, rest of the partitions (two C-ROOT and other partitions) cannot be accessed within Ubuntu.

If you have any issues on getting additional storage space, feel free to leave a comment.

My Touchpad and Keyboard Solutions for Ubuntu on CR-48 / ChromeOS

Update (09/09/2011): I no longer use CR-48 because of its hardware limitation. The solutions in this post may not be working as Chrome OS kernel is updated frequently. Sorry for the disappointment.

Update (01/05/2010): As Pheonix7117 pointed out in the comment, here is the fix to the Touchpad issue in Ubuntu. Note that you don’t need to do the first step (Downgrade Xorg) and the last step (Broken Packages) if you are running Lucid (Ubuntu 10.04) on the CR-48.

Update (12/26/2010): For those of you never read comments (like me), Pheonix7117 has posted another tip for vertical scrolling using the touchpad. Here is the direct copy of Pheonix7117’s comment:

Here’s a temporary workaround to get *some* amount of scrolling working in the meantime:If you install the package ‘gpointing-device-settings’ it will add a menu entry to System > Preferences called Pointing Devices.
It *should* list a device called “PS/2 Synaptics TouchPad”.
What I did was enable wheel emulation and changed it to button 3 (which I believe is right click) and enabled vertical scroll. I left timeout and inertia default (inertia seems to be 0, timeout is fairly short) and left middle button emulation unchecked. This enables a regular right click when doing a ‘hard’ click in the bottom right corner without lingering, and if you hold the right click you can swipe a finger up or down to scroll. Granted, this isn’t using the touchpad driver at all as this is supposed to be used for regular mice, but it’s a start for getting by for now.

Update (12/21/2010): Pheonix7117 posted a Python script for controlling the xbacklight in the comments section. I only have a little understanding of Python language, but I think it’s a well-written script to control the backlight with the keyboard.


Ever since I installed Ubuntu on CR-48, I wondered about how to improve the touchpad speed and keyboard functions. I experimented with the touchpad driver today and noticed that while I can enable the touchpad tab inside the Mouse property with xinput, the options under the touchpad tab doesn’t seem to take any effect. Therefore I have to find other ways to configure the touchpad. The keyboard configuration was easy since all the functions are available in Ubuntu except for the right click, caps-lock and delete keys.


General setup – Under the general tab in the Mouse Preferences, move the Acceleration and Sensitivity sliders to the max fast and high respectively so that the cursor could move a little fast and reduce the chance to accidentally tap the touchpad while typing.

Left click and right click – The bottom left and bottom right corners of the touchpad recognize by Ubuntu as the left and right buttons, while toward middle of the touchpad doesn’t have any click event.

Middle click (Scrolling wheel) – I usually use the middle click on web pages when I want to open a link in a new tab. It doesn’t have a middle button on the touchpad. However, I can use Ctrl + tap to open a link to a new tab in most of the browsers. As for the most of the applications I use, none of them has middle click event except for games, which cannot run on this notebook because of the hard drive space limit.


The brightness keys – Install the xbacklight package, and assign the following commands to the corresponding keys on the first row of the keyboard through Keyboard Shortcuts window:

The volume mute, decrease volume, and increase volume keys – Change the default shortcuts for Volume mute, Volume down, and Volume up in the Keyboard Shortcuts window to the appropriate keys on the top row of the keyboard.

Right click, caps-lock and delete keys – As I stated earlier, I cannot find the functions for these keys since they are not available on the keyboard. However, you can use some remapping programs to remap these keys to the available keys.


Do you have any other touchpad and keyboard related tips for CR-48 (ChromeOS)? Please share them below. Also leave a comment below if you have any questions for this topic.