So i’ve been messing with Linux Mint Debian, and I have to say, I think I have finally found a better UX Linux distro over Ubuntu.

I’ve been a huge fan of Debian for nearly 10+ years. Debian is FANTASTIC at all server related tasks. However, in the past, it was always a hassle getting simple things working (wifi, video card drivers) when Ubuntu did it with ease on my laptops. This is why I really liked Ubuntu (since 6.06.2), and it’s UX design and portability for laptops and workstations. But after 10.04, they have made way too many changes that have really irked me. Albeit, it’s rather annoying that KDE and GNOME 3 were complete and epic failures, which really didn’t give Canonical a choice other than running GNOME 2, creating a custom variant/branch, or creating the “Crap Fest” that is called “Unity”.

Since loving Debian, I’ve always preferred distros that were native, or at least used dpkg/apt in a sense. Enter Linux Mint Debian. It’s pretty much the unstable branch of Debian (which I normally run, because if you have ever done PCI compliance on a Debian box, you really have no choice but to run unstable sources). In addition to this, it’s straight up Debian, with MATE/Cinnamon as it’s window manager. MATE/Cinnamon is fantastic. It’s better than XFCE, but simplistic, and gives that original feel of GNOME 2 (since it’s a branch of this) with the added UX that Ubuntu provided solidly in 10.04.

Anyways, enough rambling. Here’s my list of Linux Distros for UX, Server, and Enterprise:

UX:

LMDE    Linux Mint Debian
  • Debian unstable, MATE/Cinnamon – that’s all I ever really wanted in a laptop/workstation distro!

Server:

Debian    Debian
  • Best solid Linux distro EVER. LAMP, MySQL/Postgres, Mail servers, Bonded NICs/iSCSI, Backups, NFS servers, you name it. Debian will make it happen, quickly and efficiently.
  • P.S. I linked the netinst image, because if you download the DVD set, you’re a fucking moron! =)

Enterprise:

RHEL    Red Hat Enterprise Linux
  • Mainly for those of you running Oracle… it’s not horrible, but some of the management scripts make me want to barf. It’s sometimes easier to configure stuff manually! On another note, not many options… I mean, would you really prefer to run SuSE? =)

Hey All,

Here’s a deb I created that has NetApp OnCommand System Manager 2.0.2. You can download it here.

To install it, do the following:


sudo dpkg -i netapp-oncommand-sysmgr_2.0-1_all.deb

Once that’s complete, do the following to copy the launcher file to your desktop for easy access…


cd /opt/NetApp/oncommand_system_manager/2.0
cp system_manager.desktop ~/Desktop
cd ~/Desktop
chmod +x system_manager.desktop

For those running Ubuntu, here’s how to add the desktop file to the Unity Menu:


desktop-file-install system_manager.desktop

 

Epic Uptime!

August 17th, 2012 | Posted by spritian in HP-UX | Linux | Solaris - (0 Comments)

LOL… One of my clients has a box running solaris with this epic uptime…


2:48pm up 1187 day(s), 3:34, 4 users, load average: 0.09, 0.12, 0.12

HAHA! And I need to reboot it next week :(

Fix resolvconf on Ubuntu 12.04

May 18th, 2012 | Posted by spritian in Linux | Ubuntu - (0 Comments)

So it seems Ubuntu 12.04 uses a local DNS server for all connections, regardless what you specify in Network Manager.

The easiest way to fix this is edit the following file:


sudo vi /etc/NetworkManager/NetworkManager.conf

Remove the dnsmasq line, save, and reboot! Your settings will now be fetched from DHCP or taken manually from Network Manager again!

This article will guide you on how to install Dropbox as a service on Linux. First things first, let’s get Dropbox downloaded and installed on our server. To start, paste the following in your terminal…

For 32-bit:


cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -

For 64-bit:


cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

After that’s complete, run the dropboxd command:


~/.dropbox-dist/dropboxd

Next, You’ll see something like this…


This client is not linked to any account...
Please visit https://www.dropbox.com/cli_link?host_id=hostid to link this machine.

Click that link, login with your credentials to link your new dropboxd service to your account. Shortly after, the message above should stop spamming and say that it is now linked! Hit CTRL+C to quit.

The last thing we need to do is enable a init.d script to boot at runtime.

First, determine your current runlevel:


runlevel
N 2

So our current runlevel is 2. Let’s add it correctly though by adding a new “dropboxd” file in /etc/init.d. The only thing you need to modify in the script below is the DROPBOX_USERS variable.


#!/bin/sh
DROPBOX_USERS="myusername"
DAEMON=.dropbox-dist/dropbox

start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}

stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}

status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}

case "$1" in

start)
start
;;

stop)
stop
;;

restart|reload|force-reload)
stop
start
;;

status)
status
;;

*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1

esac

exit 0

Now that the script resides in init.d, let’s change folders to /etc/rc2.d (our runlevel) and make a symlink from ../init.d/dropboxd to the present working dir.


cd /etc/rc2.d
ln -s ../init.d/dropboxd S99dropboxd

That’s it! You can call it with the service command, or just execute it from /etc/init.d or /etc/rc2.d.

I recently upgraded to Ubuntu 12.04 but found myself super frustrated to see my laptop lockup immediately after logging in via the GUI. It turned out to be an issue with the intel driver and dual monitors…

There was reported success by downgrading xserver-xorg-input-evdev, with the version you can find here:
https://launchpad.net/~sarvatt/+archive/sru1/+build/3118994

It works! I now have dual monitors again! :)

The original bug report can also be found here:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/992778

Few commands I use often in HP-UX; Coming from over 15 years of Linux experience, the quirks in HP-UX can get annoying at first, but hopefully this will help you through it!

Sick of your backspace key not working? Here’s your answer:


stty erase ^?

Annoyed with the shitty output of df?


bdf

Trying to figure out what the model/arch of the server is?


model

This lists a few different thing… disk related, and/or fibre channel cards:


ioscan -fnNkC disk
ioscan -fnkC disk
ioscan -fnkC
ioscan -m lun
ioscan -m dsf

How do I configure which mirror to boot from!?


setboot -v (verify/list)
setboot -a (alt)
setboot -p (primary)

I miss yum/apt-get:


swinstall -s /full/path/to/depotfile.depot \*
swinstall -x autoreboot=true -s /full/path/to/depotfile.depot \*

The \* is pretty cool, it prevents the TUI/GUI from loading, but continues the install/dep check. Makes it feel more like yum or apt-get, instead of aptitude or a GUI update manager.

AHHH usermod and passwd are missing flags in HP-UX! No, just use modprpw instead!


/usr/lbin/modprpw -v (refresh/validate all accounts)
/usr/lbin/modprpw -k -l username (unlock/enable [k] a local account [l])

This will reset the expiration of a locked account.

Where the fuck are the init.d and rc scripts?!


/sbin
/sbin/init.d/

How can I figure out the current runlevel?!


who -r

I miss bash, how can I auto-complete a command?!


Like bash, type a few letters of the prefix, but instead of tab, hit:
esc twice

WTF?! No history command?!?! Lies, hit esc+k – then use j/k to cycle forward/backwards respectively. To edit a line you scroll to, it’s interactive vi in ksh… so ‘l’ to move foward, shift+R to replace, etc…

Extend an LVM volume in Linux

April 24th, 2012 | Posted by spritian in Linux | LVM - (3 Comments)

One of my clients needed to expand their DB since it was at 96% utilization. Thankfully, it was already in a volume group. Here are the steps I took to add a new LUN to the VG and expand it.

First, use fdisk to find the new LUN that doesn’t have a partition table and then use fdisk to create a new partition on it as Linux LVM:


[root@redhat ~]# fdisk -l
[trimmed]

Disk /dev/sdf: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdf doesn't contain a valid partition table

[root@redhat ~]# fdisk /dev/sdf
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

The number of cylinders for this disk is set to 52216.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/sdf: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-52216, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-52216, default 52216):
Using default value 52216

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdf: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdf1 1 52216 419424988+ 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@redhat ~]# fdisk -l
[trimmed]

Disk /dev/sdf: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdf1 1 52216 419424988+ 8e Linux LVM

Now that the partition table is setup correctly, let’s create a new LVM on the drive, and extend our existing volume group using the new physical LUN.


[root@redhat ~]# pvcreate /dev/sdf1
Physical volume "/dev/sdf1" successfully created

[root@redhat ~]# vgextend ora_vg1 /dev/sdf1
Volume group "ora_vg1" successfully extended

Here you can see our physical extents has increased due to the addition of the new physical drive to the volume group:


[root@redhat ~]# vgdisplay
--- Volume group ---
VG Name ora_vg1
System ID
Format lvm2
Metadata Areas 5
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 5
Act PV 5
VG Size 1.18 TB
PE Size 32.00 MB
Total PE 38555
Alloc PE / Size 25728 / 804.00 GB
Free PE / Size 12827 / 400.84 GB
VG UUID nwH9uL-gm6q-QX1y-UbLm-dkKK-wgLt-b3ZkeY

[root@redhat ~]# lvdisplay
--- Logical volume ---
LV Name /dev/ora_vg1/lvol_d03
VG Name ora_vg1
LV UUID CqjYQG-duhz-xniN-Vzha-PgVH-pcj3-vqOLar
LV Write Access read/write
LV Status available
# open 1
LV Size 749.00 GB
Current LE 23968
Segments 4
Allocation inherit
Read ahead sectors 0
Block device 253:4

I only wanted to allocated ~75% of the new LUN to lvol_d03, so I took the Current LE 23968 from the previous lvdisplay. I prefer to actually distribute via Extents, rather than the easy way of +G, etc. So I added 9827 extents (from a total of 12827 free) to the existing 23968, totaling 33795:


[root@redhat ~]# lvextend -l 33795 /dev/ora_vg1/lvol_d03
Extending logical volume lvol_d03 to 1.03 TB
Logical volume lvol_d03 successfully resized

[root@redhat ~]# lvdisplay
--- Logical volume ---
LV Name /dev/ora_vg1/lvol_d03
VG Name ora_vg1
LV UUID CqjYQG-duhz-xniN-Vzha-PgVH-pcj3-vqOLar
LV Write Access read/write
LV Status available
# open 1
LV Size 1.03 TB
Current LE 33795
Segments 5
Allocation inherit
Read ahead sectors 0
Block device 253:4

[root@redhat ~]# vgdisplay
--- Volume group ---
VG Name ora_vg1
System ID
Format lvm2
Metadata Areas 5
Metadata Sequence No 10
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 5
Act PV 5
VG Size 1.18 TB
PE Size 32.00 MB
Total PE 38555
Alloc PE / Size 35555 / 1.09 TB
Free PE / Size 3000 / 93.75 GB
VG UUID nwH9uL-gm6q-QX1y-UbLm-dkKK-wgLt-b3ZkeY

Above you can see we still have 3000 extents available. I tend to leave a little as wiggle room so if we ever get into a position of running out of space we aren’t screwed. :)

Now that LVM has extended the volume group, we need to have the filesystem recognize it:
(This box didn’t have ext3online (older kernel; 2.6.9), so just decided to do it the old school way…)


[root@redhat ~]# resize2fs /dev/mapper/ora_vg1-lvol_d03
resize2fs 1.35 (28-Feb-2004)
/dev/mapper/ora_vg1-lvol_d03 is mounted; can't resize a mounted filesystem!

[root@redhat /]# umount /prod/d03

[root@redhat /]# e2fsck -f /dev/mapper/ora_vg1-lvol_d03
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/ora_vg1-lvol_d03: 128/98172928 files (14.8% non-contiguous), 195569167/196345856 blocks

[root@redhat /]# resize2fs /dev/mapper/ora_vg1-lvol_d03
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/mapper/ora_vg1-lvol_d03 to 276848640 (4k) blocks.
The filesystem on /dev/mapper/ora_vg1-lvol_d03 is now 276848640 blocks long.

That’s it, now the moment of truth…


[root@redhat /]# mount -a

[root@redhat /]# df -h
[trimmed]

/dev/mapper/ora_vg1-lvol_d03
1.1T 735G 306G 71% /prod/d03

Woot, all good! (749GB to 1.1TB)

Rescan SCSI bus on Linux

April 24th, 2012 | Posted by spritian in Linux - (0 Comments)

Thought this might be helpful:


echo "- - -" > /sys/class/scsi_host/host0/scan

or if you have an HP storage array (EVA, etc)


hp_rescan -a

Then just do fdisk -l to see if it’s presented or not!

No password sudo

April 23rd, 2012 | Posted by spritian in Linux - (1 Comments)

For those who are lazy, or sick of typing your password everytime… append the following to /etc/sudoers:


%yourusername ALL = NOPASSWD: ALL

Please don’t do this on any production boxes, lol.