Instructions for a noob or newbie to set up Devil-Linux with particular focus on creating a fileserver for network storage via a network drive / nas drive for Windows computers - by using Samba. Includes basic setup, LVM, RAID and Samba configuration, outgoing email setup, and various other tweaks and tips. Last updated on Tue Sep 02 2014 6:51 PM.
If you want to share files between Windows PCs in a small office or in the home, there are several ways to do it:
- Use Windows built-in file-sharing. Sharing folders with Windows can work fine but it is limited - for instance to 20 concurrent connections for Windows 7, 10 for XP Professional and 5 for XP Home. Of course Windows Server overcomes these limits, but at a price, and with vast complexity.
- Buy a proprietary shared hard drive - try googling 'network storage', 'network drive', 'nas drive' for some cheap NAS/multimedia drive solutions. Having a proprietary product may give you comfort that things won't go wrong or at least that if they do the manufacturer will help you sort it. This feeling is not always justified.
- Set up a Samba fileserver - it is free and easy and it provides fast and stable shared folders for an almost unlimited number of users. If you have a suitable old computer to hand even the hardware is free, and following these instructions it won't take long to set up. Also you can configure it to use RAID1, which means you use two hard disks - if one fails, you don't lose any data. Manufacturers admit that all hard disks will fail eventually. As the film Armageddon puts it: 'It happened before, it will happen again. The only question is: when?'
So this page focuses on setting up a Samba fileserver, running under an operating system or OS called Devil-Linux. Devil-Linux (often shortened to 'DL') is a distribution of GNU/Linux (or 'distro', popular distros include Debian, Ubuntu, Mint, CentOS, Fedora, openSUSE, archlinux...) designed to run from USB drive or a CD, with configuration held on USB drive or floppy disk. It is text-based with no gui ('graphical user interface' i.e. pretty screens like Windows), but don't let this put you off: it is simple to get going and there is very little to go wrong. Although originally intended for firewall/router setup, Devil-Linux works well as a file server, which is the implementation considered here: Samba, in a Windows workgroup environment, with high security not a consideration. I do not cover here the use of Samba at the heart of a Windows Server Domain - a Primary Domain Controller, or indeed Samba as any part of a Windows domain; but the setup here would provide a good starting point if you wanted to do this later. A further advantage of Devil-Linux over many other Linux distros is that because it boots from USB or CD, Raid and Logical Volume Management (LVM) can be implemented on hard disk(s) very easily.
Of course as often with Linux it is all free, which is nice, and you can use old hardware so that might be effectively free too. Once you have got as far as 'Login with Putty' below you don't even need a keyboard or a screen as you can control the Devil-Linux computer remotely by logging in.
And don't worry about the name, there is nothing sinister about Devil-Linux, you are not about to be taken over by dark forces.
I've tried to make these instructions as easy as possible, but even so they are probably best if you have some experience with Windows. They are aimed at Linux newbies and are intended to be self-contained, but you can get help about a linux command by typing at the Devil-Linux command line man [command] e.g. man fdisk for information about the fdisk command (use cursor up/down and pageup/pagedown keys to move around the manual info and type q to quit when you are done). You can also google for 'linux cheat sheet' and find some one page summaries of common linux commands. A great many things are common to different flavours ('distros') of Linux.
Text for you to type is shown like this, and I have generally assumed that you realise you need to press Enter or Return at the end of each line. As you might expect there are a number of links to other resources on the internet, but there are also some pseudo-links like this (distinguished by the colour and the dash underline) - if you hover your cursor over these you will seem some additional explanatory (non-critical) information.
You can also refer to the Devil-Linux home page and documentation and you can subscribe to the Devil-Linux discussion mailing list which will allow you to ask specific questions and get answers from the real experts - but this should only be used for issues specific to Devil-Linux.
Devil-Linux can do lots more than just acting as a free'n'easy Windows fileserver, of course - we are just scratching the surface here.
These instructions are written for Devil-Linux version 1.6, and you may have problems if you try to follow them with earlier versions.
Of course all of this info is provided strictly without warranty of any kind - it's free so what do you expect! If you have problems, send me an email.
- An existing local Windows network configured as a workgroup with a DHCP server/router (in smaller networks this is usually provided by the hardware that connects you to the internet, or might be provided by a computer.)
- A Windows computer connected to this network with internet access and optionally a CD writer (which is used to create the initial CD and later to run Putty.)
- For the Samba server (the machine which will run Devil-Linux), you need a computer with a network port connected to your local network, a CD drive (if you plan to put the operating system on CD rather than USB), USB port for the USB flash drive (or a floppy disk drive) and one or two hard disk drives (preferably two - so that you can use a Raid setup which guards against a hard disk failure). The previous contents of the hard disk(s), if any, should be expendable. The Samba server does not need to be bleeding-edge technology, it must have at least a 486 processor (i.e. built since 1989/90) and at least 128MB RAM; for the initial setup (and any subsequent upgrading) it will need a keyboard and monitor, but most of the time these are not required. Now that we all worry about saving the planet (and our pocket) you might want to consider a low-power server, as this machine is likely to be running 24/7.
- One USB flash drive. Or to be more precise: either (a) one (or two) USB flash drive(s), or (b) one blank CD and either a USB flash drive or a floppy disk drive. If you use USB flash drive(s), try to find ones that offer physical write-protection locks, so they are ultra-secure against hacking.
- Secure firewalled internet gateway. I mention this because the setup here is deliberately simple and avoids getting into security considerations. This should only be contemplated if your internet router provides secure protection against internet hacking - which most modern routers fortunately do. (Your Devil-Linux computer, once established, can be set up to be a secure gateway itself, indeed this was the original purpose for Devil-Linux, but such usage is beyond the scope of this article.)
Devil-Linux: The Pros
- Simple and clean GNU/Linux distro based on LinuxFromScratch - without any desktop graphical interface (GUI), but well supplied with non-GUI Linux utilities including optional services such as Samba, Apache, MySQL, PostgreSQL, Postfix, Tftpd, Vsftpd, Webmin - and many others
- Hence very reliable - it just works!
- Low hardware requirement (because no GUI) - suits older hardware or virtual environment (VMware modules are built-in)
- Very secure from hacking:
- can run from CD or hardware-write-protected USB or floppy so the OS and configuration cannot be overwritten
- has GRSecurity (unless you use the server edition, which actually you will need to if you want Samba)
- Portable especially when both OS and configuration are stored on USB. (But it is more normal to use hard disk(s) as well for a Samba server.)
- Easy to upgrade - because it runs from USB/CD/floppy (and easy to downgrade again if you have problems)
- Easy to implement LVM and software-based Raid - which makes your data storage more expandable [LVM], fast [Raid] and safe [Raid1]
- Can operate headless i.e. accessed over network without local keyboard or monitor - except when upgrading the operating system. Also has a serial port connection mode.
- Friendly and helpful community via mailing list
- Well-maintained by Heiko and his team of helpers
- A great way to learn about the GNU/Linux operating system and what it can do without the confusion of a graphical front-end
- This help page (and the Devil-Linux official documentation) to get you started!
Devil-Linux: The Cons
- Small user base, mostly of experts - this distro was not originally intended for newbies.
- No desktop graphical interface (GUI) for initial setup, nor thereafter except through web-based packages such as Webmin. If a command line interface (typing text onto a black screen) seems too scary for you, you should look elsewhere. With Devil-Linux you are 'under the hood', you will get your hands a little bit dirty!
- You can't (usually) add (install) software packages that are not already in the distro. There is no gcc, and no equivalent of apt-get or yum. If you want to use some specific software make sure it is present in Devil-Linux already (virtually all 'normal' non-GUI packages are there - including Samba of course!) Review the packages for DL 1.6 here. At the time of writing: no asterisk (telephone system), no rdiff-backup (backup utility), no ffmpeg.
- Although you can access your DL machine remotely most of the time, you will need local access (i.e. local keyboard & monitor) if/when you choose to upgrade the distribution. There are some workarounds for this limitation but they are beyond the scope of this article.
DL can do most things that any Linux server system can do. But to be more specific here is an example list, far from complete:
- Windows Network Fileserver - using Samba
- Web server - so you can host your own internet (or intranet) websites
- Email server - so you can receive and send emails and run an email service (with multiple users collecting/sending emails through this machine)
- Database server - using MySQL or PostgreSQL
- Print server
- DHCP server and firewall - to service your private lan and protect it from the internet (but these functions are normally provided by standalone hardware)
- BOOTP and TFTP server - for booting diskless workstations (running Thinstation, for example), or for other devices which can download files using TFTP
- Monitoring remote websites - via a script
- LAN monitoring - using Nagios
- Network Time Server - using NTPD, so all your LAN computers can get the same accurate time
- Virtual Machine Client - VMware modules are built-in and DL is an ideal lightweight VM
- Virtual Machine Host - Using special 64-bit build of DL (in alpha), with qemu under KVM and Sheepdog, a set of 3 or more DL machines, each with hard disks, can provide a High Availability hosting service for many virtual machines, without requiring any other hardware. Easy configuration of DL systems (with LVM and RAID) make it an ideal host.
From your Windows machine, download Devil-Linux 1.6 (or later) from the Devil-Linux FTP Download Site, making sure you select a suitable release for your hardware (usually you will want the most recent file ending -i686-server.tar.bz2 in the releases folder, unless your machine has a very old or Pentium M processor which does not support PAE). Open the downloaded file with the excellent and free 7-Zip Program Manager, then open the tar file inside it (this takes a few minutes) and then continue opening folders inside 7-Zip until you see a large bootcd.iso file and some others. Extract these files to a suitable temporary folder.
You will now create the boot system disk for DL. Note that this is (normally) separate from the configuration medium; DL stores your specific system configuration in a single compressed file and usually this is placed on a separate USB drive partition. So you have 2 choices:
- If you want to boot Devil-Linux from CD, you need to burn bootcd.iso to a new CD. If you don't already have a program for burning ISO images to CD, I recommend the free ISO Recorder (but make sure to use the correct version for your operating system, it may not work with versions later than XP or Server 2003). With ISO Recorder installed, just locate the bootcd.iso file, right-click and choose 'Copy Image to CD'. If you are using other software note that you do not just copy bootcd.iso to a disk; with Nero Express 6, for instance, choose 'Disc Image or Saved Project', in the dialog under 'Files of type', select 'Image Files (*.nrg, *.iso, *.cue), then locate the bootcd.iso file. (Alternative instructions in the Devil-Linux documentation here.)
- If you want to boot DL from USB, locate the file 'install-on-usb.exe' which is the one with a Devil-Linux icon. Your USB drive must be at least 512MB in size with expendable contents. You also need 7-Zip, but hopefully this is already installed. Just drag and drop your USB drive onto install-on-usb.exe to start the process.
The install program offers three choices for the configuration: if you are going to use a different media for holding your configuration data I recommend you go for option '1' (clean installation), otherwise choose option '3' (remote-boot configuration), which makes it easier at the start.
Next, unless you are booting from USB drive and want to use just this one drive for both boot file and your configuration data, you need to format the media that will hold your configuration data - a[nother] USB flash drive [preferred] or a floppy disk. Insert it and make sure it is blank and formatted: you can do this in Windows by opening 'My Computer', right-clicking on the disk icon for this inserted drive (being careful to select the correct drive!) and choosing 'Format'. Use File System 'FAT32'. Don't choose to create a system disk, and for a floppy disk never choose 'Quick Format' (because this skips the physical checking of the disk which is particularly important for a floppy disk). Click 'Start' and wait till it's done. You are now ready to start up your DL machine!
Go to your target hardware, which should already have one or (preferably) two hard disks installed. With your newly-created [CD and your] USB drive[s] (and/or floppy disk) inserted, boot the machine. If it does not boot up into Devil-Linux then you may need to alter the BIOS settings to force the USB or CD to boot first (the boot device being the one onto which you placed bootcd.iso). Sometimes pressing F8 or ESC at boot time allows you to select the boot device, otherwise you can enter the BIOS settings by pressing 'DEL' - or 'F1' or some other key specified on the screen - as the computer boots, then choose 'Advanced Setup'.
The boot process will look something like this:
During the boot process you may be asked if you really want to load DL without configuration media - answer y to this. After booting Devil-Linux may prompt to create a new configuration on the USB or floppy drive, you should answer y to this.
After the first boot has completed, login by typing root at the prompt, then (as always) press Enter, then normally there is no password on first boot so just press Enter again. If however you chose the USB remote-boot configuration there is a password 'devil', and you can immediately login with Putty (then come back and complete this section).
After successfully logging in you will see a prompt thus:
Type setup (and press Enter) to start the Devil-Linux System Configurator (or 'setup' as it is more generally known):
You move around using the cursor (arrow) keys, the TAB key, or with your mouse, and press the space bar to select a service. Here you provide some basic information, select the various services (run by daemons) that you want to load and have running when the machine starts up, and set the network options. The initial menu options, and how to set them, are:
HOSTNAME (whatever you like e.g. DL1)
DOMAIN (I set this to our local workgroup name but to be honest I don't know if this matters)
TIMEZONE (e.g. Europe/London)
KEYBOARD (e.g. 'uk')
The other options can all be left to their defaults.
Required services are:
SAMBA (this is the service which provides the shared folders for your Windows network)
SSHD (to enable Putty login)
MDADM_MONITOR (if you plan to use a RAID hard-disk array, which is recommended)
Recommended services (which however you could add later) are:
BEEP (beeps when system has completed booting, selected by default)
CRON (allows you to run programs at preset regular times - like 'Scheduled Tasks' in Windows)
GPM (allows you to use mouse with remote login i.e. with Putty)
NTPD (time synchronization)
POSTFIX (mail server)
WATCHDOG (will reboot the server if it seems to have stopped working)
Possible additional services (which you could add later) are:
ROUTING (enabled by default, I am not sure what this does and I don't have it enabled)
SASLAUTHD (required if you need Postfix to send outgoing emails with authentication through a relay host - see below)
MYSQL (database, needed with APACHE2 for some website implementations and makes this a LAMP system)
VSFTPD (for ftp access e.g. with Filezilla)
XINETD (for Swat, which allows you to control Samba through a web interface, but it is not covered in this guide)
Usually all you need to do is to select NET / 1NIC, set MODULE to 'autoselect' and set UseDHCP to 'Yes' (leaving OPTMOD, IP and NETMASK blank, and DHCPSERVER set at 'No'). DL should recognise your ethernet network adapter at boot time and then obtain an IP address from the DHCP server already on your LAN. There's usually no need to set 2NIC or 3NIC.
Setup NTP, MySQL or HTTP (Apache2). NTP is worth setting up: find and enter the address of a time server near you. If you want to use MySQL server, it is very important that you change the default location for the database (--datadir=/var/mysql) to a permanent medium that will not be lost on reboot (e.g. --datadir=/home/mysql). (If you are just starting out, this permanent location on your hard disk will not yet exist, so you might want to make a note to come back and do this later.)
Here you set the password for the 'root' user - please use a serious password that you will not forget but no one else will guess - you have to type it twice. In any case you must set a password of some kind before you will be allowed to login with Putty (see below).
Here you save the changes - very important! (equivalent to typing save-config -q on the command line)
Exit after you have saved your changes. It warns you again about saving changes!
After saving the changes and exiting from Setup back to the prompt, type reboot. Whenever possible you should reboot this way rather than cutting the power or pressing the reset switch.
After rebooting and logging in, and assuming your network adapter is now working, you can find out the ip address of the Devil-Linux machine by typing ifconfig -a eth0 - the IP address is the 4 numbers separated by periods that appear after 'inet addr:' e.g. 192.168.1.13. Provided you set a password and have enabled service sshd (see above), you can now login with Putty from any Windows machine on the network. Run Putty on the Windows machine, put the Devil-Linux machine's IP address in as the host name, ensure 'SSH' is selected and click 'Open'. Type root as the username and then when prompted the password that you have set. Using Putty (or another SSH client) has two advantages:
- you no longer need a keyboard or monitor on your Devil-Linux machine, just power and a network connection
- you can copy and paste text from other windows (such as this one!) into Putty. To paste into the Putty window, just right-click. To copy from the Putty window, just select the text you want to copy. If you don't have Putty, you can download it free here.
From now on the only time you will need local access to your DL machine is when you are upgrading the operating system.
If you want to login from a Linux machine, just open a terminal window and type ssh root@[ip-of-Devil-Linux-machine] (but as a Linux user you knew that already didn't you?)
To end your putty or ssh session, just type exit. This is better than just closing the Putty window which leaves an open but irretrievable session running on the DL machine.
This is not normally the recommended approach, but is suitable if you are running DL as a virtual machine (VM), or you already have hardware raid, or you only have one hard disk available. Or maybe you really can't be bothered with software raid. Otherwise, you should use software raid and instead of following this section, follow the section below.
Be sure that you are happy to lose any data currently on the hard disk! You will now create one Linux LVM partition, these instructions assume this will be on the first partition (hda1) on the first IDE hard disk (hda) but it will work for other partitions or other hard disks, provided you alter the instructions hereafter appropriately, and are careful!
OK, so how do you know how the hard disk is described by Linux? You refer to hardware devices in Linux as /dev/[device], and for each hard disk the device has a 3 letter name (e.g. /dev/hda); each partition on that drive is described by the drive name followed by a partition number (e.g. /dev/hda1). IDE PATA drives are named /dev/hd[a-d] e.g. /dev/hdb; SATA, SCSI or USB drives are named sd? e.g. /dev/sdb. For more information see here.
You find out how the drives on your system are denominated by typing
which shows all large disk devices so you can work out which is the hard disk you want to use. (Remember you can copy this command line text from this page and right-click in Putty to paste it in as a command.)
We now partition the disk with fdisk (there is also a more user-friendly and generally better partitioning utility called cfdisk but it refuses to work with some USB disks). So let's assume that you are going to use hda - the IDE primary master hard disk. Type:
Now type m (and press Enter) to see the instructions which are, in brief:
p - to see the existing partition table
d - to delete any existing partitions
n - to create a new partition
q - quit without saving changes
t - to set the partition type
w - to write your changes and resync the disk
So typically you would:
- start by looking at the existing partition table (p, then Enter)
- delete any existing partitions (d, then Enter)
- create a new partition (n,
- set it as a primary partition (p, then Enter)
- set it as partition 1 (1, then Enter)
- accept the default First Cylinder (Enter)
- accept the default Last Cylinder (Enter)
- set the type of this partition to 8e for Linux LVM (t, Enter, 8e, Enter)
- look to see all is okay (p, then Enter)
- lastly write the changes (w, then Enter)
[If you get a warning message at this point it is advisable to reboot, in which case you should first type save-config -q to save your configuration, then type reboot.]
Having created the partition (hda1 in the example above) that can be used by LVM (Logical Volume Manager), you need to create an LVM physical volume ('PV') on the physical partition that you just made, and then inside this PV you create an LVM volume group ('VG') called 'devil-linux':
# create volume group 'devil-linux'
vgcreate devil-linux /dev/hda1
# ignore any messages like '/dev/cdrom: open failed: Read-only file system'
(Note that any text after hash '#' is just comment.) Now continue to set up the logical volumes below.
If you are just using one disk, or you have and want to use hardware raid, you don't need to (and shouldn't) follow this section! But otherwise this approach is recommended over the approach in the previous section. Compared with a single drive, a dual-drive software Raid1 system dramatically improves the security of your data by guarding against a single hard drive failure - and it is faster for reading data. If you are using SATA (or SCSI or USB) drives it is also possible to 'hot swap' drives: this is not possible with IDE PATA drives because of the hardware architecture, and its use is beyond the scope of this article.
For further detail, you may wish to refer to the Devil-Linux html instructions (which also come with the distribution) on setting up Software Raid. Devil-Linux, like most Linux distros, uses the mdadm software raid tool. There are different levels of Raid. I use Raid 1 (mirrored disks) which provides security against failure because you have 2 disks holding the info instead of one, and is also faster than a single disk for reading. Raid 0 (striped disks) is faster for reading and writing but provides worse security than no Raid at all so I don't advise it! The other commonly used Raid levels are Raid5 (striped disks with parity) and Raid10 (striped and mirrored disks) (also called Raid1+0), but I haven't tried them, and these higher Raid levels are intended for bigger setups with multiple disks.
Raid is good, but it is not a backup system and you must backup your data. My solution for this is TimeDicer. OK that's the end of the sermon, let's move on...
Be sure that you are happy to lose any info currently on both hard disks!
You need to check which hardware devices are actually to be the components of your raid device:
shows all large disk devices so you can work out which are the right ones. (Remember you can copy this command line text from this page and right-click in Putty to paste it in as a command.)
The Raid1 device that we will create will have a size that is the smaller of the two devices on which it is based, so it is logical to use two physical drives that are the same size. Anyway, let us assume that after looking through the list you are clear that you are using /dev/sdb and /dev/sdd as the two drives for the Raid1 device. Do:
You can review the command options for fdisk by pressing m, then Enter. Look at the existing partition table (p, then Enter), delete any existing partitions (d, then Enter), create a new partition (n, then Enter), set the type of this partition to fd [Linux raid auto] (t, then Enter, fd, then Enter), and lastly write the changes (w, then Enter). Then do the same for /dev/sdd i.e. starting with fdisk /dev/sdd. So you have created primary partitions /dev/sdb1 and /dev/sdd1. You now create the Raid1 device /dev/md0 thus:
You don't need to worry about a warning message saying 'mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array?' - you can answer 'y' because this isn't going to be a boot device. [If you get a different error or warning message at this point you might have to reboot; sometimes after reconfiguring the disks they are not properly recognised until reboot, in which case you should first type save-config -q to save your configuration, then type reboot.]
Once you have run the above command successfully, type:
to show the new [raid1] personality which at this stage will be resyncing or may be synced '[UU]'. Time to save the configuration thus:
Now create the new LVM2 Physical Volume at /dev/md0:
Now create a Volume Group called 'devil-linux' which will lie over the Physical Volume. At boot-time the OS, through LVM - the 'Logical Volume Manager' - will automatically mount certain named logical volumes inside the volume group 'devil-linux':
# ignore any messages like '/dev/cdrom: open failed: Read-only file system'
(Note that any text after hash '#' is just comment.) You should make sure that you have selected MDADM_MONITOR in setup as a service, because this will give you warning (mailing to root) if there are any problems. That's really the point - if one disk fails you want to know about it so you can fix it before the second one goes. Once you have Postfix correctly configured you can test whether the monitoring would work in a case of a real problem by trying the following:
This creates an email test message which you should receive. The information about md0 should include '[UU]' to indicate that both drives are okay. If Postfix is not yet set up, remember to come back and test this later - it's important!
Now continue to set up the LVM logical volumes below.
Once you have your LVM Volume Group called 'devil-linux', use the scripts below (and the one important line in between them) to create and then format the logical volumes within this group. With Putty, you can just copy the script from here and paste it in (right click in the Putty window). Lines starting with hashes are just comments. This script assumes that the hard disk is at least 6G in size. For a list of LVM-related commands just type lvm help at a command prompt. If you want more information about auto-mounted LVs in Devil-Linux see here.
# Script 1: Create Logical Volumes
# swap is created as a continuous space with -C y option
lvcreate -L 4G -n swap devil-linux -C y
# log will be auto-mounted at /var/log
lvcreate -L 4G -n log devil-linux
# data will be auto-mounted at /var/data
lvcreate -L 4G -n data devil-linux
# opt will be auto-mounted at /opt - good place to install programs
lvcreate -L 1G -n opt devil-linux
echo "Free space remaining:$(vgs --noheadings -o vg_free devil-linux)"
Now you have created all the Logical Volumes except 'home', which is the big one you want for Samba. The size for this cannot be greater than is shown at the end of the previous script. It's good to leave space for many reasons such as for later expansion of existing LVs or creation of new LVs, or for LVM snapshots, which are great for making backups. So assuming we have say 148G free, we might leave 20G unused and do the following:
lvcreate -L 128G -n home devil-linux
Now you need to format the Logical Volumes and the script below does this:
# For small LVs it is more economical to use ext2|ext3.
mke2fs -j /dev/devil-linux/log
mke2fs -j /dev/devil-linux/data
mke2fs -j /dev/devil-linux/opt
# Ext4 is the best choice for large volumes
# Finalize & save configuration
# Now you should reboot. Type reboot and press Enter.
As the script suggests, you should now reboot the computer by typing reboot. After rebooting, you can check your filesystems with df -HP. Among other entries you should see the /opt, /home, /log and /data mountpoints which you just created, and their filesystems should be of the form /dev/mapper/devil--linux-[word] where [word] is the name of the LV and of the mountpoint.
We start by creating the folder(s) inside /home which will be made visible on your network by Samba; we will create /home/ourdocs, but you can use any name you like:
mkdir -p /home/ourdocs
Now you need to edit or replace /etc/samba/smb.conf, using nano, a full screen editor. Unlike more traditional linux text-screen editors such as vi or vim, nano is user-friendly, and instructions are available by typing CTRL+G (CTRL+X exits back to the document, and CTRL+X from the document exits to the command prompt, after giving you a chance to save any changes).
mv /etc/samba/smb.conf /etc/samba/smb.conf.default
You now have Nano open with the new (empty) smb.conf document. Into this you can put the text below, which gives a very simple (albeit insecure) Samba setup, by copying it and then pasting it into Putty (right-click). You can change the workgroup to the name of your Windows workgroup and the server string to some more meaningful name if you like. The 'ourdocs' folder will be open (browseable, readable, writeable) to all computers and users on your network, and any files deleted from it will be put in its Recycle Bin. There are lots of other configuration possibilities for smb.conf which you can explore later. Some of the configuration options below have hover-over text which you can read for more information if you want.
workgroup = MY_WORKGROUP
server string = Samba Server
guest account = someone
map to guest = bad user
log file = /home/ourdocs/%m-samba.log
max log size = 50
passdb backend = smbpasswd
dns proxy = no
path = /home/ourdocs
read only = No
create mask = 0770
force create mode = 0770
directory mask = 0770
force directory mode = 0770
guest ok = Yes
vfs objects = recycle
recycle:repository = Recycle Bin
recycle:versions = Yes
recycle:touch = Yes
Press CTRL+X (to exit Nano) then y to write the new file and exit.
After creating this file, you need to create a generic samba user 'someone', so at the command line do:
useradd -g users -s /bin/false someone
# create samba user 'someone', press enter twice for blank password
smbpasswd -a someone
# change ownership of any existing files in the share
chown -R someone: /home/ourdocs
# change permissions of any existing files in the share
chmod -R 0770 /home/ourdocs
One last thing that is good to do is to add a reference to your own machine's HOSTNAME to your /etc/hosts file if it is not already there, this may not be necessary in all scenarios but I need it and so do some others. This does it in one line:
Remember to save changes to the configuration:
Now Windows computers in the workgroup can access the /home/ourdocs directory - when they attempt access they are treated as guest 'someone' and in Windows Explorer the folder will appears as 'ourdocs' off a computer called 'Samba Server', obviously you can change these in the above text to be anything you like.
You can check the status of Samba (which computers are connected and which files are locked) with the command smbstatus. Another command line tool you can investigate at your leisure is smbclient, which enables this server to make connections to folders that have been shared on Windows computers on your network, or to shared printers.
There is no need to add any more samba users if you are happy for all machines on your local lan or workgroup to have the same access rights to your samba folder(s). But if you want user-related restrictions you can create specific users and give them different permissions. Substituting the username that you want in place of 'someone' (normally you use their Windows login name), run the same commands as above (useradd, smbpasswd), which first create a linux user in the 'users' group, and then create a matching samba user - entering their local Windows password when smbpasswd requests it. You can then create a different share with more limited permissions, for instance only allowing selected users, so for instance you could create a share called 'hr' (human resources) by creating a folder with mkdir /home/hr and adding to smb.conf the following lines:
path = /home/hr
valid users = david jane
read only = No
force create mode = 0770
force directory mode = 0770
If these users have previously connected to the Samba Server (before you created these specific unix and samba user identities), then you may have to recreate the links to the server in Windows to force their machines to give up their previous login as 'someone' and connect with their new user identity.
Note that users created in this way will only be able to access your Samba Server via samba, they cannot log in directly, whether by ssh (putty) or at the terminal. If you want them to have access to the machine as linux users, see here.
DL uses syslog-ng to log error and information messages for your system at /var/log/messages. You can view the last 300 (say) lines of the log file at any time by typing tail -n 300 /var/log/messages|less (use PageUp/PageDown keys to move around and q to quit).
It's really important that your new server can send outgoing emails to you, so that it can warn you about problems, usually via a cron job. First you need to have enabled postfix as a service in setup (above). To redirect all cron job outputs and all local emails to your own email address just do nano /etc/crontab and add or modify a MAILTO= line thus: MAILTO="email@example.com".
This should work 'out of the box', but it's better if you can set a more sensible 'From:' outgoing email address than 'root@Samba.localdomain'. To do this you need to reconfigure postfix a little:
- Type nano /etc/postfix/main.cf and add a line at the end: smtp_generic_maps = hash:/etc/postfix/generic (which tells postfix to map outgoing (smtp) email addresses according to the data in 'generic').
- Type nano /etc/postfix/generic and add a line: root firstname.lastname@example.org, substituting your preferred email address for 'email@example.com' - this will appear as the 'From:' address for outgoing emails
- Rebuild generic.db with postmap /etc/postfix/generic
- Type nano /etc/aliases and add a line: root: firstname.lastname@example.org (the email address being your own email address at which you can receive mails) - this ensures that any local mails on this machine which would go to root are instead redirected to you (for instance, messages from mdadm about problems with your raid configuration)
- Rebuild the database with newaliases
- Reload postfix with postfix reload - if this tells you that postfix is not running you can start it now with /etc/init.d/postfix start - and remember to add it as a service in setup if you want it to be loaded automatically in future.
- Save the new configuration with save-config -q
You can test the configuration at the command line by typing echo test|mail -s "Test" email@example.com. If you don't receive the email, or you see an error message, try restarting postfix with /etc/init.d/postfix restart, or type postfix check which may give you more information about what is wrong with your settings, and look at your syslog (see above - e.g. cat /var/log/messages | grep postfix, or if this doesn't work, cat /dev/vcs10 | grep postfix) [Note: /dev/vcs10 is the cache of tty10, which is default output for syslog-ng in Devil-Linux, but it doesn't hold messages for very long - see above.]
You should also try echo test message|sendmail root and make sure you receive the resulting message. This tests that messages to 'root' (e.g. from mdadm) will reach you.
Relaying Emails with Postfix with/without authentication
If you need to relay your emails through an open smtp mail server (for instance, to prevent outgoing emails being blocked as spam by other mail servers) add the line relayhost = mail.ispserver.com to /etc/postfix/main.cf, then do postfix reload. If the relaying server requires authentication for your outgoing emails then ensure you have SASLAUTHD as well as POSTFIX loaded at setup (you can start saslauthd manually with /etc/init.d/saslauthd start) and follow these instructions (copied from here):
- Type nano /etc/postfix/sasl_passwd to set up a passwords file as follows:
mail.ispserver.com username:password(substituting your own relayhost, username and password, of course), exit (CTRL+X) and save the file (y)
- Type chown root:root /etc/postfix/sasl_passwd; chmod 600 /etc/postfix/sasl_passwd to change the ownership and permissions on this file
- Type postmap /etc/postfix/sasl_passwd to load the password information from this file into the database
- Do nano /etc/postfix/main.cf, find the INTERNET OR INTRANET section and add or change lines as follows:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
Now exit and save the file, then type postfix reload, and test (see above)
You can set up a local (or even a remote network) printer in DL and then have Samba make it available to the Windows machines on your network. Here's an example of a very simple setup for a parallel or USB printer.
First you need to edit the printcap file, this lays out the printers your DL machine has on it. Type nano -w /etc/printcap. Now for a parallel printer paste:
# Common configuration information .common:sd=/home/spool/lpd/%P :sh:mx=0:force_localhost # lp0 - open a device p0|aliasforlp0:cm=Parallel Port Printer:tc=.common:lp=/dev/lpt0:
Or for a USB printer paste:
# Common configuration information .common:sd=/home/spool/lpd/%P :sh:mx=0:force_localhost # lp0 - open a device p0|aliasforlp0:cm=Parallel Port Printer:tc=.common:lp=/dev/usb/lp0:
In theory you can support as many printers as you want or need. To do so, just copy the last 2 lines and change the aliasforlp0 to a unique name and lp=/dev/usb/lp0: to the device of your choice.
Next we need to set up the lpd.conf. Type nano -w /etc/lpd/lpd.conf and paste this:
# Purpose: always print banner, ignore lpr -h option # default ab@ (FLAG off) # Purpose: query accounting server when connected # default achk@ (FLAG off) # Purpose: accounting at end (see also af, la, ar, as) # default ae=jobend $H $n $P $k $b $t (STRING) # Purpose: name of accounting file (see also la, ar) # default af=acct (STRING) # Purpose: use long job number (0 - 999999) when a job is submitted # default longnumber@ (FLAG off) longnumber
Now we need to setup the permissions file. Type nano -w /etc/lpd/lpd.perms and paste this:
ACCEPT SERVICE=C SERVER REMOTEUSER=root,papowell ACCEPT SERVICE=C LPC=lpd,status,printcap REJECT SERVICE=C ACCEPT SERVICE=M SAMEHOST SAMEUSER ACCEPT SERVICE=M SERVER REMOTEUSER=root REJECT SERVICE=M DEFAULT ACCEPT
I think you can modify this one to allow you to add users, however I've not messed about with it too much as it seems to work ok with this configuration.
Now if you're using a Parallel Printer, sometimes DL doesn't pick up the printer on its own. To see if the printer is seen type ls /dev/lp*. If your printer (i.e. lp0) isn't listed you need to type mknod /dev/lpt0 c 6 0. If you're using a USB printer DL should create the node automatically. To check, you can type ls /dev/usb/lp*.
Now we need to check the config for errors. Fortunately there is a command to do this for us. Just type checkpc -f. You may get an error about host names. If so type nano -w /etc/hosts and add your server's name and address to this file. Once you've done that and saved the file, just run checkpc -f again.
Now we need to start the printer daemons so type the following:
lpd lpc lpd lpq -a
The last one shows the print queue, If all has gone right it should show your printer. Next you need to edit your samba configuration file (where you've set the shares up). Type nano -w /etc/samba/smb.conf and add the following:
[printer1] printable = yes printer = lp0 printing = BSD path = /home/z-shares print command = /usr/bin/lpr -b -P%p -r %s lpq command = /usr/bin/lpq -P%p lprm command = /usr/bin/lprm -P%p %j min print space = 2000 # # CAUTION! this does not apply to win95/98/ME # it tells winNT/2K/XP clients to use a local # printer driver # stops the "access denied" in windows when trying to view # print queue use client driver = yes
The last file to edit is lpd.conf. Type nano -w /etc/lpd.conf and add the following line:
This will get rid of the long list of completed jobs that windows would otherwise display for days afterwards.
Remember to finish up with a save-config -q and hopefully it should work. You may find upon a reboot that the printer may not start properly. If so, just add
lpd lpc lpd lpq -a
to a script and run it after a reboot to reinitialize the printer.
The process for adding a user to Samba is explained above, but if you want to create a new user under Linux who will be able to log in to your DL machine, you can do it as shown here. The 'passwd' command will request you to provide a login password for the user:
passwd newusername save-config -q
I have also created a script for adding ftp users for website uploading/manipulation, for use with vsftpd.
The first and critical thing to do before upgrading is to save your existing configuration: save-config -q
For a CD upgrade you burn a new CD with the upgraded operating system (see instructions near the top), and reboot your server with the new CD. Because you can't change the CD while DL is running, it is probably best to use poweroff and then restart the machine manually and change the CD as the machine restarts. In any case you will need local access to the machine at this point - you will not be able to login remotely until you have been through the upgrade instructions on the local console. Remember to resave your configuration once you are happy with it!
For USB upgrade (including migrating from CD to USB) you plug in an unused USB drive (at least 512MB), it should be automatically recognised by the system. Now identify which device this is (sda, sdb, sdc or sdd) by doing fdisk -l /dev/sd* | grep ^Disk. Make sure it isn't the current boot device which is shown (with partition number) by cat /shm/DL_DEVICE. I'll call the unused USB drive sdb here, and in fact it is quite likely to be sdb in your case. Navigate your prompt to a suitable temporary download directory e.g. cd /home/ourdocs, then download a new Devil-Linux distribution from a download site e.g. (all one line)
Then cd to the newly-created subdirectory and run the ./install-on-usb script. Specify 1 (do not press Enter!) to use SysLinux, bootcd.iso for the DL ISO source, /dev/sdb (substituting a-d for b as appropriate) for the device name of disk device that will be written to, y for partitioning: format the chosen destination drive by creating a New Primary partition of at least 500MB with type 0B (W95 FAT32) and make it bootable - I suggest you use most (but not quite all) of the available space for this partition (which, if you ever move the USB drive to a Windows machine, is available to Windows). If you want to store the configuration on the same media the best way is to put it in a separate second partition, so create a second partition using the rest of the drive (1MB should be plenty though) and with the (default) Linux type. Finally write the changes and quit from cfdisk. Now you are asked for the partition name of the disk device that will receive the ISO image - type /dev/sdb1 (if b is the drive letter and 1 is the partition number), then for the preloaded configuration file just leave it blank (press Enter), and to copy the existing live configuration to your new second partition (if you are doing this), type y. After passing the final two warnings the script will run.
Now ensure that no one is using your machine (the command smbstatus will show which files if any are locked by Samba and allow you to work out who is locking them), then poweroff the system, remove the old USB operating system drive or CD, and restart the machine which will load the new release. You will need local access to the machine at this point - you will not be able to login remotely. You should follow the instructions on screen and remember to resave your configuration once you are happy with it. You can then delete the download directory tree.
After you have upgraded Devil-Linux your configuration files (at /etc/) may be a little out of date, because applications (e.g. MySQL, Apache, Samba) will have been updated and their standard configuration options might change. Although this may not be a concern initially, over time this can become a problem. You might wish to look at my utility dl-config-compare which can tell you which files in your configuration are mismatched with the default configuration files, and help you spot those differences that could become a problem.
Your system configuration is stored in file etc-mods.tar.bz2. You can use the following command to save a copy of this critical file to a shared folder on hard drive, the file will have the date and time of the backup and so you can keep multiple copies:
save-config -o>"/path/$(date +%Y-%m-%d-%H-%M-%S) v`cat /DEVIL-LINUX` `cat /shm/DL_CONFIG_FILE`"
You should (separately) backup this shared folder to another computer, so if all else fails you can recover the file. Change the 'path' to point to the suitable shared folder on your system. Ideally, run this as a crontab job - say daily.
I also recommend that you create a cron job to run save-config -q >/dev/null weekly or even daily, that way if you have made changes and forgotten to do save-config -q they will still hopefully get saved before the next power outage.
If you change your networking hardware, the network configuration will probably not work 'out of the box'. Type ifconfig -a, the interface that is not working (e.g. 'eth1') will have no 'inet addr:' line. This is probably because the old hardware network interface has been preserved as eth0 (for instance) and the new hardware interface is presently eth1 which is not configured in Devil-Linux. To clear the previous 'history' of network interfaces, do rm /etc/udev/rules.d/70-persistent-net.rules and then save-config -q and reboot. Now do ifconfig to see if you have an external inet addr (probably beginning with 192.168). If you still have problems, the lspci command will show you what the hardware is, you may need to know what is the appropriately named driver for that network card - for instance, the driver for a BCM4401 card is called b44 - so (in this case) try modprobe b44 and see if your card now functions.
The files which control how Devil-Linux starts networking are at /etc/sysconfig/nic/ and are named ifcfg-ethn (where n is a number from 0 up). These files are used by the /etc/init.d/network script, and depend upon (and refer to) the hardware devices already identified in the machine - and listed in /etc/udev/rules.d/70-persistent-net.rules. Files in /etc/sysconfig/nic/ ending '.sample' or beginning with '~' are ignored, files named ifcfg-vlann are used for vlans, ifcfg-bondn for bonding interfaces and ifcfg-brn for bridge interfaces. Normally these files are created / altered by the Devil-Linux setup program but you can manipulate them directly. For instance, if you previously configured eth1 and no longer have it, you can delete /etc/sysconfig/nic/ifcfg-eth1, or you will always see an error message at boot time as Devil-Linux tries and fails to set up this interface. (This is because the Devil-Linux setup program does not provide any way to delete a network interface.)
For further information about configuration of ethernet interfaces see the LinuxFromScratch page here (Devil-Linux is based on LinuxFromScratch or 'LFS').
There is extensive documentation on Apache; here are just a few notes (for my own reference to be honest) on some quirks I have encountered:
- The configuration file httpd.conf is located in /etc/apache2
- To restart Apache 'gracefully' i.e. minimising the risk of breaking current processes (the nearest thing to a 'reload') do apachectl graceful
- Using VirtualHosts: the address given in the VirtualHost line must match exactly the address given in the NameVirtualServer line and must match the name in the ServerName line (probably higher above). In particular, if ServerName is a specific IP (say ServerName 192.168.1.3:80) then you cannot use * for NameVirtualServer or for VirtualHost.
- Remember that as well as specifying the VirtualHosts information you must also ensure that there are Directory settings for the directories for these VirtualHosts.
- You can use Apache as a proxy server (so that you can have more than one web server behind a firewall) by using the directives ProxyPass and ProxyPassReverse - see Apache Virtual Hosts documentation for how to do this. Note that the use of ProxyPreserveHostOn is needed if the end server has to have the called url in order to determine the correct action (e.g. if it too is using name-based virtual hosts.) However using 'ProxyPreserveHost On' on the proxy server conflicts (I think) with having 'UseCanonicalName On' on the end server. If this is on then ProxyPreserveHost should not be used (or should be set to off).
- If using password protected folders with Apache, to find the password text for .htpasswd (or equivalent) file, run (from Devil-Linux prompt): htpasswd -nbd your_unm your_pwd. Enter the text that is output on the command line as a line in the file (usually called .htpasswd) which is located somewhere not accessible by web clients (usually the apache root folder). Then in the password-protected folder you place a file called .htaccess which should contain the following (suitably modified for the location of your htpasswd file):
AuthName "Please enter your name and password"
- If your php code does not run, consider that PHP settings are defined by /etc/php.ini. The default setting for recognising the start of php code is 'short_open_tag = Off' which means that <? will not start php, you need <?php. For legacy PHP code you may need to set 'short_open_tag = On' in /etc/php.ini which changes this behaviour.
- To set locale temporarily (until reboot) do export LC_ALL=en_GB.utf8 (for instance). To make a permanent change you also need to alter file /etc/profile.
- To set locale for cron jobs add a line near the top of /etc/crontab LC_ALL=en_GB.utf8 (for instance).
- To list users currently logged on to Samba use smbstatus. To list all users set up for Samba, use cat /etc/samba/smbpasswd. Try man smbpasswd to see other options for this program, such as disabling (-d) or removing (-x) a user.
- If a raid array degrades you will receive an email from the system, however you only receive one email per session, so don't assume that because you received an email a few hours or days ago, and none since, that all is okay. You can check the array status with cat /proc/mdstat, or for more details mdadm --detail /dev/md0. At the end of this second output should be the two devices that make up the raid array, if only one is listed then the other has dropped out of the array. Assuming the other device is still available (check with fdisk -l) you can add it back with (if it is /dev/hdb1): mdadm /dev/md0 --add /dev/hdb1. The array will start resyncing automatically and you can check progress with cat /proc/mdstat. Finally, remember to do save-config -q to ensure that the correct device list for the raid array is saved in startup configuration. For more information, try man mdadm.
- To keep track of usage of disk space (so you don't run out) you can use my lvm-usage script which you can add as a cron job so that it sends you an email if any of your partitions or lvm logical volumes are more than say 80% full.
- To login automatically with Putty (so that you don't need to type the password) you create a private key file using puttygen and then save the public key on your Devil-Linux machine. Create a folder mkdir /root/.ssh and then echo [publickey] >/root/.ssh/authorized_keys. In Putty configuration, under SSH/Auth/'Private key for authentication' set your private key file.
- You can tailor settings for Putty thus:
- In DL, alter /etc/inputrc by putting hashes in front of lines 66 & 67 thus:#"\e[1~": history-search-backward(this means that Home and End keys move to beginning/end of lines correctly)
- In Putty, Window / Translation / Character set: 'UTF-8'
- In Putty, Terminal / Keyboard / The Home and End keys: Standard, Function keys and keypad: Linux
- In Putty, Connection / Data / Terminal-type string: xterm
- For more information about terminal settings, look up inputrc on the internet. You can check current key mappings with bind -p, and alter mappings by editing /etc/inputrc. You can also check what keys on your keyboard actually produce on the terminal by typing CTRL+V followed by the key in question.
- In DL, alter /etc/inputrc by putting hashes in front of lines 66 & 67 thus:
These instructions were written by Dominic. I now use Windows and Linux but this page was originally written as I discovered things in Devil-Linux, hence its bias towards users coming from a Windows background. It has been greatly updated since. Chris Grove contributed the section about printing from Devil-Linux.
My thanks to the arch-demons of Devil-Linux: Heiko Zuerker ('Old Nick' himself?), Andrzej Odyniec, Bruce Smith, Serge Leschinsky and all those who make and maintain Devil-Linux - no blame attaches to any of them for any mistakes you may find here. If you have found any part of these instructions helpful, or not, please let me know.
Thanks also to others who have helped me through the firstname.lastname@example.org mailing list. And all those who contributed to the GNU/Linux software used in this setup.
- TimeDicer - Onsite/offsite data backup for Windows (uses rdiff-backup)
- Finding a 4D Backup Solution
- Web Scraping How To - extracting data from web sites
Here is a selection of some (other) programs I have written, most of which run from the command line (CLI), are freely available and can be obtained by clicking on the links. Dependencies are shown and while in most cases written for a conventional Linux server, they should run even on a Raspberry Pi, and many can run under Windows using Cygwin. Email me if you have problems or questions, or if you think I could help with a programming requirement.
- TimeDicer - Onsite/offsite data backup for Windows (uses rdiff-backup) [GNU/Linux & MS Windows©: 2008-14]
- rdiff-backup-install - GNU/Linux script to install rdiff-backup. [GNU/Linux: 2012]
- rdiffweb-install - GNU/Linux script to install rdiffWeb, fixing various bugs that otherwise prevent it working correctly. [GNU/Linux: 2011-14]
- rdiff-backup-regress - GNU/Linux script to regress an rdiff-backup archive. [GNU/Linux: 2012-14]
Kernel, Boot and Device Utilities
- remove-kernel - GNU/Linux script to list the installed GNU/Linux kernels in a Debian-based distro (e.g. Ubuntu), and can be used to remove an unwanted kernel and related packages, updating grub appropriately. (Ubuntu Tweak can do the same but remove-kernel.sh is a command-line script so does not require GUI.) [GNU/Linux-Debian/Ubuntu: 2010-12]
- disk-wiper - GNU/Linux script to wipe a disk drive comprehensively, especially one connected by USB, and also check it for bad blocks. For use on a surplus drive before passing to a third party. [GNU/Linux: 2011]
- lvm-usage - GNU/Linux script to show available disk space and how it is used; run as cron job to warn if usage is above a set percentage. Provides additional information if LVM is in use. [GNU/Linux-Debian/Ubuntu: 2012-14]
- lvm-delete-snapshot - GNU/Linux script to remove LVM snapshot that has been left over by another process. [GNU/Linux-Debian/Ubuntu: 2012-13]
Dellmont / Three / Vodafone - VoIP and Mobile Phone Account Utilities
- dellmont-credit-checker - GNU/Linux script to check credit balance on many Dellmont / Finarea / Betamax portals such as voicetrading.com and voipdiscount.com. [GNU/Linux: 2008-13]
- get-vt-cdrs - GNU/Linux script to download CDRs (call detail records) from Dellmont’s voicetrading.com or voippro.com. [GNU/Linux: 2010-14]
- saynoto0870 - For people in UK, a GNU/Linux script which performs automated lookup of the www.saynoto0870.com database, finding cheap or free geographic number replacements for expensive non-geographic (087* or 084*) numbers. [GNU/Linux: 2012]
- three-credit-checker - GNU/Linux script which checks credit/calls/text/data remaining on a mobile phone account with Three.co.uk. [GNU/Linux: 2014]
- vodafone-compile-bills - GNU/Linux script which reprocesses downloaded call record 'csv' files from vodafone.co.uk so that they can be easily analysed via spreadsheet - including analysis of bundled minutes which even Vodafone do not seem able to perform! [GNU/Linux: 2012]
- sleepwalker - Windows© program which can be run from a remote machine to 'wake up' a Windows© machine behind a router, wait for it to start and then initiate Remote Desktop session. [MS Windows©: 2008-14]
- form-extractor - GNU/Linux program to extract form tags from a web page or downloaded file. [GNU/Linux: 2012-14]
- recover-space - GNU/Linux program to enable a virtual disk volume to be compacted. [GNU/Linux: 2014]
- tiny-device-monitor - GNU/Linux program to test webpages (including password-protected) or machines to check they are live; use as a cron job for your own websites, for hardware presenting a webpage, or for any machines with a presence on your local LAN or on the internet. [GNU/Linux: 2009-2014]
- dutree - GNU/Linux program to show a tree-style list of files and directories at the specified location and greater than the specified size (default 1GB). [GNU/Linux: 2012-2013]
- huawei-fix-wol - GNU/Linux and Windows (Cygwin) script to fix local Huawei HG533 or HG532 router (e.g. from TalkTalk) so you can send WOL/wakeonlan packets from internet to a machine behind the router. [GNU/Linux & MS Windows©: 2012-14]
- huawei-ip-upload - GNU/Linux and Windows (Cygwin) script to obtain ip from local Huawei HG533 router (e.g. from TalkTalk) and upload it to remote site/file by ftp. [GNU/Linux & MS Windows©: 2014]
- wake-thru-vigor - GNU/Linux script to wake up a machine behind a remote Draytek Vigor router. [GNU/Linux: 2012]
- man2text - GNU/Linux one-liner program to convert man page output to straightforward text. [GNU/Linux: 2012]
- Accounts - Multi-business multi-currency accounting software, uses Access [MS Windows©: 1996-2014]
- Rents Program - Residential lettings/landlord front office program, with many special features for UK market [MS Windows©: 1991-2014]