Ubuntu installation on Magnia SG20
These instructions are my notes on how I installed Ubuntu from scratch onto a hard drive so that I could get Otter (a Toshiba Magnia) running.
If you just want to install the drive image that I built from this system, go back to Otter's page.
Connect hard drive to desktop system
In my case, the system is 8track. I use a ribbon cable and a 44pin laptop to 40 pin desktop IDE adapter. The drive is one of the 30 GB Toshiba 2.5" 4200rpm drives that came in the system when I got it. I have jumper set up for the drive to be the master.
Set up a virtual machine
The host system has an SATA drive at /dev/sda. When I connect the Magnia hard drive, it appears at /dev/hda. If you already have a drive here use your secondary IDE interface and the drive will appear as /dev/hdc.
I create a VMware workstation virtual machine using the hard drive on /dev/hda and the cdrom connected to an ISO rescue image called "System Rescue CD". I add a second ethernet interface to the virtual machine to simulate the two Magnia ethernet ports.
Partitioning
You can use the default partitioning scheme for the drive if you want. I want to use a reiser filesystem; mostly it is a personal preference, I won't go into the reasons here.
So I manually partition the drive during the Ubuntu installation and tell it to install onto a reiser formatted partition.
Install Ubuntu
Boot from the Ubuntu Server install cd, use the "manual" option for partitioning, tell it to install Ubuntu into the third partition. Tell it to install LAMP (which is Apache + MySQL + PHP) and Openssh-Server. You can install everything else later.
Remove CDROM. (Or in the case of a VMware installation, disconnect the ISO image from the virtual CDROM device.)
Reboot and you will be running Ubuntu Server.
Add extra repository
I don't install webmin but many people like it. If you want to use webmin, you have to add the repository for webmin, see http://www.webmin.com/
Comment out the cdrom entry at the start of the file (/etc/apt/sources.list) SG20's don't have CDROM drives so this entry just slows things down.
Install updates
The first line updates the database of packages kept on the system. The second line uses the updated database to decide what packages should be downloaded and installed. The third line performs steps needed to upgrade to the latest revision of the distribution.
apt-get update apt-get upgrade apt-get dist-upgrade
Since you just installed from the latest downloaded ISO image, you'd think this step would be unnecessary. But there are always a 1/2 dozen or so packages that have been upgraded since the ISO image was created.
Your system will run without updates but there might be critical security upgrades or bug fixes that will improve reliability and security.
Install extra packages
I chose to install a minimal set of packages at initial installation, now I go ahead and install the things that I want. I get more control this way, for example instead of choosing "Mail Server" at install time and getting whatever MTA the Ubuntu folks chose, I get to tell it I want postfix.
- cupsys so that you can print to an attached printer
- evms evmsn evmsgui evms-bootdebug support for EVMS RAID if you want that
- mgetty mgetty-fax support for incoming calls on modem line and faxing
- nfs-kernel-server so I can share files with other Linux boxes
- privoxy web ad blocker, you want this!
- postfix mail handler; added but you will need to reconfigure
- openvpn a VPN package so I can set up a VPN connection to work
- lm-sensors access to hardware, you want this if you use SG20 'lcd' program
- shorewall to manage a firewall; shorewall is supported in webmin
- dhcp3-server so I can be a DHCP server
Webmin stuff
- webmin web-based system management utility
- cupsys-client added to allow webmin to do printer management
X11 stuff
I don't have any interest in running graphical applications on my firewall machine so I don't install these. It's possible. You can run a full desktop and have the output appear on another machine if you want. I don't.
If you are interested in having a GUI interface you might want to look into installing 'xvnc' which lets you run a vnc client on a Windows machine and open the X11 console of your SG20 in a window there.
- xauth to allow connecting to X11 applications such as synaptic
- oclock to test X11 connections, and for fun, run with "oclock -transparent &"
- synaptic X11 GUI package manager
EVMS stuff
If you are not doing an EVMS install to enable RAID support, skip this section. In fact, skip it even if you want RAID. Support for EVMS has been dropped from Ubuntu 7.10! :-( Oh well, it was too easy to use for it to last.
Creating the EVMS partitions
The easy way is with evnsn which has a text-based gui. After getting down the changes I wanted to make, I used the command line interface to allow me to script the set up. Here are the commmands
- create two segments
- create two volumes
- create swap filesystem on the first volume
- create reiserfs on the second volume
- save
Copy everything to the new EVMS volume
I've done this while the system is running but it's better to do it with a rescue cd so that files are not changing while copying takes place. Also you don't have to figure out how to exclude the in-memory filesystems and the device files that are created at boot time.
- Boot from System Rescue CDROM
- Mount partitions
- Perform copy; tar cf - /mnt/old | (cd /mnt/new; tar xpf -)
Make the new partition bootable
Still in the rescue disk...
mkdir /mnt/new mount /dev/evms/root /mnt/new cd /mnt/new mount -o bind /sys /mnt/new/sys mount -o bind /dev /mnt/new/dev chroot /mnt/new su -l
You are now running in an environment that looks just like it will when you are done, so you can perform the installation commands now.
- Edit grub configuration to point at /dev/evms/root
- Run grub to install it in /dev/hda2
- Edit /etc/fstab to point at /dev/evms/root and /dev/evms/swap
- Make a new initrd --
VERSION="2.6.20-16-server" cd /boot mv initrd.img-$VERSION initrd.img-$VERSION.old update-initramfs -k $VERSION -c
- Edit the /boot/grub/menu.lst file to point root at /dev/evms/root
- Run 'upgrade-grub' to update the menu.lst entries
Reboot!
LCD program
Next step is to install the Magnia LCD program.
Network
Ethernet
Ubuntu wants the ethernet switch at /dev/eth0 and the Intel WAN interface at /dev/eth1. So be it. I updated /etc/network/interfaces to match.
The interfaces are configured in /etc/network/interfaces like this:
# The loopback network interface auto lo iface lo inet loopback # The WAN interface (outside) auto eth1 iface eth1 inet dhcp # The Ethernet Switch auto eth0 iface eth0 inet static address 192.168.123.101 netmask 255.255.255.0 gateway 192.168.123.254
The SG20 will eventually BE the gateway so that last line will be removed.
Wireless
I did some testing with my WiFi set up but it is not in my current configuration. At some point in the future I intend to replace the internal MiniPCI modem card with a WiFi card.
I generally prefer using an external access point so that I can put it somewhere that it will do the most good, for instance near my laptop. I suggest you get yourself an external antenna if you use a PCMCIA card in the back of the SG20.
Instead of WiFi, I am currently using the SG20's PCMCIA slot for a USB adapter so that I can connect a USB printer.
Getting the wireless card going requires adding more Ubuntu packages. The pcmcia modules are not installed by default on the server distribution. Also thought I should run the wireless LAN (WLAN) in bridge mode so that it would be as close as possible to the original Magnia configuration.
apt-get install pcmcia-cs bridge-utils
I rebooted after installing these packages and the wireless card was detected. Popping the card out and reinserting it did not bring the interface back online. This is disappointing; I bet there is some other laptop package for Ubuntu. Older Linux systems had a thing called 'hotplug'. The ifplugd package looks most promising. For this initial phase I am assuming anyone with a wifi card will be leaving it plugged in, so I am not going to worry about it; just treat it like a n internal network card. Plug the card in and leave it there while rebooting.
I am using an old Orinoco Silver card. (Supports 802.11b / 11 Mbps only) This card was one of the ones supported on the original SG20 Redhat build. It happens to be the one that I one. The other modules are installed so you should not be restricted to using an Orinoco card any more, but I don't have any others to use for testing at the moment.
I added a line "orinoco-cs" to /etc/modules so that module will be loaded on boot.
Controlling ordering of ethernet interfaces
/etc/udev/70-persistent-net.rules has lines like this in it
- This is the inside ethernet switch interface
SUBSYSTEM=="net", DRIVERS="", NAME="eth0"
- This is the WAN/Internet interface
SUBSYSTEM=="net", DRIVERS="e100", NAME="eth1"
USB
I don't plan to use the WiFi card as described in the previous section. I want to plug a printer in that has only USB, so I bought a USB pcmcia card.
I popped it in and checked the 'dmesg' command and I see
[ 1112.880000] pccard: CardBus card inserted into slot 0 [ 1113.320000] usbcore: registered new interface driver usbfs [ 1113.320000] usbcore: registered new interface driver hub [ 1113.330000] usbcore: registered new device driver usb [ 1113.340000] ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver [ 1113.340000] PCI: Enabling device 0000:02:00.0 (0000 -> 0002) [ 1113.340000] ACPI: PCI Interrupt 0000:02:00.0[A] -> Link [LNKA] -> GSI 12 (level, low) -> IRQ 12 [ 1113.340000] PCI: Setting latency timer of device 0000:02:00.0 to 64 [ 1113.340000] ohci_hcd 0000:02:00.0: OHCI Host Controller [ 1113.350000] ohci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 1 [ 1113.350000] ohci_hcd 0000:02:00.0: irq 12, io mem 0x34000000 [ 1113.440000] usb usb1: configuration #1 chosen from 1 choice [ 1113.440000] hub 1-0:1.0: USB hub found [ 1113.440000] hub 1-0:1.0: 3 ports detected [ 1113.550000] PCI: Enabling device 0000:02:00.1 (0000 -> 0002) [ 1113.550000] ACPI: PCI Interrupt 0000:02:00.1[B] -> Link [LNKA] -> GSI 12 (level, low) -> IRQ 12 [ 1113.550000] PCI: Setting latency timer of device 0000:02:00.1 to 64 [ 1113.550000] ohci_hcd 0000:02:00.1: OHCI Host Controller [ 1113.550000] ohci_hcd 0000:02:00.1: new USB bus registered, assigned bus number 2 [ 1113.550000] ohci_hcd 0000:02:00.1: irq 12, io mem 0x34001000 [ 1113.640000] usb usb2: configuration #1 chosen from 1 choice [ 1113.640000] hub 2-0:1.0: USB hub found [ 1113.640000] hub 2-0:1.0: 2 ports detected [ 1113.750000] PCI: Enabling device 0000:02:00.2 (0000 -> 0002) [ 1113.750000] ACPI: PCI Interrupt 0000:02:00.2[C] -> Link [LNKA] -> GSI 12 (level, low) -> IRQ 12 [ 1113.750000] ehci_hcd 0000:02:00.2: EHCI Host Controller [ 1113.750000] ehci_hcd 0000:02:00.2: new USB bus registered, assigned bus number 3 [ 1113.780000] ehci_hcd 0000:02:00.2: irq 12, io mem 0x34002000 [ 1113.780000] ehci_hcd 0000:02:00.2: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004 [ 1113.780000] usb usb3: configuration #1 chosen from 1 choice [ 1113.780000] hub 3-0:1.0: USB hub found [ 1113.780000] hub 3-0:1.0: 5 ports detected
HAPPY DAY
I plug in the printer. I run the 'lsusb' command.
# lsusb Bus 003 Device 002: ID 04a9:10a2 Canon, Inc. Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000
Again, happy day. The printer is a Canon Pixma ip4200 so the system can see it. I will try more USB goodies out later.
USB serial port
I can plug in a USB to RS232 serial port adapter on the second USB port and set up login access, so that I have a backdoor the next time I manage to lock myself out with bad firewall rules.
To have the system put a login prompt up on the serial line, TBD
To enable a log as root on the port, edit the /etc/securetty file to add the line /dev/ttyUSB0
I have a little IOgear adapter that has the circuitry for the serial port conversion built into its 9pin connector. Normally it lives in my laptop's bag since the laptop has USB and no serial port.
When I get into a tough spot on the SG20, I plug it into the USB card and run a null modem cable to my desktop's serial port. I start up minicom on the desktop and then I can log into the SG20 to repair it.
cd /etc/event.d cp tty1 ttyUSB0 vi ttyUSB0 change instances of tty1 to ttyUSB0