Difference between revisions of "MAS OS setup"
(123 intermediate revisions by 17 users not shown) | |||
Line 1: | Line 1: | ||
− | = | + | {{Related|MAS}} |
+ | = Supported operating systems = | ||
− | + | We use Ubuntu. | |
− | + | * We only support LTS releases. Currently, we support: | |
− | + | ** 18.04 | |
+ | ** 16.04 | ||
+ | ** 14.04 | ||
− | and | + | = Ubuntu 16.04 and later = |
− | |||
+ | The removal of the bigphysarea requirement from the kernel module means it's much easier to install MAS now. Because you don't need to rebuild your kernel, it should be possible to simply checkout the MAS trunk. Start by skipping down to the [[#Download (checkout) MAS and mce_script|Download (checkout) MAS and mce_script]] step, and then continue with installing MAS and MCE script. | ||
− | = | + | = Ubuntu 14.04 = |
− | + | The automated installation package is tested, but as Ubuntu tweaks its packages the install script may fall slightly out of sync. It's worth a shot though. | |
− | |||
− | + | After installing Ubuntu 14.04, get the install tarball: | |
− | + | wget http://e-mode.phas.ubc.ca/mce/pc_install/install_tools/mce_install_ubuntu_14.04.tar.gz | |
+ | tar -xzf ubuntu_14.04_install.tar.gz | ||
+ | cd install/ | ||
− | == Install packages | + | == Install additional ubuntu packages == |
− | |||
+ | From that install folder, run | ||
+ | bash install.bash | ||
− | + | It can't hurt to run this a couple of times to make sure all dependencies are resolved. | |
− | == | + | == Bigphysarea kernel patch == |
− | + | You can either download the compiled kernels or build them from scratch. | |
− | |||
− | |||
− | |||
− | + | From install folder, run EITHER | |
+ | bash kernel_download.bash | ||
+ | or | ||
+ | bash kernel_build.bash | ||
− | + | Compiled kernels currently exist for the x64 architecture. | |
− | |||
− | |||
− | |||
− | + | Then when one or the other of those has succeeded, install them: | |
+ | bash kernel_install.bash | ||
− | + | You can now proceed to the section below titled "[[#Configure_the_system_for_MCE_users|Configure the system for MCE users]]". | |
− | |||
− | |||
− | = | + | = Ubuntu 12.04 and earlier = |
− | + | See [[MAS OS setup on obsolete systems]] | |
+ | = Configure the system for MCE users = | ||
+ | == Setup environment for MCE user == | ||
− | + | We tend to assume that a single user and group will have dominion over the MCE software, scripts, and data. We often assume that this user will be called "mce". But it doesn't need to be. Even if multiple users are running things through their own accounts it is likely useful to have a single group that can be used to manage access to the data. | |
− | + | Anyway, to set up a reasonable MCE user, see [[MAS user setup]]. | |
− | + | All users using the MCE will need to define some environment variables to use the scripts. See the above link for lines to add to your '''.bashrc'''. | |
− | + | == System umask == | |
− | + | You may want to set the system umask to make for a system where it's easier to share | |
+ | 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 | ||
− | + | == Folders == | |
− | + | mce_script assumes that /data/cryo/ exists and can be manipulated. To create something reasonable: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | MCE_USER=mce | |
− | + | MCE_GROUP=mce | |
− | + | sudo mkdir /data | |
+ | sudo chown $MCE_USER:$MCE_GROUP /data | ||
+ | sudo chmod g+ws /data | ||
+ | mkdir /data/cryo/ | ||
+ | |||
+ | |||
+ | = Download (checkout) MAS and mce_script = | ||
− | + | See [[MAS svn repository]]. | |
− | + | = Compile and install MAS = | |
− | + | The following procedure outlines the default situation, where MAS is being installed on a computer containing only one fibre card. For information on running MAS with multiple fibre cards in one computer, see [[Multicard MAS]]. | |
− | |||
− | + | == Makefile.svn == | |
− | + | MAS uses autoconf for some basic configuration stuff. After checking out MAS from the SVN repository the ''first'' time, you need to bootstrap the autoconf process. To simplify this, the Makefile.svn file will automate the process. From the MAS source folder run | |
− | + | make -f Makefile.svn | |
− | + | If successful, this will create the "./configure" script. This step is only required on fresh check-outs of the repository. If you already have a ./configure script, even if it's out of date, you can skip this step. (After having been bootstrapped the | |
+ | first time, the build system is smart enough to know when it needs to regenerate itself.) | ||
− | + | Note: this procedure requires autoconf. If it's not installed, install it with: | |
− | + | sudo apt-get install autoconf | |
− | |||
− | + | == ./configure == | |
− | |||
− | |||
− | |||
− | + | Once the configure script exists, run it to generate the build system (ie. the Makefiles). The biggest thing you usually need to tell it is what the basic username and group should be for mce data. Also, there are a few options for the driver and some stupid python stuff. | |
+ | |||
+ | From the MAS source folder, run | ||
+ | |||
+ | ./configure | ||
+ | |||
+ | Some useful options: | ||
+ | --disable-driver suppress driver compilation/installation | ||
+ | --disable-bigphysarea compile driver without bigphysarea support | ||
+ | --disable-config2 suppress mas.cfg and mce.cfg generation/installation | ||
+ | --enable-multicard build a version of MAS which can drive multiple fibre cards. (See [[Multicard MAS]] for specifics.) | ||
+ | --with-user=USER set default MCE user | ||
+ | --with-group=GROUP set default MCE group | ||
+ | --with-kernel-dir=DIR set kernel build directory (typically automatically determined) | ||
+ | |||
+ | Run | ||
+ | |||
+ | ./configure --help | ||
+ | |||
+ | for a full list. When running, configure will complain if it cannot find something, and even suggest what package you need to install. | ||
+ | |||
+ | == mce.cfg == | ||
+ | |||
+ | After running configure, but before running make, you must specify a template file (mce.cin) which will be used to generate the hardware configuration file (mce.cfg). Full details of this procedure are given in the [[mce.cfg]] page, but briefly: | ||
+ | |||
+ | # copy an appropriate template from <code>config2/templates</code> to <code>config2/mce.cin</code> | ||
+ | # edit the <code>config2/mce.cin</code> file to describe your MCE. | ||
+ | |||
+ | The configuration file will be installed automatically when <code>make install</code> is run below. This entire step can be skipped if you passed --disable-config2 to configure above, but note that MAS will not function without mce.cfg and mas.cfg installed. | ||
+ | |||
+ | == make == | ||
+ | |||
+ | This often works. | ||
− | |||
make clean; make | make clean; make | ||
− | + | === Troubleshooting === | |
− | . | + | Sometimes after doing an SVN update <code>make</code> doesn't work but instead returns the cryptic message: |
− | + | ||
+ | *** No rule to make target `defaults/masdefault.m4', needed by `aclocal.m4'. | ||
− | 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 | + | In this case, it's necessary to force a rebuild of the build system manually by running |
− | cat /proc/mce_dsp | + | |
+ | make -f Makefile.svn | ||
+ | ./configure | ||
+ | |||
+ | See the [[#Makefile.svn|Makefile.svn section]] above for further details. | ||
+ | |||
+ | == Test the driver == | ||
+ | |||
+ | It is wise to test that the driver does not kill your machine before installing it to load on boot. After compiling do: | ||
+ | |||
+ | cd driver | ||
+ | sudo ./reload | ||
+ | |||
+ | This will load the driver, which should then try to talk to the SDSU PCI card if it is installed. 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 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 | + | == sudo make install == |
+ | |||
+ | If you're satisfied that the driver works, install the whole thing. Go back up to the MAS base folder and run | ||
+ | |||
+ | sudo make install | ||
+ | |||
+ | This will do the following: | ||
+ | |||
+ | *install the kernel driver, <code>driver/mce_dsp.ko</code>, into <code>/lib/modules/$(uname -r)/kernel/drivers/misc/</code>, and re-scan the module dependencies. | ||
+ | *install the MAS binaries from <code>applications/</code> and the scripts from <code>script/</code> into <code>/usr/mce/bin</code> | ||
+ | *install the MAS udev ruleset <code>scripts/91-mas.rules</code> into <code>/etc/udev/rules.d/</code>. These udev rules will ensure that the mce_dsp module is loaded and the MAS device nodes are created at boot time. You can get udev to run these rules immediately, which will result in /dev being populated with the mce devices, by running: | ||
+ | |||
+ | sudo udevadm trigger | ||
+ | |||
+ | :or, else, you can make the nodes yourself by running mas_mknodes. | ||
+ | *install the mas logging daemon script <code>/etc/init.d/mas</code> init script. The driver can then be started/restarted as desired through this script: | ||
+ | |||
+ | /etc/init.d/mas restart | ||
+ | |||
+ | :The driver will automatically be set to load on boot. To disable this, remove the symbolic link "/etc/rc2.d/S99mas". | ||
+ | *install the hardware configuration file, <code>config2/mce.cfg</code>, and the MAS configuration file, <code>config2/mas.cfg</code> to <code>/etc/mce/</code>, assuming there aren't versions already there. | ||
+ | |||
+ | = Install mce_script = | ||
+ | |||
+ | Users have the option of running the MCE scripts from an svn working copy, or of running the MCE scripts from an "installed" copy. Talk to your MAS technician about which option is best for you. | ||
+ | |||
+ | == Running from an svn working copy == | ||
+ | |||
+ | Checkout the tree directly into /usr/mce: | ||
+ | |||
+ | cd /usr/mce | ||
+ | svn checkout svn://e-mode.phas.ubc.ca/mce_script/trunk mce_script | ||
+ | == Running from an installed copy == | ||
+ | |||
+ | Checkout the tree into your code folder; then make and install: | ||
+ | |||
+ | cd code | ||
+ | svn checkout svn://e-mode.phas.ubc.ca/mce_script/trunk mce_script | ||
+ | make | ||
sudo make install | sudo make install | ||
− | |||
− | + | == .bashrc == | |
− | |||
− | |||
− | + | Add a few lines to .bashrc to update your PATH, PYTHONPATH, and to define the MAS_* variables. The new way, using [[mas_var]], is: | |
− | + | eval `/usr/mce/bin/mas_var -e -s` | |
− | |||
− | |||
− | = | + | The old way, which will probably still work for a while: |
+ | |||
+ | export MAS_ROOT=/usr/mce/mce_script/ | ||
+ | source $MAS_ROOT/template/mas_env.bash | ||
+ | export IDL_PATH="<IDL_DEFAULT>:$MAS_IDL/mas" | ||
− | + | == Configuration data == | |
− | |||
− | |||
− | + | Example configuration files (especially [[experiment.cfg]]) are kept in mce_script/template. MAS, by default, expects user configuration data to be in /usr/mce/config. Users should copy the template/ files to /usr/mce/config/, and then make configuration adjustments. After install mce_script, you can copy the template config from it with: | |
− | |||
− | + | sudo cp -r /usr/mce/mce_script/template /usr/mce/config | |
+ | sudo chown -R mce /usr/mce/config | ||
− | + | [[Category:MAS]] | |
− | |||
− |
Latest revision as of 14:05, 26 September 2019
Contents
Supported operating systems
We use Ubuntu.
- We only support LTS releases. Currently, we support:
- 18.04
- 16.04
- 14.04
Ubuntu 16.04 and later
The removal of the bigphysarea requirement from the kernel module means it's much easier to install MAS now. Because you don't need to rebuild your kernel, it should be possible to simply checkout the MAS trunk. Start by skipping down to the Download (checkout) MAS and mce_script step, and then continue with installing MAS and MCE script.
Ubuntu 14.04
The automated installation package is tested, but as Ubuntu tweaks its packages the install script may fall slightly out of sync. It's worth a shot though.
After installing Ubuntu 14.04, get the install tarball:
wget http://e-mode.phas.ubc.ca/mce/pc_install/install_tools/mce_install_ubuntu_14.04.tar.gz tar -xzf ubuntu_14.04_install.tar.gz cd install/
Install additional ubuntu packages
From that install folder, run
bash install.bash
It can't hurt to run this a couple of times to make sure all dependencies are resolved.
Bigphysarea kernel patch
You can either download the compiled kernels or build them from scratch.
From install folder, run EITHER
bash kernel_download.bash
or
bash kernel_build.bash
Compiled kernels currently exist for the x64 architecture.
Then when one or the other of those has succeeded, install them:
bash kernel_install.bash
You can now proceed to the section below titled "Configure the system for MCE users".
Ubuntu 12.04 and earlier
See MAS OS setup on obsolete systems
Configure the system for MCE users
Setup environment for MCE user
We tend to assume that a single user and group will have dominion over the MCE software, scripts, and data. We often assume that this user will be called "mce". But it doesn't need to be. Even if multiple users are running things through their own accounts it is likely useful to have a single group that can be used to manage access to the data.
Anyway, to set up a reasonable MCE user, see MAS user setup.
All users using the MCE will need to define some environment variables to use the scripts. See the above link for lines to add to your .bashrc.
System umask
You may want to set the system umask to make for a system where it's easier to share 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
Folders
mce_script assumes that /data/cryo/ exists and can be manipulated. To create something reasonable:
MCE_USER=mce MCE_GROUP=mce sudo mkdir /data sudo chown $MCE_USER:$MCE_GROUP /data sudo chmod g+ws /data mkdir /data/cryo/
Download (checkout) MAS and mce_script
See MAS svn repository.
Compile and install MAS
The following procedure outlines the default situation, where MAS is being installed on a computer containing only one fibre card. For information on running MAS with multiple fibre cards in one computer, see Multicard MAS.
Makefile.svn
MAS uses autoconf for some basic configuration stuff. After checking out MAS from the SVN repository the first time, you need to bootstrap the autoconf process. To simplify this, the Makefile.svn file will automate the process. From the MAS source folder run
make -f Makefile.svn
If successful, this will create the "./configure" script. This step is only required on fresh check-outs of the repository. If you already have a ./configure script, even if it's out of date, you can skip this step. (After having been bootstrapped the first time, the build system is smart enough to know when it needs to regenerate itself.)
Note: this procedure requires autoconf. If it's not installed, install it with:
sudo apt-get install autoconf
./configure
Once the configure script exists, run it to generate the build system (ie. the Makefiles). The biggest thing you usually need to tell it is what the basic username and group should be for mce data. Also, there are a few options for the driver and some stupid python stuff.
From the MAS source folder, run
./configure
Some useful options:
--disable-driver suppress driver compilation/installation --disable-bigphysarea compile driver without bigphysarea support --disable-config2 suppress mas.cfg and mce.cfg generation/installation --enable-multicard build a version of MAS which can drive multiple fibre cards. (See Multicard MAS for specifics.) --with-user=USER set default MCE user --with-group=GROUP set default MCE group --with-kernel-dir=DIR set kernel build directory (typically automatically determined)
Run
./configure --help
for a full list. When running, configure will complain if it cannot find something, and even suggest what package you need to install.
mce.cfg
After running configure, but before running make, you must specify a template file (mce.cin) which will be used to generate the hardware configuration file (mce.cfg). Full details of this procedure are given in the mce.cfg page, but briefly:
- copy an appropriate template from
config2/templates
toconfig2/mce.cin
- edit the
config2/mce.cin
file to describe your MCE.
The configuration file will be installed automatically when make install
is run below. This entire step can be skipped if you passed --disable-config2 to configure above, but note that MAS will not function without mce.cfg and mas.cfg installed.
make
This often works.
make clean; make
Troubleshooting
Sometimes after doing an SVN update make
doesn't work but instead returns the cryptic message:
*** No rule to make target `defaults/masdefault.m4', needed by `aclocal.m4'.
In this case, it's necessary to force a rebuild of the build system manually by running
make -f Makefile.svn ./configure
See the Makefile.svn section above for further details.
Test the driver
It is wise to test that the driver does not kill your machine before installing it to load on boot. After compiling do:
cd driver sudo ./reload
This will load the driver, which should then try to talk to the SDSU PCI card if it is installed. 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.
sudo make install
If you're satisfied that the driver works, install the whole thing. Go back up to the MAS base folder and run
sudo make install
This will do the following:
- install the kernel driver,
driver/mce_dsp.ko
, into/lib/modules/$(uname -r)/kernel/drivers/misc/
, and re-scan the module dependencies. - install the MAS binaries from
applications/
and the scripts fromscript/
into/usr/mce/bin
- install the MAS udev ruleset
scripts/91-mas.rules
into/etc/udev/rules.d/
. These udev rules will ensure that the mce_dsp module is loaded and the MAS device nodes are created at boot time. You can get udev to run these rules immediately, which will result in /dev being populated with the mce devices, by running:
sudo udevadm trigger
- or, else, you can make the nodes yourself by running mas_mknodes.
- install the mas logging daemon script
/etc/init.d/mas
init script. The driver can then be started/restarted as desired through this script:
/etc/init.d/mas restart
- The driver will automatically be set to load on boot. To disable this, remove the symbolic link "/etc/rc2.d/S99mas".
- install the hardware configuration file,
config2/mce.cfg
, and the MAS configuration file,config2/mas.cfg
to/etc/mce/
, assuming there aren't versions already there.
Install mce_script
Users have the option of running the MCE scripts from an svn working copy, or of running the MCE scripts from an "installed" copy. Talk to your MAS technician about which option is best for you.
Running from an svn working copy
Checkout the tree directly into /usr/mce:
cd /usr/mce svn checkout svn://e-mode.phas.ubc.ca/mce_script/trunk mce_script
Running from an installed copy
Checkout the tree into your code folder; then make and install:
cd code svn checkout svn://e-mode.phas.ubc.ca/mce_script/trunk mce_script make sudo make install
.bashrc
Add a few lines to .bashrc to update your PATH, PYTHONPATH, and to define the MAS_* variables. The new way, using mas_var, is:
eval `/usr/mce/bin/mas_var -e -s`
The old way, which will probably still work for a while:
export MAS_ROOT=/usr/mce/mce_script/ source $MAS_ROOT/template/mas_env.bash export IDL_PATH="<IDL_DEFAULT>:$MAS_IDL/mas"
Configuration data
Example configuration files (especially experiment.cfg) are kept in mce_script/template. MAS, by default, expects user configuration data to be in /usr/mce/config. Users should copy the template/ files to /usr/mce/config/, and then make configuration adjustments. After install mce_script, you can copy the template config from it with:
sudo cp -r /usr/mce/mce_script/template /usr/mce/config sudo chown -R mce /usr/mce/config