MAS OS setup

From MCEWiki
Revision as of 10:44, 22 April 2008 by 142.103.235.58 (talk) (Boot menu)

Note on Ubuntu version: this document is for Ubuntu 6.06 LTS server (Dapper Drake). If you want to use Ubuntu 7.10, fine, major deviations from the 6.06 procedure are identified in the text.

Install additional ubuntu packages

Disable CDROM seeking

The package manager knows that you have the Ubuntu disk and will say things like

Media change: please insert the disc labeled
'Ubuntu-Server 6.06.1 _Dapper Drake_ - Release i386 (20060807.1)'

To disable this (and download packages from the internet instead), open /etc/apt/sources.list

sudo gedit /etc/apt/sources.list

and remove (comment) the line

deb cdrom:[Ubuntu-Server 6.06.1 _Dapper Drake_ - Release i386 (20060807.1)]/ dapper main restricted

Install required packages

sudo apt-get update
sudo apt-get install build-essential subversion emacs21 libreadline5-dev 

Enable universe repository and install GGV

Uncomment the line in /etc/apt/sources.list so it says

deb http://us.archive.ubuntu.com/ubuntu/ dapper universe

Then run

sudo apt-get update
sudo apt-get install gnome-gv

gnome-gv doesn't exist on 7.10, you'll have to settle for

sudo apt-get install gv

Install packages that you shouldn't even want to install (soon to be optional)

sudo apt-get install tcsh

Install desktop manager (optional)

sudo apt-get install ubuntu-desktop gdm

Download and install MAS kernel patch

Download

If you're not compiling the kernel from scratch, download the binary packages from UBC:

wget http://e-mode.phas.ubc.ca/~mhasse/mce/kernel-headers-2.6.15.7-bigphys_10.00.Custom_i386.deb
wget http://e-mode.phas.ubc.ca/~mhasse/mce/kernel-image-2.6.15.7-bigphys_10.00.Custom_i386.deb
wget http://e-mode.phas.ubc.ca/~mhasse/mce/extras.patch

For Ubuntu 7.10, get these instead:

wget http://e-mode.phas.ubc.ca/~mhasse/mce/linux-headers-2.6.22.9-bigphys_10.00.Custom_i386.deb
wget http://e-mode.phas.ubc.ca/~mhasse/mce/linux-image-2.6.22.9-bigphys_10.00.Custom_i386.deb

Install

Then, install the packages using dpkg:

sudo dpkg -i kernel-headers-2.6.15.7-bigphys_10.00.Custom_i386.deb
sudo dpkg -i kernel-image-2.6.15.7-bigphys_10.00.Custom_i386.deb

The "image" file might complain about symbolic links, no big deal.

On Ubuntu 7.10, instead install these:

sudo dpkg -i linux-headers-2.6.22.9-bigphys_10.00.Custom_i386.deb
sudo dpkg -i linux-image-2.6.22.9-bigphys_10.00.Custom_i386.deb

Why are these ones called "linux" instead of "kernel"? I think it's because I got them from Ubuntu repositories instead of kernel.org.

Patch

This makes it possible to compile against the kernel package as though it had been locally compiled originally.

cd /usr/src/kernel-headers-2.6.15.7-bigphys/
sudo patch -p1 < ~/extras.patch

This step is not necessary for Ubuntu 7.10.

Boot menu

Once you install the "image", the kernel should show up in the boot loader (grub)'s kernel list. It's probably a good idea to test it first before setting it as the default kernel (see next step). Also *do not issue MCE or DSP commands until the acpi=off boot parameter has been configured!*

As root (or using sudo), edit the file /boot/grub/menu.lst .

sudo gedit /boot/grub/menu.lst

Go to the list of kernels, below the line "## ## End Default Options ##", and find the kernel block with title "Ubuntu, kernel 2.6.15.7-bigphys". It should be the third block in the list, i.e. index 2. You must change the kernel line to turn "acpi=off". Almost all systems crash hard if you don't do this.

kernel          /vmlinuz-2.6.15.7-bigphys root=/dev/sda3 ro quiet splash acpi=off bigphysarea=8192

Go back to the top of the file and set the value of the "default" option to 2 once you're ready to boot this kernel by default.

default    2

On Ubuntu 7.10, the kernel packages install a bit differently so the line will be the first one in the list and should like like this:

kernel          /boot/vmlinuz-2.6.22.9-bigphys root=UUID=1b6e7b54-894d-4571-9f0a-527fe0103975 ro quiet splash acpi=off bigphysarea=8192

But don't change the root=LINE, just add "acpi=off bigphysarea=8192" to whatever is there already. The default value will probably be

default    0

but it's a good idea to count these things out for yourself.

Configure the system for mce users

Permissions and umask

Set the umask for all users to give write access for their group by default.

Edit /etc/profile and change the "umask 022" line to

umask 002

Edit /etc/login.defs and find the line that start "# UMASK" and change it to

UMASK           002

Any users wishing to use MCE under their own accounts should be added to the "mce" group and should have "mce" as their primary group. Their umask must be set properly, or other users will not be free to manipulate shared files.

To setup additional system users, see the page on MAS user setup.

Folders

sudo mkdir /data
sudo chown mce:mce /data
sudo chmod g+ws /data
mkdir /data/cryo/

mkdir /home/mce/tmp
chmod g+ws /home/mce/tmp

Folder permissions are annoying. Basically, any place you're going to be creating files has to have the g+s bit set. svn folders are particularly bad...

chmod g+ws /home/mce
mkdir /home/mce/script
chmod g+ws /home/mce/script
chmod g+ws /home

Install external libraries

MAS uses libconfig to manage its configuration files. The webpage is here: [ http://www.hyperrealm.com/libconfig/ ]. To install libconfig run the following:

 wget http://www.hyperrealm.com/libconfig/libconfig-1.2.1.tar.gz
 tar -xzf libconfig-1.2.1.tar.gz
 cd libconfig-1.2.1
 ./configure
 make
 sudo make install

To make the system aware of this library, add "/usr/local/lib" to /etc/ld.so.conf and run "sudo ldconfig". i.e.

 echo /usr/local/lib | sudo tee -a /etc/ld.so.conf
 sudo ldconfig

On newer systems (Ubuntu 7.10) you can do this instead:

 echo /usr/local/include | sudo tee /etc/ld.so.conf.d/libconfig.conf
 sudo ldconfig

If necessary, branch MAS and mce_script

From a complete (or somewhat complete) mas source tree (i.e. the repository root) do:

 svn copy trunk branch/new_project
 svn commit branch/new_project

Then check out the appropriate branch (or the whole tree) on the new machine.

Download (checkout) MAS and mce_script

See the page on MAS svn repository

Compile and install MAS

Build the driver

By default, the driver will build with bigphysarea support enabled. To override build options, create a file Makefile.local in the "driver" folder, and add lines like

BIGPHYS = 1    # use bigphysarea for frame buffering

or

FAKEMCE = 1    # enable software MCE emulator in driver

or

REALTIME = 1   # use rtai interrupt handling

On a real system, just leave Makefile.local empty.

Anyway, once Makefile.local is setup, type

cd mas
make clean; make

From the driver folder we can test the driver:

cd driver
./reload
./mknodes

Note that since "reload" first unloads the driver if it is present, and then loads the driver from the current folder, it may report an "ERROR" message if the first step fails, even though the driver is successfully loaded. The definitive way to check that the driver is loaded is

 cat /proc/mce_dsp

If this file does not exist, the driver isn't loaded. If the cat prints out a bunch of low-level driver information, you're in good shape.

If you're satisfied that the driver works, install the driver with the command

sudo make install

This should put mce_dsp.ko into /lib/modules/2.6.15.7-bigphys/kernel/drivers/misc/, and re-scan the module dependencies. To get the driver to load on boot you must add manually the following lines to /etc/rc.local:

modprobe mce_dsp
/home/mce/mas/driver/mknodes
sudo -u mce /usr/mce/bin/maslog_server

Install MAS binaries

To install the mas binaries, go to the top level mas folder and do a make:

cd /home/mce/mas
make clean ; make
sudo make install 


Install MAS config files

sudo mkdir /etc/mce
sudo chown root:mce /etc/mce
sudo chmod g+ws /etc/mce

Make sure you use the hardware config (mce_*.cfg) file appropriate for your system. Racks with 4 readout cards should use mce_v1.cfg; small sub-racks with readout card slots should use mce_v2.cfg.

cd ~/src/mas/config
cp mce_v1.cfg /etc/mce/mce.cfg
cp mas.cfg /etc/mce/mas.cfg

Install mce_script

The mce_script files are designed so that users can fairly easily run a different set of scripts. We will install a system default set in /usr/mce/mce_script.

cd /usr/mce
svn checkout svn://e-mode.phas.ubc.ca/mce_script/branch/{experiment} mce_script

mas_env.bash

To set up the environment and path to use these scripts and idl codes, a user should do "source mas_env.bash". (This file used to live in mas/config, but has been moved into mce_script/template.) Non-developer users can source /usr/mce/mce_script/template/mas_env.bash directly; advanced users may want to keep their own copy (or several different copies) in their home folder.

Note that MAS/mce_script scripts should *not* source mas_env.bash! The whole point of it is that paths should be flexible.

.bashrc

To have bash start up with the MAS variables defined, and the paths ready, add the following lines to .bashrc :

export MAS_ROOT=/usr/mce/mce_script/
source $MAS_ROOT/template/mas_env.bash
export IDL_PATH="<IDL_DEFAULT>:$MAS_IDL/mas"

While you're in there, you may want to define a few aliases. In particular, I always uncomment the alias ll='ls-l' line.