Difference between revisions of "Debian"

From Organic Design wiki
m (Post install checklist: the annoying window-size bug is not present in Debian)
(Post install checklist: Geany)
Line 18: Line 18:
 
*subversion and git
 
*subversion and git
 
*python-qt4
 
*python-qt4
*Geany
+
*[[Geany]] (the local page shows context-action, colour and line-spacing tweaks)
 
*VLC
 
*VLC
 
*Pidgin (with OTR and plugin pack and copy backed up .purple after install)
 
*Pidgin (with OTR and plugin pack and copy backed up .purple after install)

Revision as of 02:14, 20 June 2013

Debian-logo.svg

Debian is a free operating system using the Linux kernel, but most of the basic OS tools come from the GNU project; hence the name GNU/Linux. At Organic Design we install Debian on our servers using the install a new server procedure, and have been using it for over ten years.

As of June 2013 we decided to change from Ubuntu to Debian for our workstations as well since Ubuntu is increasingly becoming the "microsoft of the free software world" with pay software and services at every corner and compulsory spyware riddled throughout system.

Installation

Debian live boot.png

Installation is covered here and for our typical situation involves downloading the first of the amd64 DVD iso images and copying it onto a memory stick using the following commands from a root shell where X is the number of the device that the USB stick is on which can be obtained from dmesg or df etc. Note that the numbers on the end of devices such as /dev/sda1 refer to the partitions within the device, but the boot record is outside of any specific partition, so the number must be excluded in the command to refer to the device as a whole.

<bash>

umount /dev/sdX cp debian.iso /dev/sdX sync </bash>

Post install checklist

This is my personal checklist of items I do after a fresh installation of Debian 7 to get everything I use running and to get it looking the way I like it :-)

  • Advanced settings (then add all buttons to windows from shell menu, also fonts, see below)
  • subversion and git
  • python-qt4
  • Geany (the local page shows context-action, colour and line-spacing tweaks)
  • VLC
  • Pidgin (with OTR and plugin pack and copy backed up .purple after install)
  • Icedove (Thunderbird - apt-get install icedove enigmail)
  • Skype (details on installation from the i386 .deb with MultiArch here)
  • World clock (zones in ~/.tzlist, use custom format %H:%M (%A) - the annoying window-size bug is not present in Debian)
  • Go to details in system settings and set the default programs
  • Bitmessage (needs python-qt4 and install the local email client support)
  • Fonts - all the fonts looked a bit ugly, in advanced settings I changed them to plain DejeVu Sans Semi-condensed, reduced to 10pt and changed the hinting to "slight", and the monospace font to Liberation Mono 9pt.
  • Icons (gnome-brave-icon-theme, then set in advanced settings/theme)

After that checklist is done here's what it looks like:

Debian7 desktop.png

SSD optimisation

I've had one too many mechanical disk failures and have finally decided to move over to SSD. They still have a long way to go as a technology since they still suffer from the major problem of flash technology in general which is that each memory bit can only be written to a thousand times (3 thousand on the most recent technology). So I'm just going to get a small cheap one initially and hopefully in six months or so they'll be longer lasting and more practical sizes. I've started with a 120GB Samgsung 840 series, for these reasons. Most of the following optimisation tips are taken from SSD optimisation in the Debian wiki, and another good artile here in the Arch Linux wiki.

Swap

Most systems these days have enough RAM that they rarely ever use the swap file at all unless there's a bug that chews up memory. If you have 4GB or more you may as well disable the swap partition completely from /etc/fstab or by installing your OS with no swap in the first place.

I upgraded my RAM to 8GB when I got the SSD and then installed Debian 7 with no swap by electing to manually set up my partitions and then making a single primatry partition that occupies the entire disk. The installer strongly warns against continuing without a swap partition, but allows you to continue and installs fine without it.

Mount options

There are some important mount options that should be enabled in /etc/fstab for the filesystem on SSD paritions. The filesystem should be ext4 not ext3 to work well with an SSD.

  • discard: SSD's use the ATA TRIM command for sustained long-term performance and wear-leveling, but it needs to be activated by adding the discard mount option.
  • noatime: Use this option to prevent logging of read accesses to the file system via an update to the atime information associated with the file.
  • commit=N: Set this to the number of seconds to wait before committing changes to the physical storage. By waiting longer before performing a journal commit multiple writes are often performed in one go. This option is often ised on laptops when running on battery to reduce the number of spinups for the drive saving power.

Using RAM disk

To mount /tmp and /var/log in RAM. Add these lines to the end of /etc/fstab to mount them in tmpfs (temporary file system). Debian-based operating systems already mount /var/run and /var/lock to RAM-disk by default.

tmpfs /tmp     tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0

Save, then sudo mount -a and reboot for the changes to take effect. Running df, you should see a new line with /tmp, and /var/log mounted on tmpfs.

My current /etc/fstab file looks as follows, I used slightly different parameters than those recommended above so they matched those already being used for the /var/run and /var/lock mount points.

UUID=123****789 /         ext4   noatime,discard,commit=60,errors=remount-ro  0  1
tmpfs           /tmp      tmpfs  rw,nosuid,nodev,noexec,relatime              0  0
tmpfs           /var/log  tmpfs  rw,nosuid,nodev,noexec,relatime              0  0


Another long regularly changing log file I found was .xsession-errors in my home directory. I moved this into /var/log which is in RAM disk by editing /etc/X11/Xsession and changing the ERRFILE setting to:

ERRFILE=/var/log/.xsession-errors

Iceweasel (Firefox)

Mozilla's conditions for use of their trademarked names require that distro's using their products clear any patches with them first, but in Debians view this compromised their own strict seurity measures so rather than this they opted to hange the branding of the products. Debian's fork of Firefox is Iceweasel.

First install Video Download Helper and Firebug addons.

Firefox downloads webpages from links it thinks you may click. This may make the experience seem faster but really it just bogs down Firefox and your netbook. Type about:config in the address bar, then set network.prefetch-next to false.

Centrino Wireless-N 1030

This was not included by default in the first installation DVD of Debian 7 so I had to do the following after installation. If I had had a LAN cable at the time te installer could actually have retrieved the necessary driver for me and installed it, but I only had wifi access, and that was the thing that needed fixing so I had to continue installation and deal with it afterwards.

<bash>

echo "deb http://http.debian.net/debian/ wheezy main contrib non-free" >> /etc/apt/sources.list apt-get update apt-get install firmware-iwlwifi modprobe -r iwlwifi ; modprobe iwlwifi </bash>

Bluetooth

I found that I couldn't get any of my bluetooth devices to pair in the default install of Debian 7. The devices would show up in the detected list and the pairing process would initiate properly, but would then fail to complete. Using the bluez tools from the terminal worked though with the following procedure I found here. Strangely, after I got the first thing (my mouse) working with this process, then my phone was able to pair from the GUI as normal even though it had failed prior to getting the mouse to work.

<bash>hcitool scan</bash>

This process gives you the MAC address of your device which you can then begin the pairing process with as follows. This will ask you for the pin which you type in to your device etc or use 0000 if it's a device like a mouse or headset.

<bash>bluez-simple-agent hci0 12:34:56:78:9A:BC</bash>


You then make the device trusted so that it can automatically connect in future:

<bash>bluez-test-device trusted 12:34:56:78:9A:BC yes</bash>


And then finally, connect to the device:

<bash>bluez-test-input connect 12:34:56:78:9A:BC</bash>


It should now be shown as normal in the bluetooth menus and settings window and should connect automatically when the session starts.

See also