Tag Archives: sysadmin

Install UBCD on a bootable USB stick

Ultimate Boot CD was a really good tool when I worked as a sysadmin and I thought it was a good thing to keep a USB stick around.

Download UBCD

There are several options to download a copy of UBCD iso, all listed on the dedicated page. A good way is to use torrent (here’s the magnet link).

Indetify your USB device

Please be careful here, if you are wrong, you are going to delete the wrong disk.
I’m not responsible of any data you loose.

There are few ways to detect the right USB device, I usually take a look do dmesg output

$ dmesg | grep -A8 'Direct-Access'
[  844.712601] scsi 6:0:0:0: Direct-Access     Generic  Flash Disk       8.07 PQ: 0 ANSI: 2
[  844.713050] sd 6:0:0:0: Attached scsi generic sg2 type 0
[  844.716347] sd 6:0:0:0: [sdc] 15663104 512-byte logical blocks: (8.01 GB/7.46 GiB)
[  844.716774] sd 6:0:0:0: [sdc] Write Protect is off
[  844.716780] sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00
[  844.716969] sd 6:0:0:0: [sdc] No Caching mode page found
[  844.716972] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  844.719175]  sdc: sdc1
[  844.720364] sd 6:0:0:0: [sdc] Attached SCSI removable disk

In this case I’m sure that the device is sdc because I’ve only one disk with 8GB of storage.

I’ll use sdc in this document, you should use your device name, it’s really important.

Format the USB stick

Be sure that the OS you are running have not automatically mounted any previous partition on the stick:

$ sudo umount /dev/sdc*

Then you could use GParted or do it manually as I like.

$ sudo parted -s /dev/sdc mklabel msdos
$ sudo parted -s /dev/sdc mkpart primary fat32 0 700
$ sudo parted -s /dev/sdc set 1 boot on
$ sudo mkfs.vfat -F32 /dev/sdc1
$ sudo parted -s /dev/sdc print
Model: Generic Flash Disk (scsi)
Disk /dev/sdc: 8020MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start  End    Size   Type     File system  Flags
 1      512B   700MB  700MB  primary               boot, lba

Extract ISO data on a folder

$ mkdir ubcd534
$ sudo mount -o loop,ro ubcd534.iso /mnt/misc/
$ rsync -avr /mnt/misc/ ubcd534/
$ sudo umount /mnt/misc

Copy ISO data to USB

$ sudo mount /dev/sdc1 /mnt/misc/
$ sudo rsync -rtv ubcd534/ /mnt/misc/
$ sudo umount /dev/sdc1

Make the USB device bootable

$ cd ubcd534/ubcd/tools/linux/ubcd2usb
$ chmod +x syslinux
$ sudo ./syslinux -s -d /boot/syslinux -i /dev/sdc1

Useful aptitude commands

A simple list of installed packages

max@wonko:~$ aptitude search '~i' -F '%p'

Search for installed packages from the testing repo

max@wonko:~$ aptitude versions '~i ~Atesting' --group-by=none

Finding why a package is installed

I found fonts-font-awesome in my headless server, but there’s a reason

max@wonko:~$ aptitude why fonts-font-awesome
i   owncloud Depends fonts-font-awesome

Select packages that were removed but not purged

max@wonko:~$ aptitude search '~c'

Search in the package description

max@wonko:~$ aptitude search '~d"web browser"'

Upgradable packages

max@wonko:~$ aptitude search '~U'

How to display PHP errors only in public_html directories

How to display PHP errors

I always use servers where PHP errors are not shown by default and I always forget how to enable error messages in development environments.

My situation

On a server I usually prefer Debian OS, but when I develop on the go I use laptops with Ubuntu.
In this case I’m running Ubuntu 14.04 LTS with Apache2 (v2.4.7) and libapache2-mod-php5 (v5.5.9).

I want PHP errorors displayed for projects in my public_html folder.

Solution 1 (only Apache conf files)

Create the file /etc/apache2/sites-enabled/800-public-html.conf with this content:

<Directory /home/*/public_html>
  AllowOverride Options
  php_admin_flag display_errors On
</Directory>

Solution 2 (using .htaccess)

Create the file /etc/apache2/sites-enabled/800-public-html.conf with this content:

<Directory /home/*/public_html>
  AllowOverride Options
</Directory>

Create the file /home/max/public_html/project1/.htaccess with this content:

php_admin_flag display_errors On

Conclusions

It’s easy and easily forgettable. Don’t forget to add

error_reporting(E_ALL | E_NOTICE);

in your .php files.

Restore an etc configuration file from the original maintainer version on Debian

There are events that can not be stopped, for example when you delete a file by mistake under /etc.

Debian provides an elegant way to restore files of the maintainer’s version without touching your existing configuration.

Practical scenario

Let’s say I’ve removed the file /etc/apache2/sites-available/000-default.conf, here’s the procedure to recover it:

  • find the deb package containing the file
    # dpkg -S /etc/apache2/sites-available/000-default.conf
    
  • reinstall the package with a specific option
    # apt-get install --reinstall -o Dpkg::Options::="--force-confmiss" apache2
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 5 not upgraded.
    Need to get 86,7 kB of archives.
    After this operation, 0 B of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu/ saucy-updates/main apache2 amd64 2.4.6-2ubuntu2.1 [86,7 kB]
    Fetched 86,7 kB in 0s (264 kB/s)
    (Reading database ... 245864 files and directories currently installed.)
    Preparing to replace apache2 2.4.6-2ubuntu2.1 (using .../apache2_2.4.6-2ubuntu2.1_amd64.deb) ...
    Unpacking replacement apache2 ...
    Processing triggers for man-db ...
    Processing triggers for ufw ...
    Processing triggers for ureadahead ...
    ureadahead will be reprofiled on next reboot
    Setting up apache2 (2.4.6-2ubuntu2.1) ...
    
    Configuration file `/etc/apache2/sites-available/000-default.conf', does not exist on system.
    Installing new config file as you requested.
     * Restarting web server apache2
       ...done.
    

That’s all.

Practical scenario #2

There’s another interesting case when this procedure comes handy: if you changed a default etc file and you want to restore it. In that case you can simply delete it and use the same apt-get command:

# apt-get install --reinstall -o Dpkg::Options::="--force-confmiss" <package name>

References