Skip to content

Posts from the ‘Ubuntu’ Category


ICMP Identifier field in UDP between Linux and OSX

Ping packet is traditionally created as a raw packet and formatted into ICMP ECHO REQUEST. The problem with creating a raw socket requires root privilege. It is alright if the program is running as part of the system service under root anyway. However, running as a non privilege user, the program requires extra care by configuring the setuid bit which poses security risks e.g. the program may have memory leak which can be hijacked with shellcode.
Read more »


Checklist to configure headless and offline Ubuntu 14 system


Grub Failsafe boot

Set the boot failsafe prompt to have some timeout instead of indefinite wait

echo 'GRUB_RECORDFAIL_TIMEOUT=5' >> /etc/default/grub

Grub RecordFail boot

In some cases, a power outage can cause the Ubuntu stuck in the GRUB menu indefinitely in the next boot which causes headless system to hang. Here is more info of the issue. To avoid that, add the following line to /etc/default/grub:


Then runs update-grub. Alternatively, runs this command and it will remove the issue in the next boot.

grub-editenv create

Fsck fix

Don’t ask when fs needs checking

echo 'FSCKFIX=yes' >> /etc/default/rcS


Automatic Check New Release



Apport – sending bug/crash reports



Postfix – Mail transfer agent

update-rc.d postfix disable

apt-check – periodic apt check


APT::Periodic::Update-Package-Lists "0";

More to come when I find out more ….


Installing new kernel within Linux kickstart

I have to build a Ubuntu installer ISO using the kickstart utility but I need the installer to install a particular version of kernel. Here is the link for a quick guide on setting up Ubuntu kickstart. First, I added the following line into %packages section in the installer build script to install the target kernel package, ks.cfg: Read more »


VMplayer: How to bridge to a specific network port

Suppose you need to bridge another network interface under your VM to a specific physical network port. First, you need to create a vmnet port and bind with that specific port. Here are the commands:

vmnet-bridge -n 2 -i eth1  -d /var/run/ -1vmnet2
mknod /dev/vmnet2 c 119 4
vmnet-netifup -d /var/run/ /dev/vmnet2 vmnet2
ifconfig vmnet2 up

Read more »


Plymouth: Create your own splash screen with scrolling boot messages

I have been trying to create a simple splash screen and configure it with scrolling boot messages. However, there are very little online documentation and reference, brief introductions can be found at Plymouth themes: Fix, install, create in Ubuntu 10.04 (Lucid Lynx) and Software/Plymouth/Scripts. In here, I am documenting how to create the splash screen with scrolling messages. Read more »


Ubuntu 10.04 LiveCD customisation gotchas

Here are the gotchas that I came across so far via building Ubuntu 10.04 LiveCD from scratch. Read more »


How to extract storage device information (Parte 2 – using lshw and xmlstarlet)

In Ubuntu 10.04, udevinfo is no longer available and I need to write a LiveCD tool to retrieve storage information (such as vendor, size, filesystem, label) from existing partitions (e.g /dev/sda1). So I cannot use the command lines anymore mentioned in my previous blog.

After a day of researching various tools and experiment parsing command line outputs. Eventually, I decide to use lshw to generate all the storage information and output into XML format. Then use xmlstarlet to extract specific device data. Read more »


Note on creating Ubuntu 10.04 (Lucid) LiveCD from scratch – missing initctl

It’s about time for me to update the LiveCD product, AppQoS Live! (based on Ubuntu 8.04 Hardy) and move on to Lucid 10.04 as more newer hardware having trouble to work with.

I was following the LiveCDCustomizationFromScratch documentation to experiment Ubuntu 10.04 LiveCD. Then I hit a problem when I booted off from the created LiveCD. The boot screen just hangs. Switching to one virtual console, the last few messages on the screen are:

Begin: Running /scripts/init-bottom/ ... 
init: ureadahead-other main process terminated with status 4
init: ureadahead-other main process terminated with status 4

Read more »


Awk scripts for reading and editing Ubuntu /etc/network/interfaces file (Part 2/2)

ubuntulogoFor modifying the /etc/network/interfaces file, I use another script and it is slightly more complicated.

[ Modified 28/Nov/14 ] – Created a new github repository for this script

[ Modified 22/May/14 ] – Added feature to remove an interface definition

Read more »


Awk scripts for reading and editing Ubuntu /etc/network/interfaces file (Part 1/2)

ubuntulogoIt is pretty straightforward to setup permanent network configuration on Ubuntu 8.04. All you need is to edit /etc/network/interfaces file and a very thorough tutorial is given in to show you how manually edit for DHCP, static and promiscuous mode. However, I cannot find any command line utility for configuring permanent network setup.

So here are couple awk scripts for reading and writing /etc/network/interfaces file. I hope someone will find it useful, especially for integrating with other programs.

[ Modified 28/Nov/14 ] – Created a new github repository for this script Read more »