<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://daq00.triumf.ca/DaqWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lindner</id>
	<title>DaqWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://daq00.triumf.ca/DaqWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lindner"/>
	<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php/Special:Contributions/Lindner"/>
	<updated>2026-04-17T11:14:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=8748</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=8748"/>
		<updated>2026-02-23T19:16:19Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucnsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucn-backup01.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| backup02.ucn.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 4TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=8747</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=8747"/>
		<updated>2026-02-23T19:16:01Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucnsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucn-backup01.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| backup02.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 4TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=8738</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=8738"/>
		<updated>2026-02-18T02:11:47Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucnsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucn-backup01.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Forums&amp;diff=8726</id>
		<title>Forums</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Forums&amp;diff=8726"/>
		<updated>2026-02-04T21:27:50Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [https://midas.psi.ch/elogs/Forum ELOG forum at PSI]&lt;br /&gt;
* [https://daq00.triumf.ca/elog-midas/Midas/ MIDAS forum]&lt;br /&gt;
* [https://daq00.triumf.ca/elog-midas/Roody/ Roody forum]&lt;br /&gt;
* [https://daq00.triumf.ca/elog-midas/Rome/ Rome forum]&lt;br /&gt;
* [https://daq00.triumf.ca/elog-daq/DAQ TRIUMF DAQ forums and elogs (private)]&lt;br /&gt;
* [https://elog.triumf.ca TRIUMF ELOGs]&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Forums&amp;diff=8725</id>
		<title>Forums</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Forums&amp;diff=8725"/>
		<updated>2026-02-04T21:27:20Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [https://midas.psi.ch/elogs/Forum ELOG forum at PSI]&lt;br /&gt;
* [https://daq00.triumf.ca/elog-midas/Midas/ MIDAS forum]&lt;br /&gt;
* [https://ladd00.triumf.ca/elog/Roody Roody forum]&lt;br /&gt;
* [https://ladd00.triumf.ca/elog/rome Rome forum]&lt;br /&gt;
* [https://daq00.triumf.ca/elog-daq/DAQ TRIUMF DAQ forums and elogs (private)]&lt;br /&gt;
* [https://elog.triumf.ca TRIUMF ELOGs]&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=ZFS&amp;diff=8312</id>
		<title>ZFS</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=ZFS&amp;diff=8312"/>
		<updated>2025-02-27T00:00:33Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Use whole disk for zfs raidz2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Module%20Parameters.html ZFS module tunable parameters&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
* /proc/spl/kstat/zfs/arcstats&lt;br /&gt;
* /sys/module/zfs/parameters&lt;br /&gt;
&lt;br /&gt;
=== Important commands ===&lt;br /&gt;
&lt;br /&gt;
* zfs set acltype=posixacl pool ### do this for all ZFS pools otherwise all files have world-writable permissions (with nfs4.2, ubuntu LTS 18.04, 20.04), see https://github.com/openzfs/zfs/issues/10504&lt;br /&gt;
&lt;br /&gt;
* zfs set relatime=on pool ### ensure relatime is enabled otherwise each file access generates a write to the filesystem (to update the &amp;quot;last accessed&amp;quot; timestamp).&lt;br /&gt;
&lt;br /&gt;
== isdaq00 tuning ==&lt;br /&gt;
&lt;br /&gt;
Increase zfs cache to allow &amp;quot;cd /zssd/home1; du -ks *&amp;quot; to run completely from cache without any disk access.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 20000000000 &amp;gt; /sys/module/zfs/parameters/zfs_arc_max&lt;br /&gt;
echo 50 &amp;gt; /sys/module/zfs/parameters/zfs_arc_dnode_limit_percent&lt;br /&gt;
echo 90 &amp;gt; /sys/module/zfs/parameters/zfs_arc_meta_limit_percent&lt;br /&gt;
echo 20000000000 &amp;gt; /sys/module/zfs/parameters/zfs_arc_max&lt;br /&gt;
echo 2 &amp;gt; /proc/sys/vm/drop_caches&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* &amp;quot;memory_free_bytes&amp;quot; is same as free memory reported by &amp;quot;top&amp;quot;&lt;br /&gt;
* &amp;quot;memory_available_bytes&amp;quot; minus adjustable safety margin (&amp;quot;avail&amp;quot; in arcstat)&lt;br /&gt;
* &amp;quot;arc_meta_max&amp;quot; is &amp;quot;arc_meta_used&amp;quot; + &amp;quot;memory_available_bytes&amp;quot;&lt;br /&gt;
* &amp;quot;arc_meta_limit&amp;quot; should be set much bigger than that, set by zfs_arc_max and zfs_arc_meta_limit_percent&lt;br /&gt;
* &amp;quot;arc_meta_used&amp;quot; is &amp;quot;size&amp;quot; in arcstat&lt;br /&gt;
* &amp;quot;arc_dnode_limit&amp;quot; should be set much bigger than &amp;quot;dnode_size&amp;quot;, set by zfs_arc_dnode_limit_percent&lt;br /&gt;
* all the data should end up in the MFU (not MRU), &amp;quot;mfu_size&amp;quot; should be huge, &amp;quot;mru_size&amp;quot; much smaller.&lt;br /&gt;
* isdaq00 with 24 GB of RAM is just about big enough to fit all of /zssd/home1, arc_meta_used is about 10 GB, arc_meta_max is about 12 GB.&lt;br /&gt;
&lt;br /&gt;
=== Misc commands ===&lt;br /&gt;
&lt;br /&gt;
* zpool status&lt;br /&gt;
* zpool get all&lt;br /&gt;
* zpool iostat 1&lt;br /&gt;
* zpool iostat -v 1&lt;br /&gt;
* zpool history&lt;br /&gt;
* zpool scrub data14&lt;br /&gt;
* zpool events&lt;br /&gt;
* arcstat.py 1&lt;br /&gt;
* cat /proc/spl/kstat/zfs/arcstats&lt;br /&gt;
* echo 30000000000 &amp;gt; /sys/module/zfs/parameters/zfs_arc_meta_limit&lt;br /&gt;
* echo 32000000000 &amp;gt; /sys/module/zfs/parameters/zfs_arc_max&lt;br /&gt;
&lt;br /&gt;
* zfs get all&lt;br /&gt;
* zfs set dedup=verify zssd/nfsroot&lt;br /&gt;
&lt;br /&gt;
* zpool create data14 raidz2 /dev/sd[b-h]1&lt;br /&gt;
* zfs create z8tb/data&lt;br /&gt;
* zfs destroy z8tb/data&lt;br /&gt;
* zpool add z10tb cache /dev/disk/by-id/ata-ADATA_SP550_2F4320041688&lt;br /&gt;
* parted /dev/sdx mklabel GPT&lt;br /&gt;
* blkid&lt;br /&gt;
* zpool iostat -v -q 1&lt;br /&gt;
* watch -d -n 1 &amp;quot;cat /proc/spl/kstat/zfs/arcstats | grep l2&amp;quot;&lt;br /&gt;
* zfs set primarycache=metadata tank/datab&lt;br /&gt;
* zfs set secondarycache=metadata tank/datab&lt;br /&gt;
&lt;br /&gt;
* zfs userspace -p -H zssd/home1&lt;br /&gt;
* zfs groupspace ...&lt;br /&gt;
&lt;br /&gt;
* zdb -vvv -O pool/gobackup/titan00__home1 data/home1/titan/packages/elog/logbooks/titan/2017&lt;br /&gt;
* zdb -C pool | grep ashift ### find the real value of ashift&lt;br /&gt;
&lt;br /&gt;
* zfs snapshot -r pool_A@migrate&lt;br /&gt;
* zfs send -R pool_A@migrate | zfs receive -F pool_B&lt;br /&gt;
* echo 1 &amp;gt; /sys/module/zfs/parameters/zfs_send_corrupt_data # zfs send should not stop on i/o errors&lt;br /&gt;
&lt;br /&gt;
* zpool create test raidz2 `ls -1 /dev/disk/by-id/ata-WDC_WD40EZRX-00SPEB0_WD* | grep -v part`&lt;br /&gt;
* zpool add -f test special mirror /dev/disk/by-id/ata-WDC_WDS120G2G0A-00JH30_1843A2802212 /dev/disk/by-id/ata-KINGSTON_SV300S37A120G_50026B77630CCB2C&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
invalid vdev specification&lt;br /&gt;
use &#039;-f&#039; to override the following errors:&lt;br /&gt;
mismatched replication level: pool and new vdev with different redundancy, raidz and mirror vdevs, 2 vs. 1 (2-way)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from this talk: https://drive.google.com/file/d/1YzulcT7p7TvHF50aI-Rxg6CMZMIGnxL_/view&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zpool iostat -l 1 ### queue latencies&lt;br /&gt;
-w 1 ### distribution&lt;br /&gt;
-q -v 1 ### active and queued requests&lt;br /&gt;
-r1 ### size of IO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* echo 2 &amp;gt; /proc/sys/vm/drop_caches ### clear zfs cache and system cache, all memory is free after this&lt;br /&gt;
* watch -n1 -d &amp;quot;cat /proc/spl/kstat/zfs/arcstats | grep -v l2 | tail -52&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Create raid0 (mirror) volume ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
dracut -vf&lt;br /&gt;
zpool create zssd mirror /dev/sdaX /dev/sdbX&lt;br /&gt;
zpool set cachefile=none zssd&lt;br /&gt;
zpool set failmode=continue zssd&lt;br /&gt;
zpool status&lt;br /&gt;
zpool events&lt;br /&gt;
zpool get all&lt;br /&gt;
df /zssd&lt;br /&gt;
ls -l /zssd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use whole disk for zfs mirror (RAID0) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
[root@daq13 ~]# parted /dev/sdb&lt;br /&gt;
(parted) mklabel GPT&lt;br /&gt;
(parted) q                                                                &lt;br /&gt;
[root@daq13 ~]# parted /dev/sdc&lt;br /&gt;
(parted) mklabel GPT                                                      &lt;br /&gt;
(parted) q                                                                &lt;br /&gt;
[root@daq13 ~]# blkid                                                     &lt;br /&gt;
/dev/sda1: UUID=&amp;quot;ab920e4b-40ae-4551-aab8-f3e893d38830&amp;quot; TYPE=&amp;quot;xfs&amp;quot; &lt;br /&gt;
/dev/sdb: PTTYPE=&amp;quot;gpt&amp;quot; &lt;br /&gt;
/dev/sdc: PTTYPE=&amp;quot;gpt&amp;quot; &lt;br /&gt;
[root@daq13 ~]# zpool create z10tb mirror /dev/sdb /dev/sdc&lt;br /&gt;
[root@daq13 ~]# zpool status&lt;br /&gt;
  pool: z10tb&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME        STATE     READ WRITE CKSUM&lt;br /&gt;
        z10tb       ONLINE       0     0     0&lt;br /&gt;
          mirror-0  ONLINE       0     0     0&lt;br /&gt;
            sdb     ONLINE       0     0     0&lt;br /&gt;
            sdc     ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
[root@daq13 ~]# &lt;br /&gt;
[root@daq13 ~]# zfs create z10tb/emma&lt;br /&gt;
[root@daq13 ~]# df -kl&lt;br /&gt;
Filesystem      1K-blocks     Used  Available Use% Mounted on&lt;br /&gt;
pool           9426697856        0 9426697856   0% /pool&lt;br /&gt;
pool/daqstore  9426697856        0 9426697856   0% /pool/daqstore&lt;br /&gt;
[root@daq13 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Use whole disk for zfs raidz2 ===&lt;br /&gt;
&lt;br /&gt;
* smart-status:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grifstore03:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER   Errors     Link&lt;br /&gt;
/dev/nvme0n1 SAMSUNG MZ1L21T9HCLS-00A07       S666NT0X707031              36     100%        .        1        ?        ?        ?     NVMe&lt;br /&gt;
/dev/nvme1n1 SAMSUNG MZ1L21T9HCLS-00A07       S666NT0X707035              29     100%        .        .        ?        ?        ?     NVMe&lt;br /&gt;
    /dev/sda      TOSHIBA MG10ACA20TE         54V0A01HF4MJ              29        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sdb      TOSHIBA MG10ACA20TE         54V0A029F4MJ              31        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sdc      TOSHIBA MG10ACA20TE         6430A00UF4MJ              32        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sdd      TOSHIBA MG10ACA20TE         54V0A01KF4MJ              32        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sde      TOSHIBA MG10ACA20TE         6430A00FF4MJ              29        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sdf      TOSHIBA MG10ACA20TE         54V0A014F4MJ              29        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sdg      TOSHIBA MG10ACA20TE         54V0A02RF4MJ              28        .        .        .        .        -        .      6.0&lt;br /&gt;
    /dev/sdh      TOSHIBA MG10ACA20TE         6430A00TF4MJ              29        .        .        .        .        -        .      6.0&lt;br /&gt;
root@grifstore03:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zpool create pool03 raidz2 /dev/disk/by-id/ata-TOSHIBA_MG10ACA20TE_*&lt;br /&gt;
* zfs create pool03/grifstore03&lt;br /&gt;
* zpool status&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  pool: pool03&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                      STATE     READ WRITE CKSUM&lt;br /&gt;
	pool03                                    ONLINE       0     0     0&lt;br /&gt;
	  raidz2-0                                ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_54V0A014F4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_54V0A01HF4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_54V0A01KF4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_54V0A029F4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_54V0A02RF4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_6430A00FF4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_6430A00TF4MJ  ONLINE       0     0     0&lt;br /&gt;
	    ata-TOSHIBA_MG10ACA20TE_6430A00UF4MJ  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zfs list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pool03                                            1.27M   103T   205K  /pool03&lt;br /&gt;
pool03/grifstore03                                 205K   103T   205K  /pool03/grifstore03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fdisk -l&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sdh: 18.19 TiB, 20000588955648 bytes, 39063650304 sectors&lt;br /&gt;
Disk model: TOSHIBA MG10ACA2&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 4096 bytes&lt;br /&gt;
I/O size (minimum/optimal): 4096 bytes / 4096 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 9361C644-05CF-DF49-A572-43BCC55A3AA2&lt;br /&gt;
&lt;br /&gt;
Device           Start         End     Sectors  Size Type&lt;br /&gt;
/dev/sdh1         2048 39063631871 39063629824 18.2T Solaris /usr &amp;amp; Apple ZFS&lt;br /&gt;
/dev/sdh9  39063631872 39063648255       16384    8M Solaris reserved 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test write speed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grifstore03:/tig/grifstore3/test# dd if=/dev/random of=/tig/grifstore3/test/test.dat bs=1M count=50000&lt;br /&gt;
50000+0 records in&lt;br /&gt;
50000+0 records out&lt;br /&gt;
52428800000 bytes (52 GB, 49 GiB) copied, 87.0561 s, 602 MB/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable ZFS at boot ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable zfs-import-cache&lt;br /&gt;
systemctl enable zfs-import-scan&lt;br /&gt;
systemctl enable zfs-mount&lt;br /&gt;
systemctl enable zfs-import.target&lt;br /&gt;
systemctl enable zfs.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace failed disk ===&lt;br /&gt;
&lt;br /&gt;
* pull failed disk out&lt;br /&gt;
* zpool status # identify failed disk zfs label (it should be labeled FAULTED or OFFLINE&lt;br /&gt;
* safe to reboot here&lt;br /&gt;
* install new disk&lt;br /&gt;
* partition new disk, i.e. &amp;quot;gdisk /dev/sdh&amp;quot;, use &amp;quot;o&amp;quot; to create new partition table, use &amp;quot;n&amp;quot; to create new partition, accept all default answers, use &amp;quot;w&amp;quot; to save and exit&lt;br /&gt;
* safe to reboot here&lt;br /&gt;
* run tests on new disk (smart, diskscrub), if unhappy go back to &amp;quot;install new disk&amp;quot;&lt;br /&gt;
* safe to reboot here&lt;br /&gt;
* identify serial number of new disk, i.e. &amp;quot;smartctl -a /dev/sdh | grep -i serial&amp;quot; yields &amp;quot;Serial Number:    WD-WCAVY0893313&amp;quot;&lt;br /&gt;
* identify linux id of new disk by &amp;quot;ls -l /dev/disk/by-id | grep -i WD-WCAVY0893313&amp;quot; yields &amp;quot;ata-WDC_WD2002FYPS-01U1B0_WD-WCAVY0893313-part1&amp;quot;&lt;br /&gt;
* zpool replace data11 zfs-label-of-failed-disk ata-WDC_WD2002FYPS-01U1B0_WD-WCAVY0893313-part1&lt;br /&gt;
* zpool status should look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 ~]# zpool status&lt;br /&gt;
  pool: data11&lt;br /&gt;
 state: DEGRADED&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
        continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Apr 29 11:51:03 2016&lt;br /&gt;
    24.7G scanned out of 795G at 32.3M/s, 6h46m to go&lt;br /&gt;
    3.00G resilvered, 3.11% done&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                                   STATE     READ WRITE CKSUM&lt;br /&gt;
        data11                                                 DEGRADED     0     0     0&lt;br /&gt;
          raidz2-0                                             DEGRADED     0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WCAZA3872943-part1     ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WCAZA1973466-part1     ONLINE       0     0     0&lt;br /&gt;
            replacing-2                                        DEGRADED     0     0     0&lt;br /&gt;
              17494865033746374811                             FAULTED      0     0     0  was /dev/sdi1&lt;br /&gt;
              ata-WDC_WD2002FYPS-01U1B0_WD-WCAVY0893313-part1  ONLINE       0     0     0  (resilvering)&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WCAZA1973369-part1     ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WMAZA0858733-part1     ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WMAZA0819555-part1     ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WMAZA0857075-part1     ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD2002FYPS-01U1B0_WD-WCAVY0347413-part1    ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for raid rebuild (&amp;quot;resilvering&amp;quot;) to complete&lt;br /&gt;
* zpool status should look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 ~]# zpool status&lt;br /&gt;
  pool: data11&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 96.2G in 1h44m with 0 errors on Fri Apr 29 13:35:40 2016&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                                 STATE     READ WRITE CKSUM&lt;br /&gt;
        data11                                               ONLINE       0     0     0&lt;br /&gt;
          raidz2-0                                           ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WCAZA3872943-part1   ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WCAZA1973466-part1   ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD2002FYPS-01U1B0_WD-WCAVY0893313-part1  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WCAZA1973369-part1   ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WMAZA0858733-part1   ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WMAZA0819555-part1   ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD20EARS-00MVWB0_WD-WMAZA0857075-part1   ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WD2002FYPS-01U1B0_WD-WCAVY0347413-part1  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== replace failed disk (whole disk zfs) ===&lt;br /&gt;
&lt;br /&gt;
* roughly same as above&lt;br /&gt;
* parted /dev/sdi, mklabel GPT, q&lt;br /&gt;
* zpool replace pool 5050168421842479357 /dev/disk/by-id/ata-WDC_WD60EFRX-68MYMN1_WD-WX31D944C2AP&lt;br /&gt;
* here &amp;quot;pool&amp;quot; is the zfs pool name&lt;br /&gt;
* first number is the failed &amp;quot;was&amp;quot; disk from &amp;quot;zpool status&amp;quot;&lt;br /&gt;
* second /dev/disk/by-id is the replacement disk from ./smart-status.perl&lt;br /&gt;
* zpool status&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@tigstore01 ~]# zpool status&lt;br /&gt;
  pool: pool&lt;br /&gt;
 state: DEGRADED&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Thu Sep  8 16:06:41 2022&lt;br /&gt;
	9.36T scanned at 829M/s, 7.27T issued at 644M/s, 18.0T total&lt;br /&gt;
	625G resilvered, 40.48% done, 04:50:08 to go&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                            STATE     READ WRITE CKSUM&lt;br /&gt;
	pool                                            DEGRADED     0     0     0&lt;br /&gt;
	  raidz2-0                                      DEGRADED     0     0     0&lt;br /&gt;
	    ata-WDC_WD60EFRX-68MYMN1_WD-WX21D9421VHA    ONLINE       0     0     0  (resilvering)&lt;br /&gt;
	    ata-WDC_WD60EFRX-68MYMN1_WD-WX31D944C8Y6    ONLINE       0     0     0&lt;br /&gt;
	    ata-WDC_WD60EFRX-68MYMN1_WD-WX31D944CKDK    ONLINE       0     0     0&lt;br /&gt;
	    replacing-3                                 DEGRADED     0     0     0&lt;br /&gt;
	      5050168421842479357                       UNAVAIL      0     0     0  was /dev/disk/by-id/ata-WDC_WD60EFRX-68MYMN1_WD-WX31D944CPDP-part1&lt;br /&gt;
	      ata-WDC_WD60EFRX-68L0BN1_WD-WX11DA5NDTPS  UNAVAIL      3     0     0  (resilvering)&lt;br /&gt;
	      ata-WDC_WD60EFRX-68MYMN1_WD-WX31D944C2AP  ONLINE       0     0     0  (resilvering)&lt;br /&gt;
	    ata-WDC_WD60EFRX-68L0BN1_WD-WX21DA5FNE28    ONLINE       0     0     0&lt;br /&gt;
	    ata-WDC_WD60EFRX-68MYMN1_WD-WX41D94RNHS4    ONLINE       0     0     0  (resilvering)&lt;br /&gt;
	    ata-WDC_WD60EFRX-68MYMN1_WD-WX41D94RNT2A    ONLINE       0     0     0&lt;br /&gt;
	    ata-WDC_WD60EFRX-68MYMN1_WD-WX41D94RNZJ0    ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for resilver to complete&lt;br /&gt;
&lt;br /&gt;
=== Expand zfs pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
replacing 250GB mirrored SSDs with 1TB mirrored SSDs:&lt;br /&gt;
zpool scrub ### ensure both mirror halves are consistent and have good data&lt;br /&gt;
# confirm have backups of pool contents (amanda and daqbackup)&lt;br /&gt;
# pull one 250GB SSD&lt;br /&gt;
# insert replacement 1TB SSD&lt;br /&gt;
# follow instructions for replacing failed disk:&lt;br /&gt;
parted /dev/sda ...&lt;br /&gt;
ls -l /dev/disk/by-id/...&lt;br /&gt;
zpool replace zssd sda1 ata-WDC_WDS100T2B0A_192872803056&lt;br /&gt;
# wait for resilvering to complete&lt;br /&gt;
zpool scrub zssd # confirm resilver was ok&lt;br /&gt;
# do the same with the second 1TB disk&lt;br /&gt;
parted /dev/sdb&lt;br /&gt;
ls -l /dev/disk/by-id/...&lt;br /&gt;
zpool replace zssd sdb1 ata-WDC_WDS100T2B0A_192872802193&lt;br /&gt;
zpool online -e zssd ata-WDC_WDS100T2B0A_192872803056&lt;br /&gt;
zpool list -v ### observe EXPANDSZ is now non-zero&lt;br /&gt;
# wait for resilver to finish&lt;br /&gt;
zpool online -e zssd ata-WDC_WDS100T2B0A_192872803056&lt;br /&gt;
zpool list -v ### observe EXPANDSZ is now zero, but SIZE and FREE have changed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# zpool list -v zssd&lt;br /&gt;
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT&lt;br /&gt;
zssd   222G   202G  20.1G      706G    56%    90%  1.00x  DEGRADED  -&lt;br /&gt;
  mirror   222G   202G  20.1G      708G    56%    90%&lt;br /&gt;
    ata-WDC_WDS100T2B0A_192872803056      -      -      -         -      -      -&lt;br /&gt;
    replacing      -      -      -      708G      -      -&lt;br /&gt;
      sdb1      -      -      -      708G      -      -&lt;br /&gt;
      ata-WDC_WDS100T2B0A_192872802193      -      -      -         -      -      -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# zpool list -v zssd&lt;br /&gt;
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT&lt;br /&gt;
zssd   930G   202G   728G         -    13%    21%  1.00x  ONLINE  -&lt;br /&gt;
  mirror   930G   202G   728G         -    13%    21%&lt;br /&gt;
    ata-WDC_WDS100T2B0A_192872803056      -      -      -         -      -      -&lt;br /&gt;
    ata-WDC_WDS100T2B0A_192872802193      -      -      -         -      -      -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert pool from single to mirror ===&lt;br /&gt;
&lt;br /&gt;
* we will convert a single-disk pool to a mirrored pool&lt;br /&gt;
* initial state:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  489bdda8-989a-f748-95b2-c1041aceed65  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                   ONLINE       0     0     0&lt;br /&gt;
	  d870d08b-5bba-f441-b486-6e4975a384f2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* per https://unix.stackexchange.com/questions/525950/how-to-convert-one-disk-zfs-pool-into-two-disk-raid1-pool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# zpool attach rpool d870d08b-5bba-f441-b486-6e4975a384f2 /dev/sda2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* status&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  489bdda8-989a-f748-95b2-c1041aceed65  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Sun Jan  3 16:17:48 2021&lt;br /&gt;
	8.94G scanned at 2.98G/s, 620M issued at 207M/s, 8.94G total&lt;br /&gt;
	637M resilvered, 6.78% done, 0 days 00:00:41 to go&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                      STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                     ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                ONLINE       0     0     0&lt;br /&gt;
	    d870d08b-5bba-f441-b486-6e4975a384f2  ONLINE       0     0     0&lt;br /&gt;
	    sda2                                  ONLINE       0     0     0  (resilvering)&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rename zfs pool ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zpool export oldname&lt;br /&gt;
zpool import oldname z6tb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quotas and disk use ===&lt;br /&gt;
&lt;br /&gt;
* zfs userspace zssd/home1 -s used&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZFS tunable parameters for hopefully speeding up resilvering:&lt;br /&gt;
&lt;br /&gt;
https://www.reddit.com/r/zfs/comments/4192js/resilvering_raidz_why_so_incredibly_slow/&lt;br /&gt;
echo 0 &amp;gt; /sys/module/zfs/parameters/zfs_resilver_delay&lt;br /&gt;
echo 512 &amp;gt; /sys/module/zfs/parameters/zfs_top_maxinflight&lt;br /&gt;
echo 5000 &amp;gt; /sys/module/zfs/parameters/zfs_resilver_min_time_ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable periodic scrub:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd zfs&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Working with ZFS snapshots:&lt;br /&gt;
&lt;br /&gt;
* zfs list -t snapshot&lt;br /&gt;
* cd ~/git; git clone https://github.com/zfsonlinux/zfs-auto-snapshot.git; cd zfs-auto-snapshot; make install&lt;br /&gt;
&lt;br /&gt;
If ZFS becomes 100% full, &amp;quot;rm&amp;quot; will stop working, but space can still be freed by using &amp;quot;echo &amp;gt; bigfile&amp;quot;, afterwards &amp;quot;rm&amp;quot; works again.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8308</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8308"/>
		<updated>2025-02-25T00:07:11Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* move /home/wheel (U-24) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
* before setting up new machine run memory test&lt;br /&gt;
* prepare flash drive with free version of memtest86: https://www.memtest86.com&lt;br /&gt;
* test boot from flash drive, test takes ~ few hours&lt;br /&gt;
* test will end with summary page, if passed continue with Ubuntu&lt;br /&gt;
* number that might be worth noting is memory latency&lt;br /&gt;
&lt;br /&gt;
= Ubuntu version =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsb_release -a&lt;br /&gt;
uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu installer =&lt;br /&gt;
&lt;br /&gt;
* updated for Ububtu LTS 20.04.01, 22.04.1, 24.04 (only minor differences)&lt;br /&gt;
&lt;br /&gt;
* download the latest Ubuntu LTS desktop installer iso image&lt;br /&gt;
* dd the image to a USB key&lt;br /&gt;
* power down, disconnect all disks (all HDDs, all SSDs, all M.2)&lt;br /&gt;
* connect the SSD to be used as system disk&lt;br /&gt;
* if system will use mirrored SSDs (using ZFS mirror), leave second SSD disconnected, we will activate it later&lt;br /&gt;
* power up&lt;br /&gt;
* boot from USB key in legacy mode or UEFI mode (select this in the BIOS boot menu - F8 for ASUS, F11 for Supermicro)&lt;br /&gt;
* follow the instruction:&lt;br /&gt;
* &amp;quot;try ubuntu or install ubuntu&amp;quot; - choose &amp;quot;install&amp;quot;&lt;br /&gt;
* select language - accept default&lt;br /&gt;
* &amp;quot;updates and other software&amp;quot; - accept default settings (&amp;quot;normal install&amp;quot;)&lt;br /&gt;
* &amp;quot;installation type&amp;quot; - select &amp;quot;advanced features&amp;quot; and &amp;quot;experimental: use ZFS&amp;quot;&lt;br /&gt;
* accept partition choice&lt;br /&gt;
* &amp;quot;where are you?&amp;quot; - select &amp;quot;Vancouver&amp;quot; (PST time zone)&lt;br /&gt;
* &amp;quot;who are you?&amp;quot; - leave all fields blank, except &amp;quot;username&amp;quot; set to &amp;quot;wheel&amp;quot;, &amp;quot;password&amp;quot; set to the root password. hostname will be set later after configuring the network&lt;br /&gt;
* don&#039;t install third party sw&lt;br /&gt;
* installation runs in a few minutes, when finished, reboot&lt;br /&gt;
* login as user wheel&lt;br /&gt;
* answer annouying questions:&lt;br /&gt;
* &amp;quot;livepatch&amp;quot; - say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;help improve&amp;quot; - select &amp;quot;do not send&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;privacy&amp;quot; - leave &amp;quot;location&amp;quot; as &amp;quot;off&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;ready to go&amp;quot;, say &amp;quot;done&amp;quot;&lt;br /&gt;
* right-click on the desktop, say &amp;quot;open in terminal&amp;quot;, a shell will open&lt;br /&gt;
* say &amp;quot;sudo /bin/bash&amp;quot;, enter the root password, you now have the root shell&lt;br /&gt;
* run nm-connection-editor to configure the network. use netmask 255.255.224.0, gateway 142.90.100.18, DNS 142.90.100.19, search path &amp;quot;triumf.ca&amp;quot;&lt;br /&gt;
* after network is up (can ping ladd00), continue with post-installation steps below&lt;br /&gt;
&lt;br /&gt;
= Install instructions =&lt;br /&gt;
&lt;br /&gt;
== prepare ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ssh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install git/scripts ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install git&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if needed, update git/scripts repository from ladd00 to daq00:&lt;br /&gt;
* git remote -v ### if it says daq00, we are good&lt;br /&gt;
* git remote set-url origin https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
* git pull ### check that it works&lt;br /&gt;
&lt;br /&gt;
== configure hostname ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap ==&lt;br /&gt;
&lt;br /&gt;
ubuntu installer creates a 2 GB swap partition, not useful&lt;br /&gt;
on 32-64 GB machine, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fstab ### comment out the &amp;quot;swap&amp;quot; line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on 64 GB RAM machines swap is not useful&lt;br /&gt;
* on machines booted from network (NFS-ROOT), swap does not work&lt;br /&gt;
* on machines running from flash (RPi, etc), flash is too slow for useful swap&lt;br /&gt;
* swap configured by linux installers invariably has wrong size and is not useful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable dphys-swapfile&lt;br /&gt;
systemctl stop dphys-swapfile&lt;br /&gt;
dphys-swapfile uninstall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maybe reboot ==&lt;br /&gt;
&lt;br /&gt;
this is a good point to reboot the machine to boot&lt;br /&gt;
the latest kernel and to set the correct hostname&lt;br /&gt;
&lt;br /&gt;
== install etckeeper ==&lt;br /&gt;
&lt;br /&gt;
keep contents of /etc in a git repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install etckeeper&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set timezone ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
timedatectl list-timezones | grep -i vancouver&lt;br /&gt;
timedatectl set-timezone America/Vancouver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install time synchronization ==&lt;br /&gt;
&lt;br /&gt;
check if chrony is installed correctly and is synched to TRIUMF time servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if not, remove old chrony and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove chrony&lt;br /&gt;
apt -y purge chrony&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install it from scratch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install chrony&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
cp ~/git/scripts/etc/triumf.sources /etc/chrony/sources.d/&lt;br /&gt;
systemctl disable systemd-timesyncd.service&lt;br /&gt;
systemctl stop systemd-timesyncd.service&lt;br /&gt;
systemctl disable ntp&lt;br /&gt;
systemctl stop ntp&lt;br /&gt;
systemctl enable chrony&lt;br /&gt;
systemctl restart chrony&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reenable systemd-timesyncd ==&lt;br /&gt;
&lt;br /&gt;
ONLY IF CHRONY DOES NOT WORK&lt;br /&gt;
&lt;br /&gt;
To configure systemd-timesyncd, set &amp;quot;NTP=&amp;quot; in /etc/systemd/timesyncd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chrony&lt;br /&gt;
cat /etc/systemd/timesyncd.conf&lt;br /&gt;
systemctl enable systemd-timesyncd.service&lt;br /&gt;
systemctl restart systemd-timesyncd.service&lt;br /&gt;
systemctl status systemd-timesyncd.service&lt;br /&gt;
timedatectl status&lt;br /&gt;
timedatectl timesync-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
this is different from ubuntu 20. it uses /etc/mailname and it hardwires the hostname into main.cf.&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email ==&lt;br /&gt;
&lt;br /&gt;
we have an unusual email configuration. outgoing email should work to deliver error messages, notices, etc. incoming email is disabled, we do not receive email for local users.&lt;br /&gt;
&lt;br /&gt;
this causes problems with TRIUMF smtp server. if our message cannot be delivered (wrong email address or receipient computer is turned off), TRIUMF smtp server will generate a delivery failure notification email and try to send it to the &amp;quot;from&amp;quot; address of the failed message. but the &amp;quot;from&amp;quot; address does not receive any email, so another delivery failure  notification email is generated and an attempt to deliver it. which again fails, rinse and repeat.&lt;br /&gt;
&lt;br /&gt;
as solution, kray created a special rule, email from scrap.triumf.ca does not generate delivery failure notices. failed messages sit in the queue for 5 days, then they are deleted. (K.O. - confirmed with kray 3jan2024).&lt;br /&gt;
&lt;br /&gt;
to make this work we use the msmtp MTA package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&lt;br /&gt;
apt -y install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y install bsd-mailx&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -fv aliases /etc/aliases&lt;br /&gt;
/bin/cp -fv msmtprc /etc/msmtprc&lt;br /&gt;
/bin/rm -vf ~root/.forward&lt;br /&gt;
/bin/rm -vf /etc/mailname&lt;br /&gt;
Mail root&lt;br /&gt;
Subject: test&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
CC: &amp;lt;CR&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (postfix) ==&lt;br /&gt;
&lt;br /&gt;
THIS IS OBSOLETE!!!&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use smtp.triumf.ca&lt;br /&gt;
* CERN: use cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install postfix ### select &amp;quot;satellite system&amp;quot;, enter full hostname &amp;quot;xxx.triumf.ca&amp;quot;, enter &amp;quot;smtp.triumf.ca&amp;quot;&lt;br /&gt;
apt install mailutils&lt;br /&gt;
dpkg-reconfigure postfix ### (if postfix already installed)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo olchansk@triumf.ca lindner@triumf.ca bsmith@triumf.ca &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
mailx root&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable ping for all users (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
Without this tweak, Debian will report &amp;quot;operation not permitted&amp;quot; if a user tries to ping somewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &#039;net.ipv4.ping_group_range = 0 1000&#039; &amp;gt; /etc/sysctl.d/99-ping.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable apparmor ==&lt;br /&gt;
&lt;br /&gt;
On NFS-Root network booted machines!&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;man man&amp;quot; returns &amp;quot;permission denied&amp;quot; and syslog reports apparmor &amp;quot;sendmsg DENIED&amp;quot; errors, disable apparmor. This is supposedly fixed in kernel 6.0 and later (to be confirmed), see https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1784499&lt;br /&gt;
&lt;br /&gt;
Disable apparmor, see https://ubuntu.com/server/docs/security-apparmor&lt;br /&gt;
&lt;br /&gt;
This takes effect after a reboot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop apparmor.service&lt;br /&gt;
systemctl disable apparmor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install missing packages ==&lt;br /&gt;
&lt;br /&gt;
(apt eats terminal input, even the &amp;quot;yes |&amp;quot; trick does not quite work,&lt;br /&gt;
repeat the following commands until they report that everything&lt;br /&gt;
is installed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install ssh tcsh ethtool ncat rsync strace net-tools traceroute time minicom screen git lsof debsums tmux iptables telnet pax rpm mtools at gdisk&lt;br /&gt;
yes | apt -y install sysstat smartmontools lm-sensors&lt;br /&gt;
yes | apt -y install lsb-release&lt;br /&gt;
apt -y install vim # in addition to default vim-tiny, requested by IRIS&lt;br /&gt;
apt -y install gedit # requested by TACTIC&lt;br /&gt;
apt -y install tcl&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
yes | apt -y install flex bison&lt;br /&gt;
yes | apt -y install neofetch&lt;br /&gt;
yes | apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
yes | apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
yes | apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
yes | apt -y install mariadb-client ### mysql client&lt;br /&gt;
yes | apt -y install libz-dev libzstd-dev sqlite3 libsqlite3-dev unixodbc-dev&lt;br /&gt;
yes | apt -y install libssl-dev&lt;br /&gt;
yes | apt -y install emacs xemacs21 joe&lt;br /&gt;
yes | apt -y install gnuplot dos2unix&lt;br /&gt;
yes | apt -y install mutt bsd-mailx # email clients&lt;br /&gt;
yes | apt -y install liblz4-tool pbzip2&lt;br /&gt;
yes | apt -y install libc6-dev-i386 # otherwise no /usr/include/sys/types.h&lt;br /&gt;
yes | apt -y install libreadline-dev&lt;br /&gt;
yes | apt -y install ubuntu-mate-themes&lt;br /&gt;
yes | apt -y install libmotif-dev libxmu-dev&lt;br /&gt;
yes | apt -y install libusb-dev libusb-1.0-0-dev&lt;br /&gt;
yes | apt -y install i2c-tools libi2c-dev libi2c0&lt;br /&gt;
yes | apt -y install xfig gsfonts-x11 gsfonts-other # install fonts for xfig&lt;br /&gt;
yes | apt -y install libjson-perl&lt;br /&gt;
yes | apt -y install libgsl-dev # additional GNU Scientific Library&lt;br /&gt;
yes | apt -y install qt5-default # Qt development&lt;br /&gt;
yes | apt -y install python3-full python3-dev python3-dbg python3-pip ### for pyROOT&lt;br /&gt;
yes | apt -y install imagemagick imagemagick-common ckeditor # for elog&lt;br /&gt;
yes | apt -y install libjpeg-dev libjpeg-progs libjpeg-tools&lt;br /&gt;
yes | apt -y install linux-tools-common linux-tools-generic # cpupower frequency-info&lt;br /&gt;
yes | apt -y install rdesktop remmina remmina-plugin&amp;quot;*&amp;quot; # requested by POL&lt;br /&gt;
yes | apt -y install nlohmann-json3-dev # required to build MIDAS with ROOT 6.30 on Ubuntu-22&lt;br /&gt;
apt -y install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python3 libssl-dev libafterimage0 # from https://root.cern/install/dependencies/&lt;br /&gt;
apt -y install gfortran libpcre3-dev xlibmesa-glu-dev libglew-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio-dev graphviz-dev libldap2-dev python3-dev python3-numpy libxml2-dev libkrb5-dev libgsl0-dev qtwebengine5-dev nlohmann-json3-dev libtbb-dev libavahi-compat-libdnssd-dev # from https://root.cern/install/dependencies/&lt;br /&gt;
apt -y install libvdt-dev # for ROOT 6.32 on Ubuntu-24&lt;br /&gt;
apt -y install autoconf automake gperf # gnu package build tools&lt;br /&gt;
apt -y install u-boot-tools # for Xilinx petalinux&lt;br /&gt;
#apt -y install linux-headers-generic # to build linux kernel drivers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 20.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 # enable linux 5.11 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 22.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install linux-generic-hwe-22.04 # enable linux 6.2.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 24.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install linux-generic-hwe-24.04 # enable linux 6.8.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
See https://askubuntu.com/questions/1399383/how-to-install-firefox-as-a-traditional-deb-package-without-snap-in-ubuntu-22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add-apt-repository ppa:mozillateam/ppa&lt;br /&gt;
apt install firefox-esr&lt;br /&gt;
echo run firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure DNS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /etc/systemd/resolved.conf.d&lt;br /&gt;
cp etc/resolved-triumf.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
systemctl restart systemd-resolved&lt;br /&gt;
resolvectl&lt;br /&gt;
#systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ganglia ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install ganglia-monitor&lt;br /&gt;
cd ~root/git/scripts/ganglia&lt;br /&gt;
git pull&lt;br /&gt;
make install&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fix gmond start before network is ready:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ganglia-monitor.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ganglia-monitor.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ganglia-monitor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install gonodeinfo ==&lt;br /&gt;
&lt;br /&gt;
* go to https://bitbucket.org/dd1/gonodeinfo follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
#git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git remote set-url origin https://daq00.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: daq00.triumf.ca:8601&lt;br /&gt;
* run &amp;quot;gonodeinfo -v&amp;quot;&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run /opt/gonodeinfo/gonodereceive.exe -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== install emailonreboot ==&lt;br /&gt;
&lt;br /&gt;
send an email if computer is rebooted&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root&lt;br /&gt;
mkdir -p ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/rpms.git&lt;br /&gt;
cd rpms/emailonreboot&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install monitor_nfs ==&lt;br /&gt;
&lt;br /&gt;
monitor NFS mounts and complain about dead, stale and hung mounts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root&lt;br /&gt;
mkdir -p ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/rpms.git&lt;br /&gt;
cd rpms/monitor_nfs&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
* apt -y install xfonts-100dpi xfonts-75dpi&lt;br /&gt;
* restart Xorg (i.e. &amp;quot;killall Xorg&amp;quot;, this will log you out from the console)&lt;br /&gt;
* xlsfonts | grep -i helvetica ### should show fonts with different sizes, not just size 0 (scalable)&lt;br /&gt;
&lt;br /&gt;
== install libz.so.1 for CentOS compatibility ==&lt;br /&gt;
&lt;br /&gt;
KO - confirm which versions on quartus need this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install zlib1g&lt;br /&gt;
yes | apt-get -y install zlib1g:i386 libc6:i386 libgcc1:i386 gcc-6-base:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ld-ldb-x86-64.so.3 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
Not clear from package this is supposed to come from. Copied from U-20.&lt;br /&gt;
&lt;br /&gt;
Without this, Quartus lmgrd does not run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /lib64&lt;br /&gt;
ln -s  ld-linux-x86-64.so.2 ld-lsb-x86-64.so.2&lt;br /&gt;
ln -s  ld-linux-x86-64.so.2 ld-lsb-x86-64.so.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
should look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:/lib64# ls -l&lt;br /&gt;
total 3&lt;br /&gt;
lrwxrwxrwx 1 root root 44 Jan 28 09:07 ld-linux-x86-64.so.2 -&amp;gt; ../lib/x86_64-linux-gnu/ld-linux-x86-64.so.2&lt;br /&gt;
lrwxrwxrwx 1 root root 20 Feb 18 16:45 ld-lsb-x86-64.so.2 -&amp;gt; ld-linux-x86-64.so.2&lt;br /&gt;
lrwxrwxrwx 1 root root 20 Feb 18 16:45 ld-lsb-x86-64.so.3 -&amp;gt; ld-linux-x86-64.so.2&lt;br /&gt;
root@daq13:/lib64# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
(does not work anymore!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ftp.ca.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus 13.0sp1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0.50.0&lt;br /&gt;
/bin/cp -pv libpng12.so.0 libpng12.so.0.50.0 /lib/x86_64-linux-gnu/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for Xilinx ==&lt;br /&gt;
&lt;br /&gt;
ubuntu LTS 22.04 vivado 2020.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install autoconf libtool&lt;br /&gt;
apt install libtinfo5&lt;br /&gt;
apt install texinfo&lt;br /&gt;
apt install zlib1g:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for building ROOT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install libx11-dev libxpm-dev libxft-dev libxext-dev libpng-dev libjpeg-dev xlibmesa-glu-dev libxml2-dev libgsl-dev cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install 32-bit libraries for PHYSICA ==&lt;br /&gt;
&lt;br /&gt;
these instructions are for running 32-bit physica executable built for SL6 on ubuntu LTS 20.04&lt;br /&gt;
&lt;br /&gt;
install physica sources (cannot build, do not have g77)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages&lt;br /&gt;
git clone https://bitbucket.org/ttriumfdaq/physica.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install 32-bit libraries using ubuntu package manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install lib32z1 # libz.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy 32-bit SL6 shared libraries to /lib32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libX11.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libgd.so.2 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libpng12.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libreadline.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libncurses.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libg2c.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libxcb.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXpm.so.4 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libjpeg.so.62 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfontconfig.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfreetype.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libtinfo.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXau.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libexpat.so.1 /lib32/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ldd should report:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trinatdaq:trinat&amp;gt; ldd /usr/local/physica/physica.exe&lt;br /&gt;
	linux-gate.so.1 (0xf7fa2000)&lt;br /&gt;
	libX11.so.6 =&amp;gt; /lib32/libX11.so.6 (0xf7e43000)&lt;br /&gt;
	libgd.so.2 =&amp;gt; /lib32/libgd.so.2 (0xf7dfe000)&lt;br /&gt;
	libpng12.so.0 =&amp;gt; /lib32/libpng12.so.0 (0xf7dd6000)&lt;br /&gt;
	libz.so.1 =&amp;gt; /lib32/libz.so.1 (0xf7db8000)&lt;br /&gt;
	libreadline.so.6 =&amp;gt; /lib32/libreadline.so.6 (0xf7d7e000)&lt;br /&gt;
	libncurses.so.5 =&amp;gt; /lib32/libncurses.so.5 (0xf7d5b000)&lt;br /&gt;
	libg2c.so.0 =&amp;gt; /lib32/libg2c.so.0 (0xf7d3d000)&lt;br /&gt;
	libm.so.6 =&amp;gt; /lib32/libm.so.6 (0xf7c39000)&lt;br /&gt;
	libgcc_s.so.1 =&amp;gt; /lib32/libgcc_s.so.1 (0xf7c1a000)&lt;br /&gt;
	libc.so.6 =&amp;gt; /lib32/libc.so.6 (0xf7a2f000)&lt;br /&gt;
	libxcb.so.1 =&amp;gt; /lib32/libxcb.so.1 (0xf7a05000)&lt;br /&gt;
	libdl.so.2 =&amp;gt; /lib32/libdl.so.2 (0xf79ff000)&lt;br /&gt;
	libXpm.so.4 =&amp;gt; /lib32/libXpm.so.4 (0xf79ee000)&lt;br /&gt;
	libjpeg.so.62 =&amp;gt; /lib32/libjpeg.so.62 (0xf7997000)&lt;br /&gt;
	libfontconfig.so.1 =&amp;gt; /lib32/libfontconfig.so.1 (0xf7962000)&lt;br /&gt;
	libfreetype.so.6 =&amp;gt; /lib32/libfreetype.so.6 (0xf78c9000)&lt;br /&gt;
	libtinfo.so.5 =&amp;gt; /lib32/libtinfo.so.5 (0xf78b0000)&lt;br /&gt;
	/lib/ld-linux.so.2 (0xf7fa4000)&lt;br /&gt;
	libXau.so.6 =&amp;gt; /lib32/libXau.so.6 (0xf78ad000)&lt;br /&gt;
	libexpat.so.1 =&amp;gt; /lib32/libexpat.so.1 (0xf7885000)&lt;br /&gt;
trinatdaq:trinat&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set login environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv TRIUMF_FONTS $HOME/packages/physica/fonts&lt;br /&gt;
setenv PHYSICA_DIR $HOME/packages/physica&lt;br /&gt;
alias physica $PHYSICA_DIR/physica-SL6-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages/physica&lt;br /&gt;
physica&lt;br /&gt;
@rangauss.pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install wine ==&lt;br /&gt;
&lt;br /&gt;
As far as I know, only needed for BNMR/BNQR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install wine winetricks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install lightdm ==&lt;br /&gt;
&lt;br /&gt;
unlike the default gdm login manager, lightdm shows the machine hostname and does not require an extra mouse click to swicth from screen saver to login mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install lightdm&lt;br /&gt;
# select lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install desktop environments ==&lt;br /&gt;
&lt;br /&gt;
note: default display manager and default desktop are deficient, please do not skip this step.&lt;br /&gt;
&lt;br /&gt;
note: if apt asks to choose the display manager, select &amp;quot;lightdm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: KO - I recommend the &amp;quot;MATE&amp;quot; desktop.&lt;br /&gt;
&lt;br /&gt;
note: you will have to cut-and-paste this several times because &amp;quot;apt&amp;quot; eats commands, even with &amp;quot;-y&amp;quot; and even piped from &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# install MATE desktop&lt;br /&gt;
apt -y install ubuntu-mate-core ubuntu-mate-desktop ubuntu-mate-themes&lt;br /&gt;
# install Cinnamon desktop&lt;br /&gt;
apt -y install cinnamon&lt;br /&gt;
# install KDE desktop&lt;br /&gt;
apt -y install kde-standard kubuntu-settings-desktop&lt;br /&gt;
# install Lxqt desktop&lt;br /&gt;
# apt -y install lxqt # conflict over kubuntu-desktop, kubuntu-settings-desktop and desktop-base&lt;br /&gt;
# install Xfce4 desktop&lt;br /&gt;
apt -y install xfce4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ROOT ==&lt;br /&gt;
&lt;br /&gt;
Please install ROOT per instructions at https://root.cern.ch.&lt;br /&gt;
&lt;br /&gt;
NOTE1: The ROOT package available from Ubuntu repositories is severely out of date and cannot be used with MIDAS and ROOTANA. ### DO NOT DO THIS! apt-get install root-system&lt;br /&gt;
&lt;br /&gt;
NOTE2: as of 2017-Jan-09, ROOT binary kits for Ubuntu do not work (use GCC 5 instead of GCC6), build from source instead.&lt;br /&gt;
&lt;br /&gt;
== Install x2go ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install x2goserver x2goserver-xsession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable root login from ladd00/daq00 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
CTRL-C&lt;br /&gt;
/bin/cp ~root/git/scripts/etc/authorized_keys ~root/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable ssh access from outside of TRIUMF ==&lt;br /&gt;
&lt;br /&gt;
to stop ssh login spam, disable ssh access from outside of TRIUMF. this can be done by requesting a firewall block through the helpdesk or by local firewall rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo iptables -I INPUT ! -s 142.90.0.0/255.255.0.0 -p tcp --dport 22 -j REJECT &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install smart-status ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s ~/git/scripts/smart-status/smart-status.perl ~root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable boot menu and boot messages ==&lt;br /&gt;
&lt;br /&gt;
This will enable the grub menu (with a 10 sec timeout) and&lt;br /&gt;
replace black screen with exciting linux boot messages.&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_DEFAULT=0&lt;br /&gt;
#GRUB_TIMEOUT_STYLE=hidden&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;vga=769 video=640x480&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
#GRUB_GFXMODE=640x480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update grub config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable automatic updates =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install unattended-upgrades&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/99apt-conf-ko /etc/apt/apt.conf.d/&lt;br /&gt;
apt-config dump | grep Unattended&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is obsolete:&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/50unattended-upgrades&lt;br /&gt;
** uncomment in Allowed-Origins &amp;quot;-security&amp;quot; and &amp;quot;-updates&amp;quot;&lt;br /&gt;
** add in Allowed-Origins: &amp;quot;Google LLC:stable&amp;quot;;&lt;br /&gt;
** uncomment/add: &amp;quot;Unattended-Upgrade::Mail &amp;quot;root&amp;quot;;&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;7&amp;quot;;&lt;br /&gt;
APT::Periodic::Unattended-Upgrade &amp;quot;1&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test: unattended-upgrade --dry-run -v&lt;br /&gt;
&lt;br /&gt;
NOTE: update-on-shutdown is disabled.&lt;br /&gt;
&lt;br /&gt;
NOTE: there is no update-on-boot, but:&lt;br /&gt;
&lt;br /&gt;
NOTE: if machine was off for a long time, the systemd update timer would have expired and it will fire soon after reboot, causing an automatic update run. this is unwanted, and there is no fix or workaround for it. K.O. June-2023.&lt;br /&gt;
&lt;br /&gt;
= Fix bpool is full (obsolete) =&lt;br /&gt;
&lt;br /&gt;
THIS IS CAUSED BY OBSOLETE PACKAGE zsys. PLEASE: apt remove zsys&lt;br /&gt;
&lt;br /&gt;
= IPMI instructions =&lt;br /&gt;
&lt;br /&gt;
IPMI is the board management hardware on Supermicro and other server motherboards. This includes hardware sensors - fan rotation speed, temperatures and power supply voltages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ipmitool&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
* ipmitool sel list ### event list&lt;br /&gt;
* ipmitool sel elist ### event list&lt;br /&gt;
* ipmitool sel clear ### clear event list (if it becomes full)&lt;br /&gt;
* ipmitool sensor ### report hardware sensors&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel (U-24) =&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 24 installed on ZFS has rpool/USERDATA/home_xxx mounted on /home,&lt;br /&gt;
has to be moved or autofs /home will not work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep USERDATA | grep home | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
zfs set -u mountpoint=/home1 `zfs list | grep USERDATA | grep home | cut -f1 -d&amp;quot; &amp;quot;`&lt;br /&gt;
emacs -nw /etc/passwd # change mount for wheel account to /home1/wheel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will not take effect until rebooting.  So reboot now and make sure that when you login as wheel that home directory is /home1/wheel.  Please ensure that ssh from root@daq00 to this computer works before trying this; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel =&lt;br /&gt;
&lt;br /&gt;
note: this MUST be done if ZFS root and NIS/autofs with /home.&lt;br /&gt;
&lt;br /&gt;
Default location of wheel&#039;s home directory will collide with autofs /home, it has to be moved,&lt;br /&gt;
for example to /wheel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# logout from the wheel user&lt;br /&gt;
# go to another computer&lt;br /&gt;
ssh root@daqubuntuxxx&lt;br /&gt;
zfs list | grep wheel ### identify zfs name wheel_xxxxxx&lt;br /&gt;
#zfs set mountpoint=/wheel rpool/USERDATA/wheel_hm8fzh&lt;br /&gt;
zfs set mountpoint=/wheel `zfs list | grep wheel | cut -f1 -d&amp;quot; &amp;quot;`&lt;br /&gt;
zfs list | grep wheel&lt;br /&gt;
emacs -nw /etc/passwd ### change wheel&#039;s home directory from /home/wheel to /wheel&lt;br /&gt;
su - wheel ### check that user wheel still works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will break wheel&#039;s ability to run snap programs, such as firefox, install chrome as listed below.&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 22.04, 24.04, debian 11, 12) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install rpcbind nis&lt;br /&gt;
echo DAQ-NIS &amp;gt;&amp;gt; /etc/defaultdomain&lt;br /&gt;
echo ypserver daq00.triumf.ca &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
systemctl enable ypbind.service&lt;br /&gt;
systemctl restart ypbind.service&lt;br /&gt;
systemctl status ypbind.service&lt;br /&gt;
ypwhich -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable ypserv:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i s/NISSERVER=false/NISSERVER=slave/ /etc/default/nis&lt;br /&gt;
/usr/lib/yp/ypinit -s daq00&lt;br /&gt;
echo ypserver localhost &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
sed -i &amp;quot;s/ypserver .*/ypserver localhost/&amp;quot; /etc/yp.conf&lt;br /&gt;
systemctl enable ypserv&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/nsswitch.conf to read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&lt;br /&gt;
#passwd: ...&lt;br /&gt;
#group: ...&lt;br /&gt;
#shadow: ...&lt;br /&gt;
&lt;br /&gt;
#netgroup: ...&lt;br /&gt;
#automount: ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable hourly update of nis maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is a new machine, then on the master NIS node (daq00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 20.04) =&lt;br /&gt;
&lt;br /&gt;
* apt-get -y install portmap nis ### will ask for NIS domain (DAQ-NIS)&lt;br /&gt;
* dpkg-reconfigure nis ### reconfigure if already installed&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* edit /etc/default/nis&lt;br /&gt;
** set &amp;quot;NISSERVER=slave&amp;quot;&lt;br /&gt;
** Ubuntu LTS 20.04, check that &amp;quot;YPBINDARGS=&amp;quot; is blank, remove &amp;quot;-no-dbus&amp;quot; if it is there&lt;br /&gt;
* #edit /etc/yp.conf, comment-out everything, add &amp;quot;domain DAQ-NIS server localhost&amp;quot;&lt;br /&gt;
* edit /etc/yp.conf, comment-out everything, add &amp;quot;ypserver localhost&amp;quot;&lt;br /&gt;
* /usr/lib/yp/ypinit -s daq00&lt;br /&gt;
* systemctl enable nis&lt;br /&gt;
* systemctl restart nis&lt;br /&gt;
* ypwhich&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* ypcat -k passwd&lt;br /&gt;
* vi /etc/nsswitch.conf ### add the automount line, modify the passwd, group and shadow lines to read this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable hourly update of NIS maps&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ### NOT NEEDED sudo vi /etc/idmapd.conf ### add line: &amp;quot;Domain = triumf.ca&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= enable autofs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
ls -l /home/olchansk ### test autofs, check file owner is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= enable NFS server =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install nfs-kernel-server&lt;br /&gt;
#edit /etc/exports&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NIS master =&lt;br /&gt;
&lt;br /&gt;
notes for setting up the NIS master&lt;br /&gt;
&lt;br /&gt;
== wheel user ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wheel&amp;quot; is the default administrative user. We do not want it&#039;s password exported to NIS (encrypted password hash is world visible) and we do not want it&#039;s home directory exported to NFS (~wheel/.ssh is world visible and potentially writable: anybody can change ~wheel/.ssh/authorized_keys).&lt;br /&gt;
&lt;br /&gt;
* move wheel&#039;s home directory from /home/wheel to /wheel (see special section about this)&lt;br /&gt;
* change wheel&#039;s UID and GID from 1000 to a value below MINUID in /var/yp/Makefile&lt;br /&gt;
&lt;br /&gt;
== coherent uids ==&lt;br /&gt;
&lt;br /&gt;
we do not want system accounts defined in /etc/passwd of the NIS master&lt;br /&gt;
to be included in the NIS map &amp;quot;passwd&amp;quot;. this causes trouble on NIS clients&lt;br /&gt;
where newly installed packages fail to create local system users because same&lt;br /&gt;
user already exists in NIS.&lt;br /&gt;
&lt;br /&gt;
This is controlled by MINUID in /var/yp/Makefile.&lt;br /&gt;
&lt;br /&gt;
Historical TRIUMF uids start from around 200, but several clusters do not have any historic TRIUMF uids below 500 and MINUID is set to:&lt;br /&gt;
* DAQ-NIS: MINUID=200&lt;br /&gt;
* ISAC-NIS: MINUID=500&lt;br /&gt;
* TITAN-NIS: MINUID=500&lt;br /&gt;
* MUSR-NIS: MINUID=500&lt;br /&gt;
* TIG-NIS: MINUID=500 (100 on SL6 mother8pi)&lt;br /&gt;
&lt;br /&gt;
Ubuntu 20 has two programs to create users:&lt;br /&gt;
* adduser - creates new users with UID 1000 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* adduser --system - creates new system users with UID 100 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* useradd - creates new users with UID 1000 and up as specified in /etc/login.defs. No problems here.&lt;br /&gt;
* useradd --system - creates new system users with UID 999 and down (read &amp;quot;man useradd&amp;quot;, section at the end about SYS_UID_MAX). This collides with NIS MINUID, these system users will be included in the NIS map and cause trouble.&lt;br /&gt;
&lt;br /&gt;
This problem cannot be fixed, SYS_UID_MIN, SYS_UID_MAX and UID_MIN in /etc/login.defs do not seem&lt;br /&gt;
to have any effect on UIDs chosen by &amp;quot;useradd --system&amp;quot;. (tested on Ubuntu LTS 20.04).&lt;br /&gt;
&lt;br /&gt;
So far only these system accounts seem to be affected by this:&lt;br /&gt;
* systemd-coredump&lt;br /&gt;
* ganglia&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/passwd&amp;quot; to identify the last unused system user uid (range 100..200)&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/group&amp;quot; to identify the last unused system user gid (range 100.200)&lt;br /&gt;
* systemd-coredump: manually change UID and GID (package systemd-coredump is usually not installed)&lt;br /&gt;
* ganglia: same thing, then change ownership on all ganglia files.&lt;br /&gt;
&lt;br /&gt;
Also read systemd author&#039;s opinion on system vs user UIDs:&lt;br /&gt;
https://github.com/systemd/systemd/issues/4850#issuecomment-265698275&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-logind NIS breakage =&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED FOR UBUNTU LTS 20.04 !!!&lt;br /&gt;
&lt;br /&gt;
there is a delay in ssh logins for normal users. &amp;quot;ssh -v&amp;quot; shows the delay is after &amp;quot;pledge...&amp;quot;. this&lt;br /&gt;
fix removes the delay.&lt;br /&gt;
&lt;br /&gt;
systemd developers think that we should not use NIS and made sure there are&lt;br /&gt;
problems if we do. To give them credit, they do offer a workaround. Read this:&lt;br /&gt;
https://github.com/poettering/systemd/commit/695fe4078f0df6564a1be1c4a6a9e8a640d23b67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-logind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-logind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-udevd NIS breakage =&lt;br /&gt;
&lt;br /&gt;
see same problem as above with udev getting stuck. ubuntu lts 20.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-udevd.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-udevd.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-udevd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure USB device permissions =&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usbmisc&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot; &lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyACM*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;*video*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* reload udev rules: udevadm control --reload-rules&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
* watch udev activity: udevadm monitor -p&lt;br /&gt;
&lt;br /&gt;
= Configure lightdm display manager =&lt;br /&gt;
&lt;br /&gt;
* enable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo lightdm | dpkg-reconfigure -fteletype lightdm&lt;br /&gt;
systemctl disable gdm&lt;br /&gt;
systemctl disable sddm&lt;br /&gt;
systemctl enable lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable login by NIS users&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp -v etc/lightdm_enable_nis_login.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart lightdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop gdm&lt;br /&gt;
systemctl restart lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install libpng12.so.0 =&lt;br /&gt;
&lt;br /&gt;
Quartus 16 needs libpng12:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install google-chrome =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb&lt;br /&gt;
dpkg -i google-chrome-stable_current_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
confirm autoupdate is enabled, observe dl.google.com is present in the list of repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
...&lt;br /&gt;
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,094 B]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOLLOWING IS OBSOLETE:&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -&lt;br /&gt;
sh -c &#039;echo &amp;quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/google-tmp.list&#039;&lt;br /&gt;
apt update&lt;br /&gt;
apt install google-chrome-stable&lt;br /&gt;
/bin/rm -f /etc/apt/sources.list.d/google-tmp.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install amanda client =&lt;br /&gt;
&lt;br /&gt;
ONLY ON MACHINES THAT HOST HOME DIRECTORIES&lt;br /&gt;
&lt;br /&gt;
* apt install amanda-client&lt;br /&gt;
* edit /etc/amandahosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amanda.triumf.ca amanda amdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check permissions on /etc/amandahosts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:/var/log/amanda# ls -l /etc/amandahosts&lt;br /&gt;
-rw------- 1 backup backup 49 Jan 27 10:48 /etc/amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix if needed: chown backup.backup /etc/amandahosts; chmod a= /etc/amandahosts; chmod u=wr /etc/amandahosts&lt;br /&gt;
* edit /etc/amanda-security.conf, add this line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runtar:gnutar_path=/usr/bin/tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the amanda machine:&lt;br /&gt;
&lt;br /&gt;
* in amanda disklist, use dump type &amp;quot;bsdtcp-comp-user-tar&amp;quot;&lt;br /&gt;
* su - amanda and run amcheck -c daily daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.1$ amcheck -c daily daq00&lt;br /&gt;
&lt;br /&gt;
Amanda Backup Client Hosts Check&lt;br /&gt;
--------------------------------&lt;br /&gt;
Client check: 1 host checked in 0.092 seconds.  0 problems found.&lt;br /&gt;
&lt;br /&gt;
(brought to you by Amanda 3.3.7p1.git.685ff76d)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable rc.local =&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, Ubuntu LTS 20.04 does not enable /etc/rc.local. Do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp -n -v etc/rc.local /etc/&lt;br /&gt;
chmod a+rx /etc/rc.local&lt;br /&gt;
cp etc/rc-local.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Remove unwanted packages =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt purge  bash-completion # broken, adds unwanted &amp;quot;\&amp;quot; if &amp;quot;ls -l $ROOTSYS/&amp;lt;tab&amp;gt;&amp;quot;&lt;br /&gt;
apt purge  zsys # broken, do not use&lt;br /&gt;
apt purge  sddm # login manager&lt;br /&gt;
apt purge  avahi-daemon avahi-autoipd # not sure what it does, observed using 100% CPU&lt;br /&gt;
apt purge  modemmanager # probes all serial ports to see if it&#039;s a modem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable unwanted services =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable mpd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl --global mask tracker-extract-3.service&lt;br /&gt;
systemctl --global mask tracker-miner-fs-3.service&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable sleep and suspend =&lt;br /&gt;
&lt;br /&gt;
note: we see some computers randomly shutdown or go to sleep, log files indicates the &amp;quot;sleep&amp;quot; or &amp;quot;suspend&amp;quot; button was pushed by user, but no such buttons actually exist. this is the fix for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target systemd-suspend.service systemd-hybrid-sleep.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable crontab @reboot for MIDAS =&lt;br /&gt;
&lt;br /&gt;
startup scripts have a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/cron.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/cron.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat cron.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependency tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
Crontab entry to start midas: (install in the midas user crontab, not root crontab)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - midasuser&lt;br /&gt;
crontab -l&lt;br /&gt;
#@reboot /bin/bash -l -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
#@reboot /bin/tcsh -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install apache httpd proxy for midas and elog =&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache2.&lt;br /&gt;
&lt;br /&gt;
First, configure apache2:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install apache2&lt;br /&gt;
cd /etc/apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file conf-available/ssl-daq14.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file sites-available/daq14-ssl.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
    &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName daq14.triumf.ca&lt;br /&gt;
        DocumentRoot /var/www/html&lt;br /&gt;
        ErrorLog /var/log/apache2/daq14.log&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        # note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
        ## use port specified in elogd.cfg&lt;br /&gt;
        #ProxyPass /elog/ http://localhost:8082/ retry=1 &lt;br /&gt;
        ## use mhttpd port&lt;br /&gt;
        #ProxyPass /      http://localhost:8080/ retry=1 &lt;br /&gt;
        Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
        &amp;lt;Location /&amp;gt;&lt;br /&gt;
            SSLRequireSSL&lt;br /&gt;
            AuthType Basic&lt;br /&gt;
            AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
            Require valid-user&lt;br /&gt;
            # create password file: touch /etc/apache2/htpasswd&lt;br /&gt;
            # to add new user or change password: htpasswd /etc/apache2/htpasswd username&lt;br /&gt;
            AuthUserFile /etc/apache2/htpasswd&lt;br /&gt;
        &amp;lt;/Location&amp;gt;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable ssl module&lt;br /&gt;
* enable new configurations&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
a2enmod headers&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
a2enconf ssl-daq14&lt;br /&gt;
a2ensite daq14-ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable default ssl sites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dissite 000-default-le-ssl&lt;br /&gt;
a2dissite 000-default&lt;br /&gt;
ls -l /etc/apache2/sites-enabled/ ### should show only daq14-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that there are no syntax problems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable and start apache2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 may fail to start, look in /var/log/apache2/error.log and /var/log/apache2/daq14.log&lt;br /&gt;
* if it says &amp;quot;Failed to configure ... certificate&amp;quot;, proceed to the step for setting certbot.&lt;br /&gt;
* try to access https://daq14.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, look at documentation for ufw.&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
(Note: unsurprisingly, this requires outside access to connect with letsencrypt, so won&#039;t work if PC is only accessible from on-site network)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that apache2 is listening on port 80, follow the apache2 instructions above (remove &amp;quot;listen 80&amp;quot; from apache2.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot (if necessary open tcp port 80 in the firewall, see documentation for ufw):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install certbot python3-certbot-apache&lt;br /&gt;
certbot certonly --standalone --installer apache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq14.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot install --apache --cert-name daq14.triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside /etc/apache2/sites-enabled/daq14-ssl.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in&lt;br /&gt;
/etc/letsencrypt/live/daq14.triumf.ca/&lt;br /&gt;
* to check current renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work with current version of certbot&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/apache2/htpasswd&lt;br /&gt;
htpasswd /etc/apache2/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart apache2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* try accessing MIDAS https://daq14.triumf.ca/ (make sure mhttpd is running)&lt;br /&gt;
* if it&#039;s not working, check odb setting FIXME!&lt;br /&gt;
* try accessing ELog https://daq14.triumf.ca/elog/ (make sure elogd is running)&lt;br /&gt;
* if it&#039;s not working, check elogd.cfg file and make sure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSL                  = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== generate self-signed certificate ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphacpc05:~# openssl req  -nodes -new -x509  -keyout server.key -out server.cert -days 1001&lt;br /&gt;
...+....+..+..........+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+..+...+.........+......+.+...+...+.....+...............+.........+...+.+......+...+...........+....+...+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+......+.+...+..+.......+..+...+.......+......+...+..+...+......+....+...............+..+...+....+...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
......+......+.+..+......+.+......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.....+......+.+.........+......+.....+.+..+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.......+....+......+.....+...+...+.......+..+.+........+.+...+......+..+..........+..+.+...........+...+.......+......+.....+.......+...+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
-----&lt;br /&gt;
You are about to be asked to enter information that will be incorporated&lt;br /&gt;
into your certificate request.&lt;br /&gt;
What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
There are quite a few fields but you can leave some blank&lt;br /&gt;
For some fields there will be a default value,&lt;br /&gt;
If you enter &#039;.&#039;, the field will be left blank.&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:CH&lt;br /&gt;
State or Province Name (full name) [Some-State]:Geneve&lt;br /&gt;
Locality Name (eg, city) []:CERN&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CERN&lt;br /&gt;
Organizational Unit Name (eg, section) []:ALPHA experiment           &lt;br /&gt;
Common Name (e.g. server FQDN or YOUR name) []:alphacpc05.cern.ch&lt;br /&gt;
Email Address []:&lt;br /&gt;
root@alphacpc05:~# &lt;br /&gt;
root@alphacpc05:~# &lt;br /&gt;
root@alphacpc05:~# ls -l&lt;br /&gt;
-rw-r--r-- 1 root root 1375 juil. 10 21:43 server.cert&lt;br /&gt;
-rw------- 1 root root 1708 juil. 10 21:42 server.key&lt;br /&gt;
root@alphacpc05:~# systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable elog PDF preview =&lt;br /&gt;
&lt;br /&gt;
NOTE: looks like U-24 already has this correctly.&lt;br /&gt;
&lt;br /&gt;
see https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&lt;br /&gt;
&lt;br /&gt;
* xemacs -nw /etc/ImageMagick-6/policy.xml&lt;br /&gt;
* remove this section at the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- disable ghostscript format types --&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;EPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PDF&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;XPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Jupyter notebook =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From https://jupyter.org/install&lt;br /&gt;
apt install python3-pip&lt;br /&gt;
pip install jupyterlab&lt;br /&gt;
pip install notebook&lt;br /&gt;
~/.local/bin/jupyter notebook&lt;br /&gt;
watch the http://localhost:8888 URL that it printed&lt;br /&gt;
say &amp;quot;no&amp;quot; to offer to start firefox (it will not work!)&lt;br /&gt;
URL is: http://localhost:8888/tree?token=xxx&lt;br /&gt;
from the machine where you are running the web browser (i.e. google-chrome), run (replace trinat@trinatdaq with the username and machine name where you started jupyter)&lt;br /&gt;
open a new shell and run: ssh -v trinat@trinatdaq -L 8888:localhost:8888&lt;br /&gt;
in the web browser, open http://localhost:8888&lt;br /&gt;
this gives us the login page&lt;br /&gt;
in the password or token entry field, put the token from the &amp;quot;tree?token=xxx&amp;quot; above (printed by jupyter on startup)&lt;br /&gt;
push button &amp;quot;login&amp;quot;&lt;br /&gt;
jupyter page should open with the list of files in the trinat home directory&lt;br /&gt;
congratulate Brian with full success&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS quota report =&lt;br /&gt;
&lt;br /&gt;
If there are any ZFS volumes, install script to report disk and quota usage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/quotareport&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /var/www/html/zfsquotareport&lt;br /&gt;
cp -pv ~/git/scripts/quotareport/sorttable.js /var/www/html/zfsquotareport/&lt;br /&gt;
ln -s $PWD/zfsquotareport.perl /etc/cron.daily/&lt;br /&gt;
touch /etc/crontab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If httpd is configured to redirect &amp;quot;/&amp;quot; to MIDAS mhttpd:&lt;br /&gt;
* add following to /etc/apache2/sites-enabled/xxx-ssl.conf in front of &amp;quot;ProxyPass / ...&amp;quot;&lt;br /&gt;
* run &amp;quot;systemctl reload apache2&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not proxy zfs quota report directory &lt;br /&gt;
ProxyPass /zfsquotareport/ ! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install PHP =&lt;br /&gt;
&lt;br /&gt;
* apt install php libapache2-mod-php&lt;br /&gt;
* systemctl restart apache2&lt;br /&gt;
* create /var/www/html/info.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
phpinfo(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://daq00.triumf.ca/info.php&lt;br /&gt;
&lt;br /&gt;
= Configure TRIUMF printers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl stop cups-browsed.service&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
systemctl disable cups-browsed.service&lt;br /&gt;
systemctl stop snap.cups.cupsd.service&lt;br /&gt;
systemctl stop snap.cups.cups-browsed.service&lt;br /&gt;
systemctl disable snap.cups.cupsd.service&lt;br /&gt;
systemctl disable snap.cups.cups-browsed.service&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable core dumps =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 installs the apport package&lt;br /&gt;
which disabled core dumps from user applications. (google it up!).&lt;br /&gt;
It is not meant to do this and documentation claims that&lt;br /&gt;
it is not installed and not enabled by default. Oh, well...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove apport&lt;br /&gt;
apt autoremove ### will remove apport-symptoms and a few other packages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, core dumps are written to file &amp;quot;core&amp;quot; in the current directory.&lt;br /&gt;
See /proc/sys/kernel/core_pattern and /proc/sys/kernel/core_uses_pid.&lt;br /&gt;
&lt;br /&gt;
Enable core dump file names to include process id, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;echo 1 &amp;gt; /proc/sys/kernel/core_uses_pid&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable debugger =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 does not permit debugger to attach and debug&lt;br /&gt;
already running programs. To enable it, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable Ubuntu Pro nag =&lt;br /&gt;
&lt;br /&gt;
best I can tell, impossible at this time.&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! does nothing !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pro config set apt_news=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! breaks automatic updates because 20apt-esm-hook.conf is missing !!!&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;apt upgrade&amp;quot; requests Ubuntu Pro or esm-apps, disable the nag:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! likely same as above, breaks automatic updates !!!&lt;br /&gt;
&lt;br /&gt;
* comment out /etc/apt/apt.conf.d/20apt-esm-hook.conf&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! removes too many packages !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove ubuntu-pro-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update packages =&lt;br /&gt;
&lt;br /&gt;
* apt update # update package list&lt;br /&gt;
* apt upgrade # install updated packages and update &amp;quot;kept back&amp;quot; packages&lt;br /&gt;
* apt autoremove # remove packages that apt thinks should be removed&lt;br /&gt;
&lt;br /&gt;
= Finish installation =&lt;br /&gt;
&lt;br /&gt;
Congratulations. There is nothing more to do!&lt;br /&gt;
&lt;br /&gt;
* reboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update to new version of Ubuntu =&lt;br /&gt;
&lt;br /&gt;
* run &amp;quot;do-release-upgrade -c&amp;quot;&lt;br /&gt;
* if it does not report new release Ubuntu 24, check /etc/update-manager/release-upgrades has &amp;quot;Prompt=lts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Update Ubuntu LTS 20.04 to LTS 22.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daqubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# reboot to clear out all updates&lt;br /&gt;
# vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;22.04 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
# do-release-upgrade&lt;br /&gt;
...&lt;br /&gt;
say yes...&lt;br /&gt;
...&lt;br /&gt;
login.defs, say &amp;quot;Y&amp;quot; (erase local changes, use packaged version)&lt;br /&gt;
/etc/systemd/resolved.conf, say &amp;quot;Y&amp;quot; (same as above)&lt;br /&gt;
firefox snap, say yes&lt;br /&gt;
unable to reach snap store, say &amp;quot;skip&amp;quot;&lt;br /&gt;
/etc/gmond.conf, say &amp;quot;Y&amp;quot;&lt;br /&gt;
/var/yp/Makefile, say &amp;quot;install the package maintainer&#039;s version&amp;quot;&lt;br /&gt;
/etc/ypserv.conf, same thing&lt;br /&gt;
/etc/ypserv.securenets, same thing&lt;br /&gt;
/etc/default/nis, same thing&lt;br /&gt;
/etc/speech-dispatcher/modules/mary-generic.conf, same thing&lt;br /&gt;
/etc/apt/apt.conf.d/50unattended-upgrades, same thing&lt;br /&gt;
...&lt;br /&gt;
278 packages are going to be removed, say yes&lt;br /&gt;
...&lt;br /&gt;
restart required, say yes&lt;br /&gt;
...&lt;br /&gt;
no ping... yes ping...&lt;br /&gt;
...&lt;br /&gt;
ssh daqubuntu, ok&lt;br /&gt;
apt update, fail, DNS does not work, &amp;quot;host security.ubuntu.com&amp;quot; does not resolve.&lt;br /&gt;
fix resolver per https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#Disable_NetworkManager&lt;br /&gt;
apt update, apt upgrade now works, 0 packages to update&lt;br /&gt;
NIS does not work.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== midm9a ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
login.defs&lt;br /&gt;
firefox snap&lt;br /&gt;
gmond.conf&lt;br /&gt;
ypserv&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
unattended-upgrades&lt;br /&gt;
amanda-security.conf&lt;br /&gt;
remove obsolete (no)&lt;br /&gt;
reboot&lt;br /&gt;
configure dns&lt;br /&gt;
reenable nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daq17 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox snap&lt;br /&gt;
imagemagick policy.xml&lt;br /&gt;
gmond.conf&lt;br /&gt;
chrony.conf&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
ypserv.conf&lt;br /&gt;
ypserv.securenets&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
50unattended-upgrades&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daq00 ===&lt;br /&gt;
&lt;br /&gt;
per https://serverpilot.io/docs/how-to-upgrade-ubuntu-20.04-to-22.04/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if it exists &amp;quot;too soon&amp;quot; without doing anything, run it without &amp;quot;-f xxx&amp;quot;, most likely it does not like something about this machine. in case of daq00 it did not like how the EFI partitions were mounted. after fixing it, non-interactive upgrade was successful.&lt;br /&gt;
&lt;br /&gt;
=== isdaq08 ===&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check for modified config files that make upgrade unhappy, deal with all files reported by debsums.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@isdaq08:~# debsums -ce&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
/etc/apt/apt.conf.d/10periodic&lt;br /&gt;
root@isdaq08:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* restore original /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;; &lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;0&amp;quot;; &lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;0&amp;quot;; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
&lt;br /&gt;
Run the upgrade:&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&lt;br /&gt;
Post upgrade:&lt;br /&gt;
&lt;br /&gt;
* configure DNS&lt;br /&gt;
* apt -y install linux-generic-hwe-22.04&lt;br /&gt;
* /bin/cp -v ~/git/scripts/etc/99apt-conf-ko /etc/apt/apt.conf.d/ # restore nightly updates&lt;br /&gt;
* /bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf # remove the ubuntu-pro nag&lt;br /&gt;
* install missing packages&lt;br /&gt;
* restore ganglia&lt;br /&gt;
* restore nis&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
== upgrade U-22 to U-24 ==&lt;br /&gt;
&lt;br /&gt;
generic instructions. below are notes from upgrades of specific machines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove desktop-base # causes installer crash&lt;br /&gt;
apt -y remove thunderbird  # avoid forced conversion to snap&lt;br /&gt;
apt update&lt;br /&gt;
apt -y upgrade&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
do-release-upgrade -c      # confirm upgrade will be to U-24&lt;br /&gt;
do-release-upgrade&lt;br /&gt;
# say &amp;quot;y&amp;quot; to all questions&lt;br /&gt;
# after installation starts, accept default answers to all questions&lt;br /&gt;
# should run for about 1 hour or so&lt;br /&gt;
# after upgrade finishes&lt;br /&gt;
apt update&lt;br /&gt;
apt -y upgrade&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if installation bombs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # will tell us to run &amp;quot;apt --fix-broken install&amp;quot;, do it&lt;br /&gt;
apt --fix-broken install&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # should resume the upgrade, will run for a long time&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # should do nothing&lt;br /&gt;
apt autoremove&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daqubuntu, U-24 ===&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check for modified config files that make upgrade unhappy, deal with all files reported by debsums.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# debsums -ce&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/ypserv.conf&lt;br /&gt;
/etc/ypserv.securenets&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
/etc/update-manager/release-upgrades&lt;br /&gt;
/etc/apt/apt.conf.d/10periodic&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
* restore original /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;; &lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;0&amp;quot;; &lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;0&amp;quot;; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* restore original release-upgrades: &amp;quot;Prompt: lts&amp;quot;&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
&lt;br /&gt;
Check for upgrade:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
There is no development version of an LTS available.&lt;br /&gt;
To upgrade to the latest non-LTS development release &lt;br /&gt;
set Prompt=normal in /etc/update-manager/release-upgrades.&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the upgrade:&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&lt;br /&gt;
Post upgrade:&lt;br /&gt;
&lt;br /&gt;
* configure DNS&lt;br /&gt;
* apt -y install linux-generic-hwe-22.04&lt;br /&gt;
* /bin/cp -v ~/git/scripts/etc/99apt-conf-ko /etc/apt/apt.conf.d/ # restore nightly updates&lt;br /&gt;
* /bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf # remove the ubuntu-pro nag&lt;br /&gt;
* install missing packages&lt;br /&gt;
* restore ganglia&lt;br /&gt;
* restore nis&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
=== daq14, U-20-22-24 ===&lt;br /&gt;
&lt;br /&gt;
* apt update, apt upgrade&lt;br /&gt;
* apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 ### install kernel 5.15&lt;br /&gt;
* shutdown -r now&lt;br /&gt;
* stuck waiting for daq14 to shutdown...&lt;br /&gt;
* reboot into kernel 5.15&lt;br /&gt;
* ???&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/apache2/ports.conf&lt;br /&gt;
/etc/dnsmasq.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
/etc/sudoers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 restore original ports.conf, uncomment &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* cp -pv /etc/dnsmasq.conf.dpkg-dist /etc/dnsmasq.conf&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* edit /etc/yp.conf, remove everything after &amp;quot;# ypserver ypserver.network.com&amp;quot;&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* runs for a long time&lt;br /&gt;
* stuck on &amp;quot;/etc/default/nis&amp;quot;, type &amp;quot;Y&amp;quot;, press enter, nothing for a bit, then resumes running&lt;br /&gt;
* finished&lt;br /&gt;
* configure DNS&lt;br /&gt;
* reboot&lt;br /&gt;
* have kernel 6.8&lt;br /&gt;
* apt update; apt upgrade&lt;br /&gt;
* apt upgrade guile-2.2-libs ### would not auto-update, &amp;quot;kept back&amp;quot;, has to be done by hand&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* diff /etc/default/nis.dpkg-dist  /etc/default/nis&lt;br /&gt;
* cp -pv /etc/default/nis.dpkg-dist  /etc/default/nis&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* we ignore this and run the update&lt;br /&gt;
* do-release-upgrade -c&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;24.04.1 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombs out without any error messages&lt;br /&gt;
* in /var/log/dist-upgrade/main.log reports &amp;quot;Failed to find a replacement for xapp&amp;quot; and other packages&lt;br /&gt;
* apt remove xapp usrmerge ureadahead thunderbird-gnome-support&lt;br /&gt;
* no go, complains about even more packages.&lt;br /&gt;
* apt list | grep installed | grep -v jammy ### show packages installed from non-ubuntu sources&lt;br /&gt;
* remove all packages marked &amp;quot;install,local&amp;quot; ### ubuntu updater does not know where they came from and so cannot update them.&lt;br /&gt;
* apt remove desktop-base ### not happy about this package in /var/log/dist-upgrade/apt.log&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* running for a long time...&lt;br /&gt;
&lt;br /&gt;
=== alpha04 U-20-24 ===&lt;br /&gt;
&lt;br /&gt;
* apt update, apt upgrade, apt autoremove&lt;br /&gt;
* reboot into latest kernel (already done)&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alpha04:~# debsums -ce&lt;br /&gt;
/etc/dnsmasq.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
root@alpha04:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* move /etc/dnsmasq.conf to /etc/dnsmasq.d/alpha04.conf&lt;br /&gt;
* apt remove dnsmasq&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* debsums -ce ### is now empty&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* it runs for a long time...&lt;br /&gt;
* complained about /etc/fwupd config files, not sure why...&lt;br /&gt;
* finished&lt;br /&gt;
* apt update, apt upgrade, apt autoremove&lt;br /&gt;
* restore dnsmasq: apt install dnsmasq, systemctl status dnsmasq&lt;br /&gt;
* restore ganglia, per instructions&lt;br /&gt;
* restore NIS: apt -y install rpcbind nis, ypwhich, ypwhich -m&lt;br /&gt;
* zpool upgrade rpool ### also upgrade any other zfs pools, see zpool status&lt;br /&gt;
* remove unwanted packages, per instructions&lt;br /&gt;
* run gonodeinfo&lt;br /&gt;
* reboot&lt;br /&gt;
* done&lt;br /&gt;
&lt;br /&gt;
== vera00 U20-22-24 ==&lt;br /&gt;
&lt;br /&gt;
* everything same as daq14 for U20-22&lt;br /&gt;
* kernel is still 5.15&lt;br /&gt;
* U22-24 is going...&lt;br /&gt;
* stuck for a few minutes on /etc/fwupd config files&lt;br /&gt;
* have kernel 6.8.0-49&lt;br /&gt;
* same steps as daq14&lt;br /&gt;
* reboot&lt;br /&gt;
* same steps as daq14&lt;br /&gt;
* done&lt;br /&gt;
&lt;br /&gt;
== phaarmonster U22-24 ==&lt;br /&gt;
&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/amandahosts&lt;br /&gt;
/etc/apache2/ports.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do-release-upgrade -c ### reports U24.04.1&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive ### bombs&lt;br /&gt;
* apt remove desktop-base; apt autoremove&lt;br /&gt;
* do-release-upgrade ### (interactive) runs ok&lt;br /&gt;
* bombed !!!&lt;br /&gt;
* apt upgrade spews errors and tells us to run &amp;quot;apt --fix-broken install&amp;quot;&lt;br /&gt;
* apt --fix-broken install ### runs&lt;br /&gt;
* bombs with thunderbird snap errors&lt;br /&gt;
* again... no go&lt;br /&gt;
* thunderbird snap complains about mounting /home, but /home is a symlink&lt;br /&gt;
* rm /home, mkdir /home&lt;br /&gt;
* again, runs ok&lt;br /&gt;
* asks about /etc/fwupd/fwupd.conf - say &amp;quot;Y&amp;quot; to install updated package version&lt;br /&gt;
* apt install completes&lt;br /&gt;
* apt update; apt upgrade ### running for a long time...&lt;br /&gt;
* finished&lt;br /&gt;
* install missing packages, etc&lt;br /&gt;
* reboot&lt;br /&gt;
* long wait... came back&lt;br /&gt;
* DNS does now work, systemd-resolved missing, apt install systemd-resolved, &amp;quot;configure DNS&amp;quot;&lt;br /&gt;
* done.&lt;br /&gt;
&lt;br /&gt;
== isdaq10 U22-24 ==&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombed on desktop-base, &amp;quot;apt remove desktop-base; apt autoremove&amp;quot;&lt;br /&gt;
* bombed with errors&lt;br /&gt;
* running &amp;quot;apt --fix-broken install&amp;quot;&lt;br /&gt;
* complained about thunderbird snap&lt;br /&gt;
* complained about /etc/fwupd/fwupd.conf (say Y)&lt;br /&gt;
* finished ok&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade ### reports &amp;quot;1382 upgraded, 140 newly installed, 0 to remove and 29 not upgraded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== iris01 ==&lt;br /&gt;
&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove desktop-base&lt;br /&gt;
* apt remove thunderbird&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombed with dpkg errors:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hplip wants wrong python&lt;br /&gt;
ganglia-monitor wants wrong libapr1&lt;br /&gt;
sssd-ad wants bunch of wrong libraries&lt;br /&gt;
xemacs21-mule&lt;br /&gt;
libnfsidmap1 wants libldap2&lt;br /&gt;
adn so forth...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt --fix-broken install -y&lt;br /&gt;
* bombs on ganglia - ganglia group absent from /etc/groups&lt;br /&gt;
* fix group ganglia by hand, remove ganglia group from NIS on isdaq00&lt;br /&gt;
* apt --fix-broken install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
== iris00 ==&lt;br /&gt;
&lt;br /&gt;
* stuck on &amp;quot;autofs: restarting&amp;quot;, login as root, kill iris midas, kill automount, systemctl restart autofs, noble got unstuck, ctrl-c systemctl restart autofs&lt;br /&gt;
* noble running...&lt;br /&gt;
* bombed with dpkg errors&lt;br /&gt;
* check ganglia user, group - both ok&lt;br /&gt;
* apt --fix-broken install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
== tigstore01 ==&lt;br /&gt;
&lt;br /&gt;
* no bomb-out&lt;br /&gt;
&lt;br /&gt;
== midm9b ==&lt;br /&gt;
&lt;br /&gt;
* apt remove desktop-base thunderbird&lt;br /&gt;
* bombed&lt;br /&gt;
* apt --fix-broken-install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
= Upgrade to new version of Debian =&lt;br /&gt;
&lt;br /&gt;
https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.en.html&lt;br /&gt;
&lt;br /&gt;
== 32-bit VME processor Debian 11 to 12 ==&lt;br /&gt;
&lt;br /&gt;
* cd git/scripts; git pull; cd ~&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade&lt;br /&gt;
* edit /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main&lt;br /&gt;
#deb http://deb.debian.org/debian/ bullseye main&lt;br /&gt;
#deb-src http://deb.debian.org/debian/ bullseye main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade --without-new-pkgs&lt;br /&gt;
* apt full-upgrade&lt;br /&gt;
* apt list &#039;~c&#039;; apt purge &#039;~c&#039; # purge left-over config files [residual-config]&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Ubuntu package manager =&lt;br /&gt;
&lt;br /&gt;
* apt-get install xxx # install package xxx&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get upgrade&lt;br /&gt;
* apt-get dist-upgrade&lt;br /&gt;
* apt-get autoremove # remove automatically installed packages required by a removed package&lt;br /&gt;
* apt-get remove xxx # remove package xxx&lt;br /&gt;
* apt-cache search . # list all available packages&lt;br /&gt;
* apt-cache show &amp;quot;.&amp;quot; | grep ^Package # list al available packages&lt;br /&gt;
* apt-cache madison root-system # show all available versions of package root-system&lt;br /&gt;
* apt list # list all installed packages&lt;br /&gt;
* dpkg --listfiles libpng16-16 # list all files from this package&lt;br /&gt;
* apt list --installed # list all installed packages&lt;br /&gt;
* dpkg -S /bin/bash # what package provides this file?&lt;br /&gt;
* dpkg -L bash # what files provided by this package?&lt;br /&gt;
* debsums -ce # show modified config files&lt;br /&gt;
* apt-config dump # show apt configuration&lt;br /&gt;
* apt purge &#039;~c&#039; # purge all [residual-config] packages&lt;br /&gt;
&lt;br /&gt;
= Ubuntu zsys =&lt;br /&gt;
&lt;br /&gt;
NOTE: DO NOT USE ZSYS, see https://github.com/ubuntu/zsys/issues/218 and https://github.com/ubuntu/zsys/issues/230&lt;br /&gt;
&lt;br /&gt;
* scripted removal of old snapshots (replace &amp;quot;echo zfs destroy&amp;quot; with &amp;quot;zfs destroy&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list -t all | cut -f1 -d &amp;quot; &amp;quot; | grep autozsys | xargs -n1 echo zfs destroy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* manual removal of old snapshots&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zsysctl show&lt;br /&gt;
zsysctl state remove xy69ye -s&lt;br /&gt;
zsysctl state remove xy69ye&lt;br /&gt;
zsysctl state remove xy69ye -u wheel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove zsys&lt;br /&gt;
&lt;br /&gt;
NOTE: old zsys snapshots must be cleaned manually, &amp;quot;zsysctl state remove xxx --system&amp;quot; is broken and does not remove user data snapshots&lt;br /&gt;
&lt;br /&gt;
* manages system snapshots&lt;br /&gt;
* documentation: https://github.com/ubuntu/zsys&lt;br /&gt;
* documentation: (go to next article via link &amp;quot;newer&amp;quot; at the bottom) https://didrocks.fr/2020/05/21/zfs-focus-on-ubuntu-20.04-lts-whats-new/&lt;br /&gt;
* ubuntu 20.04 bug, too many snapshots cause /boot to become full and updates fail. https://github.com/ubuntu/zsys/issues/155&lt;br /&gt;
* solution: use custom /etc/zsys.conf, limit number of snapshots to 10, see trinatdaq:/etc/zsys.conf&lt;br /&gt;
* zsys commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-grub # list of all snapshots, errors if some snapshots are broken&lt;br /&gt;
zsysctl state remove lnc0k7 --system # remove snapshot&lt;br /&gt;
xemacs -nw /etc/zsys.conf; zsysctl service reload; zsysctl service gc # cause gc to run with new settings in zsys.conf&lt;br /&gt;
zfs list -r -t snapshot -o name,used,referenced,creation bpool/BOOT # list snapshots&lt;br /&gt;
zsysctl show # show snapshots&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu cloning =&lt;br /&gt;
&lt;br /&gt;
to clone a ubuntu image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /nfsroot/lxcpet&lt;br /&gt;
emacs -nw etc/hostname ### change hostname&lt;br /&gt;
emacs -nw etc/mailname ### change hostname (debian 11)&lt;br /&gt;
emacs -nw etc/defaultdomain ### change the NIS domainname&lt;br /&gt;
emacs -nw etc/yp.conf ### change the NIS server&lt;br /&gt;
cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu boot loader =&lt;br /&gt;
&lt;br /&gt;
== maintenance commands ==&lt;br /&gt;
&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* grub-install /dev/sda&lt;br /&gt;
&lt;br /&gt;
= Convert from single to dual mirrored ZFS SSD =&lt;br /&gt;
&lt;br /&gt;
Assuming Ubuntu LTS 22.04 with &amp;quot;instal on ZFS&amp;quot; option, we will&lt;br /&gt;
add a second SSD, configure ZFS to use both SSDs in mirrored&lt;br /&gt;
configuration and setup grub to boot from either SSD. This&lt;br /&gt;
is intended to create a full redundant system where failure&lt;br /&gt;
of either SSD does not break the system.&lt;br /&gt;
&lt;br /&gt;
* identify first SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* connect second SSD of identical size&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER   Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
    /dev/sdb  WD Blue SA510 2.5 250GB         22243Z803852              25        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if second SSD is not autodetected, reboot&lt;br /&gt;
* Clone partition table automatically&lt;br /&gt;
If both SSDs are identical size, use this simpler method of duplicating the partition table:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# sfdisk -d /dev/sda &amp;gt; part_table&lt;br /&gt;
root@midm9b:~# grep -v ^label-id part_table | sed -e &#039;s/, *uuid=[0-9A-F-]*//&#039; | sfdisk /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The grep and sed in the second command are there to prevent disk ID and partition IDs from being cloned. Alternatively the part_table file can be edited manually to remove the label-id line and the uuid entries from the individual partitions.&lt;br /&gt;
&lt;br /&gt;
* Clone partition table manually (e.g. for different size disks)&lt;br /&gt;
* list partition table of first SSD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create identical partitions on second SSD, use sector numbers from above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# gdisk /dev/sdb&lt;br /&gt;
GPT fdisk (gdisk) version 1.0.8&lt;br /&gt;
&lt;br /&gt;
Partition table scan:&lt;br /&gt;
  MBR: not present&lt;br /&gt;
  BSD: not present&lt;br /&gt;
  APM: not present&lt;br /&gt;
  GPT: not present&lt;br /&gt;
&lt;br /&gt;
Creating new GPT entries in memory.&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (1-128, default 1): &lt;br /&gt;
First sector (34-488397134, default = 2048) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (2048-488397134, default = 488397134) or {+-}size{KMGTP}: 1050623&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): ef00&lt;br /&gt;
Changed type of partition to &#039;EFI system partition&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (2-128, default 2): &lt;br /&gt;
First sector (34-488397134, default = 1050624) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (1050624-488397134, default = 488397134) or {+-}size{KMGTP}: 5244927&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): 8200&lt;br /&gt;
Changed type of partition to &#039;Linux swap&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (3-128, default 3): &lt;br /&gt;
First sector (34-488397134, default = 5244928) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (5244928-488397134, default = 488397134) or {+-}size{KMGTP}: 9439231&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): be00&lt;br /&gt;
Changed type of partition to &#039;Solaris boot&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (4-128, default 4): &lt;br /&gt;
First sector (34-488397134, default = 9439232) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (9439232-488397134, default = 488397134) or {+-}size{KMGTP}: &lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): bf00&lt;br /&gt;
Changed type of partition to &#039;Solaris root&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): w&lt;br /&gt;
&lt;br /&gt;
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING&lt;br /&gt;
PARTITIONS!!&lt;br /&gt;
&lt;br /&gt;
Do you want to proceed? (Y/N): y&lt;br /&gt;
OK; writing new GUID partition table (GPT) to /dev/sdb.&lt;br /&gt;
The operation has completed successfully.&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda /dev/sdb&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: EB251739-30C6-422F-A505-5887B5A0B603&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sdb1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sdb2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sdb3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sdb4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* identify second SSD partitions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3 -&amp;gt; ../../sdb3&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert bpool from single disk to mirrored disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  99e03dc0-7d4d-f24b-8fa1-f042b9f135db  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                   ONLINE       0     0     0&lt;br /&gt;
	  f6fd54f8-3af7-b943-ae3d-a4e480537fb9  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# zpool attach bpool 99e03dc0-7d4d-f24b-8fa1-f042b9f135db /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3&lt;br /&gt;
root@midm9b:~# zpool status bpool&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert rpool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
root@midm9b:~# zpool attach rpool f6fd54f8-3af7-b943-ae3d-a4e480537fb9 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4&lt;br /&gt;
root@midm9b:~# zpool status rpool&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Jan 20 19:40:45 2023&lt;br /&gt;
	5.83G scanned at 664M/s, 2.92M issued at 332K/s, 9.11G total&lt;br /&gt;
	0B resilvered, 0.03% done, no estimated completion time&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for resilver to complete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 9.65G in 00:00:36 with 0 errors on Fri Jan 20 19:41:21 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable booting from second SSD: (instead of /dev/sda1, /dev/sdb1, use UUID=xxx)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# mkfs.msdos /dev/sdb1&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sda&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sdb&lt;br /&gt;
root@midm20c:~# blkid | grep vfat ### identify UUID&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;DD89-5081&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;d0cb6be4-2f67-5b42-9b26-9e6905e9f774&amp;quot;&lt;br /&gt;
/dev/sdc1: UUID=&amp;quot;D970-86BA&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;e6d3b5b9-a512-44a2-9205-1a4db06ed2a2&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;DDA1-044C&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;6dc9dff0-1c13-8045-a906-7803d3074c70&amp;quot;&lt;br /&gt;
root@midm20c:~# cat /etc/fstab | grep vfat ### add mount points with correct UUID&lt;br /&gt;
#UUID=D970-86BA  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
UUID=DDA1-044C  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
UUID=DD89-5081  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
root@midm9b:~# mount -a&lt;br /&gt;
root@midm9b:~# df -kl&lt;br /&gt;
Filesystem                                       1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
...&lt;br /&gt;
/dev/sda1                                           523244   13720    509524   3% /boot/efi&lt;br /&gt;
/dev/sdb1                                           523244       4    523240   1% /boot/efi-sdb&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# rsync -av /boot/efi/ /boot/efi-sdb/&lt;br /&gt;
sending incremental file list&lt;br /&gt;
EFI/&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sda&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sdb&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup script to update grub on second SSD, it must be run manually after every kernel update&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ln -s ~/git/scripts/etc/update_efi_grub.perl ~/&lt;br /&gt;
root@midm9b:~# ~/update_efi_grub.perl -u&lt;br /&gt;
EFI dir: /boot/efi-sda&lt;br /&gt;
/boot/efi-sda: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sda/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sda: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sda/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
EFI dir: /boot/efi-sdb&lt;br /&gt;
/boot/efi-sdb: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sdb/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sdb: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sdb/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable NetworkManager =&lt;br /&gt;
&lt;br /&gt;
== Debian-12 ==&lt;br /&gt;
&lt;br /&gt;
* use netplan, https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_for_cloud&lt;br /&gt;
* apt install netplan.io&lt;br /&gt;
* systemctl enable systemd-networkd&lt;br /&gt;
* systemctl restart systemd-networkd&lt;br /&gt;
* create /etc/netplan/50-dhcp.yaml&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  ethernets:&lt;br /&gt;
    all-en:&lt;br /&gt;
      match:&lt;br /&gt;
        name: &amp;quot;en*&amp;quot;&lt;br /&gt;
      dhcp4: true&lt;br /&gt;
      dhcp6: true&lt;br /&gt;
      ignore-carrier: true ### do not drop IP address if network link drops&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* netplan apply&lt;br /&gt;
* netplan try&lt;br /&gt;
* ifconfig -a ### to check IP address settings&lt;br /&gt;
* netstat -rn ### to check default route&lt;br /&gt;
* cat /etc/resolv.conf ### to check DNS&lt;br /&gt;
* ls -l /run/systemd/netif/leases ### systemd-networkd dhcp leases&lt;br /&gt;
* NOTE: without &amp;quot;ignore-carrier&amp;quot; it will drop the IP address if network link drops, re-do dhcp when links comes back&lt;br /&gt;
* NOTE: wait-network-online will wait for all interfaces to get an IP address&lt;br /&gt;
&lt;br /&gt;
== Ubuntu-20 ==&lt;br /&gt;
&lt;br /&gt;
NOTE: THIS IS BROKEN IN UBUNTU LTS 22.04&lt;br /&gt;
&lt;br /&gt;
NetworkManager is useful for configuring dynamic&lt;br /&gt;
network interfaces, i.e. laptops that often move&lt;br /&gt;
between networks, or connect to multiple choice&lt;br /&gt;
of wifi networks, etc.&lt;br /&gt;
&lt;br /&gt;
For machines with statically configured network interfaces,&lt;br /&gt;
NetworkManager is not necessary.&lt;br /&gt;
&lt;br /&gt;
As it has been observed to become confused and observed&lt;br /&gt;
to malfunction when network links go up and down (it keeps&lt;br /&gt;
unnecessarily reconfiguring the ip address, etc), it can&lt;br /&gt;
be usefuil to disable it.&lt;br /&gt;
&lt;br /&gt;
* list all network interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /bin/ls -1 /sys/class/net/&lt;br /&gt;
enp0s31f6&lt;br /&gt;
lo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/network/interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename enp0s31f6=eth0&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
   address 142.90.120.94/19&lt;br /&gt;
   gateway 142.90.100.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* statically configure systemd-resolved&lt;br /&gt;
** create /etc/systemd/resolved.conf.d/resolved.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=142.90.100.19&lt;br /&gt;
Domains=triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** systemctl restart systemd-resolved&lt;br /&gt;
** resolvectl&lt;br /&gt;
** systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
* disable NetworkManager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
== U-22, U-24 ifup-ko ==&lt;br /&gt;
&lt;br /&gt;
Network configuration of modern linux is confused. There are at least 3 configuration methods, each with different shortcomings:&lt;br /&gt;
* the old ifup method is barely documented&lt;br /&gt;
* NetworkManager is well documented and tooled, but sometimes does strange things&lt;br /&gt;
* systemd-networkd is mysterious, and likely to do strange stuff, like all systemd stuff&lt;br /&gt;
* netplan is the latest method, configuration is simple but uses NetworkManager or systemd-networkd as backend.&lt;br /&gt;
&lt;br /&gt;
This is a solution for a specific situation of fixed computer with one fixed wired interface and maybe one or more additional interfaces for fixed wired private networks.&lt;br /&gt;
&lt;br /&gt;
Install /etc/ifup-ko, edit it with IP addresses of main and additional interfaces, let systemd run it in the right place in the boot sequence replacing NetworkManager and NetworkManager-wait-online .&lt;br /&gt;
&lt;br /&gt;
As bonus, /etc/ifup-ko waits up to 10 seconds for the main interface link to come up. If this is not needed, comment it out from the script.&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ifup-ko&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* confirm interface names&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start ifup-ko ### should finish immediately or after 10 seconds&lt;br /&gt;
systemctl status ifup-ko -n 1000 ### observe list of interfaces is correct, name of main interface is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/ifup-ko&lt;br /&gt;
** add host IP address to the &amp;quot;ifconfig&amp;quot; line&lt;br /&gt;
** add gateway IP address to the &amp;quot;ip route add&amp;quot; line&lt;br /&gt;
* test&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start ifup-ko ### should finish immediately&lt;br /&gt;
systemctl status ifup-ko -n 1000 ### observe everything is configured as expected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cut-over&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable networkd-dispatcher&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
systemctl disable wpa_supplicant # if no Wifi or Wifi not in use&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Configure ECC memory =&lt;br /&gt;
&lt;br /&gt;
== Configure EDAC ==&lt;br /&gt;
&lt;br /&gt;
* apt install edac-utils rasdaemon&lt;br /&gt;
&lt;br /&gt;
=== Intel i3-2120 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@musr00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X9SCL/X9SCM&lt;br /&gt;
root@musr00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E-2236 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SCM-F&lt;br /&gt;
root@daq00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq00:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq00:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check edac sysfs files (Intel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:10 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank7&lt;br /&gt;
--w------- 1 root root 4096 Jan 25 15:10 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 25 15:10 uevent&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1270 v6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@grsnis01:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@grsnis01:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@grsnis01:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Feb 19 12:35 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank7&lt;br /&gt;
--w------- 1 root root 4096 Feb 19 12:35 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 19 12:35 uevent&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1245 v6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
[root@alphagdaq ~]# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
[root@alphagdaq ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------------------------------+&lt;br /&gt;
          |                      mc0                      |&lt;br /&gt;
          |  csrow0   |  csrow1   |  csrow2   |  csrow3   |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#3channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#3channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --summary&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: mc_event at /usr/sbin/ras-mc-ctl line 1129.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1130.&lt;br /&gt;
[root@alphagdaq ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3700X ===&lt;br /&gt;
&lt;br /&gt;
(memory is non-ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
root@daq13:~# edac-util &lt;br /&gt;
edac-util: Error: No memory controller data found.&lt;br /&gt;
root@daq13:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers loaded. No memory controllers found&lt;br /&gt;
root@daq13:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:26 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Jan 21 16:16 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 21 16:16 uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(memory is ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@trinatdaq:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@trinatdaq:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@trinatdaq:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Dec 15 13:04 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Dec 13 18:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 13 18:31 uevent&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank7&lt;br /&gt;
--w------- 1 root root 4096 Dec 15 13:04 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 uevent&lt;br /&gt;
root@trinatdaq:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 5000G ===&lt;br /&gt;
&lt;br /&gt;
* no linux driver for AMD 5000-series &amp;quot;G&amp;quot; CPU&lt;br /&gt;
* no mention of ECC in the BIOS settings&lt;br /&gt;
* unclear status of ECC support in AMD documentation (sais only &amp;quot;pro&amp;quot; &amp;quot;G&amp;quot; CPUs have ECC)&lt;br /&gt;
* unclear status of ECC support in ASUS documentation (web page out of date)&lt;br /&gt;
&lt;br /&gt;
=== AMD 5600X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-XE GAMING WIFI&lt;br /&gt;
root@daq17:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq17:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq17:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Aug 19 19:27 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 May 10 10:11 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 10 10:11 uevent&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank7&lt;br /&gt;
--w------- 1 root root 4096 Aug 19 19:27 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 uevent&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3955WX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 19 root root    0 Dez 12 04:48 mc0&lt;br /&gt;
drwxr-xr-x  2 root root    0 Dez 12 04:48 power&lt;br /&gt;
lrwxrwxrwx  1 root root    0 Dez  9 05:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r--  1 root root 4096 Dez  9 05:31 uevent&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# &lt;br /&gt;
root@alphasuperdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dez 12 04:48 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank10&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank11&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank12&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank13&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank14&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank15&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank7&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank8&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank9&lt;br /&gt;
--w------- 1 root root 4096 Feb 28 22:19 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 uevent&lt;br /&gt;
root@alphasuperdaq:~# &lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 868.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 869.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 872.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                                                                              mc0                                                                                              |&lt;br /&gt;
    |                                            csrow0                                             |                                            csrow1                                             |&lt;br /&gt;
    | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#0channel#2	0	0&lt;br /&gt;
mc#0csrow#1channel#7	0	0&lt;br /&gt;
mc#0csrow#0channel#3	0	0&lt;br /&gt;
mc#0csrow#1channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#2	0	0&lt;br /&gt;
mc#0csrow#0channel#7	0	0&lt;br /&gt;
mc#0csrow#1channel#3	0	0&lt;br /&gt;
mc#0csrow#0channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#6	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#6	0	0&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: ASUSTeK COMPUTER INC. model Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@alphasuperdaq:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 7700X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsfe05:~# apt install edac-utils&lt;br /&gt;
root@dsfe05:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro H13SAE-MF&lt;br /&gt;
root@dsfe05:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@dsfe05:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@dsfe05:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@dsfe05:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 May 14 09:33 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 May 14 09:33 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 May 14 09:33 rank5&lt;br /&gt;
--w------- 1 root root 4096 May 14 09:33 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 14 09:33 uevent&lt;br /&gt;
root@dsfe05:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure rasdaemon ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable rasdaemon&lt;br /&gt;
systemctl restart rasdaemon&lt;br /&gt;
systemctl status rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Mon 2021-01-25 15:16:37 PST; 3min 5s ago&lt;br /&gt;
   Main PID: 2477175 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 76958)&lt;br /&gt;
     Memory: 17.1M&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─2477175 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Listening to events for cpus 0 to 11&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mc_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording aer_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording extlog_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mce_record events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording arm_event events&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get reports ==&lt;br /&gt;
&lt;br /&gt;
* Intel 2x32GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-------------------------+&lt;br /&gt;
          |           mc0           |&lt;br /&gt;
          |   csrow0   |   csrow1   |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
channel1: |  16384 MB  |  16384 MB  |&lt;br /&gt;
channel0: |  16384 MB  |  16384 MB  |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Intel 4x16GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
mc#0csrow#2channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#2channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#3channel#0    0       0&lt;br /&gt;
mc#0csrow#3channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------+&lt;br /&gt;
          |          mc0          |&lt;br /&gt;
          |  csrow0   |  csrow1   |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: ubuntu LTS 22.04 DBD::SQLite::db error is not there.&lt;br /&gt;
&lt;br /&gt;
* AMD 7700 2x32GB DDR5 ECC DIMMs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsfe05:~# systemctl status rasdaemon&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Tue 2024-05-14 09:36:43 PDT; 33ms ago&lt;br /&gt;
    Process: 4088418 ExecStartPost=/usr/sbin/rasdaemon --enable (code=exited, status=0/SUCCESS)&lt;br /&gt;
   Main PID: 4088417 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 37300)&lt;br /&gt;
     Memory: 788.0K&lt;br /&gt;
        CPU: 5ms&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─4088417 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: ras:aer_event event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event ras:aer_event&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: mce:mce_record event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event mce:mce_record&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: ras:extlog_mem_event event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event ras:extlog_mem_event&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording mc_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording aer_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording extlog_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording mce_record events&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 907.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 908.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 911.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                              mc0                                              |&lt;br /&gt;
    |        csrow0         |        csrow1         |        csrow2         |        csrow3         |&lt;br /&gt;
    | channel0  | channel1  | channel0  | channel1  | channel0  | channel1  | channel0  | channel1  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------+&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model H13SAE-MF&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model H13SAE-MF&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
No MCE errors.&lt;br /&gt;
root@dsfe05:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= sensors =&lt;br /&gt;
&lt;br /&gt;
== VME CPU V7865 ==&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe lm75&lt;br /&gt;
modprobe lm90&lt;br /&gt;
modprobe max1668&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
available sensors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@lxdaq23:~# sensors&lt;br /&gt;
max6657-i2c-0-4c&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +29.1°C  (low  = -55.0°C, high = +105.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst = +95.0°C)&lt;br /&gt;
temp2:        +31.5°C  (low  = -55.0°C, high = +105.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst = +95.0°C)&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Core 0:       +25.0°C  (crit = +100.0°C)&lt;br /&gt;
Core 1:       +25.0°C  (crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
max1805-i2c-0-18&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +35.0°C  (low  = -55.0°C, high = +127.0°C)&lt;br /&gt;
temp2:        +63.0°C  (low  = -55.0°C, high = +127.0°C)&lt;br /&gt;
temp3:          FAULT  (low  = -55.0°C, high = +127.0°C)  ALARM (HIGH)&lt;br /&gt;
&lt;br /&gt;
lm75-i2c-0-48&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +34.5°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
&lt;br /&gt;
root@lxdaq23:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS P7P55D EVO ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 2101&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@iris01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Core 0:       +34.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 1:       +37.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 2:       +38.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 3:       +35.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0100&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.05 V)&lt;br /&gt;
temp1:        +46.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
atk0110-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
Vcore Voltage:      864.00 mV (min =  +0.80 V, max =  +1.60 V)&lt;br /&gt;
+3.3V Voltage:        3.38 V  (min =  +2.97 V, max =  +3.63 V)&lt;br /&gt;
+5V Voltage:          5.04 V  (min =  +4.50 V, max =  +5.50 V)&lt;br /&gt;
+12V Voltage:        12.15 V  (min = +10.20 V, max = +13.80 V)&lt;br /&gt;
CPU Fan Speed:       968 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Chassis1 Fan Speed: 1288 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Chassis2 Fan Speed: 1316 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Power Fan Speed:       0 RPM  (min =    0 RPM, max = 7200 RPM)&lt;br /&gt;
CPU Temperature:     +34.0°C  (high = +45.0°C, crit = +45.5°C)&lt;br /&gt;
MB Temperature:      +30.0°C  (high = +45.0°C, crit = +46.0°C)&lt;br /&gt;
&lt;br /&gt;
root@iris01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z97-WS ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 2704&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in /boot/grub/grub.cfg, add: GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;acpi_enforce_resources=no&amp;quot;&lt;br /&gt;
* update grub and reboot: grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@isdaq08:~# sensors&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  &lt;br /&gt;
temp2:        +29.8°C  &lt;br /&gt;
&lt;br /&gt;
nct6791-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:                 888.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                     1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:                    3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:                   3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                     1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                     1.99 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
3VSB:                    3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:                    3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                     1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in11:                  840.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in13:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                  1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                  1040 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                 +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:                 +41.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:               -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:               -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                +35.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:               +127.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:           +41.0°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:           +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:            +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:            +0.0°C  &lt;br /&gt;
PCH_DIM0_TEMP:           +0.0°C  &lt;br /&gt;
intrusion0:            ALARM&lt;br /&gt;
intrusion1:            ALARM&lt;br /&gt;
beep_enable:           disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +42.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +42.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +40.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +39.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +39.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
root@isdaq08:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z170-DELUXE ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 3801&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe jc42 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe lm92 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in /boot/grub/grub.cfg, add: GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;acpi_enforce_resources=no&amp;quot;&lt;br /&gt;
* update grub and reboot: grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@iris00:~# sensors&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      600.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      144.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                        0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in7:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                      1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     600.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     592.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     968.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1370 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1437 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +32.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +42.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                  -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +50.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +28.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +50.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +42.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:               +0.0°C  &lt;br /&gt;
TSI2_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI3_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI4_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI5_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI6_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI7_TEMP:                +3892314.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-1a&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +36.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-18&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +34.8°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-1b&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +35.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-19&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +36.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +52.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +52.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +48.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +47.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
root@iris00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z390M-PRO GAMING (WI-FI) ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 3006&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq18:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      696.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      208.00 mV (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in6:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.17 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.07 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1131 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                     1006 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +32.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +29.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +25.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN1:                    +7.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN2:                    +8.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +24.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN4:                   +83.0°C  (high = +80.0°C, hyst = +75.0°C)  ALARM&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +29.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:               +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +39.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +39.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +33.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +31.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 4:        +31.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 5:        +30.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  &lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +28.0°C  &lt;br /&gt;
&lt;br /&gt;
root@daq18:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS H110M-A/M.2 ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 4202&lt;br /&gt;
* echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midpol:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +33.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +33.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +30.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      368.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      152.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      928.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                      1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     152.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                     128.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                     136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     120.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1004 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1143 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                   +118.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +29.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +30.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +110.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +31.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +36.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
TSI2_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI3_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI4_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI5_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI6_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI7_TEMP:                +3892314.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
root@midpol:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS P9X79 WS ==&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/supportonly/P9X79%20WS/HelpDesk_Manual/&lt;br /&gt;
* BIOS version 4802&lt;br /&gt;
* modprobe nct6775&lt;br /&gt;
* modprobe coretemp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq14:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +29.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +24.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0200&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +39.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6776-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:           1.04 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:            3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:           3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:             2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:           904.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
3VSB:            3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:            3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:          1265 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:          1909 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:             0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:         +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:         +58.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermal diode&lt;br /&gt;
AUXTIN:         +31.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
PECI Agent 0:   +31.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                         (crit = +96.0°C)&lt;br /&gt;
PCH_CHIP_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:    +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:    +0.0°C  &lt;br /&gt;
intrusion0:    ALARM&lt;br /&gt;
intrusion1:    ALARM&lt;br /&gt;
beep_enable:   disabled&lt;br /&gt;
&lt;br /&gt;
root@daq14:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS TUF GAMING B550M-PLUS WIFI II ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 2803, 2806&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9a:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      488.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.82 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      760 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                     1264 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +25.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +22.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +95.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +25.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +25.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +25.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +23.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +32.4°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
amdgpu-pci-0800&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:        1.45 V  &lt;br /&gt;
vddnb:       993.00 mV &lt;br /&gt;
edge:         +28.0°C  &lt;br /&gt;
PPT:          20.00 W  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +33.4°C  &lt;br /&gt;
&lt;br /&gt;
root@midm9a:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS ASUS ROG STRIX B550-XE GAMING WIFI ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 2423, 2604&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      344.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                      992.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      216.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.81 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                     960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     280.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                      845 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      998 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +28.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +27.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +94.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +28.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +28.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +97.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +27.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +33.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
amdgpu-pci-0600&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:        1.45 V  &lt;br /&gt;
vddnb:       999.00 mV &lt;br /&gt;
edge:         +29.0°C  &lt;br /&gt;
PPT:          14.00 W  &lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +30.0°C  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +33.9°C  &lt;br /&gt;
&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS ASUS ROG STRIX B550-E GAMING ==&lt;br /&gt;
&lt;br /&gt;
* bios 2803&lt;br /&gt;
* echo modprobe jc42 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# sensors&lt;br /&gt;
jc42-i2c-1-1b&lt;br /&gt;
Adapter: SMBus PIIX4 adapter port 0 at 0b00&lt;br /&gt;
temp1:        +25.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +28.0°C  &lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0800&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +34.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      288.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      224.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.31 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.79 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     280.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                      843 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      629 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                      746 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +22.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +25.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +93.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +96.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +27.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-1-1a&lt;br /&gt;
Adapter: SMBus PIIX4 adapter port 0 at 0b00&lt;br /&gt;
temp1:        +23.2°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
asusec-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
CPU_Opt:        0 RPM&lt;br /&gt;
Chipset:      +34.0°C  &lt;br /&gt;
CPU:          +25.0°C  &lt;br /&gt;
Motherboard:  +22.0°C  &lt;br /&gt;
T_Sensor:     -40.0°C  &lt;br /&gt;
VRM:          +31.0°C  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +28.0°C  &lt;br /&gt;
Tccd1:        +27.5°C  &lt;br /&gt;
&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS PRIME B650-PLUS ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 1811&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsdaqgw:~# sensors&lt;br /&gt;
amdgpu-pci-0b00&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:      930.00 mV &lt;br /&gt;
vddnb:         1.19 V  &lt;br /&gt;
edge:         +38.0°C  &lt;br /&gt;
PPT:          25.10 W  &lt;br /&gt;
&lt;br /&gt;
nct6799-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      920.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      320.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.10 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     416.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     328.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1253 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +33.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +35.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +78.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +11.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +20.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +82.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +35.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +42.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               OK&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +42.6°C  &lt;br /&gt;
Tccd1:        +36.4°C  &lt;br /&gt;
&lt;br /&gt;
root@dsdaqgw:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable CPU turbo mode =&lt;br /&gt;
&lt;br /&gt;
* Intel CPU has a nominal CPU frequency (i.e. 3.4GHz) and a turbo-boost CPU frequency (i.e. 4.0GHz). Here we will enable this turbo-boost mode.&lt;br /&gt;
* Find out CPU capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# lscpu | grep Hz&lt;br /&gt;
Model name:                      Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz&lt;br /&gt;
CPU MHz:                         3965.803&lt;br /&gt;
CPU max MHz:                     4000.0000&lt;br /&gt;
CPU min MHz:                     800.0000&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Look up this CPU in the Intel ARK database - google for the CPU model name, i.e.&lt;br /&gt;
https://ark.intel.com/content/www/us/en/ark/products/88196/intel-core-i7-6700-processor-8m-cache-up-to-4-00-ghz.html&lt;br /&gt;
* Find current frequency settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;powersave&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 2.72 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note the following:&lt;br /&gt;
** current governor is &amp;quot;powersave&amp;quot;&lt;br /&gt;
** &amp;quot;performance&amp;quot; governor is available&lt;br /&gt;
** &amp;quot;boost state support&amp;quot; is supported and active.&lt;br /&gt;
* Confirm CPU frequency governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Change governor to &amp;quot;performance&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-set --governor performance&lt;br /&gt;
Setting cpu: 0&lt;br /&gt;
Setting cpu: 1&lt;br /&gt;
Setting cpu: 2&lt;br /&gt;
Setting cpu: 3&lt;br /&gt;
Setting cpu: 4&lt;br /&gt;
Setting cpu: 5&lt;br /&gt;
Setting cpu: 6&lt;br /&gt;
Setting cpu: 7&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;performance&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 3.93 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* monitor CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower monitor&lt;br /&gt;
    | Nehalem                   || Mperf              || Idle_Stats                                     &lt;br /&gt;
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6   | C7s  | C8    &lt;br /&gt;
   0|  0.00|  0.00|  0.00|  0.00|| 88.80| 11.20|  3973||  0.00|  0.00|  0.01|  0.02|  0.31|  0.00|  4.25&lt;br /&gt;
   4|  0.00|  0.00|  0.00|  0.00||  4.70| 95.30|  3945||  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 95.03&lt;br /&gt;
   1|  0.73|  3.70|  0.00|  0.00||  4.52| 95.48|  3864||  0.00|  0.01|  1.19|  0.44|  2.82|  0.00| 90.23&lt;br /&gt;
   5|  0.73|  3.70|  0.00|  0.00||  0.37| 99.63|  3807||  0.00|  0.00|  0.03|  0.09|  1.70|  0.00| 97.64&lt;br /&gt;
   2|  2.28| 12.86|  0.00|  0.00||  1.41| 98.59|  3829||  0.00|  0.86|  3.17|  0.46|  7.70|  0.00| 85.87&lt;br /&gt;
   6|  2.28| 12.86|  0.00|  0.00||  2.88| 97.12|  3856||  0.00|  0.11|  4.56|  2.15| 10.31|  0.00| 78.99&lt;br /&gt;
   3|  1.33|  4.81|  0.00|  0.00||  0.99| 99.01|  3804||  0.00|  0.49|  0.79|  0.01|  1.03|  0.00| 96.12&lt;br /&gt;
   7|  1.34|  4.81|  0.00|  0.00||  1.26| 98.74|  3818||  0.00|  0.01|  2.32|  0.47|  5.02|  0.00| 90.06&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that the CPU is not overheating:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +38.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +34.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* congratulations, we are running at 4 GHz now!&lt;br /&gt;
&lt;br /&gt;
= Setup ubuntu as gateway to private network =&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* https://daq.triumf.ca/DaqWiki/index.php/VME-CPU#Setup_the_boot_host_computer_.28el7.29&lt;br /&gt;
* http://www.triumf.info/wiki/DAQwiki/index.php/Dhcpd_on_eth1&lt;br /&gt;
&lt;br /&gt;
== Steps to do ==&lt;br /&gt;
&lt;br /&gt;
!!! UPDATED 16feb2024 Ubuntu-22.04.03 !!!&lt;br /&gt;
&lt;br /&gt;
* assign network numbers to the private network, i.e. 192.168.1.x, 192.168.2.x, etc&lt;br /&gt;
* (on the gateway machine, each private network interface has to have a different network number)&lt;br /&gt;
* (each network interface can have multiple networks attached, via VLANs or via eth0:0, eth0:1 constructs)&lt;br /&gt;
* assign IP addresses on the private network, save them in /etc/hosts i.e. &amp;quot;hvps 192.168.1.10&amp;quot;&lt;br /&gt;
* (for simplicity, assign 192.168.1.1 to the gateway machine itself)&lt;br /&gt;
* (IP addresses 192.168.1.0 and 192.168.1.255 are &amp;quot;special&amp;quot;, do not use them)&lt;br /&gt;
* setup DNS server (dnsmasq) to serve contents of /etc/hosts via DNS (otherwise, many programs will see inconsistent name to IP address mapping)&lt;br /&gt;
* setup DHCP server (dnsmasq) to give out the IP addresses&lt;br /&gt;
* setup TFTP server (dnsmasq), pxelinux and NFS for diskless booting&lt;br /&gt;
* setup time server (chronyd) to provide common time to all devices&lt;br /&gt;
* setup NAT so machines on private network can access the internet (to get OS updates, etc)&lt;br /&gt;
* setup NIS and NFS so machines on the private network can use common home directories&lt;br /&gt;
* setup rsync backup of machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup hosts ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.101 dsfe01&lt;br /&gt;
... and so forth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup dns and dhcp ==&lt;br /&gt;
&lt;br /&gt;
!!! updated 16feb2024 for Ubuntu 22.04.3 !!!&lt;br /&gt;
&lt;br /&gt;
!!! note: stock systemd-resolved remains, is configured to forward queries to dnsmasq, configured to forward queries to TRIUMF DNS !!!&lt;br /&gt;
&lt;br /&gt;
!!! note: per authors of systemd, bare hostnames are not permitted, a DNS domain name must always be used. DNS domain name &amp;quot;dsdaq&amp;quot; is used in this example !!!&lt;br /&gt;
&lt;br /&gt;
* apt install dnsmasq&lt;br /&gt;
* ensure dnsmasq starts after all interfaces are up (Ubuntu-22)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/dnsmasq.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/dnsmasq.service.d/local.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/dnsmasq.conf&lt;br /&gt;
# DNS settings &lt;br /&gt;
#port=0 # disable DNS function &lt;br /&gt;
port=53 # enable DNS function &lt;br /&gt;
bind-interfaces # do not collide with systemd-resolved, we use 127.0.0.1:53, they use 127.0.0.53:53 &lt;br /&gt;
domain-needed &lt;br /&gt;
bogus-priv &lt;br /&gt;
no-resolv &lt;br /&gt;
#log-queries # log DNS quesries &lt;br /&gt;
 &lt;br /&gt;
# TRIUMF DNS settings &lt;br /&gt;
 &lt;br /&gt;
server=142.90.100.19 &lt;br /&gt;
expand-hosts &lt;br /&gt;
domain=dsdaq &lt;br /&gt;
local=/dsdaq/ &lt;br /&gt;
localmx # do not forward MX queries to TRIUMF &lt;br /&gt;
&lt;br /&gt;
# DHCP settings &lt;br /&gt;
interface=enp1s0f0 # VX network 192.168.0.x &lt;br /&gt;
#interface=missing  # FEP and TSP network 192.168.1.x &lt;br /&gt;
interface=enp1s0f1 # controls network 192.168.2.x &lt;br /&gt;
#dhcp-range=192.168.1.50,192.168.1.150,infinite &lt;br /&gt;
dhcp-range=192.168.0.0,static &lt;br /&gt;
dhcp-range=192.168.2.0,static &lt;br /&gt;
log-dhcp # log DHCP queries &lt;br /&gt;
#quiet-dhcp &lt;br /&gt;
dhcp-ignore=tag:!known &lt;br /&gt;
#dhcp-boot=pxelinux.0 &lt;br /&gt;
 &lt;br /&gt;
dhcp-option=option:dns-server,192.168.0.248 &lt;br /&gt;
dhcp-option=option:ntp-server,192.168.0.248 &lt;br /&gt;
 &lt;br /&gt;
# TFTP settings &lt;br /&gt;
 &lt;br /&gt;
enable-tftp &lt;br /&gt;
tftp-root=/tftpboot &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* #mkdir /tftpboot ### per tftp-root (if no ZFS)&lt;br /&gt;
* zfs create -o mountpoint=/tftpboot rpool/tftpboot ### (if root is ZFS)&lt;br /&gt;
* create resolved-dsdaq.conf with main IP address of dnsmasq&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=192.168.0.248&lt;br /&gt;
Domains=dsdaq triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir -p /etc/systemd/resolved.conf.d/&lt;br /&gt;
* /bin/rm -f /etc/systemd/resolved.conf.d/*.conf&lt;br /&gt;
* cp resolved-dsdaq.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
* systemctl stop systemd-resolved.service&lt;br /&gt;
* systemctl disable systemd-resolved.service&lt;br /&gt;
* systemctl enable dnsmasq&lt;br /&gt;
* systemctl restart dnsmasq&lt;br /&gt;
* try to &amp;quot;ping&amp;quot; or &amp;quot;host&amp;quot; some names from /etc/hosts, it should work&lt;br /&gt;
* try to ping daq00, daq00.triumf.ca, all should work&lt;br /&gt;
* resolved-dsdaq.conf goes into /etc/systemd/resolved.conf.d/ of all machines on the private network&lt;br /&gt;
* if not using systemd-resolved, edit /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
== setup chronyd ==&lt;br /&gt;
&lt;br /&gt;
* enable ntp server:&lt;br /&gt;
* disable systemd-timesyncd, configure and enable chronyd per instructions above&lt;br /&gt;
* create dsdaq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# chrony config for dsdaq server&lt;br /&gt;
&lt;br /&gt;
#allow 192.168.0.0&lt;br /&gt;
#allow 192.168.1.0&lt;br /&gt;
#allow 192.168.2.0&lt;br /&gt;
allow all&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cp dsdaq.conf /etc/chrony/conf.d/&lt;br /&gt;
* systemctl restart chronyd&lt;br /&gt;
* chronyc tracking ### wait until time is synchronized (a few seconds)&lt;br /&gt;
* create dsdaq.sources # use hostname or IP address of chronyd server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Put this file in /etc/chrony/sources.d&lt;br /&gt;
# systemctl restart chrony&lt;br /&gt;
# chronyc sources&lt;br /&gt;
# chronyc tracking&lt;br /&gt;
server dsdaqgw iburst prefer&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* dsdaq.sources goes to /etc/chrony/sources.d of all machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup diskless network booting ==&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux for legacy pxe boot ===&lt;br /&gt;
&lt;br /&gt;
* add bits in dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dhcp-host=ac:1f:6b:9e:7f:4a,dsfe01,infinite&lt;br /&gt;
dhcp-boot=pxelinux.0&lt;br /&gt;
dhcp-option=17,&amp;quot;192.168.0.251:/nfsroot/%s,vers=3&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup pxelinux for Ubuntu-18&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2&lt;br /&gt;
tar xjvf syslinux-4.03.tar.bz2&lt;br /&gt;
cd syslinux-4.03&lt;br /&gt;
cp -pv ./core/pxelinux.0 ./com32/hdt/hdt.c32 ./memdisk/memdisk ./com32/menu/menu.c32 /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.iso.zip&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.iso.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.alias&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.pcimap&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/pci.ids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir pxelinux.cfg&lt;br /&gt;
* emacs -nw pxelinux.cfg/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSVSLICE PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label hdt&lt;br /&gt;
  kernel hdt.c32&lt;br /&gt;
&lt;br /&gt;
label memtest86+-5.01 &lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-5.01.iso.gz &lt;br /&gt;
&lt;br /&gt;
label memtest86+-4.20&lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-4.20.iso.zip&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-5.3.0-26-generic&lt;br /&gt;
  menu default&lt;br /&gt;
  kernel vmlinuz-5.3.0-26-generic&lt;br /&gt;
  append initrd=initrd.img-5.3.0-26-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.1.1:/zssd/nfsroot/dsfe01 toram ip=dhcp panic=60 BOOTIF=enp1s0f0&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux for efi pxe boot ===&lt;br /&gt;
&lt;br /&gt;
* https://c-nergy.be/blog/?p=13808&lt;br /&gt;
* add dnsmasq.conf bits. note: to use dhcp root-path, see the &amp;quot;nfsroot=auto&amp;quot; patch below and make sure to use the &amp;quot;dhcp-option-force&amp;quot; command (mkinitramfs dhcp client does not ask for root-path, we have to force-feed it).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# uefi pxe&lt;br /&gt;
&lt;br /&gt;
dhcp-boot=tag:uefipxe,uefi/syslinux.efi&lt;br /&gt;
dhcp-option-force=tag:fe01,option:root-path,192.168.0.248:/nfsroot/fe01&lt;br /&gt;
&lt;br /&gt;
# VX network 192.168.0.x&lt;br /&gt;
&lt;br /&gt;
dhcp-host=40:a6:b7:c1:d9:c5,fe01,infinite,set:uefipxe,set:fe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt install syslinux pxelinux syslinux-common syslinux-efi syslinux-utils&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /tftpboot/uefi&lt;br /&gt;
cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/menu.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/hdt.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libutil.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libmenu.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libcom32.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libgpl.c32 /tftpboot/uefi/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, it should bomb with &amp;quot;cannot load pxelinux.cfg/default&amp;quot;&lt;br /&gt;
* mkdir /tftpboot/uefi/pxelinux.cfg&lt;br /&gt;
* create /tftpboot/uefi/pxelinux.cfg/default, note nfsroot path is hardwired, note &amp;quot;http:&amp;quot; is used to load vmlinuz and initrd files (because tftp is super slow)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSDAQGW UEFI PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-6.5.0-17-generic&lt;br /&gt;
  kernel http://192.168.0.248:8088/uefi/vmlinuz-6.5.0-17-generic&lt;br /&gt;
  append initrd=http://192.168.0.248:8088/uefi/initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=auto rw ip=dhcp panic=60&lt;br /&gt;
&lt;br /&gt;
# append initrd=http://192.168.0.248:8088/uefi/initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.0.248:/nfsroot/fe01 rw ip=dhcp panic=60&lt;br /&gt;
&lt;br /&gt;
#  append initrd=initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.0.248:/nfsroot/fe01 rw ip=dhcp panic=60&lt;br /&gt;
#  append initrd=initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=auto ip=dhcp rw panic=60&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, it will bomb with &amp;quot;cannot load http://....&amp;quot;&lt;br /&gt;
* install mini_httpd on port 8088, see https://acme.com/software/mini_httpd/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install mini-httpd&lt;br /&gt;
emacs -nw /etc/default/mini-httpd # set &amp;quot;START=1&amp;quot;&lt;br /&gt;
emacs -nw /etc/mini-httpd.conf # set &amp;quot;host=192.168.0.248&amp;quot;, &amp;quot;port=8088&amp;quot;, &amp;quot;data_dir=/tftpboot&amp;quot;&lt;br /&gt;
mkdir /etc/systemd/system/mini-httpd.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/mini-httpd.service.d/local.conf&lt;br /&gt;
systemctl enable mini-httpd&lt;br /&gt;
systemctl restart mini-httpd&lt;br /&gt;
systemctl status mini-httpd&lt;br /&gt;
wget http://192.168.0.248:8088/uefi/syslinux.efi&lt;br /&gt;
tail -100 /var/log/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix U-22 initramfs bug for &amp;quot;nfsroot=auto&amp;quot;, otherwise, &amp;quot;nfsroot=&amp;quot; has to be different for each machine and you have to have separate pxelinux config files for each machine&lt;br /&gt;
** emacs -nw /usr/lib/initramfs-tools/etc/dhcp/dhclient-enter-hooks.d/config&lt;br /&gt;
** add &amp;quot;echo ROOTPATH=...&amp;quot; if it is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                echo &amp;quot;ROOTSERVER=&#039;${new_routers%% *}&#039;&amp;quot; &lt;br /&gt;
                echo &amp;quot;ROOTPATH=&#039;$new_root_path&#039;&amp;quot; &lt;br /&gt;
                echo &amp;quot;HOSTNAME=&#039;$new_host_name&#039;&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix U-24 initramfs bug for &amp;quot;nfsroot=auto&amp;quot;, otherwise, &amp;quot;nfsroot=&amp;quot; has to be different for each machine and you have to have separate pxelinux config files for each machine&lt;br /&gt;
** emacs -nw /usr/share/initramfs-tools/dhcpcd-hooks/70-net-conf&lt;br /&gt;
** add &amp;quot;ROOTPATH=...&amp;quot; if it is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DNSDOMAIN=&#039;${new_domain_name-}&#039;                                                                                                                                                &lt;br /&gt;
ROOTSERVER=&#039;${new_routers-}&#039;                                                                                                                                                   &lt;br /&gt;
ROOTPATH=&#039;${new_root_path-}&#039;                                                                                                                                                   &lt;br /&gt;
filename=&#039;${new_filename-}&#039;                                                                                                                                                    &lt;br /&gt;
DHCPLEASETIME=&#039;${new_dhcp_lease_time-}&#039;                                                                                                                                        &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** regenerate initramfs (be careful you generate it for the right kernel!)&lt;br /&gt;
** see https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/2054482&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkinitramfs 6.5.0-18-generic&lt;br /&gt;
mkinitramfs 6.8.0-51-generic -o /boot/initrd.img-6.8.0-51-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux kernel and initrd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz-6.5.0-18-generic /tftpboot/uefi/&lt;br /&gt;
cp /boot/initrd.img-6.5.0-18-generic /tftpboot/uefi/&lt;br /&gt;
chmod a+r /tftpboot/uefi/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, should bomb with messages about &amp;quot;trying to mount root filesystem&amp;quot;&lt;br /&gt;
* tail /var/log/syslog&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 vendor class: PXEClient:Arch:00007:UNDI:003016&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 1:netmask, 2:time-offset, 3:router, 4, 5, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 6:dns-server, 12:hostname, 13:boot-file-size, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 15:domain-name, 17:root-path, 18:extension-path, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 22:max-datagram-reassembly, 23:default-ttl, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 28:broadcast, 40:nis-domain, 41:nis-server, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 42:ntp-server, 43:vendor-encap, 50:requested-address, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 51:lease-time, 54:server-identifier, 58:T1, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 59:T2, 60:vendor-class, 66:tftp-server, 67:bootfile-name, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 97:client-machine-id, 128, 129, 130, 131, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 132, 133, 134, 135&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 broadcast response&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 18 option: 67 bootfile-name  uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 vendor class: PXEClient:Arch:00007:UNDI:003016&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 1:netmask, 2:time-offset, 3:router, 4, 5, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 6:dns-server, 12:hostname, 13:boot-file-size, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 15:domain-name, 17:root-path, 18:extension-path, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 22:max-datagram-reassembly, 23:default-ttl, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 28:broadcast, 40:nis-domain, 41:nis-server, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 42:ntp-server, 43:vendor-encap, 50:requested-address, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 51:lease-time, 54:server-identifier, 58:T1, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 59:T2, 60:vendor-class, 66:tftp-server, 67:bootfile-name, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 97:client-machine-id, 128, 129, 130, 131, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 132, 133, 134, 135&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 broadcast response&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 18 option: 67 bootfile-name  uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: error 8 User aborted the transfer received from 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/syslinux.efi to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/syslinux.efi to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 requested options: 1:netmask, 3:router, 6:dns-server&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 broadcast response&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 requested options: 1:netmask, 3:router, 6:dns-server&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 broadcast response&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/ldlinux.e64 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/01-40-a6-b7-c1-d9-c5 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8006E not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8006 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A800 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A80 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/pxelinux.cfg/default to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/menu.c32 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:10 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/libutil.c32 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:10 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/pxelinux.cfg/default to 192.168.0.110&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 client provides name: dsdaqgw.triumf.ca&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 1:netmask, 28:broadcast, 2:time-offset, 3:router, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 15:domain-name, 6:dns-server, 119:domain-search, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 12:hostname, 44:netbios-ns, 47:netbios-scope, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 26:mtu, 121:classless-static-route, 42:ntp-server&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 client provides name: dsdaqgw.triumf.ca&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 1:netmask, 28:broadcast, 2:time-offset, 3:router, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 15:domain-name, 6:dns-server, 119:domain-search, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 12:hostname, 44:netbios-ns, 47:netbios-scope, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 26:mtu, 121:classless-static-route, 42:ntp-server&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw rpc.mountd[3350210]: authenticated mount request from 192.168.0.110:981 for /nfsroot/fe01 (/nfsroot/fe01)&lt;br /&gt;
Feb 16 20:45:07 dsdaqgw rpc.mountd[3350210]: authenticated unmount request from 192.168.0.110:859 for /nfsroot/fe01/tmp/autoDY4k5u (/nfsroot/fe01)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tail /var/log/mini_httpd.log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.0.110 - - [16/Feb/2024:20:43:15 -0800] &amp;quot;GET /uefi/vmlinuz-6.5.0-17-generic HTTP/1.0&amp;quot; 200 14227944 &amp;quot;&amp;quot; &amp;quot;Syslinux/6.04&amp;quot;&lt;br /&gt;
192.168.0.110 - - [16/Feb/2024:20:43:24 -0800] &amp;quot;GET /uefi/initrd.img-6.5.0-17-generic HTTP/1.0&amp;quot; 200 137824833 &amp;quot;&amp;quot; &amp;quot;Syslinux/6.04&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup efi http boot ===&lt;br /&gt;
&lt;br /&gt;
https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-deployment-prep-uefi-httpboot.html&lt;br /&gt;
&lt;br /&gt;
=== setup linux kernel ===&lt;br /&gt;
&lt;br /&gt;
* copy the kernel files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
rsync -av config* initrd* System.map* vmlinuz* /tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /tftpboot&lt;br /&gt;
* chmod a+r *&lt;br /&gt;
&lt;br /&gt;
=== setup nfs ===&lt;br /&gt;
&lt;br /&gt;
* apt-get install nfs-kernel-server&lt;br /&gt;
* enable NFS over UDP, edit /etc/nfs.conf add &amp;quot;udp=y&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
udp=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart nfs-server.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/exports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/nfsroot/dsfe01 dsfe01(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable services&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl enable nfs-mountd&lt;br /&gt;
systemctl enable nfs-idmapd&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
systemctl restart nfs-mountd&lt;br /&gt;
systemctl restart nfs-idmapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* after editing /etc/exports, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exportfs -av&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup userland ===&lt;br /&gt;
&lt;br /&gt;
!!! ubuntu-18 version !!!&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/nfsroot&lt;br /&gt;
* zfs set dedup=verify rpool/nfsroot ### enable deduplication to save disk space because most linux images have mostly identical files&lt;br /&gt;
* clone ubuntu&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /nfsroot/dsfe01&lt;br /&gt;
cd /&lt;br /&gt;
rsync -avx . /nfsroot/dsfe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit config files:&lt;br /&gt;
* cd /nfsroot/dsfe01&lt;br /&gt;
* emacs -nw etc/hostname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/mailname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/yp.conf ### change daq00.triumf.ca to musr00.triumf.ca&lt;br /&gt;
* emacs -nw etc/defaultdomain ### change to MUSR-NIS&lt;br /&gt;
* cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
* emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
* emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
* emacs -nw etc/fstab ### add this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/nfsroot/dsfe01 / nfs defaults,nolock 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw etc/chrony/chrony.conf&lt;br /&gt;
** comment-out all &amp;quot;pool&amp;quot; and &amp;quot;server&amp;quot; entries&lt;br /&gt;
** add entry &amp;quot;server 192.168.1.1 iburst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After dsfe01 is booted:&lt;br /&gt;
&lt;br /&gt;
* disable services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable apache2&lt;br /&gt;
systemctl disable dnsmasq&lt;br /&gt;
systemctl disable zfs-import-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup additional machines, clone dsfe01 instead of cloning the gateway machine&lt;br /&gt;
&lt;br /&gt;
=== Allow manpages to be viewed ===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted over NFS, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will report a permission error. Fix it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/&lt;br /&gt;
apparmor_parser -R /etc/apparmor.d/usr.bin.man&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup shared home directory ==&lt;br /&gt;
&lt;br /&gt;
=== on the gateway machine ===&lt;br /&gt;
* define netgroups&lt;br /&gt;
* emacs -nw /etc/netgroup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dsfe (dsfe01,,) (dsfe02,,)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/nsswitch.conf ### edit the netgroup line to read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netgroup: files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* export the home directories:&lt;br /&gt;
* emacs -nw /etc/exports ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/home1 @dsfe(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* exportfs -rc&lt;br /&gt;
&lt;br /&gt;
=== on the frontend machine ===&lt;br /&gt;
&lt;br /&gt;
* mkdir /home&lt;br /&gt;
* emacs -nw /etc/fstab ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/home1 /home nfs defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
&lt;br /&gt;
== setup NAT ==&lt;br /&gt;
&lt;br /&gt;
NAT allows machines on the private network to connect to the internet: https://en.wikipedia.org/wiki/Network_address_translation&lt;br /&gt;
&lt;br /&gt;
In these examples:&lt;br /&gt;
* replace &amp;quot;eno1&amp;quot; with name of the outgoing interface (the one connected to the TRIUMF network).&lt;br /&gt;
* replace &amp;quot;enp11s0&amp;quot; with name of the private network interface (192.168.1.x network)&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/rc.local ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
# enable NAT&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
# uncomment following lines if machine has prohibitive FORWARD rules:&lt;br /&gt;
#/sbin/iptables -I FORWARD -i eno1 -o enp11s0 -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
#/sbin/iptables -I FORWARD -i enp11s0 -o eno1 -j ACCEPT&lt;br /&gt;
#iptables -L -v&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
#sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
sh /etc/firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/firewall-rfc1918.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# prevent RFC1918 private network IP addresses from&lt;br /&gt;
# going in and out from our uplink.&lt;br /&gt;
&lt;br /&gt;
ETH=eno1&lt;br /&gt;
&lt;br /&gt;
iptables -F in-rfc1918&lt;br /&gt;
iptables -N in-rfc1918&lt;br /&gt;
iptables -A in-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -I INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -F out-rfc1918&lt;br /&gt;
iptables -N out-rfc1918&lt;br /&gt;
iptables -A out-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -I OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -D FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
iptables -D FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
iptables -I FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
&lt;br /&gt;
# allow TRIUMF-SECURE network&lt;br /&gt;
&lt;br /&gt;
iptables -I in-rfc1918 -s 10.90.0.0/255.255.0.0 -j ACCEPT &lt;br /&gt;
iptables -I out-rfc1918 -d 10.90.0.0/255.255.0.0 -j ACCEPT &lt;br /&gt;
&lt;br /&gt;
# show configuration&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= KVM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install cpu-checker&lt;br /&gt;
&lt;br /&gt;
root@daq13:~# kvm-ok &lt;br /&gt;
INFO: /dev/kvm exists&lt;br /&gt;
KVM acceleration can be used&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&lt;br /&gt;
(if not, shutdown, go into BIOS settings, enable CPU virtualization)&lt;br /&gt;
&lt;br /&gt;
apt install virtinst ### will install many packages&lt;br /&gt;
apt install libvirt-clients libvirt-daemon-system-systemd libvirt-daemon qemu qemu-kvm libvirt-daemon-system virtinst bridge-utils&lt;br /&gt;
&lt;br /&gt;
root@daq13:/home1/wheel# virsh list --all&lt;br /&gt;
 Id   Name           State&lt;br /&gt;
------------------------------&lt;br /&gt;
 1    ubuntu-guest   running&lt;br /&gt;
&lt;br /&gt;
apt install virt-manager&lt;br /&gt;
&lt;br /&gt;
virt-install --name ubuntu-guest --os-variant ubuntu20.04 --vcpus 2 --ram 2048 --location /daq/daqstore/olchansk/linux/Ubuntu/ubuntu-20.04.3-desktop-amd64.iso --network bridge=virbr0,model=virtio --graphics none --extra-args=&#039;console=ttyS0,115200n8 serial&#039;&lt;br /&gt;
&lt;br /&gt;
virtual machine will start, boot, etc&lt;br /&gt;
to get out of it, CTRL + Shift followed by ]&lt;br /&gt;
&lt;br /&gt;
ssh wheel@daq13&lt;br /&gt;
virt-manager&lt;br /&gt;
&lt;br /&gt;
run virt-install again, omit &amp;quot;--graphics none&amp;quot;, open graphics console from virt-manager, it booted into ubuntu installer desktop&lt;br /&gt;
&lt;br /&gt;
virt-install --name test10 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --filesystem /kvm_ladd00,/ --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial&amp;quot; --graphics none&lt;br /&gt;
&lt;br /&gt;
virt-install --name test14 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --disk /tmp/xxx/ladd00.img,bus=sata --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
build image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/tmp/xxx/ladd00.img bs=1024M count=20&lt;br /&gt;
mkfs.ext3 /tmp/xxx/ladd00.img ### ext4 fails to mount by SL6 kernel, &amp;quot;unknown ext4 options&amp;quot;&lt;br /&gt;
cd /kvm_ladd00/&lt;br /&gt;
mount -o loop /tmp/xxx/ladd00.img /mnt/tmp&lt;br /&gt;
rsync -av . /mnt/tmp/ --delete&lt;br /&gt;
umount /mnt/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the guest, configure network: /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script will be executed *after* all the other init scripts.&lt;br /&gt;
# You can put your own initialization stuff in here if you don&#039;t&lt;br /&gt;
# want to do the full Sys V style init stuff.&lt;br /&gt;
&lt;br /&gt;
touch /var/lock/subsys/local&lt;br /&gt;
&lt;br /&gt;
ifconfig eth2 192.168.122.2&lt;br /&gt;
route add -net 0.0.0.0 gw 192.168.122.1&lt;br /&gt;
ifconfig -a&lt;br /&gt;
netstat -rn&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== virtualize SL6 ladd00 ==&lt;br /&gt;
&lt;br /&gt;
* on ladd00:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
mkinitrd /boot/initramfs-2.6.32-754.35.1.el6.x86_64-netboot.img 2.6.32-754.35.1.el6.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* on daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs create rpool/kvm-ladd00&lt;br /&gt;
cd /kvm-ladd00&lt;br /&gt;
rsync -avx ladd00:/ . --exclude nfsroot&lt;br /&gt;
brctl addbr virbr0&lt;br /&gt;
ifconfig virbr0 192.168.1.1&lt;br /&gt;
echo /kvm-ladd00 192.168.1.2(rw,no_root_squash,no_all_squash,async,no_subtree_check) &amp;gt;&amp;gt; /etc/exports&lt;br /&gt;
exportfs -rv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virt-install --name kvm-ladd00 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=virtio --boot kernel=/kvm-ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm-ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64-netboot.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0:ladd00::off nfsroot=192.168.1.1:/kvm-ladd00 console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --nodisks --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* adjust kvm-ladd00 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit yp.conf&lt;br /&gt;
edit resolv.conf&lt;br /&gt;
edit root/.ssh/authorized_keys&lt;br /&gt;
enable rngd or /dev/random does not work, sshd does not work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* virsh shutdown test24&lt;br /&gt;
* virsh --connect qemu:///system start test24&lt;br /&gt;
* virsh console test24 ### to exit, ctrl+[ or ctrl+]&lt;br /&gt;
* virsh undefine test24&lt;br /&gt;
* virsh autostart kvm-ladd00&lt;br /&gt;
* virsh dominfo kvm-ladd00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# virsh dominfo kvm-ladd00&lt;br /&gt;
Id:             1&lt;br /&gt;
Name:           kvm-ladd00&lt;br /&gt;
UUID:           1d1f8fed-8b65-4411-a51b-e0ecf359d2f1&lt;br /&gt;
OS Type:        hvm&lt;br /&gt;
State:          running&lt;br /&gt;
CPU(s):         2&lt;br /&gt;
CPU time:       27.7s&lt;br /&gt;
Max memory:     2097152 KiB&lt;br /&gt;
Used memory:    2097152 KiB&lt;br /&gt;
Persistent:     yes&lt;br /&gt;
Autostart:      enable&lt;br /&gt;
Managed save:   no&lt;br /&gt;
Security model: apparmor&lt;br /&gt;
Security DOI:   0&lt;br /&gt;
Security label: libvirt-1d1f8fed-8b65-4411-a51b-e0ecf359d2f1 (enforcing)&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* delete unused images in /var/lib/libvirt/images&lt;br /&gt;
&lt;br /&gt;
= ARM64 cross-compiler =&lt;br /&gt;
&lt;br /&gt;
* arm64, aarch64 are Xilinx FPGA Cortex-A53, RPi4, RPi5 machines&lt;br /&gt;
* install packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install g++-12-aarch64-linux-gnu gcc-12-aarch64-linux-gnu-base libstdc++-12-dev-arm64-cross&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aarch64-linux-gnu-gcc-12 -o ttcp.aarch64 ttcp.c -static&lt;br /&gt;
aarch64-linux-gnu-g++-12 -o fecdm.exe -O2 -g -Wall -Wuninitialized -std=c++20 fecdm.o dsdm.o /home/dsdaqdev/packages_common/midas/linux-aarch64-remoteonly/lib/libmidas.a -pthread -lrt -lutil /nfsroot/gdm00/usr/lib/aarch64-linux-gnu/libi2c.a -static&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ARM cross-compiler =&lt;br /&gt;
&lt;br /&gt;
* armv7 (RPi3, MityARM CAMAC) machines (Debian-12 armhf target, Ubuntu 24.04 host)&lt;br /&gt;
* install packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf libstdc++-dev-armhf-cross libc6-dev-armhf-cross&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* build MIDAS frontend (static linking)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arm-linux-gnueabihf-g++ -std=c++11 -Wall -Wuninitialized -g -O2 -I/home/dldaq/packages/midas/include -I/home/dldaq/packages/midas/mvodb -c koi2c.cxx&lt;br /&gt;
arm-linux-gnueabihf-g++ -o fedldb.exe -std=c++11 -Wall -Wuninitialized -g -O2 -I/home/dldaq/packages/midas/include -I/home/dldaq/packages/midas/mvodb fedldb.o koi2c.o /home/dldaq/packages/midas/linux-armv7-remoteonly/lib/libmidas.a -L/usr/arm-linux-gnueabihf/lib -L/nfsroot/dltdc/usr/lib/arm-linux-gnueabihf -static -lm -lz -lutil -lnsl -lpthread -lrt -li2c&lt;br /&gt;
/usr/lib/gcc-cross/arm-linux-gnueabihf/13/../../../../arm-linux-gnueabihf/bin/ld: /home/dldaq/packages/midas/linux-armv7-remoteonly/lib/libmidas.a(system.o): in function `ss_socket_connect_tcp(char const*, int, int*, std::__cxx11::basic_string&amp;lt;char, std::char_traits&amp;lt;char&amp;gt;, std::allocator&amp;lt;char&amp;gt; &amp;gt;*)&#039;:&lt;br /&gt;
/home/dldaq/packages/midas/src/system.cxx:4984:(.text+0x252a): warning: Using &#039;getaddrinfo&#039; in statically linked applications requires at runtime the shared libraries from the glibc version used for linking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 32-bit intel cross-compiler =&lt;br /&gt;
&lt;br /&gt;
Ubuntu 22.04:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libstdc++-11-dev:i386&lt;br /&gt;
apt install zlib1g-dev:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* &amp;quot;g++ -m32&amp;quot; does not find libstdc++, please use &amp;quot;g++ -m32 -L/usr/lib/gcc/i686-linux-gnu/11/&amp;quot;&lt;br /&gt;
* to cross-build 32-bit MIDAS, use &amp;quot;make linux32&amp;quot;.&lt;br /&gt;
* executables cross-build on Ubuntu-22 do NOT run on 32-bit Debain-11 (GLIBC and GLIBCXX version mismatch)&lt;br /&gt;
* executables cross-build on Ubuntu-22 run on 32-bit Debian-12.&lt;br /&gt;
&lt;br /&gt;
= SSH settings for EPICS =&lt;br /&gt;
&lt;br /&gt;
* TRIUMF EPICS runs obsolete version of SSH&lt;br /&gt;
* add this to the use .ssh/config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host sbp1*&lt;br /&gt;
HostKeyAlgorithms +ssh-rsa&lt;br /&gt;
PubKeyAcceptedAlgorithms +ssh-rsa&lt;br /&gt;
KexAlgorithms +diffie-hellman-group1-sha1&lt;br /&gt;
ForwardX11 yes&lt;br /&gt;
ForwardX11Trusted yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= changes for VME processors =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove sysstat man-db&lt;br /&gt;
apt -y purge dkms&lt;br /&gt;
apt -y purge mdadm&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= remove snap (U-24) =&lt;br /&gt;
&lt;br /&gt;
Note: snap stores data in $USER/snap/$SNAPNAME, removing a snap on one machine will remove this data from all users even if they want to use snap on some other machine.&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove chromium ### see below&lt;br /&gt;
echo snap remove firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove firmware-updater&lt;br /&gt;
snap remove gtk-common-themes&lt;br /&gt;
snap remove snapd-desktop-integration&lt;br /&gt;
snap remove snap-store&lt;br /&gt;
snap remove hunspell-dictionaries-1-7-2004&lt;br /&gt;
snap remove gnome-system-monitor&lt;br /&gt;
snap remove gnome-3-26-1604&lt;br /&gt;
snap remove gnome-3-28-1804&lt;br /&gt;
snap remove gnome-3-34-1804&lt;br /&gt;
snap remove gnome-3-38-2004&lt;br /&gt;
snap remove gnome-42-2204&lt;br /&gt;
snap remove gnome-46-2404&lt;br /&gt;
snap remove mesa-2404&lt;br /&gt;
snap remove core&lt;br /&gt;
snap remove core18&lt;br /&gt;
snap remove core20&lt;br /&gt;
snap remove core22&lt;br /&gt;
snap remove core24&lt;br /&gt;
snap remove bare&lt;br /&gt;
snap remove snapd&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# snap list&lt;br /&gt;
No snaps are installed yet. Try &#039;snap install hello-world&#039;.&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identify packages that install snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list | grep snap | grep installed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox/noble,now 1:1snap1-0ubuntu5 amd64 [installed]&lt;br /&gt;
gir1.2-snapd-2/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnapd-glib-2-1/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnapd-qt-2-1/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnappy1v5/noble,now 1.1.10-1build1 amd64 [installed,automatic]&lt;br /&gt;
plasma-discover-backend-snap/noble,now 5.27.11-0ubuntu2 amd64 [installed]&lt;br /&gt;
snapd/noble-updates,now 2.66.1+24.04 amd64 [installed]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove packages that install snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chromium-browser&lt;br /&gt;
apt remove chromium-codecs-ffmpeg-extra&lt;br /&gt;
apt remove thunderbird&lt;br /&gt;
apt remove firefox&lt;br /&gt;
apt remove plasma-discover-backend-snap&lt;br /&gt;
apt remove plasma-discover-snap-backend&lt;br /&gt;
apt remove snapd&lt;br /&gt;
apt purge  snapd&lt;br /&gt;
# package gir1.2-snapd-2 is required by ubuntu-mate-desktop &amp;amp; co&lt;br /&gt;
# libsnapd-glib-2-1 is required by gstreamer, gnome-remote-desktop &amp;amp; co&lt;br /&gt;
ls -l /etc/systemd/system/ | grep snap ### remove unwanted stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove Chromium:&lt;br /&gt;
&lt;br /&gt;
* ls -ld /home/*/snap/chromium/*&lt;br /&gt;
* echo /bin/rm -rf `ls -1d /home/*/snap/chromium/*`&lt;br /&gt;
* snap remove chromium&lt;br /&gt;
&lt;br /&gt;
Remove Firefox:&lt;br /&gt;
&lt;br /&gt;
* ls -ld /home/*/snap/firefox/*&lt;br /&gt;
* echo /bin/rm -rf `ls -1d /home/*/snap/firefox/*` ### this will delete &amp;quot;snap firefox&amp;quot; profiles of all users!!!&lt;br /&gt;
* snap remove firefox ### this will also delete &amp;quot;snap firefox&amp;quot; profiles of all users!!!&lt;br /&gt;
&lt;br /&gt;
Remove gir1.2-snapd-2:&lt;br /&gt;
* echo rm -vf /usr/lib/x86_64-linux-gnu/girepository-1.0/Snapd-2.typelib&lt;br /&gt;
&lt;br /&gt;
= boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* NOTE: extlinux is not compatible with ext4 &amp;quot;64bit&amp;quot; feature, it should be turned off:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 -O ^64bit /dev/sdX1&lt;br /&gt;
resize2fs -s /dev/sdX1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install syslinux and extlinux (THIS DOES NOT WORK!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install syslinux extlinux&lt;br /&gt;
dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdX ### NOT /dev/sdX1 NOT !!!&lt;br /&gt;
cd /boot&lt;br /&gt;
cp /usr/lib/syslinux/modules/bios/menu.c32 .&lt;br /&gt;
extlinux -i .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install syslinux and extlinux&lt;br /&gt;
&lt;br /&gt;
* copy from old SL6 USB disk (this is extlinux 6.02)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@localhost:/boot# ls -l&lt;br /&gt;
-rwxr-xr-x 1 root root   218952 Jan 28 17:40 extlinux&lt;br /&gt;
-rw-r--r-- 1 root root      402 Jan 29 14:45 extlinux.conf&lt;br /&gt;
-rw-r--r-- 1 root root      496 Jan 29 14:39 extlinux.conf~&lt;br /&gt;
-r--r--r-- 1 root root   122044 Jan 29 14:39 ldlinux.c32&lt;br /&gt;
-r--r--r-- 1 root root    67072 Jan 29 14:39 ldlinux.sys&lt;br /&gt;
-rwxr-xr-x 1 root root    24156 Jan 28 17:40 libutil.c32&lt;br /&gt;
-rw-r--r-- 1 root root      304 Jan 28 17:40 mbr.bin&lt;br /&gt;
-rw-r--r-- 1 root root    26140 Jan 28 17:40 memdisk&lt;br /&gt;
-rw-r--r-- 1 root root    69043 Jan 28 17:40 memtest86+-4.20.iso.zip&lt;br /&gt;
-rw-r--r-- 1 root root   183012 Jan 28 17:40 memtest86+-5.01&lt;br /&gt;
-rw-r--r-- 1 root root    26568 Jan 28 17:40 menu.c32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=mbr.bin of=/dev/sdX ### NOT /dev/sdX1 NOT !!!&lt;br /&gt;
extlinux -i .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that partition /dev/sdX1 is marked bootable (fdisk command &amp;quot;a&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* create /boot/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEFAULT menu.c32&lt;br /&gt;
PROMPT 0&lt;br /&gt;
TIMEOUT 50&lt;br /&gt;
&lt;br /&gt;
MENU TITLE TRIUMF DAQ USB BOOT32 ver K.O. 2025jan28&lt;br /&gt;
&lt;br /&gt;
LABEL linux&lt;br /&gt;
  MENU DEFAULT&lt;br /&gt;
  kernel /vmlinuz&lt;br /&gt;
  append initrd=/initrd.img panic=60 rootdelay=5 rootwait rw root=/dev/sda1&lt;br /&gt;
&lt;br /&gt;
LABEL linux-6.1.0-28-686&lt;br /&gt;
  kernel vmlinuz-6.1.0-28-686&lt;br /&gt;
  append initrd=initrd.img-6.1.0-28-686 panic=60 rootdelay=5 rootwait rw root=/dev/sda1&lt;br /&gt;
&lt;br /&gt;
LABEL memtest&lt;br /&gt;
  kernel memtest86+-1.65&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8307</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8307"/>
		<updated>2025-02-25T00:05:38Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* move /home/wheel (U-24) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
* before setting up new machine run memory test&lt;br /&gt;
* prepare flash drive with free version of memtest86: https://www.memtest86.com&lt;br /&gt;
* test boot from flash drive, test takes ~ few hours&lt;br /&gt;
* test will end with summary page, if passed continue with Ubuntu&lt;br /&gt;
* number that might be worth noting is memory latency&lt;br /&gt;
&lt;br /&gt;
= Ubuntu version =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsb_release -a&lt;br /&gt;
uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu installer =&lt;br /&gt;
&lt;br /&gt;
* updated for Ububtu LTS 20.04.01, 22.04.1, 24.04 (only minor differences)&lt;br /&gt;
&lt;br /&gt;
* download the latest Ubuntu LTS desktop installer iso image&lt;br /&gt;
* dd the image to a USB key&lt;br /&gt;
* power down, disconnect all disks (all HDDs, all SSDs, all M.2)&lt;br /&gt;
* connect the SSD to be used as system disk&lt;br /&gt;
* if system will use mirrored SSDs (using ZFS mirror), leave second SSD disconnected, we will activate it later&lt;br /&gt;
* power up&lt;br /&gt;
* boot from USB key in legacy mode or UEFI mode (select this in the BIOS boot menu - F8 for ASUS, F11 for Supermicro)&lt;br /&gt;
* follow the instruction:&lt;br /&gt;
* &amp;quot;try ubuntu or install ubuntu&amp;quot; - choose &amp;quot;install&amp;quot;&lt;br /&gt;
* select language - accept default&lt;br /&gt;
* &amp;quot;updates and other software&amp;quot; - accept default settings (&amp;quot;normal install&amp;quot;)&lt;br /&gt;
* &amp;quot;installation type&amp;quot; - select &amp;quot;advanced features&amp;quot; and &amp;quot;experimental: use ZFS&amp;quot;&lt;br /&gt;
* accept partition choice&lt;br /&gt;
* &amp;quot;where are you?&amp;quot; - select &amp;quot;Vancouver&amp;quot; (PST time zone)&lt;br /&gt;
* &amp;quot;who are you?&amp;quot; - leave all fields blank, except &amp;quot;username&amp;quot; set to &amp;quot;wheel&amp;quot;, &amp;quot;password&amp;quot; set to the root password. hostname will be set later after configuring the network&lt;br /&gt;
* don&#039;t install third party sw&lt;br /&gt;
* installation runs in a few minutes, when finished, reboot&lt;br /&gt;
* login as user wheel&lt;br /&gt;
* answer annouying questions:&lt;br /&gt;
* &amp;quot;livepatch&amp;quot; - say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;help improve&amp;quot; - select &amp;quot;do not send&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;privacy&amp;quot; - leave &amp;quot;location&amp;quot; as &amp;quot;off&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;ready to go&amp;quot;, say &amp;quot;done&amp;quot;&lt;br /&gt;
* right-click on the desktop, say &amp;quot;open in terminal&amp;quot;, a shell will open&lt;br /&gt;
* say &amp;quot;sudo /bin/bash&amp;quot;, enter the root password, you now have the root shell&lt;br /&gt;
* run nm-connection-editor to configure the network. use netmask 255.255.224.0, gateway 142.90.100.18, DNS 142.90.100.19, search path &amp;quot;triumf.ca&amp;quot;&lt;br /&gt;
* after network is up (can ping ladd00), continue with post-installation steps below&lt;br /&gt;
&lt;br /&gt;
= Install instructions =&lt;br /&gt;
&lt;br /&gt;
== prepare ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ssh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install git/scripts ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install git&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if needed, update git/scripts repository from ladd00 to daq00:&lt;br /&gt;
* git remote -v ### if it says daq00, we are good&lt;br /&gt;
* git remote set-url origin https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
* git pull ### check that it works&lt;br /&gt;
&lt;br /&gt;
== configure hostname ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap ==&lt;br /&gt;
&lt;br /&gt;
ubuntu installer creates a 2 GB swap partition, not useful&lt;br /&gt;
on 32-64 GB machine, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fstab ### comment out the &amp;quot;swap&amp;quot; line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on 64 GB RAM machines swap is not useful&lt;br /&gt;
* on machines booted from network (NFS-ROOT), swap does not work&lt;br /&gt;
* on machines running from flash (RPi, etc), flash is too slow for useful swap&lt;br /&gt;
* swap configured by linux installers invariably has wrong size and is not useful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable dphys-swapfile&lt;br /&gt;
systemctl stop dphys-swapfile&lt;br /&gt;
dphys-swapfile uninstall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maybe reboot ==&lt;br /&gt;
&lt;br /&gt;
this is a good point to reboot the machine to boot&lt;br /&gt;
the latest kernel and to set the correct hostname&lt;br /&gt;
&lt;br /&gt;
== install etckeeper ==&lt;br /&gt;
&lt;br /&gt;
keep contents of /etc in a git repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install etckeeper&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set timezone ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
timedatectl list-timezones | grep -i vancouver&lt;br /&gt;
timedatectl set-timezone America/Vancouver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install time synchronization ==&lt;br /&gt;
&lt;br /&gt;
check if chrony is installed correctly and is synched to TRIUMF time servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if not, remove old chrony and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove chrony&lt;br /&gt;
apt -y purge chrony&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install it from scratch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install chrony&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
cp ~/git/scripts/etc/triumf.sources /etc/chrony/sources.d/&lt;br /&gt;
systemctl disable systemd-timesyncd.service&lt;br /&gt;
systemctl stop systemd-timesyncd.service&lt;br /&gt;
systemctl disable ntp&lt;br /&gt;
systemctl stop ntp&lt;br /&gt;
systemctl enable chrony&lt;br /&gt;
systemctl restart chrony&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reenable systemd-timesyncd ==&lt;br /&gt;
&lt;br /&gt;
ONLY IF CHRONY DOES NOT WORK&lt;br /&gt;
&lt;br /&gt;
To configure systemd-timesyncd, set &amp;quot;NTP=&amp;quot; in /etc/systemd/timesyncd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chrony&lt;br /&gt;
cat /etc/systemd/timesyncd.conf&lt;br /&gt;
systemctl enable systemd-timesyncd.service&lt;br /&gt;
systemctl restart systemd-timesyncd.service&lt;br /&gt;
systemctl status systemd-timesyncd.service&lt;br /&gt;
timedatectl status&lt;br /&gt;
timedatectl timesync-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
this is different from ubuntu 20. it uses /etc/mailname and it hardwires the hostname into main.cf.&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email ==&lt;br /&gt;
&lt;br /&gt;
we have an unusual email configuration. outgoing email should work to deliver error messages, notices, etc. incoming email is disabled, we do not receive email for local users.&lt;br /&gt;
&lt;br /&gt;
this causes problems with TRIUMF smtp server. if our message cannot be delivered (wrong email address or receipient computer is turned off), TRIUMF smtp server will generate a delivery failure notification email and try to send it to the &amp;quot;from&amp;quot; address of the failed message. but the &amp;quot;from&amp;quot; address does not receive any email, so another delivery failure  notification email is generated and an attempt to deliver it. which again fails, rinse and repeat.&lt;br /&gt;
&lt;br /&gt;
as solution, kray created a special rule, email from scrap.triumf.ca does not generate delivery failure notices. failed messages sit in the queue for 5 days, then they are deleted. (K.O. - confirmed with kray 3jan2024).&lt;br /&gt;
&lt;br /&gt;
to make this work we use the msmtp MTA package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&lt;br /&gt;
apt -y install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y install bsd-mailx&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -fv aliases /etc/aliases&lt;br /&gt;
/bin/cp -fv msmtprc /etc/msmtprc&lt;br /&gt;
/bin/rm -vf ~root/.forward&lt;br /&gt;
/bin/rm -vf /etc/mailname&lt;br /&gt;
Mail root&lt;br /&gt;
Subject: test&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
CC: &amp;lt;CR&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (postfix) ==&lt;br /&gt;
&lt;br /&gt;
THIS IS OBSOLETE!!!&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use smtp.triumf.ca&lt;br /&gt;
* CERN: use cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install postfix ### select &amp;quot;satellite system&amp;quot;, enter full hostname &amp;quot;xxx.triumf.ca&amp;quot;, enter &amp;quot;smtp.triumf.ca&amp;quot;&lt;br /&gt;
apt install mailutils&lt;br /&gt;
dpkg-reconfigure postfix ### (if postfix already installed)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo olchansk@triumf.ca lindner@triumf.ca bsmith@triumf.ca &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
mailx root&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable ping for all users (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
Without this tweak, Debian will report &amp;quot;operation not permitted&amp;quot; if a user tries to ping somewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &#039;net.ipv4.ping_group_range = 0 1000&#039; &amp;gt; /etc/sysctl.d/99-ping.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable apparmor ==&lt;br /&gt;
&lt;br /&gt;
On NFS-Root network booted machines!&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;man man&amp;quot; returns &amp;quot;permission denied&amp;quot; and syslog reports apparmor &amp;quot;sendmsg DENIED&amp;quot; errors, disable apparmor. This is supposedly fixed in kernel 6.0 and later (to be confirmed), see https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1784499&lt;br /&gt;
&lt;br /&gt;
Disable apparmor, see https://ubuntu.com/server/docs/security-apparmor&lt;br /&gt;
&lt;br /&gt;
This takes effect after a reboot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop apparmor.service&lt;br /&gt;
systemctl disable apparmor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install missing packages ==&lt;br /&gt;
&lt;br /&gt;
(apt eats terminal input, even the &amp;quot;yes |&amp;quot; trick does not quite work,&lt;br /&gt;
repeat the following commands until they report that everything&lt;br /&gt;
is installed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install ssh tcsh ethtool ncat rsync strace net-tools traceroute time minicom screen git lsof debsums tmux iptables telnet pax rpm mtools at gdisk&lt;br /&gt;
yes | apt -y install sysstat smartmontools lm-sensors&lt;br /&gt;
yes | apt -y install lsb-release&lt;br /&gt;
apt -y install vim # in addition to default vim-tiny, requested by IRIS&lt;br /&gt;
apt -y install gedit # requested by TACTIC&lt;br /&gt;
apt -y install tcl&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
yes | apt -y install flex bison&lt;br /&gt;
yes | apt -y install neofetch&lt;br /&gt;
yes | apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
yes | apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
yes | apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
yes | apt -y install mariadb-client ### mysql client&lt;br /&gt;
yes | apt -y install libz-dev libzstd-dev sqlite3 libsqlite3-dev unixodbc-dev&lt;br /&gt;
yes | apt -y install libssl-dev&lt;br /&gt;
yes | apt -y install emacs xemacs21 joe&lt;br /&gt;
yes | apt -y install gnuplot dos2unix&lt;br /&gt;
yes | apt -y install mutt bsd-mailx # email clients&lt;br /&gt;
yes | apt -y install liblz4-tool pbzip2&lt;br /&gt;
yes | apt -y install libc6-dev-i386 # otherwise no /usr/include/sys/types.h&lt;br /&gt;
yes | apt -y install libreadline-dev&lt;br /&gt;
yes | apt -y install ubuntu-mate-themes&lt;br /&gt;
yes | apt -y install libmotif-dev libxmu-dev&lt;br /&gt;
yes | apt -y install libusb-dev libusb-1.0-0-dev&lt;br /&gt;
yes | apt -y install i2c-tools libi2c-dev libi2c0&lt;br /&gt;
yes | apt -y install xfig gsfonts-x11 gsfonts-other # install fonts for xfig&lt;br /&gt;
yes | apt -y install libjson-perl&lt;br /&gt;
yes | apt -y install libgsl-dev # additional GNU Scientific Library&lt;br /&gt;
yes | apt -y install qt5-default # Qt development&lt;br /&gt;
yes | apt -y install python3-full python3-dev python3-dbg python3-pip ### for pyROOT&lt;br /&gt;
yes | apt -y install imagemagick imagemagick-common ckeditor # for elog&lt;br /&gt;
yes | apt -y install libjpeg-dev libjpeg-progs libjpeg-tools&lt;br /&gt;
yes | apt -y install linux-tools-common linux-tools-generic # cpupower frequency-info&lt;br /&gt;
yes | apt -y install rdesktop remmina remmina-plugin&amp;quot;*&amp;quot; # requested by POL&lt;br /&gt;
yes | apt -y install nlohmann-json3-dev # required to build MIDAS with ROOT 6.30 on Ubuntu-22&lt;br /&gt;
apt -y install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python3 libssl-dev libafterimage0 # from https://root.cern/install/dependencies/&lt;br /&gt;
apt -y install gfortran libpcre3-dev xlibmesa-glu-dev libglew-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio-dev graphviz-dev libldap2-dev python3-dev python3-numpy libxml2-dev libkrb5-dev libgsl0-dev qtwebengine5-dev nlohmann-json3-dev libtbb-dev libavahi-compat-libdnssd-dev # from https://root.cern/install/dependencies/&lt;br /&gt;
apt -y install libvdt-dev # for ROOT 6.32 on Ubuntu-24&lt;br /&gt;
apt -y install autoconf automake gperf # gnu package build tools&lt;br /&gt;
apt -y install u-boot-tools # for Xilinx petalinux&lt;br /&gt;
#apt -y install linux-headers-generic # to build linux kernel drivers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 20.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 # enable linux 5.11 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 22.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install linux-generic-hwe-22.04 # enable linux 6.2.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 24.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install linux-generic-hwe-24.04 # enable linux 6.8.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
See https://askubuntu.com/questions/1399383/how-to-install-firefox-as-a-traditional-deb-package-without-snap-in-ubuntu-22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add-apt-repository ppa:mozillateam/ppa&lt;br /&gt;
apt install firefox-esr&lt;br /&gt;
echo run firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure DNS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /etc/systemd/resolved.conf.d&lt;br /&gt;
cp etc/resolved-triumf.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
systemctl restart systemd-resolved&lt;br /&gt;
resolvectl&lt;br /&gt;
#systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ganglia ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install ganglia-monitor&lt;br /&gt;
cd ~root/git/scripts/ganglia&lt;br /&gt;
git pull&lt;br /&gt;
make install&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fix gmond start before network is ready:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ganglia-monitor.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ganglia-monitor.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ganglia-monitor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install gonodeinfo ==&lt;br /&gt;
&lt;br /&gt;
* go to https://bitbucket.org/dd1/gonodeinfo follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
#git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git remote set-url origin https://daq00.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: daq00.triumf.ca:8601&lt;br /&gt;
* run &amp;quot;gonodeinfo -v&amp;quot;&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run /opt/gonodeinfo/gonodereceive.exe -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== install emailonreboot ==&lt;br /&gt;
&lt;br /&gt;
send an email if computer is rebooted&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root&lt;br /&gt;
mkdir -p ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/rpms.git&lt;br /&gt;
cd rpms/emailonreboot&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install monitor_nfs ==&lt;br /&gt;
&lt;br /&gt;
monitor NFS mounts and complain about dead, stale and hung mounts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root&lt;br /&gt;
mkdir -p ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/rpms.git&lt;br /&gt;
cd rpms/monitor_nfs&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
* apt -y install xfonts-100dpi xfonts-75dpi&lt;br /&gt;
* restart Xorg (i.e. &amp;quot;killall Xorg&amp;quot;, this will log you out from the console)&lt;br /&gt;
* xlsfonts | grep -i helvetica ### should show fonts with different sizes, not just size 0 (scalable)&lt;br /&gt;
&lt;br /&gt;
== install libz.so.1 for CentOS compatibility ==&lt;br /&gt;
&lt;br /&gt;
KO - confirm which versions on quartus need this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install zlib1g&lt;br /&gt;
yes | apt-get -y install zlib1g:i386 libc6:i386 libgcc1:i386 gcc-6-base:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ld-ldb-x86-64.so.3 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
Not clear from package this is supposed to come from. Copied from U-20.&lt;br /&gt;
&lt;br /&gt;
Without this, Quartus lmgrd does not run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /lib64&lt;br /&gt;
ln -s  ld-linux-x86-64.so.2 ld-lsb-x86-64.so.2&lt;br /&gt;
ln -s  ld-linux-x86-64.so.2 ld-lsb-x86-64.so.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
should look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:/lib64# ls -l&lt;br /&gt;
total 3&lt;br /&gt;
lrwxrwxrwx 1 root root 44 Jan 28 09:07 ld-linux-x86-64.so.2 -&amp;gt; ../lib/x86_64-linux-gnu/ld-linux-x86-64.so.2&lt;br /&gt;
lrwxrwxrwx 1 root root 20 Feb 18 16:45 ld-lsb-x86-64.so.2 -&amp;gt; ld-linux-x86-64.so.2&lt;br /&gt;
lrwxrwxrwx 1 root root 20 Feb 18 16:45 ld-lsb-x86-64.so.3 -&amp;gt; ld-linux-x86-64.so.2&lt;br /&gt;
root@daq13:/lib64# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
(does not work anymore!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ftp.ca.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus 13.0sp1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0.50.0&lt;br /&gt;
/bin/cp -pv libpng12.so.0 libpng12.so.0.50.0 /lib/x86_64-linux-gnu/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for Xilinx ==&lt;br /&gt;
&lt;br /&gt;
ubuntu LTS 22.04 vivado 2020.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install autoconf libtool&lt;br /&gt;
apt install libtinfo5&lt;br /&gt;
apt install texinfo&lt;br /&gt;
apt install zlib1g:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for building ROOT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install libx11-dev libxpm-dev libxft-dev libxext-dev libpng-dev libjpeg-dev xlibmesa-glu-dev libxml2-dev libgsl-dev cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install 32-bit libraries for PHYSICA ==&lt;br /&gt;
&lt;br /&gt;
these instructions are for running 32-bit physica executable built for SL6 on ubuntu LTS 20.04&lt;br /&gt;
&lt;br /&gt;
install physica sources (cannot build, do not have g77)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages&lt;br /&gt;
git clone https://bitbucket.org/ttriumfdaq/physica.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install 32-bit libraries using ubuntu package manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install lib32z1 # libz.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy 32-bit SL6 shared libraries to /lib32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libX11.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libgd.so.2 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libpng12.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libreadline.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libncurses.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libg2c.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libxcb.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXpm.so.4 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libjpeg.so.62 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfontconfig.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfreetype.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libtinfo.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXau.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libexpat.so.1 /lib32/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ldd should report:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trinatdaq:trinat&amp;gt; ldd /usr/local/physica/physica.exe&lt;br /&gt;
	linux-gate.so.1 (0xf7fa2000)&lt;br /&gt;
	libX11.so.6 =&amp;gt; /lib32/libX11.so.6 (0xf7e43000)&lt;br /&gt;
	libgd.so.2 =&amp;gt; /lib32/libgd.so.2 (0xf7dfe000)&lt;br /&gt;
	libpng12.so.0 =&amp;gt; /lib32/libpng12.so.0 (0xf7dd6000)&lt;br /&gt;
	libz.so.1 =&amp;gt; /lib32/libz.so.1 (0xf7db8000)&lt;br /&gt;
	libreadline.so.6 =&amp;gt; /lib32/libreadline.so.6 (0xf7d7e000)&lt;br /&gt;
	libncurses.so.5 =&amp;gt; /lib32/libncurses.so.5 (0xf7d5b000)&lt;br /&gt;
	libg2c.so.0 =&amp;gt; /lib32/libg2c.so.0 (0xf7d3d000)&lt;br /&gt;
	libm.so.6 =&amp;gt; /lib32/libm.so.6 (0xf7c39000)&lt;br /&gt;
	libgcc_s.so.1 =&amp;gt; /lib32/libgcc_s.so.1 (0xf7c1a000)&lt;br /&gt;
	libc.so.6 =&amp;gt; /lib32/libc.so.6 (0xf7a2f000)&lt;br /&gt;
	libxcb.so.1 =&amp;gt; /lib32/libxcb.so.1 (0xf7a05000)&lt;br /&gt;
	libdl.so.2 =&amp;gt; /lib32/libdl.so.2 (0xf79ff000)&lt;br /&gt;
	libXpm.so.4 =&amp;gt; /lib32/libXpm.so.4 (0xf79ee000)&lt;br /&gt;
	libjpeg.so.62 =&amp;gt; /lib32/libjpeg.so.62 (0xf7997000)&lt;br /&gt;
	libfontconfig.so.1 =&amp;gt; /lib32/libfontconfig.so.1 (0xf7962000)&lt;br /&gt;
	libfreetype.so.6 =&amp;gt; /lib32/libfreetype.so.6 (0xf78c9000)&lt;br /&gt;
	libtinfo.so.5 =&amp;gt; /lib32/libtinfo.so.5 (0xf78b0000)&lt;br /&gt;
	/lib/ld-linux.so.2 (0xf7fa4000)&lt;br /&gt;
	libXau.so.6 =&amp;gt; /lib32/libXau.so.6 (0xf78ad000)&lt;br /&gt;
	libexpat.so.1 =&amp;gt; /lib32/libexpat.so.1 (0xf7885000)&lt;br /&gt;
trinatdaq:trinat&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set login environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv TRIUMF_FONTS $HOME/packages/physica/fonts&lt;br /&gt;
setenv PHYSICA_DIR $HOME/packages/physica&lt;br /&gt;
alias physica $PHYSICA_DIR/physica-SL6-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages/physica&lt;br /&gt;
physica&lt;br /&gt;
@rangauss.pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install wine ==&lt;br /&gt;
&lt;br /&gt;
As far as I know, only needed for BNMR/BNQR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install wine winetricks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install lightdm ==&lt;br /&gt;
&lt;br /&gt;
unlike the default gdm login manager, lightdm shows the machine hostname and does not require an extra mouse click to swicth from screen saver to login mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install lightdm&lt;br /&gt;
# select lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install desktop environments ==&lt;br /&gt;
&lt;br /&gt;
note: default display manager and default desktop are deficient, please do not skip this step.&lt;br /&gt;
&lt;br /&gt;
note: if apt asks to choose the display manager, select &amp;quot;lightdm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: KO - I recommend the &amp;quot;MATE&amp;quot; desktop.&lt;br /&gt;
&lt;br /&gt;
note: you will have to cut-and-paste this several times because &amp;quot;apt&amp;quot; eats commands, even with &amp;quot;-y&amp;quot; and even piped from &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# install MATE desktop&lt;br /&gt;
apt -y install ubuntu-mate-core ubuntu-mate-desktop ubuntu-mate-themes&lt;br /&gt;
# install Cinnamon desktop&lt;br /&gt;
apt -y install cinnamon&lt;br /&gt;
# install KDE desktop&lt;br /&gt;
apt -y install kde-standard kubuntu-settings-desktop&lt;br /&gt;
# install Lxqt desktop&lt;br /&gt;
# apt -y install lxqt # conflict over kubuntu-desktop, kubuntu-settings-desktop and desktop-base&lt;br /&gt;
# install Xfce4 desktop&lt;br /&gt;
apt -y install xfce4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ROOT ==&lt;br /&gt;
&lt;br /&gt;
Please install ROOT per instructions at https://root.cern.ch.&lt;br /&gt;
&lt;br /&gt;
NOTE1: The ROOT package available from Ubuntu repositories is severely out of date and cannot be used with MIDAS and ROOTANA. ### DO NOT DO THIS! apt-get install root-system&lt;br /&gt;
&lt;br /&gt;
NOTE2: as of 2017-Jan-09, ROOT binary kits for Ubuntu do not work (use GCC 5 instead of GCC6), build from source instead.&lt;br /&gt;
&lt;br /&gt;
== Install x2go ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install x2goserver x2goserver-xsession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable root login from ladd00/daq00 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
CTRL-C&lt;br /&gt;
/bin/cp ~root/git/scripts/etc/authorized_keys ~root/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable ssh access from outside of TRIUMF ==&lt;br /&gt;
&lt;br /&gt;
to stop ssh login spam, disable ssh access from outside of TRIUMF. this can be done by requesting a firewall block through the helpdesk or by local firewall rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo iptables -I INPUT ! -s 142.90.0.0/255.255.0.0 -p tcp --dport 22 -j REJECT &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install smart-status ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s ~/git/scripts/smart-status/smart-status.perl ~root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable boot menu and boot messages ==&lt;br /&gt;
&lt;br /&gt;
This will enable the grub menu (with a 10 sec timeout) and&lt;br /&gt;
replace black screen with exciting linux boot messages.&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_DEFAULT=0&lt;br /&gt;
#GRUB_TIMEOUT_STYLE=hidden&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;vga=769 video=640x480&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
#GRUB_GFXMODE=640x480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update grub config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable automatic updates =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install unattended-upgrades&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/99apt-conf-ko /etc/apt/apt.conf.d/&lt;br /&gt;
apt-config dump | grep Unattended&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is obsolete:&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/50unattended-upgrades&lt;br /&gt;
** uncomment in Allowed-Origins &amp;quot;-security&amp;quot; and &amp;quot;-updates&amp;quot;&lt;br /&gt;
** add in Allowed-Origins: &amp;quot;Google LLC:stable&amp;quot;;&lt;br /&gt;
** uncomment/add: &amp;quot;Unattended-Upgrade::Mail &amp;quot;root&amp;quot;;&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;7&amp;quot;;&lt;br /&gt;
APT::Periodic::Unattended-Upgrade &amp;quot;1&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test: unattended-upgrade --dry-run -v&lt;br /&gt;
&lt;br /&gt;
NOTE: update-on-shutdown is disabled.&lt;br /&gt;
&lt;br /&gt;
NOTE: there is no update-on-boot, but:&lt;br /&gt;
&lt;br /&gt;
NOTE: if machine was off for a long time, the systemd update timer would have expired and it will fire soon after reboot, causing an automatic update run. this is unwanted, and there is no fix or workaround for it. K.O. June-2023.&lt;br /&gt;
&lt;br /&gt;
= Fix bpool is full (obsolete) =&lt;br /&gt;
&lt;br /&gt;
THIS IS CAUSED BY OBSOLETE PACKAGE zsys. PLEASE: apt remove zsys&lt;br /&gt;
&lt;br /&gt;
= IPMI instructions =&lt;br /&gt;
&lt;br /&gt;
IPMI is the board management hardware on Supermicro and other server motherboards. This includes hardware sensors - fan rotation speed, temperatures and power supply voltages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ipmitool&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
* ipmitool sel list ### event list&lt;br /&gt;
* ipmitool sel elist ### event list&lt;br /&gt;
* ipmitool sel clear ### clear event list (if it becomes full)&lt;br /&gt;
* ipmitool sensor ### report hardware sensors&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel (U-24) =&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 24 installed on ZFS has rpool/USERDATA/home_xxx mounted on /home,&lt;br /&gt;
has to be moved or autofs /home will not work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep USERDATA | grep home | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
zfs set -u mountpoint=/home1 `zfs list | grep USERDATA | grep home | cut -f1 -d&amp;quot; &amp;quot;`&lt;br /&gt;
emacs -nw /etc/passwd # change mount for wheel account to /home1/wheel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel =&lt;br /&gt;
&lt;br /&gt;
note: this MUST be done if ZFS root and NIS/autofs with /home.&lt;br /&gt;
&lt;br /&gt;
Default location of wheel&#039;s home directory will collide with autofs /home, it has to be moved,&lt;br /&gt;
for example to /wheel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# logout from the wheel user&lt;br /&gt;
# go to another computer&lt;br /&gt;
ssh root@daqubuntuxxx&lt;br /&gt;
zfs list | grep wheel ### identify zfs name wheel_xxxxxx&lt;br /&gt;
#zfs set mountpoint=/wheel rpool/USERDATA/wheel_hm8fzh&lt;br /&gt;
zfs set mountpoint=/wheel `zfs list | grep wheel | cut -f1 -d&amp;quot; &amp;quot;`&lt;br /&gt;
zfs list | grep wheel&lt;br /&gt;
emacs -nw /etc/passwd ### change wheel&#039;s home directory from /home/wheel to /wheel&lt;br /&gt;
su - wheel ### check that user wheel still works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will break wheel&#039;s ability to run snap programs, such as firefox, install chrome as listed below.&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 22.04, 24.04, debian 11, 12) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install rpcbind nis&lt;br /&gt;
echo DAQ-NIS &amp;gt;&amp;gt; /etc/defaultdomain&lt;br /&gt;
echo ypserver daq00.triumf.ca &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
systemctl enable ypbind.service&lt;br /&gt;
systemctl restart ypbind.service&lt;br /&gt;
systemctl status ypbind.service&lt;br /&gt;
ypwhich -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable ypserv:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i s/NISSERVER=false/NISSERVER=slave/ /etc/default/nis&lt;br /&gt;
/usr/lib/yp/ypinit -s daq00&lt;br /&gt;
echo ypserver localhost &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
sed -i &amp;quot;s/ypserver .*/ypserver localhost/&amp;quot; /etc/yp.conf&lt;br /&gt;
systemctl enable ypserv&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/nsswitch.conf to read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&lt;br /&gt;
#passwd: ...&lt;br /&gt;
#group: ...&lt;br /&gt;
#shadow: ...&lt;br /&gt;
&lt;br /&gt;
#netgroup: ...&lt;br /&gt;
#automount: ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable hourly update of nis maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is a new machine, then on the master NIS node (daq00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 20.04) =&lt;br /&gt;
&lt;br /&gt;
* apt-get -y install portmap nis ### will ask for NIS domain (DAQ-NIS)&lt;br /&gt;
* dpkg-reconfigure nis ### reconfigure if already installed&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* edit /etc/default/nis&lt;br /&gt;
** set &amp;quot;NISSERVER=slave&amp;quot;&lt;br /&gt;
** Ubuntu LTS 20.04, check that &amp;quot;YPBINDARGS=&amp;quot; is blank, remove &amp;quot;-no-dbus&amp;quot; if it is there&lt;br /&gt;
* #edit /etc/yp.conf, comment-out everything, add &amp;quot;domain DAQ-NIS server localhost&amp;quot;&lt;br /&gt;
* edit /etc/yp.conf, comment-out everything, add &amp;quot;ypserver localhost&amp;quot;&lt;br /&gt;
* /usr/lib/yp/ypinit -s daq00&lt;br /&gt;
* systemctl enable nis&lt;br /&gt;
* systemctl restart nis&lt;br /&gt;
* ypwhich&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* ypcat -k passwd&lt;br /&gt;
* vi /etc/nsswitch.conf ### add the automount line, modify the passwd, group and shadow lines to read this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable hourly update of NIS maps&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ### NOT NEEDED sudo vi /etc/idmapd.conf ### add line: &amp;quot;Domain = triumf.ca&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= enable autofs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
ls -l /home/olchansk ### test autofs, check file owner is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= enable NFS server =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install nfs-kernel-server&lt;br /&gt;
#edit /etc/exports&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NIS master =&lt;br /&gt;
&lt;br /&gt;
notes for setting up the NIS master&lt;br /&gt;
&lt;br /&gt;
== wheel user ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wheel&amp;quot; is the default administrative user. We do not want it&#039;s password exported to NIS (encrypted password hash is world visible) and we do not want it&#039;s home directory exported to NFS (~wheel/.ssh is world visible and potentially writable: anybody can change ~wheel/.ssh/authorized_keys).&lt;br /&gt;
&lt;br /&gt;
* move wheel&#039;s home directory from /home/wheel to /wheel (see special section about this)&lt;br /&gt;
* change wheel&#039;s UID and GID from 1000 to a value below MINUID in /var/yp/Makefile&lt;br /&gt;
&lt;br /&gt;
== coherent uids ==&lt;br /&gt;
&lt;br /&gt;
we do not want system accounts defined in /etc/passwd of the NIS master&lt;br /&gt;
to be included in the NIS map &amp;quot;passwd&amp;quot;. this causes trouble on NIS clients&lt;br /&gt;
where newly installed packages fail to create local system users because same&lt;br /&gt;
user already exists in NIS.&lt;br /&gt;
&lt;br /&gt;
This is controlled by MINUID in /var/yp/Makefile.&lt;br /&gt;
&lt;br /&gt;
Historical TRIUMF uids start from around 200, but several clusters do not have any historic TRIUMF uids below 500 and MINUID is set to:&lt;br /&gt;
* DAQ-NIS: MINUID=200&lt;br /&gt;
* ISAC-NIS: MINUID=500&lt;br /&gt;
* TITAN-NIS: MINUID=500&lt;br /&gt;
* MUSR-NIS: MINUID=500&lt;br /&gt;
* TIG-NIS: MINUID=500 (100 on SL6 mother8pi)&lt;br /&gt;
&lt;br /&gt;
Ubuntu 20 has two programs to create users:&lt;br /&gt;
* adduser - creates new users with UID 1000 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* adduser --system - creates new system users with UID 100 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* useradd - creates new users with UID 1000 and up as specified in /etc/login.defs. No problems here.&lt;br /&gt;
* useradd --system - creates new system users with UID 999 and down (read &amp;quot;man useradd&amp;quot;, section at the end about SYS_UID_MAX). This collides with NIS MINUID, these system users will be included in the NIS map and cause trouble.&lt;br /&gt;
&lt;br /&gt;
This problem cannot be fixed, SYS_UID_MIN, SYS_UID_MAX and UID_MIN in /etc/login.defs do not seem&lt;br /&gt;
to have any effect on UIDs chosen by &amp;quot;useradd --system&amp;quot;. (tested on Ubuntu LTS 20.04).&lt;br /&gt;
&lt;br /&gt;
So far only these system accounts seem to be affected by this:&lt;br /&gt;
* systemd-coredump&lt;br /&gt;
* ganglia&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/passwd&amp;quot; to identify the last unused system user uid (range 100..200)&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/group&amp;quot; to identify the last unused system user gid (range 100.200)&lt;br /&gt;
* systemd-coredump: manually change UID and GID (package systemd-coredump is usually not installed)&lt;br /&gt;
* ganglia: same thing, then change ownership on all ganglia files.&lt;br /&gt;
&lt;br /&gt;
Also read systemd author&#039;s opinion on system vs user UIDs:&lt;br /&gt;
https://github.com/systemd/systemd/issues/4850#issuecomment-265698275&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-logind NIS breakage =&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED FOR UBUNTU LTS 20.04 !!!&lt;br /&gt;
&lt;br /&gt;
there is a delay in ssh logins for normal users. &amp;quot;ssh -v&amp;quot; shows the delay is after &amp;quot;pledge...&amp;quot;. this&lt;br /&gt;
fix removes the delay.&lt;br /&gt;
&lt;br /&gt;
systemd developers think that we should not use NIS and made sure there are&lt;br /&gt;
problems if we do. To give them credit, they do offer a workaround. Read this:&lt;br /&gt;
https://github.com/poettering/systemd/commit/695fe4078f0df6564a1be1c4a6a9e8a640d23b67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-logind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-logind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-udevd NIS breakage =&lt;br /&gt;
&lt;br /&gt;
see same problem as above with udev getting stuck. ubuntu lts 20.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-udevd.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-udevd.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-udevd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure USB device permissions =&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usbmisc&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot; &lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyACM*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;*video*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* reload udev rules: udevadm control --reload-rules&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
* watch udev activity: udevadm monitor -p&lt;br /&gt;
&lt;br /&gt;
= Configure lightdm display manager =&lt;br /&gt;
&lt;br /&gt;
* enable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo lightdm | dpkg-reconfigure -fteletype lightdm&lt;br /&gt;
systemctl disable gdm&lt;br /&gt;
systemctl disable sddm&lt;br /&gt;
systemctl enable lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable login by NIS users&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp -v etc/lightdm_enable_nis_login.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart lightdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop gdm&lt;br /&gt;
systemctl restart lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install libpng12.so.0 =&lt;br /&gt;
&lt;br /&gt;
Quartus 16 needs libpng12:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install google-chrome =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb&lt;br /&gt;
dpkg -i google-chrome-stable_current_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
confirm autoupdate is enabled, observe dl.google.com is present in the list of repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
...&lt;br /&gt;
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,094 B]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOLLOWING IS OBSOLETE:&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -&lt;br /&gt;
sh -c &#039;echo &amp;quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/google-tmp.list&#039;&lt;br /&gt;
apt update&lt;br /&gt;
apt install google-chrome-stable&lt;br /&gt;
/bin/rm -f /etc/apt/sources.list.d/google-tmp.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install amanda client =&lt;br /&gt;
&lt;br /&gt;
ONLY ON MACHINES THAT HOST HOME DIRECTORIES&lt;br /&gt;
&lt;br /&gt;
* apt install amanda-client&lt;br /&gt;
* edit /etc/amandahosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amanda.triumf.ca amanda amdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check permissions on /etc/amandahosts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:/var/log/amanda# ls -l /etc/amandahosts&lt;br /&gt;
-rw------- 1 backup backup 49 Jan 27 10:48 /etc/amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix if needed: chown backup.backup /etc/amandahosts; chmod a= /etc/amandahosts; chmod u=wr /etc/amandahosts&lt;br /&gt;
* edit /etc/amanda-security.conf, add this line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runtar:gnutar_path=/usr/bin/tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the amanda machine:&lt;br /&gt;
&lt;br /&gt;
* in amanda disklist, use dump type &amp;quot;bsdtcp-comp-user-tar&amp;quot;&lt;br /&gt;
* su - amanda and run amcheck -c daily daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.1$ amcheck -c daily daq00&lt;br /&gt;
&lt;br /&gt;
Amanda Backup Client Hosts Check&lt;br /&gt;
--------------------------------&lt;br /&gt;
Client check: 1 host checked in 0.092 seconds.  0 problems found.&lt;br /&gt;
&lt;br /&gt;
(brought to you by Amanda 3.3.7p1.git.685ff76d)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable rc.local =&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, Ubuntu LTS 20.04 does not enable /etc/rc.local. Do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp -n -v etc/rc.local /etc/&lt;br /&gt;
chmod a+rx /etc/rc.local&lt;br /&gt;
cp etc/rc-local.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Remove unwanted packages =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt purge  bash-completion # broken, adds unwanted &amp;quot;\&amp;quot; if &amp;quot;ls -l $ROOTSYS/&amp;lt;tab&amp;gt;&amp;quot;&lt;br /&gt;
apt purge  zsys # broken, do not use&lt;br /&gt;
apt purge  sddm # login manager&lt;br /&gt;
apt purge  avahi-daemon avahi-autoipd # not sure what it does, observed using 100% CPU&lt;br /&gt;
apt purge  modemmanager # probes all serial ports to see if it&#039;s a modem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable unwanted services =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable mpd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl --global mask tracker-extract-3.service&lt;br /&gt;
systemctl --global mask tracker-miner-fs-3.service&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable sleep and suspend =&lt;br /&gt;
&lt;br /&gt;
note: we see some computers randomly shutdown or go to sleep, log files indicates the &amp;quot;sleep&amp;quot; or &amp;quot;suspend&amp;quot; button was pushed by user, but no such buttons actually exist. this is the fix for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target systemd-suspend.service systemd-hybrid-sleep.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable crontab @reboot for MIDAS =&lt;br /&gt;
&lt;br /&gt;
startup scripts have a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/cron.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/cron.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat cron.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependency tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
Crontab entry to start midas: (install in the midas user crontab, not root crontab)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - midasuser&lt;br /&gt;
crontab -l&lt;br /&gt;
#@reboot /bin/bash -l -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
#@reboot /bin/tcsh -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install apache httpd proxy for midas and elog =&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache2.&lt;br /&gt;
&lt;br /&gt;
First, configure apache2:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install apache2&lt;br /&gt;
cd /etc/apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file conf-available/ssl-daq14.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file sites-available/daq14-ssl.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
    &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName daq14.triumf.ca&lt;br /&gt;
        DocumentRoot /var/www/html&lt;br /&gt;
        ErrorLog /var/log/apache2/daq14.log&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        # note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
        ## use port specified in elogd.cfg&lt;br /&gt;
        #ProxyPass /elog/ http://localhost:8082/ retry=1 &lt;br /&gt;
        ## use mhttpd port&lt;br /&gt;
        #ProxyPass /      http://localhost:8080/ retry=1 &lt;br /&gt;
        Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
        &amp;lt;Location /&amp;gt;&lt;br /&gt;
            SSLRequireSSL&lt;br /&gt;
            AuthType Basic&lt;br /&gt;
            AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
            Require valid-user&lt;br /&gt;
            # create password file: touch /etc/apache2/htpasswd&lt;br /&gt;
            # to add new user or change password: htpasswd /etc/apache2/htpasswd username&lt;br /&gt;
            AuthUserFile /etc/apache2/htpasswd&lt;br /&gt;
        &amp;lt;/Location&amp;gt;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable ssl module&lt;br /&gt;
* enable new configurations&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
a2enmod headers&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
a2enconf ssl-daq14&lt;br /&gt;
a2ensite daq14-ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable default ssl sites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dissite 000-default-le-ssl&lt;br /&gt;
a2dissite 000-default&lt;br /&gt;
ls -l /etc/apache2/sites-enabled/ ### should show only daq14-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that there are no syntax problems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable and start apache2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 may fail to start, look in /var/log/apache2/error.log and /var/log/apache2/daq14.log&lt;br /&gt;
* if it says &amp;quot;Failed to configure ... certificate&amp;quot;, proceed to the step for setting certbot.&lt;br /&gt;
* try to access https://daq14.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, look at documentation for ufw.&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
(Note: unsurprisingly, this requires outside access to connect with letsencrypt, so won&#039;t work if PC is only accessible from on-site network)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that apache2 is listening on port 80, follow the apache2 instructions above (remove &amp;quot;listen 80&amp;quot; from apache2.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot (if necessary open tcp port 80 in the firewall, see documentation for ufw):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install certbot python3-certbot-apache&lt;br /&gt;
certbot certonly --standalone --installer apache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq14.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot install --apache --cert-name daq14.triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside /etc/apache2/sites-enabled/daq14-ssl.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in&lt;br /&gt;
/etc/letsencrypt/live/daq14.triumf.ca/&lt;br /&gt;
* to check current renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work with current version of certbot&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/apache2/htpasswd&lt;br /&gt;
htpasswd /etc/apache2/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart apache2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* try accessing MIDAS https://daq14.triumf.ca/ (make sure mhttpd is running)&lt;br /&gt;
* if it&#039;s not working, check odb setting FIXME!&lt;br /&gt;
* try accessing ELog https://daq14.triumf.ca/elog/ (make sure elogd is running)&lt;br /&gt;
* if it&#039;s not working, check elogd.cfg file and make sure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSL                  = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== generate self-signed certificate ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphacpc05:~# openssl req  -nodes -new -x509  -keyout server.key -out server.cert -days 1001&lt;br /&gt;
...+....+..+..........+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+..+...+.........+......+.+...+...+.....+...............+.........+...+.+......+...+...........+....+...+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+......+.+...+..+.......+..+...+.......+......+...+..+...+......+....+...............+..+...+....+...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
......+......+.+..+......+.+......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.....+......+.+.........+......+.....+.+..+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.......+....+......+.....+...+...+.......+..+.+........+.+...+......+..+..........+..+.+...........+...+.......+......+.....+.......+...+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
-----&lt;br /&gt;
You are about to be asked to enter information that will be incorporated&lt;br /&gt;
into your certificate request.&lt;br /&gt;
What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
There are quite a few fields but you can leave some blank&lt;br /&gt;
For some fields there will be a default value,&lt;br /&gt;
If you enter &#039;.&#039;, the field will be left blank.&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:CH&lt;br /&gt;
State or Province Name (full name) [Some-State]:Geneve&lt;br /&gt;
Locality Name (eg, city) []:CERN&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CERN&lt;br /&gt;
Organizational Unit Name (eg, section) []:ALPHA experiment           &lt;br /&gt;
Common Name (e.g. server FQDN or YOUR name) []:alphacpc05.cern.ch&lt;br /&gt;
Email Address []:&lt;br /&gt;
root@alphacpc05:~# &lt;br /&gt;
root@alphacpc05:~# &lt;br /&gt;
root@alphacpc05:~# ls -l&lt;br /&gt;
-rw-r--r-- 1 root root 1375 juil. 10 21:43 server.cert&lt;br /&gt;
-rw------- 1 root root 1708 juil. 10 21:42 server.key&lt;br /&gt;
root@alphacpc05:~# systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable elog PDF preview =&lt;br /&gt;
&lt;br /&gt;
NOTE: looks like U-24 already has this correctly.&lt;br /&gt;
&lt;br /&gt;
see https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&lt;br /&gt;
&lt;br /&gt;
* xemacs -nw /etc/ImageMagick-6/policy.xml&lt;br /&gt;
* remove this section at the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- disable ghostscript format types --&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;EPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PDF&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;XPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Jupyter notebook =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From https://jupyter.org/install&lt;br /&gt;
apt install python3-pip&lt;br /&gt;
pip install jupyterlab&lt;br /&gt;
pip install notebook&lt;br /&gt;
~/.local/bin/jupyter notebook&lt;br /&gt;
watch the http://localhost:8888 URL that it printed&lt;br /&gt;
say &amp;quot;no&amp;quot; to offer to start firefox (it will not work!)&lt;br /&gt;
URL is: http://localhost:8888/tree?token=xxx&lt;br /&gt;
from the machine where you are running the web browser (i.e. google-chrome), run (replace trinat@trinatdaq with the username and machine name where you started jupyter)&lt;br /&gt;
open a new shell and run: ssh -v trinat@trinatdaq -L 8888:localhost:8888&lt;br /&gt;
in the web browser, open http://localhost:8888&lt;br /&gt;
this gives us the login page&lt;br /&gt;
in the password or token entry field, put the token from the &amp;quot;tree?token=xxx&amp;quot; above (printed by jupyter on startup)&lt;br /&gt;
push button &amp;quot;login&amp;quot;&lt;br /&gt;
jupyter page should open with the list of files in the trinat home directory&lt;br /&gt;
congratulate Brian with full success&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS quota report =&lt;br /&gt;
&lt;br /&gt;
If there are any ZFS volumes, install script to report disk and quota usage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/quotareport&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /var/www/html/zfsquotareport&lt;br /&gt;
cp -pv ~/git/scripts/quotareport/sorttable.js /var/www/html/zfsquotareport/&lt;br /&gt;
ln -s $PWD/zfsquotareport.perl /etc/cron.daily/&lt;br /&gt;
touch /etc/crontab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If httpd is configured to redirect &amp;quot;/&amp;quot; to MIDAS mhttpd:&lt;br /&gt;
* add following to /etc/apache2/sites-enabled/xxx-ssl.conf in front of &amp;quot;ProxyPass / ...&amp;quot;&lt;br /&gt;
* run &amp;quot;systemctl reload apache2&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not proxy zfs quota report directory &lt;br /&gt;
ProxyPass /zfsquotareport/ ! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install PHP =&lt;br /&gt;
&lt;br /&gt;
* apt install php libapache2-mod-php&lt;br /&gt;
* systemctl restart apache2&lt;br /&gt;
* create /var/www/html/info.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
phpinfo(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://daq00.triumf.ca/info.php&lt;br /&gt;
&lt;br /&gt;
= Configure TRIUMF printers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl stop cups-browsed.service&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
systemctl disable cups-browsed.service&lt;br /&gt;
systemctl stop snap.cups.cupsd.service&lt;br /&gt;
systemctl stop snap.cups.cups-browsed.service&lt;br /&gt;
systemctl disable snap.cups.cupsd.service&lt;br /&gt;
systemctl disable snap.cups.cups-browsed.service&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable core dumps =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 installs the apport package&lt;br /&gt;
which disabled core dumps from user applications. (google it up!).&lt;br /&gt;
It is not meant to do this and documentation claims that&lt;br /&gt;
it is not installed and not enabled by default. Oh, well...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove apport&lt;br /&gt;
apt autoremove ### will remove apport-symptoms and a few other packages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, core dumps are written to file &amp;quot;core&amp;quot; in the current directory.&lt;br /&gt;
See /proc/sys/kernel/core_pattern and /proc/sys/kernel/core_uses_pid.&lt;br /&gt;
&lt;br /&gt;
Enable core dump file names to include process id, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;echo 1 &amp;gt; /proc/sys/kernel/core_uses_pid&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable debugger =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 does not permit debugger to attach and debug&lt;br /&gt;
already running programs. To enable it, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable Ubuntu Pro nag =&lt;br /&gt;
&lt;br /&gt;
best I can tell, impossible at this time.&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! does nothing !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pro config set apt_news=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! breaks automatic updates because 20apt-esm-hook.conf is missing !!!&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;apt upgrade&amp;quot; requests Ubuntu Pro or esm-apps, disable the nag:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! likely same as above, breaks automatic updates !!!&lt;br /&gt;
&lt;br /&gt;
* comment out /etc/apt/apt.conf.d/20apt-esm-hook.conf&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! removes too many packages !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove ubuntu-pro-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update packages =&lt;br /&gt;
&lt;br /&gt;
* apt update # update package list&lt;br /&gt;
* apt upgrade # install updated packages and update &amp;quot;kept back&amp;quot; packages&lt;br /&gt;
* apt autoremove # remove packages that apt thinks should be removed&lt;br /&gt;
&lt;br /&gt;
= Finish installation =&lt;br /&gt;
&lt;br /&gt;
Congratulations. There is nothing more to do!&lt;br /&gt;
&lt;br /&gt;
* reboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update to new version of Ubuntu =&lt;br /&gt;
&lt;br /&gt;
* run &amp;quot;do-release-upgrade -c&amp;quot;&lt;br /&gt;
* if it does not report new release Ubuntu 24, check /etc/update-manager/release-upgrades has &amp;quot;Prompt=lts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Update Ubuntu LTS 20.04 to LTS 22.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daqubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# reboot to clear out all updates&lt;br /&gt;
# vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;22.04 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
# do-release-upgrade&lt;br /&gt;
...&lt;br /&gt;
say yes...&lt;br /&gt;
...&lt;br /&gt;
login.defs, say &amp;quot;Y&amp;quot; (erase local changes, use packaged version)&lt;br /&gt;
/etc/systemd/resolved.conf, say &amp;quot;Y&amp;quot; (same as above)&lt;br /&gt;
firefox snap, say yes&lt;br /&gt;
unable to reach snap store, say &amp;quot;skip&amp;quot;&lt;br /&gt;
/etc/gmond.conf, say &amp;quot;Y&amp;quot;&lt;br /&gt;
/var/yp/Makefile, say &amp;quot;install the package maintainer&#039;s version&amp;quot;&lt;br /&gt;
/etc/ypserv.conf, same thing&lt;br /&gt;
/etc/ypserv.securenets, same thing&lt;br /&gt;
/etc/default/nis, same thing&lt;br /&gt;
/etc/speech-dispatcher/modules/mary-generic.conf, same thing&lt;br /&gt;
/etc/apt/apt.conf.d/50unattended-upgrades, same thing&lt;br /&gt;
...&lt;br /&gt;
278 packages are going to be removed, say yes&lt;br /&gt;
...&lt;br /&gt;
restart required, say yes&lt;br /&gt;
...&lt;br /&gt;
no ping... yes ping...&lt;br /&gt;
...&lt;br /&gt;
ssh daqubuntu, ok&lt;br /&gt;
apt update, fail, DNS does not work, &amp;quot;host security.ubuntu.com&amp;quot; does not resolve.&lt;br /&gt;
fix resolver per https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#Disable_NetworkManager&lt;br /&gt;
apt update, apt upgrade now works, 0 packages to update&lt;br /&gt;
NIS does not work.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== midm9a ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
login.defs&lt;br /&gt;
firefox snap&lt;br /&gt;
gmond.conf&lt;br /&gt;
ypserv&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
unattended-upgrades&lt;br /&gt;
amanda-security.conf&lt;br /&gt;
remove obsolete (no)&lt;br /&gt;
reboot&lt;br /&gt;
configure dns&lt;br /&gt;
reenable nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daq17 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox snap&lt;br /&gt;
imagemagick policy.xml&lt;br /&gt;
gmond.conf&lt;br /&gt;
chrony.conf&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
ypserv.conf&lt;br /&gt;
ypserv.securenets&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
50unattended-upgrades&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daq00 ===&lt;br /&gt;
&lt;br /&gt;
per https://serverpilot.io/docs/how-to-upgrade-ubuntu-20.04-to-22.04/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if it exists &amp;quot;too soon&amp;quot; without doing anything, run it without &amp;quot;-f xxx&amp;quot;, most likely it does not like something about this machine. in case of daq00 it did not like how the EFI partitions were mounted. after fixing it, non-interactive upgrade was successful.&lt;br /&gt;
&lt;br /&gt;
=== isdaq08 ===&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check for modified config files that make upgrade unhappy, deal with all files reported by debsums.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@isdaq08:~# debsums -ce&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
/etc/apt/apt.conf.d/10periodic&lt;br /&gt;
root@isdaq08:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* restore original /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;; &lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;0&amp;quot;; &lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;0&amp;quot;; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
&lt;br /&gt;
Run the upgrade:&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&lt;br /&gt;
Post upgrade:&lt;br /&gt;
&lt;br /&gt;
* configure DNS&lt;br /&gt;
* apt -y install linux-generic-hwe-22.04&lt;br /&gt;
* /bin/cp -v ~/git/scripts/etc/99apt-conf-ko /etc/apt/apt.conf.d/ # restore nightly updates&lt;br /&gt;
* /bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf # remove the ubuntu-pro nag&lt;br /&gt;
* install missing packages&lt;br /&gt;
* restore ganglia&lt;br /&gt;
* restore nis&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
== upgrade U-22 to U-24 ==&lt;br /&gt;
&lt;br /&gt;
generic instructions. below are notes from upgrades of specific machines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove desktop-base # causes installer crash&lt;br /&gt;
apt -y remove thunderbird  # avoid forced conversion to snap&lt;br /&gt;
apt update&lt;br /&gt;
apt -y upgrade&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
do-release-upgrade -c      # confirm upgrade will be to U-24&lt;br /&gt;
do-release-upgrade&lt;br /&gt;
# say &amp;quot;y&amp;quot; to all questions&lt;br /&gt;
# after installation starts, accept default answers to all questions&lt;br /&gt;
# should run for about 1 hour or so&lt;br /&gt;
# after upgrade finishes&lt;br /&gt;
apt update&lt;br /&gt;
apt -y upgrade&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if installation bombs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # will tell us to run &amp;quot;apt --fix-broken install&amp;quot;, do it&lt;br /&gt;
apt --fix-broken install&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # should resume the upgrade, will run for a long time&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # should do nothing&lt;br /&gt;
apt autoremove&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daqubuntu, U-24 ===&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check for modified config files that make upgrade unhappy, deal with all files reported by debsums.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# debsums -ce&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/ypserv.conf&lt;br /&gt;
/etc/ypserv.securenets&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
/etc/update-manager/release-upgrades&lt;br /&gt;
/etc/apt/apt.conf.d/10periodic&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
* restore original /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;; &lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;0&amp;quot;; &lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;0&amp;quot;; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* restore original release-upgrades: &amp;quot;Prompt: lts&amp;quot;&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
&lt;br /&gt;
Check for upgrade:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
There is no development version of an LTS available.&lt;br /&gt;
To upgrade to the latest non-LTS development release &lt;br /&gt;
set Prompt=normal in /etc/update-manager/release-upgrades.&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the upgrade:&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&lt;br /&gt;
Post upgrade:&lt;br /&gt;
&lt;br /&gt;
* configure DNS&lt;br /&gt;
* apt -y install linux-generic-hwe-22.04&lt;br /&gt;
* /bin/cp -v ~/git/scripts/etc/99apt-conf-ko /etc/apt/apt.conf.d/ # restore nightly updates&lt;br /&gt;
* /bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf # remove the ubuntu-pro nag&lt;br /&gt;
* install missing packages&lt;br /&gt;
* restore ganglia&lt;br /&gt;
* restore nis&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
=== daq14, U-20-22-24 ===&lt;br /&gt;
&lt;br /&gt;
* apt update, apt upgrade&lt;br /&gt;
* apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 ### install kernel 5.15&lt;br /&gt;
* shutdown -r now&lt;br /&gt;
* stuck waiting for daq14 to shutdown...&lt;br /&gt;
* reboot into kernel 5.15&lt;br /&gt;
* ???&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/apache2/ports.conf&lt;br /&gt;
/etc/dnsmasq.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
/etc/sudoers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 restore original ports.conf, uncomment &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* cp -pv /etc/dnsmasq.conf.dpkg-dist /etc/dnsmasq.conf&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* edit /etc/yp.conf, remove everything after &amp;quot;# ypserver ypserver.network.com&amp;quot;&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* runs for a long time&lt;br /&gt;
* stuck on &amp;quot;/etc/default/nis&amp;quot;, type &amp;quot;Y&amp;quot;, press enter, nothing for a bit, then resumes running&lt;br /&gt;
* finished&lt;br /&gt;
* configure DNS&lt;br /&gt;
* reboot&lt;br /&gt;
* have kernel 6.8&lt;br /&gt;
* apt update; apt upgrade&lt;br /&gt;
* apt upgrade guile-2.2-libs ### would not auto-update, &amp;quot;kept back&amp;quot;, has to be done by hand&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* diff /etc/default/nis.dpkg-dist  /etc/default/nis&lt;br /&gt;
* cp -pv /etc/default/nis.dpkg-dist  /etc/default/nis&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* we ignore this and run the update&lt;br /&gt;
* do-release-upgrade -c&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;24.04.1 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombs out without any error messages&lt;br /&gt;
* in /var/log/dist-upgrade/main.log reports &amp;quot;Failed to find a replacement for xapp&amp;quot; and other packages&lt;br /&gt;
* apt remove xapp usrmerge ureadahead thunderbird-gnome-support&lt;br /&gt;
* no go, complains about even more packages.&lt;br /&gt;
* apt list | grep installed | grep -v jammy ### show packages installed from non-ubuntu sources&lt;br /&gt;
* remove all packages marked &amp;quot;install,local&amp;quot; ### ubuntu updater does not know where they came from and so cannot update them.&lt;br /&gt;
* apt remove desktop-base ### not happy about this package in /var/log/dist-upgrade/apt.log&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* running for a long time...&lt;br /&gt;
&lt;br /&gt;
=== alpha04 U-20-24 ===&lt;br /&gt;
&lt;br /&gt;
* apt update, apt upgrade, apt autoremove&lt;br /&gt;
* reboot into latest kernel (already done)&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alpha04:~# debsums -ce&lt;br /&gt;
/etc/dnsmasq.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
root@alpha04:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* move /etc/dnsmasq.conf to /etc/dnsmasq.d/alpha04.conf&lt;br /&gt;
* apt remove dnsmasq&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* debsums -ce ### is now empty&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* it runs for a long time...&lt;br /&gt;
* complained about /etc/fwupd config files, not sure why...&lt;br /&gt;
* finished&lt;br /&gt;
* apt update, apt upgrade, apt autoremove&lt;br /&gt;
* restore dnsmasq: apt install dnsmasq, systemctl status dnsmasq&lt;br /&gt;
* restore ganglia, per instructions&lt;br /&gt;
* restore NIS: apt -y install rpcbind nis, ypwhich, ypwhich -m&lt;br /&gt;
* zpool upgrade rpool ### also upgrade any other zfs pools, see zpool status&lt;br /&gt;
* remove unwanted packages, per instructions&lt;br /&gt;
* run gonodeinfo&lt;br /&gt;
* reboot&lt;br /&gt;
* done&lt;br /&gt;
&lt;br /&gt;
== vera00 U20-22-24 ==&lt;br /&gt;
&lt;br /&gt;
* everything same as daq14 for U20-22&lt;br /&gt;
* kernel is still 5.15&lt;br /&gt;
* U22-24 is going...&lt;br /&gt;
* stuck for a few minutes on /etc/fwupd config files&lt;br /&gt;
* have kernel 6.8.0-49&lt;br /&gt;
* same steps as daq14&lt;br /&gt;
* reboot&lt;br /&gt;
* same steps as daq14&lt;br /&gt;
* done&lt;br /&gt;
&lt;br /&gt;
== phaarmonster U22-24 ==&lt;br /&gt;
&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/amandahosts&lt;br /&gt;
/etc/apache2/ports.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do-release-upgrade -c ### reports U24.04.1&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive ### bombs&lt;br /&gt;
* apt remove desktop-base; apt autoremove&lt;br /&gt;
* do-release-upgrade ### (interactive) runs ok&lt;br /&gt;
* bombed !!!&lt;br /&gt;
* apt upgrade spews errors and tells us to run &amp;quot;apt --fix-broken install&amp;quot;&lt;br /&gt;
* apt --fix-broken install ### runs&lt;br /&gt;
* bombs with thunderbird snap errors&lt;br /&gt;
* again... no go&lt;br /&gt;
* thunderbird snap complains about mounting /home, but /home is a symlink&lt;br /&gt;
* rm /home, mkdir /home&lt;br /&gt;
* again, runs ok&lt;br /&gt;
* asks about /etc/fwupd/fwupd.conf - say &amp;quot;Y&amp;quot; to install updated package version&lt;br /&gt;
* apt install completes&lt;br /&gt;
* apt update; apt upgrade ### running for a long time...&lt;br /&gt;
* finished&lt;br /&gt;
* install missing packages, etc&lt;br /&gt;
* reboot&lt;br /&gt;
* long wait... came back&lt;br /&gt;
* DNS does now work, systemd-resolved missing, apt install systemd-resolved, &amp;quot;configure DNS&amp;quot;&lt;br /&gt;
* done.&lt;br /&gt;
&lt;br /&gt;
== isdaq10 U22-24 ==&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombed on desktop-base, &amp;quot;apt remove desktop-base; apt autoremove&amp;quot;&lt;br /&gt;
* bombed with errors&lt;br /&gt;
* running &amp;quot;apt --fix-broken install&amp;quot;&lt;br /&gt;
* complained about thunderbird snap&lt;br /&gt;
* complained about /etc/fwupd/fwupd.conf (say Y)&lt;br /&gt;
* finished ok&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade ### reports &amp;quot;1382 upgraded, 140 newly installed, 0 to remove and 29 not upgraded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== iris01 ==&lt;br /&gt;
&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove desktop-base&lt;br /&gt;
* apt remove thunderbird&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombed with dpkg errors:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hplip wants wrong python&lt;br /&gt;
ganglia-monitor wants wrong libapr1&lt;br /&gt;
sssd-ad wants bunch of wrong libraries&lt;br /&gt;
xemacs21-mule&lt;br /&gt;
libnfsidmap1 wants libldap2&lt;br /&gt;
adn so forth...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt --fix-broken install -y&lt;br /&gt;
* bombs on ganglia - ganglia group absent from /etc/groups&lt;br /&gt;
* fix group ganglia by hand, remove ganglia group from NIS on isdaq00&lt;br /&gt;
* apt --fix-broken install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
== iris00 ==&lt;br /&gt;
&lt;br /&gt;
* stuck on &amp;quot;autofs: restarting&amp;quot;, login as root, kill iris midas, kill automount, systemctl restart autofs, noble got unstuck, ctrl-c systemctl restart autofs&lt;br /&gt;
* noble running...&lt;br /&gt;
* bombed with dpkg errors&lt;br /&gt;
* check ganglia user, group - both ok&lt;br /&gt;
* apt --fix-broken install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
== tigstore01 ==&lt;br /&gt;
&lt;br /&gt;
* no bomb-out&lt;br /&gt;
&lt;br /&gt;
== midm9b ==&lt;br /&gt;
&lt;br /&gt;
* apt remove desktop-base thunderbird&lt;br /&gt;
* bombed&lt;br /&gt;
* apt --fix-broken-install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
= Upgrade to new version of Debian =&lt;br /&gt;
&lt;br /&gt;
https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.en.html&lt;br /&gt;
&lt;br /&gt;
== 32-bit VME processor Debian 11 to 12 ==&lt;br /&gt;
&lt;br /&gt;
* cd git/scripts; git pull; cd ~&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade&lt;br /&gt;
* edit /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main&lt;br /&gt;
#deb http://deb.debian.org/debian/ bullseye main&lt;br /&gt;
#deb-src http://deb.debian.org/debian/ bullseye main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade --without-new-pkgs&lt;br /&gt;
* apt full-upgrade&lt;br /&gt;
* apt list &#039;~c&#039;; apt purge &#039;~c&#039; # purge left-over config files [residual-config]&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Ubuntu package manager =&lt;br /&gt;
&lt;br /&gt;
* apt-get install xxx # install package xxx&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get upgrade&lt;br /&gt;
* apt-get dist-upgrade&lt;br /&gt;
* apt-get autoremove # remove automatically installed packages required by a removed package&lt;br /&gt;
* apt-get remove xxx # remove package xxx&lt;br /&gt;
* apt-cache search . # list all available packages&lt;br /&gt;
* apt-cache show &amp;quot;.&amp;quot; | grep ^Package # list al available packages&lt;br /&gt;
* apt-cache madison root-system # show all available versions of package root-system&lt;br /&gt;
* apt list # list all installed packages&lt;br /&gt;
* dpkg --listfiles libpng16-16 # list all files from this package&lt;br /&gt;
* apt list --installed # list all installed packages&lt;br /&gt;
* dpkg -S /bin/bash # what package provides this file?&lt;br /&gt;
* dpkg -L bash # what files provided by this package?&lt;br /&gt;
* debsums -ce # show modified config files&lt;br /&gt;
* apt-config dump # show apt configuration&lt;br /&gt;
* apt purge &#039;~c&#039; # purge all [residual-config] packages&lt;br /&gt;
&lt;br /&gt;
= Ubuntu zsys =&lt;br /&gt;
&lt;br /&gt;
NOTE: DO NOT USE ZSYS, see https://github.com/ubuntu/zsys/issues/218 and https://github.com/ubuntu/zsys/issues/230&lt;br /&gt;
&lt;br /&gt;
* scripted removal of old snapshots (replace &amp;quot;echo zfs destroy&amp;quot; with &amp;quot;zfs destroy&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list -t all | cut -f1 -d &amp;quot; &amp;quot; | grep autozsys | xargs -n1 echo zfs destroy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* manual removal of old snapshots&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zsysctl show&lt;br /&gt;
zsysctl state remove xy69ye -s&lt;br /&gt;
zsysctl state remove xy69ye&lt;br /&gt;
zsysctl state remove xy69ye -u wheel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove zsys&lt;br /&gt;
&lt;br /&gt;
NOTE: old zsys snapshots must be cleaned manually, &amp;quot;zsysctl state remove xxx --system&amp;quot; is broken and does not remove user data snapshots&lt;br /&gt;
&lt;br /&gt;
* manages system snapshots&lt;br /&gt;
* documentation: https://github.com/ubuntu/zsys&lt;br /&gt;
* documentation: (go to next article via link &amp;quot;newer&amp;quot; at the bottom) https://didrocks.fr/2020/05/21/zfs-focus-on-ubuntu-20.04-lts-whats-new/&lt;br /&gt;
* ubuntu 20.04 bug, too many snapshots cause /boot to become full and updates fail. https://github.com/ubuntu/zsys/issues/155&lt;br /&gt;
* solution: use custom /etc/zsys.conf, limit number of snapshots to 10, see trinatdaq:/etc/zsys.conf&lt;br /&gt;
* zsys commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-grub # list of all snapshots, errors if some snapshots are broken&lt;br /&gt;
zsysctl state remove lnc0k7 --system # remove snapshot&lt;br /&gt;
xemacs -nw /etc/zsys.conf; zsysctl service reload; zsysctl service gc # cause gc to run with new settings in zsys.conf&lt;br /&gt;
zfs list -r -t snapshot -o name,used,referenced,creation bpool/BOOT # list snapshots&lt;br /&gt;
zsysctl show # show snapshots&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu cloning =&lt;br /&gt;
&lt;br /&gt;
to clone a ubuntu image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /nfsroot/lxcpet&lt;br /&gt;
emacs -nw etc/hostname ### change hostname&lt;br /&gt;
emacs -nw etc/mailname ### change hostname (debian 11)&lt;br /&gt;
emacs -nw etc/defaultdomain ### change the NIS domainname&lt;br /&gt;
emacs -nw etc/yp.conf ### change the NIS server&lt;br /&gt;
cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu boot loader =&lt;br /&gt;
&lt;br /&gt;
== maintenance commands ==&lt;br /&gt;
&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* grub-install /dev/sda&lt;br /&gt;
&lt;br /&gt;
= Convert from single to dual mirrored ZFS SSD =&lt;br /&gt;
&lt;br /&gt;
Assuming Ubuntu LTS 22.04 with &amp;quot;instal on ZFS&amp;quot; option, we will&lt;br /&gt;
add a second SSD, configure ZFS to use both SSDs in mirrored&lt;br /&gt;
configuration and setup grub to boot from either SSD. This&lt;br /&gt;
is intended to create a full redundant system where failure&lt;br /&gt;
of either SSD does not break the system.&lt;br /&gt;
&lt;br /&gt;
* identify first SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* connect second SSD of identical size&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER   Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
    /dev/sdb  WD Blue SA510 2.5 250GB         22243Z803852              25        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if second SSD is not autodetected, reboot&lt;br /&gt;
* Clone partition table automatically&lt;br /&gt;
If both SSDs are identical size, use this simpler method of duplicating the partition table:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# sfdisk -d /dev/sda &amp;gt; part_table&lt;br /&gt;
root@midm9b:~# grep -v ^label-id part_table | sed -e &#039;s/, *uuid=[0-9A-F-]*//&#039; | sfdisk /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The grep and sed in the second command are there to prevent disk ID and partition IDs from being cloned. Alternatively the part_table file can be edited manually to remove the label-id line and the uuid entries from the individual partitions.&lt;br /&gt;
&lt;br /&gt;
* Clone partition table manually (e.g. for different size disks)&lt;br /&gt;
* list partition table of first SSD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create identical partitions on second SSD, use sector numbers from above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# gdisk /dev/sdb&lt;br /&gt;
GPT fdisk (gdisk) version 1.0.8&lt;br /&gt;
&lt;br /&gt;
Partition table scan:&lt;br /&gt;
  MBR: not present&lt;br /&gt;
  BSD: not present&lt;br /&gt;
  APM: not present&lt;br /&gt;
  GPT: not present&lt;br /&gt;
&lt;br /&gt;
Creating new GPT entries in memory.&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (1-128, default 1): &lt;br /&gt;
First sector (34-488397134, default = 2048) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (2048-488397134, default = 488397134) or {+-}size{KMGTP}: 1050623&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): ef00&lt;br /&gt;
Changed type of partition to &#039;EFI system partition&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (2-128, default 2): &lt;br /&gt;
First sector (34-488397134, default = 1050624) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (1050624-488397134, default = 488397134) or {+-}size{KMGTP}: 5244927&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): 8200&lt;br /&gt;
Changed type of partition to &#039;Linux swap&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (3-128, default 3): &lt;br /&gt;
First sector (34-488397134, default = 5244928) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (5244928-488397134, default = 488397134) or {+-}size{KMGTP}: 9439231&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): be00&lt;br /&gt;
Changed type of partition to &#039;Solaris boot&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (4-128, default 4): &lt;br /&gt;
First sector (34-488397134, default = 9439232) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (9439232-488397134, default = 488397134) or {+-}size{KMGTP}: &lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): bf00&lt;br /&gt;
Changed type of partition to &#039;Solaris root&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): w&lt;br /&gt;
&lt;br /&gt;
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING&lt;br /&gt;
PARTITIONS!!&lt;br /&gt;
&lt;br /&gt;
Do you want to proceed? (Y/N): y&lt;br /&gt;
OK; writing new GUID partition table (GPT) to /dev/sdb.&lt;br /&gt;
The operation has completed successfully.&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda /dev/sdb&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: EB251739-30C6-422F-A505-5887B5A0B603&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sdb1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sdb2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sdb3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sdb4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* identify second SSD partitions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3 -&amp;gt; ../../sdb3&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert bpool from single disk to mirrored disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  99e03dc0-7d4d-f24b-8fa1-f042b9f135db  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                   ONLINE       0     0     0&lt;br /&gt;
	  f6fd54f8-3af7-b943-ae3d-a4e480537fb9  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# zpool attach bpool 99e03dc0-7d4d-f24b-8fa1-f042b9f135db /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3&lt;br /&gt;
root@midm9b:~# zpool status bpool&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert rpool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
root@midm9b:~# zpool attach rpool f6fd54f8-3af7-b943-ae3d-a4e480537fb9 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4&lt;br /&gt;
root@midm9b:~# zpool status rpool&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Jan 20 19:40:45 2023&lt;br /&gt;
	5.83G scanned at 664M/s, 2.92M issued at 332K/s, 9.11G total&lt;br /&gt;
	0B resilvered, 0.03% done, no estimated completion time&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for resilver to complete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 9.65G in 00:00:36 with 0 errors on Fri Jan 20 19:41:21 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable booting from second SSD: (instead of /dev/sda1, /dev/sdb1, use UUID=xxx)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# mkfs.msdos /dev/sdb1&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sda&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sdb&lt;br /&gt;
root@midm20c:~# blkid | grep vfat ### identify UUID&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;DD89-5081&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;d0cb6be4-2f67-5b42-9b26-9e6905e9f774&amp;quot;&lt;br /&gt;
/dev/sdc1: UUID=&amp;quot;D970-86BA&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;e6d3b5b9-a512-44a2-9205-1a4db06ed2a2&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;DDA1-044C&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;6dc9dff0-1c13-8045-a906-7803d3074c70&amp;quot;&lt;br /&gt;
root@midm20c:~# cat /etc/fstab | grep vfat ### add mount points with correct UUID&lt;br /&gt;
#UUID=D970-86BA  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
UUID=DDA1-044C  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
UUID=DD89-5081  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
root@midm9b:~# mount -a&lt;br /&gt;
root@midm9b:~# df -kl&lt;br /&gt;
Filesystem                                       1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
...&lt;br /&gt;
/dev/sda1                                           523244   13720    509524   3% /boot/efi&lt;br /&gt;
/dev/sdb1                                           523244       4    523240   1% /boot/efi-sdb&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# rsync -av /boot/efi/ /boot/efi-sdb/&lt;br /&gt;
sending incremental file list&lt;br /&gt;
EFI/&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sda&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sdb&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup script to update grub on second SSD, it must be run manually after every kernel update&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ln -s ~/git/scripts/etc/update_efi_grub.perl ~/&lt;br /&gt;
root@midm9b:~# ~/update_efi_grub.perl -u&lt;br /&gt;
EFI dir: /boot/efi-sda&lt;br /&gt;
/boot/efi-sda: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sda/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sda: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sda/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
EFI dir: /boot/efi-sdb&lt;br /&gt;
/boot/efi-sdb: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sdb/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sdb: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sdb/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable NetworkManager =&lt;br /&gt;
&lt;br /&gt;
== Debian-12 ==&lt;br /&gt;
&lt;br /&gt;
* use netplan, https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_for_cloud&lt;br /&gt;
* apt install netplan.io&lt;br /&gt;
* systemctl enable systemd-networkd&lt;br /&gt;
* systemctl restart systemd-networkd&lt;br /&gt;
* create /etc/netplan/50-dhcp.yaml&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  ethernets:&lt;br /&gt;
    all-en:&lt;br /&gt;
      match:&lt;br /&gt;
        name: &amp;quot;en*&amp;quot;&lt;br /&gt;
      dhcp4: true&lt;br /&gt;
      dhcp6: true&lt;br /&gt;
      ignore-carrier: true ### do not drop IP address if network link drops&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* netplan apply&lt;br /&gt;
* netplan try&lt;br /&gt;
* ifconfig -a ### to check IP address settings&lt;br /&gt;
* netstat -rn ### to check default route&lt;br /&gt;
* cat /etc/resolv.conf ### to check DNS&lt;br /&gt;
* ls -l /run/systemd/netif/leases ### systemd-networkd dhcp leases&lt;br /&gt;
* NOTE: without &amp;quot;ignore-carrier&amp;quot; it will drop the IP address if network link drops, re-do dhcp when links comes back&lt;br /&gt;
* NOTE: wait-network-online will wait for all interfaces to get an IP address&lt;br /&gt;
&lt;br /&gt;
== Ubuntu-20 ==&lt;br /&gt;
&lt;br /&gt;
NOTE: THIS IS BROKEN IN UBUNTU LTS 22.04&lt;br /&gt;
&lt;br /&gt;
NetworkManager is useful for configuring dynamic&lt;br /&gt;
network interfaces, i.e. laptops that often move&lt;br /&gt;
between networks, or connect to multiple choice&lt;br /&gt;
of wifi networks, etc.&lt;br /&gt;
&lt;br /&gt;
For machines with statically configured network interfaces,&lt;br /&gt;
NetworkManager is not necessary.&lt;br /&gt;
&lt;br /&gt;
As it has been observed to become confused and observed&lt;br /&gt;
to malfunction when network links go up and down (it keeps&lt;br /&gt;
unnecessarily reconfiguring the ip address, etc), it can&lt;br /&gt;
be usefuil to disable it.&lt;br /&gt;
&lt;br /&gt;
* list all network interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /bin/ls -1 /sys/class/net/&lt;br /&gt;
enp0s31f6&lt;br /&gt;
lo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/network/interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename enp0s31f6=eth0&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
   address 142.90.120.94/19&lt;br /&gt;
   gateway 142.90.100.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* statically configure systemd-resolved&lt;br /&gt;
** create /etc/systemd/resolved.conf.d/resolved.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=142.90.100.19&lt;br /&gt;
Domains=triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** systemctl restart systemd-resolved&lt;br /&gt;
** resolvectl&lt;br /&gt;
** systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
* disable NetworkManager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
== U-22, U-24 ifup-ko ==&lt;br /&gt;
&lt;br /&gt;
Network configuration of modern linux is confused. There are at least 3 configuration methods, each with different shortcomings:&lt;br /&gt;
* the old ifup method is barely documented&lt;br /&gt;
* NetworkManager is well documented and tooled, but sometimes does strange things&lt;br /&gt;
* systemd-networkd is mysterious, and likely to do strange stuff, like all systemd stuff&lt;br /&gt;
* netplan is the latest method, configuration is simple but uses NetworkManager or systemd-networkd as backend.&lt;br /&gt;
&lt;br /&gt;
This is a solution for a specific situation of fixed computer with one fixed wired interface and maybe one or more additional interfaces for fixed wired private networks.&lt;br /&gt;
&lt;br /&gt;
Install /etc/ifup-ko, edit it with IP addresses of main and additional interfaces, let systemd run it in the right place in the boot sequence replacing NetworkManager and NetworkManager-wait-online .&lt;br /&gt;
&lt;br /&gt;
As bonus, /etc/ifup-ko waits up to 10 seconds for the main interface link to come up. If this is not needed, comment it out from the script.&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ifup-ko&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* confirm interface names&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start ifup-ko ### should finish immediately or after 10 seconds&lt;br /&gt;
systemctl status ifup-ko -n 1000 ### observe list of interfaces is correct, name of main interface is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/ifup-ko&lt;br /&gt;
** add host IP address to the &amp;quot;ifconfig&amp;quot; line&lt;br /&gt;
** add gateway IP address to the &amp;quot;ip route add&amp;quot; line&lt;br /&gt;
* test&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start ifup-ko ### should finish immediately&lt;br /&gt;
systemctl status ifup-ko -n 1000 ### observe everything is configured as expected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cut-over&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable networkd-dispatcher&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
systemctl disable wpa_supplicant # if no Wifi or Wifi not in use&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Configure ECC memory =&lt;br /&gt;
&lt;br /&gt;
== Configure EDAC ==&lt;br /&gt;
&lt;br /&gt;
* apt install edac-utils rasdaemon&lt;br /&gt;
&lt;br /&gt;
=== Intel i3-2120 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@musr00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X9SCL/X9SCM&lt;br /&gt;
root@musr00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E-2236 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SCM-F&lt;br /&gt;
root@daq00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq00:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq00:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check edac sysfs files (Intel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:10 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank7&lt;br /&gt;
--w------- 1 root root 4096 Jan 25 15:10 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 25 15:10 uevent&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1270 v6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@grsnis01:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@grsnis01:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@grsnis01:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Feb 19 12:35 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank7&lt;br /&gt;
--w------- 1 root root 4096 Feb 19 12:35 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 19 12:35 uevent&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1245 v6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
[root@alphagdaq ~]# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
[root@alphagdaq ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------------------------------+&lt;br /&gt;
          |                      mc0                      |&lt;br /&gt;
          |  csrow0   |  csrow1   |  csrow2   |  csrow3   |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#3channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#3channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --summary&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: mc_event at /usr/sbin/ras-mc-ctl line 1129.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1130.&lt;br /&gt;
[root@alphagdaq ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3700X ===&lt;br /&gt;
&lt;br /&gt;
(memory is non-ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
root@daq13:~# edac-util &lt;br /&gt;
edac-util: Error: No memory controller data found.&lt;br /&gt;
root@daq13:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers loaded. No memory controllers found&lt;br /&gt;
root@daq13:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:26 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Jan 21 16:16 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 21 16:16 uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(memory is ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@trinatdaq:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@trinatdaq:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@trinatdaq:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Dec 15 13:04 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Dec 13 18:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 13 18:31 uevent&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank7&lt;br /&gt;
--w------- 1 root root 4096 Dec 15 13:04 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 uevent&lt;br /&gt;
root@trinatdaq:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 5000G ===&lt;br /&gt;
&lt;br /&gt;
* no linux driver for AMD 5000-series &amp;quot;G&amp;quot; CPU&lt;br /&gt;
* no mention of ECC in the BIOS settings&lt;br /&gt;
* unclear status of ECC support in AMD documentation (sais only &amp;quot;pro&amp;quot; &amp;quot;G&amp;quot; CPUs have ECC)&lt;br /&gt;
* unclear status of ECC support in ASUS documentation (web page out of date)&lt;br /&gt;
&lt;br /&gt;
=== AMD 5600X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-XE GAMING WIFI&lt;br /&gt;
root@daq17:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq17:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq17:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Aug 19 19:27 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 May 10 10:11 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 10 10:11 uevent&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank7&lt;br /&gt;
--w------- 1 root root 4096 Aug 19 19:27 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 uevent&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3955WX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 19 root root    0 Dez 12 04:48 mc0&lt;br /&gt;
drwxr-xr-x  2 root root    0 Dez 12 04:48 power&lt;br /&gt;
lrwxrwxrwx  1 root root    0 Dez  9 05:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r--  1 root root 4096 Dez  9 05:31 uevent&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# &lt;br /&gt;
root@alphasuperdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dez 12 04:48 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank10&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank11&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank12&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank13&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank14&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank15&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank7&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank8&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank9&lt;br /&gt;
--w------- 1 root root 4096 Feb 28 22:19 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 uevent&lt;br /&gt;
root@alphasuperdaq:~# &lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 868.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 869.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 872.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                                                                              mc0                                                                                              |&lt;br /&gt;
    |                                            csrow0                                             |                                            csrow1                                             |&lt;br /&gt;
    | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#0channel#2	0	0&lt;br /&gt;
mc#0csrow#1channel#7	0	0&lt;br /&gt;
mc#0csrow#0channel#3	0	0&lt;br /&gt;
mc#0csrow#1channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#2	0	0&lt;br /&gt;
mc#0csrow#0channel#7	0	0&lt;br /&gt;
mc#0csrow#1channel#3	0	0&lt;br /&gt;
mc#0csrow#0channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#6	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#6	0	0&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: ASUSTeK COMPUTER INC. model Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@alphasuperdaq:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 7700X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsfe05:~# apt install edac-utils&lt;br /&gt;
root@dsfe05:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro H13SAE-MF&lt;br /&gt;
root@dsfe05:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@dsfe05:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@dsfe05:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@dsfe05:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 May 14 09:33 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 May 14 09:33 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 May 14 09:33 rank5&lt;br /&gt;
--w------- 1 root root 4096 May 14 09:33 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 14 09:33 uevent&lt;br /&gt;
root@dsfe05:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure rasdaemon ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable rasdaemon&lt;br /&gt;
systemctl restart rasdaemon&lt;br /&gt;
systemctl status rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Mon 2021-01-25 15:16:37 PST; 3min 5s ago&lt;br /&gt;
   Main PID: 2477175 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 76958)&lt;br /&gt;
     Memory: 17.1M&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─2477175 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Listening to events for cpus 0 to 11&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mc_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording aer_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording extlog_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mce_record events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording arm_event events&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get reports ==&lt;br /&gt;
&lt;br /&gt;
* Intel 2x32GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-------------------------+&lt;br /&gt;
          |           mc0           |&lt;br /&gt;
          |   csrow0   |   csrow1   |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
channel1: |  16384 MB  |  16384 MB  |&lt;br /&gt;
channel0: |  16384 MB  |  16384 MB  |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Intel 4x16GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
mc#0csrow#2channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#2channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#3channel#0    0       0&lt;br /&gt;
mc#0csrow#3channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------+&lt;br /&gt;
          |          mc0          |&lt;br /&gt;
          |  csrow0   |  csrow1   |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: ubuntu LTS 22.04 DBD::SQLite::db error is not there.&lt;br /&gt;
&lt;br /&gt;
* AMD 7700 2x32GB DDR5 ECC DIMMs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsfe05:~# systemctl status rasdaemon&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Tue 2024-05-14 09:36:43 PDT; 33ms ago&lt;br /&gt;
    Process: 4088418 ExecStartPost=/usr/sbin/rasdaemon --enable (code=exited, status=0/SUCCESS)&lt;br /&gt;
   Main PID: 4088417 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 37300)&lt;br /&gt;
     Memory: 788.0K&lt;br /&gt;
        CPU: 5ms&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─4088417 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: ras:aer_event event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event ras:aer_event&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: mce:mce_record event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event mce:mce_record&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: ras:extlog_mem_event event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event ras:extlog_mem_event&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording mc_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording aer_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording extlog_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording mce_record events&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 907.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 908.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 911.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                              mc0                                              |&lt;br /&gt;
    |        csrow0         |        csrow1         |        csrow2         |        csrow3         |&lt;br /&gt;
    | channel0  | channel1  | channel0  | channel1  | channel0  | channel1  | channel0  | channel1  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------+&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model H13SAE-MF&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model H13SAE-MF&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
No MCE errors.&lt;br /&gt;
root@dsfe05:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= sensors =&lt;br /&gt;
&lt;br /&gt;
== VME CPU V7865 ==&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe lm75&lt;br /&gt;
modprobe lm90&lt;br /&gt;
modprobe max1668&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
available sensors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@lxdaq23:~# sensors&lt;br /&gt;
max6657-i2c-0-4c&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +29.1°C  (low  = -55.0°C, high = +105.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst = +95.0°C)&lt;br /&gt;
temp2:        +31.5°C  (low  = -55.0°C, high = +105.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst = +95.0°C)&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Core 0:       +25.0°C  (crit = +100.0°C)&lt;br /&gt;
Core 1:       +25.0°C  (crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
max1805-i2c-0-18&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +35.0°C  (low  = -55.0°C, high = +127.0°C)&lt;br /&gt;
temp2:        +63.0°C  (low  = -55.0°C, high = +127.0°C)&lt;br /&gt;
temp3:          FAULT  (low  = -55.0°C, high = +127.0°C)  ALARM (HIGH)&lt;br /&gt;
&lt;br /&gt;
lm75-i2c-0-48&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +34.5°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
&lt;br /&gt;
root@lxdaq23:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS P7P55D EVO ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 2101&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@iris01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Core 0:       +34.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 1:       +37.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 2:       +38.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 3:       +35.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0100&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.05 V)&lt;br /&gt;
temp1:        +46.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
atk0110-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
Vcore Voltage:      864.00 mV (min =  +0.80 V, max =  +1.60 V)&lt;br /&gt;
+3.3V Voltage:        3.38 V  (min =  +2.97 V, max =  +3.63 V)&lt;br /&gt;
+5V Voltage:          5.04 V  (min =  +4.50 V, max =  +5.50 V)&lt;br /&gt;
+12V Voltage:        12.15 V  (min = +10.20 V, max = +13.80 V)&lt;br /&gt;
CPU Fan Speed:       968 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Chassis1 Fan Speed: 1288 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Chassis2 Fan Speed: 1316 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Power Fan Speed:       0 RPM  (min =    0 RPM, max = 7200 RPM)&lt;br /&gt;
CPU Temperature:     +34.0°C  (high = +45.0°C, crit = +45.5°C)&lt;br /&gt;
MB Temperature:      +30.0°C  (high = +45.0°C, crit = +46.0°C)&lt;br /&gt;
&lt;br /&gt;
root@iris01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z97-WS ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 2704&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in /boot/grub/grub.cfg, add: GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;acpi_enforce_resources=no&amp;quot;&lt;br /&gt;
* update grub and reboot: grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@isdaq08:~# sensors&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  &lt;br /&gt;
temp2:        +29.8°C  &lt;br /&gt;
&lt;br /&gt;
nct6791-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:                 888.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                     1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:                    3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:                   3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                     1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                     1.99 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
3VSB:                    3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:                    3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                     1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in11:                  840.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in13:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                  1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                  1040 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                 +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:                 +41.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:               -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:               -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                +35.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:               +127.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:           +41.0°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:           +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:            +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:            +0.0°C  &lt;br /&gt;
PCH_DIM0_TEMP:           +0.0°C  &lt;br /&gt;
intrusion0:            ALARM&lt;br /&gt;
intrusion1:            ALARM&lt;br /&gt;
beep_enable:           disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +42.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +42.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +40.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +39.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +39.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
root@isdaq08:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z170-DELUXE ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 3801&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe jc42 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe lm92 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in /boot/grub/grub.cfg, add: GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;acpi_enforce_resources=no&amp;quot;&lt;br /&gt;
* update grub and reboot: grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@iris00:~# sensors&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      600.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      144.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                        0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in7:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                      1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     600.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     592.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     968.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1370 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1437 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +32.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +42.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                  -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +50.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +28.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +50.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +42.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:               +0.0°C  &lt;br /&gt;
TSI2_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI3_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI4_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI5_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI6_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI7_TEMP:                +3892314.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-1a&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +36.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-18&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +34.8°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-1b&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +35.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-19&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +36.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +52.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +52.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +48.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +47.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
root@iris00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z390M-PRO GAMING (WI-FI) ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 3006&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq18:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      696.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      208.00 mV (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in6:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.17 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.07 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1131 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                     1006 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +32.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +29.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +25.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN1:                    +7.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN2:                    +8.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +24.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN4:                   +83.0°C  (high = +80.0°C, hyst = +75.0°C)  ALARM&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +29.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:               +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +39.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +39.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +33.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +31.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 4:        +31.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 5:        +30.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  &lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +28.0°C  &lt;br /&gt;
&lt;br /&gt;
root@daq18:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS H110M-A/M.2 ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 4202&lt;br /&gt;
* echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midpol:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +33.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +33.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +30.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      368.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      152.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      928.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                      1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     152.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                     128.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                     136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     120.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1004 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1143 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                   +118.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +29.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +30.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +110.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +31.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +36.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
TSI2_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI3_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI4_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI5_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI6_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI7_TEMP:                +3892314.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
root@midpol:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS P9X79 WS ==&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/supportonly/P9X79%20WS/HelpDesk_Manual/&lt;br /&gt;
* BIOS version 4802&lt;br /&gt;
* modprobe nct6775&lt;br /&gt;
* modprobe coretemp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq14:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +29.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +24.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0200&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +39.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6776-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:           1.04 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:            3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:           3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:             2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:           904.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
3VSB:            3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:            3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:          1265 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:          1909 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:             0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:         +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:         +58.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermal diode&lt;br /&gt;
AUXTIN:         +31.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
PECI Agent 0:   +31.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                         (crit = +96.0°C)&lt;br /&gt;
PCH_CHIP_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:    +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:    +0.0°C  &lt;br /&gt;
intrusion0:    ALARM&lt;br /&gt;
intrusion1:    ALARM&lt;br /&gt;
beep_enable:   disabled&lt;br /&gt;
&lt;br /&gt;
root@daq14:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS TUF GAMING B550M-PLUS WIFI II ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 2803, 2806&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9a:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      488.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.82 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      760 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                     1264 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +25.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +22.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +95.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +25.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +25.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +25.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +23.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +32.4°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
amdgpu-pci-0800&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:        1.45 V  &lt;br /&gt;
vddnb:       993.00 mV &lt;br /&gt;
edge:         +28.0°C  &lt;br /&gt;
PPT:          20.00 W  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +33.4°C  &lt;br /&gt;
&lt;br /&gt;
root@midm9a:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS ASUS ROG STRIX B550-XE GAMING WIFI ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 2423, 2604&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      344.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                      992.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      216.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.81 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                     960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     280.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                      845 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      998 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +28.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +27.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +94.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +28.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +28.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +97.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +27.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +33.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
amdgpu-pci-0600&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:        1.45 V  &lt;br /&gt;
vddnb:       999.00 mV &lt;br /&gt;
edge:         +29.0°C  &lt;br /&gt;
PPT:          14.00 W  &lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +30.0°C  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +33.9°C  &lt;br /&gt;
&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS ASUS ROG STRIX B550-E GAMING ==&lt;br /&gt;
&lt;br /&gt;
* bios 2803&lt;br /&gt;
* echo modprobe jc42 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# sensors&lt;br /&gt;
jc42-i2c-1-1b&lt;br /&gt;
Adapter: SMBus PIIX4 adapter port 0 at 0b00&lt;br /&gt;
temp1:        +25.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +28.0°C  &lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0800&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +34.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      288.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      224.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.31 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.79 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     280.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                      843 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      629 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                      746 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +22.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +25.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +93.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +96.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +27.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-1-1a&lt;br /&gt;
Adapter: SMBus PIIX4 adapter port 0 at 0b00&lt;br /&gt;
temp1:        +23.2°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
asusec-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
CPU_Opt:        0 RPM&lt;br /&gt;
Chipset:      +34.0°C  &lt;br /&gt;
CPU:          +25.0°C  &lt;br /&gt;
Motherboard:  +22.0°C  &lt;br /&gt;
T_Sensor:     -40.0°C  &lt;br /&gt;
VRM:          +31.0°C  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +28.0°C  &lt;br /&gt;
Tccd1:        +27.5°C  &lt;br /&gt;
&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS PRIME B650-PLUS ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 1811&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsdaqgw:~# sensors&lt;br /&gt;
amdgpu-pci-0b00&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:      930.00 mV &lt;br /&gt;
vddnb:         1.19 V  &lt;br /&gt;
edge:         +38.0°C  &lt;br /&gt;
PPT:          25.10 W  &lt;br /&gt;
&lt;br /&gt;
nct6799-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      920.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      320.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.10 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     416.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     328.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1253 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +33.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +35.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +78.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +11.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +20.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +82.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +35.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +42.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               OK&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +42.6°C  &lt;br /&gt;
Tccd1:        +36.4°C  &lt;br /&gt;
&lt;br /&gt;
root@dsdaqgw:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable CPU turbo mode =&lt;br /&gt;
&lt;br /&gt;
* Intel CPU has a nominal CPU frequency (i.e. 3.4GHz) and a turbo-boost CPU frequency (i.e. 4.0GHz). Here we will enable this turbo-boost mode.&lt;br /&gt;
* Find out CPU capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# lscpu | grep Hz&lt;br /&gt;
Model name:                      Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz&lt;br /&gt;
CPU MHz:                         3965.803&lt;br /&gt;
CPU max MHz:                     4000.0000&lt;br /&gt;
CPU min MHz:                     800.0000&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Look up this CPU in the Intel ARK database - google for the CPU model name, i.e.&lt;br /&gt;
https://ark.intel.com/content/www/us/en/ark/products/88196/intel-core-i7-6700-processor-8m-cache-up-to-4-00-ghz.html&lt;br /&gt;
* Find current frequency settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;powersave&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 2.72 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note the following:&lt;br /&gt;
** current governor is &amp;quot;powersave&amp;quot;&lt;br /&gt;
** &amp;quot;performance&amp;quot; governor is available&lt;br /&gt;
** &amp;quot;boost state support&amp;quot; is supported and active.&lt;br /&gt;
* Confirm CPU frequency governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Change governor to &amp;quot;performance&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-set --governor performance&lt;br /&gt;
Setting cpu: 0&lt;br /&gt;
Setting cpu: 1&lt;br /&gt;
Setting cpu: 2&lt;br /&gt;
Setting cpu: 3&lt;br /&gt;
Setting cpu: 4&lt;br /&gt;
Setting cpu: 5&lt;br /&gt;
Setting cpu: 6&lt;br /&gt;
Setting cpu: 7&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;performance&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 3.93 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* monitor CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower monitor&lt;br /&gt;
    | Nehalem                   || Mperf              || Idle_Stats                                     &lt;br /&gt;
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6   | C7s  | C8    &lt;br /&gt;
   0|  0.00|  0.00|  0.00|  0.00|| 88.80| 11.20|  3973||  0.00|  0.00|  0.01|  0.02|  0.31|  0.00|  4.25&lt;br /&gt;
   4|  0.00|  0.00|  0.00|  0.00||  4.70| 95.30|  3945||  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 95.03&lt;br /&gt;
   1|  0.73|  3.70|  0.00|  0.00||  4.52| 95.48|  3864||  0.00|  0.01|  1.19|  0.44|  2.82|  0.00| 90.23&lt;br /&gt;
   5|  0.73|  3.70|  0.00|  0.00||  0.37| 99.63|  3807||  0.00|  0.00|  0.03|  0.09|  1.70|  0.00| 97.64&lt;br /&gt;
   2|  2.28| 12.86|  0.00|  0.00||  1.41| 98.59|  3829||  0.00|  0.86|  3.17|  0.46|  7.70|  0.00| 85.87&lt;br /&gt;
   6|  2.28| 12.86|  0.00|  0.00||  2.88| 97.12|  3856||  0.00|  0.11|  4.56|  2.15| 10.31|  0.00| 78.99&lt;br /&gt;
   3|  1.33|  4.81|  0.00|  0.00||  0.99| 99.01|  3804||  0.00|  0.49|  0.79|  0.01|  1.03|  0.00| 96.12&lt;br /&gt;
   7|  1.34|  4.81|  0.00|  0.00||  1.26| 98.74|  3818||  0.00|  0.01|  2.32|  0.47|  5.02|  0.00| 90.06&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that the CPU is not overheating:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +38.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +34.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* congratulations, we are running at 4 GHz now!&lt;br /&gt;
&lt;br /&gt;
= Setup ubuntu as gateway to private network =&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* https://daq.triumf.ca/DaqWiki/index.php/VME-CPU#Setup_the_boot_host_computer_.28el7.29&lt;br /&gt;
* http://www.triumf.info/wiki/DAQwiki/index.php/Dhcpd_on_eth1&lt;br /&gt;
&lt;br /&gt;
== Steps to do ==&lt;br /&gt;
&lt;br /&gt;
!!! UPDATED 16feb2024 Ubuntu-22.04.03 !!!&lt;br /&gt;
&lt;br /&gt;
* assign network numbers to the private network, i.e. 192.168.1.x, 192.168.2.x, etc&lt;br /&gt;
* (on the gateway machine, each private network interface has to have a different network number)&lt;br /&gt;
* (each network interface can have multiple networks attached, via VLANs or via eth0:0, eth0:1 constructs)&lt;br /&gt;
* assign IP addresses on the private network, save them in /etc/hosts i.e. &amp;quot;hvps 192.168.1.10&amp;quot;&lt;br /&gt;
* (for simplicity, assign 192.168.1.1 to the gateway machine itself)&lt;br /&gt;
* (IP addresses 192.168.1.0 and 192.168.1.255 are &amp;quot;special&amp;quot;, do not use them)&lt;br /&gt;
* setup DNS server (dnsmasq) to serve contents of /etc/hosts via DNS (otherwise, many programs will see inconsistent name to IP address mapping)&lt;br /&gt;
* setup DHCP server (dnsmasq) to give out the IP addresses&lt;br /&gt;
* setup TFTP server (dnsmasq), pxelinux and NFS for diskless booting&lt;br /&gt;
* setup time server (chronyd) to provide common time to all devices&lt;br /&gt;
* setup NAT so machines on private network can access the internet (to get OS updates, etc)&lt;br /&gt;
* setup NIS and NFS so machines on the private network can use common home directories&lt;br /&gt;
* setup rsync backup of machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup hosts ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.101 dsfe01&lt;br /&gt;
... and so forth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup dns and dhcp ==&lt;br /&gt;
&lt;br /&gt;
!!! updated 16feb2024 for Ubuntu 22.04.3 !!!&lt;br /&gt;
&lt;br /&gt;
!!! note: stock systemd-resolved remains, is configured to forward queries to dnsmasq, configured to forward queries to TRIUMF DNS !!!&lt;br /&gt;
&lt;br /&gt;
!!! note: per authors of systemd, bare hostnames are not permitted, a DNS domain name must always be used. DNS domain name &amp;quot;dsdaq&amp;quot; is used in this example !!!&lt;br /&gt;
&lt;br /&gt;
* apt install dnsmasq&lt;br /&gt;
* ensure dnsmasq starts after all interfaces are up (Ubuntu-22)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/dnsmasq.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/dnsmasq.service.d/local.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/dnsmasq.conf&lt;br /&gt;
# DNS settings &lt;br /&gt;
#port=0 # disable DNS function &lt;br /&gt;
port=53 # enable DNS function &lt;br /&gt;
bind-interfaces # do not collide with systemd-resolved, we use 127.0.0.1:53, they use 127.0.0.53:53 &lt;br /&gt;
domain-needed &lt;br /&gt;
bogus-priv &lt;br /&gt;
no-resolv &lt;br /&gt;
#log-queries # log DNS quesries &lt;br /&gt;
 &lt;br /&gt;
# TRIUMF DNS settings &lt;br /&gt;
 &lt;br /&gt;
server=142.90.100.19 &lt;br /&gt;
expand-hosts &lt;br /&gt;
domain=dsdaq &lt;br /&gt;
local=/dsdaq/ &lt;br /&gt;
localmx # do not forward MX queries to TRIUMF &lt;br /&gt;
&lt;br /&gt;
# DHCP settings &lt;br /&gt;
interface=enp1s0f0 # VX network 192.168.0.x &lt;br /&gt;
#interface=missing  # FEP and TSP network 192.168.1.x &lt;br /&gt;
interface=enp1s0f1 # controls network 192.168.2.x &lt;br /&gt;
#dhcp-range=192.168.1.50,192.168.1.150,infinite &lt;br /&gt;
dhcp-range=192.168.0.0,static &lt;br /&gt;
dhcp-range=192.168.2.0,static &lt;br /&gt;
log-dhcp # log DHCP queries &lt;br /&gt;
#quiet-dhcp &lt;br /&gt;
dhcp-ignore=tag:!known &lt;br /&gt;
#dhcp-boot=pxelinux.0 &lt;br /&gt;
 &lt;br /&gt;
dhcp-option=option:dns-server,192.168.0.248 &lt;br /&gt;
dhcp-option=option:ntp-server,192.168.0.248 &lt;br /&gt;
 &lt;br /&gt;
# TFTP settings &lt;br /&gt;
 &lt;br /&gt;
enable-tftp &lt;br /&gt;
tftp-root=/tftpboot &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* #mkdir /tftpboot ### per tftp-root (if no ZFS)&lt;br /&gt;
* zfs create -o mountpoint=/tftpboot rpool/tftpboot ### (if root is ZFS)&lt;br /&gt;
* create resolved-dsdaq.conf with main IP address of dnsmasq&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=192.168.0.248&lt;br /&gt;
Domains=dsdaq triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir -p /etc/systemd/resolved.conf.d/&lt;br /&gt;
* /bin/rm -f /etc/systemd/resolved.conf.d/*.conf&lt;br /&gt;
* cp resolved-dsdaq.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
* systemctl stop systemd-resolved.service&lt;br /&gt;
* systemctl disable systemd-resolved.service&lt;br /&gt;
* systemctl enable dnsmasq&lt;br /&gt;
* systemctl restart dnsmasq&lt;br /&gt;
* try to &amp;quot;ping&amp;quot; or &amp;quot;host&amp;quot; some names from /etc/hosts, it should work&lt;br /&gt;
* try to ping daq00, daq00.triumf.ca, all should work&lt;br /&gt;
* resolved-dsdaq.conf goes into /etc/systemd/resolved.conf.d/ of all machines on the private network&lt;br /&gt;
* if not using systemd-resolved, edit /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
== setup chronyd ==&lt;br /&gt;
&lt;br /&gt;
* enable ntp server:&lt;br /&gt;
* disable systemd-timesyncd, configure and enable chronyd per instructions above&lt;br /&gt;
* create dsdaq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# chrony config for dsdaq server&lt;br /&gt;
&lt;br /&gt;
#allow 192.168.0.0&lt;br /&gt;
#allow 192.168.1.0&lt;br /&gt;
#allow 192.168.2.0&lt;br /&gt;
allow all&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cp dsdaq.conf /etc/chrony/conf.d/&lt;br /&gt;
* systemctl restart chronyd&lt;br /&gt;
* chronyc tracking ### wait until time is synchronized (a few seconds)&lt;br /&gt;
* create dsdaq.sources # use hostname or IP address of chronyd server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Put this file in /etc/chrony/sources.d&lt;br /&gt;
# systemctl restart chrony&lt;br /&gt;
# chronyc sources&lt;br /&gt;
# chronyc tracking&lt;br /&gt;
server dsdaqgw iburst prefer&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* dsdaq.sources goes to /etc/chrony/sources.d of all machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup diskless network booting ==&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux for legacy pxe boot ===&lt;br /&gt;
&lt;br /&gt;
* add bits in dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dhcp-host=ac:1f:6b:9e:7f:4a,dsfe01,infinite&lt;br /&gt;
dhcp-boot=pxelinux.0&lt;br /&gt;
dhcp-option=17,&amp;quot;192.168.0.251:/nfsroot/%s,vers=3&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup pxelinux for Ubuntu-18&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2&lt;br /&gt;
tar xjvf syslinux-4.03.tar.bz2&lt;br /&gt;
cd syslinux-4.03&lt;br /&gt;
cp -pv ./core/pxelinux.0 ./com32/hdt/hdt.c32 ./memdisk/memdisk ./com32/menu/menu.c32 /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.iso.zip&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.iso.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.alias&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.pcimap&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/pci.ids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir pxelinux.cfg&lt;br /&gt;
* emacs -nw pxelinux.cfg/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSVSLICE PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label hdt&lt;br /&gt;
  kernel hdt.c32&lt;br /&gt;
&lt;br /&gt;
label memtest86+-5.01 &lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-5.01.iso.gz &lt;br /&gt;
&lt;br /&gt;
label memtest86+-4.20&lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-4.20.iso.zip&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-5.3.0-26-generic&lt;br /&gt;
  menu default&lt;br /&gt;
  kernel vmlinuz-5.3.0-26-generic&lt;br /&gt;
  append initrd=initrd.img-5.3.0-26-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.1.1:/zssd/nfsroot/dsfe01 toram ip=dhcp panic=60 BOOTIF=enp1s0f0&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux for efi pxe boot ===&lt;br /&gt;
&lt;br /&gt;
* https://c-nergy.be/blog/?p=13808&lt;br /&gt;
* add dnsmasq.conf bits. note: to use dhcp root-path, see the &amp;quot;nfsroot=auto&amp;quot; patch below and make sure to use the &amp;quot;dhcp-option-force&amp;quot; command (mkinitramfs dhcp client does not ask for root-path, we have to force-feed it).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# uefi pxe&lt;br /&gt;
&lt;br /&gt;
dhcp-boot=tag:uefipxe,uefi/syslinux.efi&lt;br /&gt;
dhcp-option-force=tag:fe01,option:root-path,192.168.0.248:/nfsroot/fe01&lt;br /&gt;
&lt;br /&gt;
# VX network 192.168.0.x&lt;br /&gt;
&lt;br /&gt;
dhcp-host=40:a6:b7:c1:d9:c5,fe01,infinite,set:uefipxe,set:fe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt install syslinux pxelinux syslinux-common syslinux-efi syslinux-utils&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /tftpboot/uefi&lt;br /&gt;
cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/menu.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/hdt.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libutil.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libmenu.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libcom32.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libgpl.c32 /tftpboot/uefi/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, it should bomb with &amp;quot;cannot load pxelinux.cfg/default&amp;quot;&lt;br /&gt;
* mkdir /tftpboot/uefi/pxelinux.cfg&lt;br /&gt;
* create /tftpboot/uefi/pxelinux.cfg/default, note nfsroot path is hardwired, note &amp;quot;http:&amp;quot; is used to load vmlinuz and initrd files (because tftp is super slow)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSDAQGW UEFI PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-6.5.0-17-generic&lt;br /&gt;
  kernel http://192.168.0.248:8088/uefi/vmlinuz-6.5.0-17-generic&lt;br /&gt;
  append initrd=http://192.168.0.248:8088/uefi/initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=auto rw ip=dhcp panic=60&lt;br /&gt;
&lt;br /&gt;
# append initrd=http://192.168.0.248:8088/uefi/initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.0.248:/nfsroot/fe01 rw ip=dhcp panic=60&lt;br /&gt;
&lt;br /&gt;
#  append initrd=initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.0.248:/nfsroot/fe01 rw ip=dhcp panic=60&lt;br /&gt;
#  append initrd=initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=auto ip=dhcp rw panic=60&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, it will bomb with &amp;quot;cannot load http://....&amp;quot;&lt;br /&gt;
* install mini_httpd on port 8088, see https://acme.com/software/mini_httpd/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install mini-httpd&lt;br /&gt;
emacs -nw /etc/default/mini-httpd # set &amp;quot;START=1&amp;quot;&lt;br /&gt;
emacs -nw /etc/mini-httpd.conf # set &amp;quot;host=192.168.0.248&amp;quot;, &amp;quot;port=8088&amp;quot;, &amp;quot;data_dir=/tftpboot&amp;quot;&lt;br /&gt;
mkdir /etc/systemd/system/mini-httpd.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/mini-httpd.service.d/local.conf&lt;br /&gt;
systemctl enable mini-httpd&lt;br /&gt;
systemctl restart mini-httpd&lt;br /&gt;
systemctl status mini-httpd&lt;br /&gt;
wget http://192.168.0.248:8088/uefi/syslinux.efi&lt;br /&gt;
tail -100 /var/log/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix U-22 initramfs bug for &amp;quot;nfsroot=auto&amp;quot;, otherwise, &amp;quot;nfsroot=&amp;quot; has to be different for each machine and you have to have separate pxelinux config files for each machine&lt;br /&gt;
** emacs -nw /usr/lib/initramfs-tools/etc/dhcp/dhclient-enter-hooks.d/config&lt;br /&gt;
** add &amp;quot;echo ROOTPATH=...&amp;quot; if it is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                echo &amp;quot;ROOTSERVER=&#039;${new_routers%% *}&#039;&amp;quot; &lt;br /&gt;
                echo &amp;quot;ROOTPATH=&#039;$new_root_path&#039;&amp;quot; &lt;br /&gt;
                echo &amp;quot;HOSTNAME=&#039;$new_host_name&#039;&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix U-24 initramfs bug for &amp;quot;nfsroot=auto&amp;quot;, otherwise, &amp;quot;nfsroot=&amp;quot; has to be different for each machine and you have to have separate pxelinux config files for each machine&lt;br /&gt;
** emacs -nw /usr/share/initramfs-tools/dhcpcd-hooks/70-net-conf&lt;br /&gt;
** add &amp;quot;ROOTPATH=...&amp;quot; if it is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DNSDOMAIN=&#039;${new_domain_name-}&#039;                                                                                                                                                &lt;br /&gt;
ROOTSERVER=&#039;${new_routers-}&#039;                                                                                                                                                   &lt;br /&gt;
ROOTPATH=&#039;${new_root_path-}&#039;                                                                                                                                                   &lt;br /&gt;
filename=&#039;${new_filename-}&#039;                                                                                                                                                    &lt;br /&gt;
DHCPLEASETIME=&#039;${new_dhcp_lease_time-}&#039;                                                                                                                                        &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** regenerate initramfs (be careful you generate it for the right kernel!)&lt;br /&gt;
** see https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/2054482&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkinitramfs 6.5.0-18-generic&lt;br /&gt;
mkinitramfs 6.8.0-51-generic -o /boot/initrd.img-6.8.0-51-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux kernel and initrd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz-6.5.0-18-generic /tftpboot/uefi/&lt;br /&gt;
cp /boot/initrd.img-6.5.0-18-generic /tftpboot/uefi/&lt;br /&gt;
chmod a+r /tftpboot/uefi/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, should bomb with messages about &amp;quot;trying to mount root filesystem&amp;quot;&lt;br /&gt;
* tail /var/log/syslog&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 vendor class: PXEClient:Arch:00007:UNDI:003016&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 1:netmask, 2:time-offset, 3:router, 4, 5, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 6:dns-server, 12:hostname, 13:boot-file-size, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 15:domain-name, 17:root-path, 18:extension-path, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 22:max-datagram-reassembly, 23:default-ttl, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 28:broadcast, 40:nis-domain, 41:nis-server, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 42:ntp-server, 43:vendor-encap, 50:requested-address, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 51:lease-time, 54:server-identifier, 58:T1, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 59:T2, 60:vendor-class, 66:tftp-server, 67:bootfile-name, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 97:client-machine-id, 128, 129, 130, 131, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 132, 133, 134, 135&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 broadcast response&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 18 option: 67 bootfile-name  uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 vendor class: PXEClient:Arch:00007:UNDI:003016&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 1:netmask, 2:time-offset, 3:router, 4, 5, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 6:dns-server, 12:hostname, 13:boot-file-size, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 15:domain-name, 17:root-path, 18:extension-path, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 22:max-datagram-reassembly, 23:default-ttl, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 28:broadcast, 40:nis-domain, 41:nis-server, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 42:ntp-server, 43:vendor-encap, 50:requested-address, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 51:lease-time, 54:server-identifier, 58:T1, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 59:T2, 60:vendor-class, 66:tftp-server, 67:bootfile-name, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 97:client-machine-id, 128, 129, 130, 131, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 132, 133, 134, 135&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 broadcast response&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 18 option: 67 bootfile-name  uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: error 8 User aborted the transfer received from 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/syslinux.efi to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/syslinux.efi to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 requested options: 1:netmask, 3:router, 6:dns-server&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 broadcast response&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 requested options: 1:netmask, 3:router, 6:dns-server&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 broadcast response&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/ldlinux.e64 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/01-40-a6-b7-c1-d9-c5 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8006E not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8006 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A800 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A80 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/pxelinux.cfg/default to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/menu.c32 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:10 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/libutil.c32 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:10 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/pxelinux.cfg/default to 192.168.0.110&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 client provides name: dsdaqgw.triumf.ca&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 1:netmask, 28:broadcast, 2:time-offset, 3:router, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 15:domain-name, 6:dns-server, 119:domain-search, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 12:hostname, 44:netbios-ns, 47:netbios-scope, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 26:mtu, 121:classless-static-route, 42:ntp-server&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 client provides name: dsdaqgw.triumf.ca&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 1:netmask, 28:broadcast, 2:time-offset, 3:router, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 15:domain-name, 6:dns-server, 119:domain-search, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 12:hostname, 44:netbios-ns, 47:netbios-scope, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 26:mtu, 121:classless-static-route, 42:ntp-server&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw rpc.mountd[3350210]: authenticated mount request from 192.168.0.110:981 for /nfsroot/fe01 (/nfsroot/fe01)&lt;br /&gt;
Feb 16 20:45:07 dsdaqgw rpc.mountd[3350210]: authenticated unmount request from 192.168.0.110:859 for /nfsroot/fe01/tmp/autoDY4k5u (/nfsroot/fe01)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tail /var/log/mini_httpd.log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.0.110 - - [16/Feb/2024:20:43:15 -0800] &amp;quot;GET /uefi/vmlinuz-6.5.0-17-generic HTTP/1.0&amp;quot; 200 14227944 &amp;quot;&amp;quot; &amp;quot;Syslinux/6.04&amp;quot;&lt;br /&gt;
192.168.0.110 - - [16/Feb/2024:20:43:24 -0800] &amp;quot;GET /uefi/initrd.img-6.5.0-17-generic HTTP/1.0&amp;quot; 200 137824833 &amp;quot;&amp;quot; &amp;quot;Syslinux/6.04&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup efi http boot ===&lt;br /&gt;
&lt;br /&gt;
https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-deployment-prep-uefi-httpboot.html&lt;br /&gt;
&lt;br /&gt;
=== setup linux kernel ===&lt;br /&gt;
&lt;br /&gt;
* copy the kernel files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
rsync -av config* initrd* System.map* vmlinuz* /tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /tftpboot&lt;br /&gt;
* chmod a+r *&lt;br /&gt;
&lt;br /&gt;
=== setup nfs ===&lt;br /&gt;
&lt;br /&gt;
* apt-get install nfs-kernel-server&lt;br /&gt;
* enable NFS over UDP, edit /etc/nfs.conf add &amp;quot;udp=y&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
udp=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart nfs-server.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/exports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/nfsroot/dsfe01 dsfe01(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable services&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl enable nfs-mountd&lt;br /&gt;
systemctl enable nfs-idmapd&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
systemctl restart nfs-mountd&lt;br /&gt;
systemctl restart nfs-idmapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* after editing /etc/exports, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exportfs -av&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup userland ===&lt;br /&gt;
&lt;br /&gt;
!!! ubuntu-18 version !!!&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/nfsroot&lt;br /&gt;
* zfs set dedup=verify rpool/nfsroot ### enable deduplication to save disk space because most linux images have mostly identical files&lt;br /&gt;
* clone ubuntu&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /nfsroot/dsfe01&lt;br /&gt;
cd /&lt;br /&gt;
rsync -avx . /nfsroot/dsfe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit config files:&lt;br /&gt;
* cd /nfsroot/dsfe01&lt;br /&gt;
* emacs -nw etc/hostname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/mailname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/yp.conf ### change daq00.triumf.ca to musr00.triumf.ca&lt;br /&gt;
* emacs -nw etc/defaultdomain ### change to MUSR-NIS&lt;br /&gt;
* cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
* emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
* emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
* emacs -nw etc/fstab ### add this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/nfsroot/dsfe01 / nfs defaults,nolock 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw etc/chrony/chrony.conf&lt;br /&gt;
** comment-out all &amp;quot;pool&amp;quot; and &amp;quot;server&amp;quot; entries&lt;br /&gt;
** add entry &amp;quot;server 192.168.1.1 iburst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After dsfe01 is booted:&lt;br /&gt;
&lt;br /&gt;
* disable services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable apache2&lt;br /&gt;
systemctl disable dnsmasq&lt;br /&gt;
systemctl disable zfs-import-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup additional machines, clone dsfe01 instead of cloning the gateway machine&lt;br /&gt;
&lt;br /&gt;
=== Allow manpages to be viewed ===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted over NFS, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will report a permission error. Fix it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/&lt;br /&gt;
apparmor_parser -R /etc/apparmor.d/usr.bin.man&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup shared home directory ==&lt;br /&gt;
&lt;br /&gt;
=== on the gateway machine ===&lt;br /&gt;
* define netgroups&lt;br /&gt;
* emacs -nw /etc/netgroup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dsfe (dsfe01,,) (dsfe02,,)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/nsswitch.conf ### edit the netgroup line to read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netgroup: files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* export the home directories:&lt;br /&gt;
* emacs -nw /etc/exports ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/home1 @dsfe(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* exportfs -rc&lt;br /&gt;
&lt;br /&gt;
=== on the frontend machine ===&lt;br /&gt;
&lt;br /&gt;
* mkdir /home&lt;br /&gt;
* emacs -nw /etc/fstab ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/home1 /home nfs defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
&lt;br /&gt;
== setup NAT ==&lt;br /&gt;
&lt;br /&gt;
NAT allows machines on the private network to connect to the internet: https://en.wikipedia.org/wiki/Network_address_translation&lt;br /&gt;
&lt;br /&gt;
In these examples:&lt;br /&gt;
* replace &amp;quot;eno1&amp;quot; with name of the outgoing interface (the one connected to the TRIUMF network).&lt;br /&gt;
* replace &amp;quot;enp11s0&amp;quot; with name of the private network interface (192.168.1.x network)&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/rc.local ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
# enable NAT&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
# uncomment following lines if machine has prohibitive FORWARD rules:&lt;br /&gt;
#/sbin/iptables -I FORWARD -i eno1 -o enp11s0 -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
#/sbin/iptables -I FORWARD -i enp11s0 -o eno1 -j ACCEPT&lt;br /&gt;
#iptables -L -v&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
#sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
sh /etc/firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/firewall-rfc1918.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# prevent RFC1918 private network IP addresses from&lt;br /&gt;
# going in and out from our uplink.&lt;br /&gt;
&lt;br /&gt;
ETH=eno1&lt;br /&gt;
&lt;br /&gt;
iptables -F in-rfc1918&lt;br /&gt;
iptables -N in-rfc1918&lt;br /&gt;
iptables -A in-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -I INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -F out-rfc1918&lt;br /&gt;
iptables -N out-rfc1918&lt;br /&gt;
iptables -A out-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -I OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -D FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
iptables -D FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
iptables -I FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
&lt;br /&gt;
# allow TRIUMF-SECURE network&lt;br /&gt;
&lt;br /&gt;
iptables -I in-rfc1918 -s 10.90.0.0/255.255.0.0 -j ACCEPT &lt;br /&gt;
iptables -I out-rfc1918 -d 10.90.0.0/255.255.0.0 -j ACCEPT &lt;br /&gt;
&lt;br /&gt;
# show configuration&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= KVM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install cpu-checker&lt;br /&gt;
&lt;br /&gt;
root@daq13:~# kvm-ok &lt;br /&gt;
INFO: /dev/kvm exists&lt;br /&gt;
KVM acceleration can be used&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&lt;br /&gt;
(if not, shutdown, go into BIOS settings, enable CPU virtualization)&lt;br /&gt;
&lt;br /&gt;
apt install virtinst ### will install many packages&lt;br /&gt;
apt install libvirt-clients libvirt-daemon-system-systemd libvirt-daemon qemu qemu-kvm libvirt-daemon-system virtinst bridge-utils&lt;br /&gt;
&lt;br /&gt;
root@daq13:/home1/wheel# virsh list --all&lt;br /&gt;
 Id   Name           State&lt;br /&gt;
------------------------------&lt;br /&gt;
 1    ubuntu-guest   running&lt;br /&gt;
&lt;br /&gt;
apt install virt-manager&lt;br /&gt;
&lt;br /&gt;
virt-install --name ubuntu-guest --os-variant ubuntu20.04 --vcpus 2 --ram 2048 --location /daq/daqstore/olchansk/linux/Ubuntu/ubuntu-20.04.3-desktop-amd64.iso --network bridge=virbr0,model=virtio --graphics none --extra-args=&#039;console=ttyS0,115200n8 serial&#039;&lt;br /&gt;
&lt;br /&gt;
virtual machine will start, boot, etc&lt;br /&gt;
to get out of it, CTRL + Shift followed by ]&lt;br /&gt;
&lt;br /&gt;
ssh wheel@daq13&lt;br /&gt;
virt-manager&lt;br /&gt;
&lt;br /&gt;
run virt-install again, omit &amp;quot;--graphics none&amp;quot;, open graphics console from virt-manager, it booted into ubuntu installer desktop&lt;br /&gt;
&lt;br /&gt;
virt-install --name test10 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --filesystem /kvm_ladd00,/ --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial&amp;quot; --graphics none&lt;br /&gt;
&lt;br /&gt;
virt-install --name test14 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --disk /tmp/xxx/ladd00.img,bus=sata --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
build image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/tmp/xxx/ladd00.img bs=1024M count=20&lt;br /&gt;
mkfs.ext3 /tmp/xxx/ladd00.img ### ext4 fails to mount by SL6 kernel, &amp;quot;unknown ext4 options&amp;quot;&lt;br /&gt;
cd /kvm_ladd00/&lt;br /&gt;
mount -o loop /tmp/xxx/ladd00.img /mnt/tmp&lt;br /&gt;
rsync -av . /mnt/tmp/ --delete&lt;br /&gt;
umount /mnt/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the guest, configure network: /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script will be executed *after* all the other init scripts.&lt;br /&gt;
# You can put your own initialization stuff in here if you don&#039;t&lt;br /&gt;
# want to do the full Sys V style init stuff.&lt;br /&gt;
&lt;br /&gt;
touch /var/lock/subsys/local&lt;br /&gt;
&lt;br /&gt;
ifconfig eth2 192.168.122.2&lt;br /&gt;
route add -net 0.0.0.0 gw 192.168.122.1&lt;br /&gt;
ifconfig -a&lt;br /&gt;
netstat -rn&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== virtualize SL6 ladd00 ==&lt;br /&gt;
&lt;br /&gt;
* on ladd00:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
mkinitrd /boot/initramfs-2.6.32-754.35.1.el6.x86_64-netboot.img 2.6.32-754.35.1.el6.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* on daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs create rpool/kvm-ladd00&lt;br /&gt;
cd /kvm-ladd00&lt;br /&gt;
rsync -avx ladd00:/ . --exclude nfsroot&lt;br /&gt;
brctl addbr virbr0&lt;br /&gt;
ifconfig virbr0 192.168.1.1&lt;br /&gt;
echo /kvm-ladd00 192.168.1.2(rw,no_root_squash,no_all_squash,async,no_subtree_check) &amp;gt;&amp;gt; /etc/exports&lt;br /&gt;
exportfs -rv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virt-install --name kvm-ladd00 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=virtio --boot kernel=/kvm-ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm-ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64-netboot.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0:ladd00::off nfsroot=192.168.1.1:/kvm-ladd00 console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --nodisks --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* adjust kvm-ladd00 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit yp.conf&lt;br /&gt;
edit resolv.conf&lt;br /&gt;
edit root/.ssh/authorized_keys&lt;br /&gt;
enable rngd or /dev/random does not work, sshd does not work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* virsh shutdown test24&lt;br /&gt;
* virsh --connect qemu:///system start test24&lt;br /&gt;
* virsh console test24 ### to exit, ctrl+[ or ctrl+]&lt;br /&gt;
* virsh undefine test24&lt;br /&gt;
* virsh autostart kvm-ladd00&lt;br /&gt;
* virsh dominfo kvm-ladd00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# virsh dominfo kvm-ladd00&lt;br /&gt;
Id:             1&lt;br /&gt;
Name:           kvm-ladd00&lt;br /&gt;
UUID:           1d1f8fed-8b65-4411-a51b-e0ecf359d2f1&lt;br /&gt;
OS Type:        hvm&lt;br /&gt;
State:          running&lt;br /&gt;
CPU(s):         2&lt;br /&gt;
CPU time:       27.7s&lt;br /&gt;
Max memory:     2097152 KiB&lt;br /&gt;
Used memory:    2097152 KiB&lt;br /&gt;
Persistent:     yes&lt;br /&gt;
Autostart:      enable&lt;br /&gt;
Managed save:   no&lt;br /&gt;
Security model: apparmor&lt;br /&gt;
Security DOI:   0&lt;br /&gt;
Security label: libvirt-1d1f8fed-8b65-4411-a51b-e0ecf359d2f1 (enforcing)&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* delete unused images in /var/lib/libvirt/images&lt;br /&gt;
&lt;br /&gt;
= ARM64 cross-compiler =&lt;br /&gt;
&lt;br /&gt;
* arm64, aarch64 are Xilinx FPGA Cortex-A53, RPi4, RPi5 machines&lt;br /&gt;
* install packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install g++-12-aarch64-linux-gnu gcc-12-aarch64-linux-gnu-base libstdc++-12-dev-arm64-cross&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aarch64-linux-gnu-gcc-12 -o ttcp.aarch64 ttcp.c -static&lt;br /&gt;
aarch64-linux-gnu-g++-12 -o fecdm.exe -O2 -g -Wall -Wuninitialized -std=c++20 fecdm.o dsdm.o /home/dsdaqdev/packages_common/midas/linux-aarch64-remoteonly/lib/libmidas.a -pthread -lrt -lutil /nfsroot/gdm00/usr/lib/aarch64-linux-gnu/libi2c.a -static&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ARM cross-compiler =&lt;br /&gt;
&lt;br /&gt;
* armv7 (RPi3, MityARM CAMAC) machines (Debian-12 armhf target, Ubuntu 24.04 host)&lt;br /&gt;
* install packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf libstdc++-dev-armhf-cross libc6-dev-armhf-cross&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* build MIDAS frontend (static linking)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arm-linux-gnueabihf-g++ -std=c++11 -Wall -Wuninitialized -g -O2 -I/home/dldaq/packages/midas/include -I/home/dldaq/packages/midas/mvodb -c koi2c.cxx&lt;br /&gt;
arm-linux-gnueabihf-g++ -o fedldb.exe -std=c++11 -Wall -Wuninitialized -g -O2 -I/home/dldaq/packages/midas/include -I/home/dldaq/packages/midas/mvodb fedldb.o koi2c.o /home/dldaq/packages/midas/linux-armv7-remoteonly/lib/libmidas.a -L/usr/arm-linux-gnueabihf/lib -L/nfsroot/dltdc/usr/lib/arm-linux-gnueabihf -static -lm -lz -lutil -lnsl -lpthread -lrt -li2c&lt;br /&gt;
/usr/lib/gcc-cross/arm-linux-gnueabihf/13/../../../../arm-linux-gnueabihf/bin/ld: /home/dldaq/packages/midas/linux-armv7-remoteonly/lib/libmidas.a(system.o): in function `ss_socket_connect_tcp(char const*, int, int*, std::__cxx11::basic_string&amp;lt;char, std::char_traits&amp;lt;char&amp;gt;, std::allocator&amp;lt;char&amp;gt; &amp;gt;*)&#039;:&lt;br /&gt;
/home/dldaq/packages/midas/src/system.cxx:4984:(.text+0x252a): warning: Using &#039;getaddrinfo&#039; in statically linked applications requires at runtime the shared libraries from the glibc version used for linking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 32-bit intel cross-compiler =&lt;br /&gt;
&lt;br /&gt;
Ubuntu 22.04:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libstdc++-11-dev:i386&lt;br /&gt;
apt install zlib1g-dev:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* &amp;quot;g++ -m32&amp;quot; does not find libstdc++, please use &amp;quot;g++ -m32 -L/usr/lib/gcc/i686-linux-gnu/11/&amp;quot;&lt;br /&gt;
* to cross-build 32-bit MIDAS, use &amp;quot;make linux32&amp;quot;.&lt;br /&gt;
* executables cross-build on Ubuntu-22 do NOT run on 32-bit Debain-11 (GLIBC and GLIBCXX version mismatch)&lt;br /&gt;
* executables cross-build on Ubuntu-22 run on 32-bit Debian-12.&lt;br /&gt;
&lt;br /&gt;
= SSH settings for EPICS =&lt;br /&gt;
&lt;br /&gt;
* TRIUMF EPICS runs obsolete version of SSH&lt;br /&gt;
* add this to the use .ssh/config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host sbp1*&lt;br /&gt;
HostKeyAlgorithms +ssh-rsa&lt;br /&gt;
PubKeyAcceptedAlgorithms +ssh-rsa&lt;br /&gt;
KexAlgorithms +diffie-hellman-group1-sha1&lt;br /&gt;
ForwardX11 yes&lt;br /&gt;
ForwardX11Trusted yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= changes for VME processors =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove sysstat man-db&lt;br /&gt;
apt -y purge dkms&lt;br /&gt;
apt -y purge mdadm&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= remove snap (U-24) =&lt;br /&gt;
&lt;br /&gt;
Note: snap stores data in $USER/snap/$SNAPNAME, removing a snap on one machine will remove this data from all users even if they want to use snap on some other machine.&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove chromium ### see below&lt;br /&gt;
echo snap remove firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove firmware-updater&lt;br /&gt;
snap remove gtk-common-themes&lt;br /&gt;
snap remove snapd-desktop-integration&lt;br /&gt;
snap remove snap-store&lt;br /&gt;
snap remove hunspell-dictionaries-1-7-2004&lt;br /&gt;
snap remove gnome-system-monitor&lt;br /&gt;
snap remove gnome-3-26-1604&lt;br /&gt;
snap remove gnome-3-28-1804&lt;br /&gt;
snap remove gnome-3-34-1804&lt;br /&gt;
snap remove gnome-3-38-2004&lt;br /&gt;
snap remove gnome-42-2204&lt;br /&gt;
snap remove gnome-46-2404&lt;br /&gt;
snap remove mesa-2404&lt;br /&gt;
snap remove core&lt;br /&gt;
snap remove core18&lt;br /&gt;
snap remove core20&lt;br /&gt;
snap remove core22&lt;br /&gt;
snap remove core24&lt;br /&gt;
snap remove bare&lt;br /&gt;
snap remove snapd&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# snap list&lt;br /&gt;
No snaps are installed yet. Try &#039;snap install hello-world&#039;.&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identify packages that install snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list | grep snap | grep installed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox/noble,now 1:1snap1-0ubuntu5 amd64 [installed]&lt;br /&gt;
gir1.2-snapd-2/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnapd-glib-2-1/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnapd-qt-2-1/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnappy1v5/noble,now 1.1.10-1build1 amd64 [installed,automatic]&lt;br /&gt;
plasma-discover-backend-snap/noble,now 5.27.11-0ubuntu2 amd64 [installed]&lt;br /&gt;
snapd/noble-updates,now 2.66.1+24.04 amd64 [installed]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove packages that install snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chromium-browser&lt;br /&gt;
apt remove chromium-codecs-ffmpeg-extra&lt;br /&gt;
apt remove thunderbird&lt;br /&gt;
apt remove firefox&lt;br /&gt;
apt remove plasma-discover-backend-snap&lt;br /&gt;
apt remove plasma-discover-snap-backend&lt;br /&gt;
apt remove snapd&lt;br /&gt;
apt purge  snapd&lt;br /&gt;
# package gir1.2-snapd-2 is required by ubuntu-mate-desktop &amp;amp; co&lt;br /&gt;
# libsnapd-glib-2-1 is required by gstreamer, gnome-remote-desktop &amp;amp; co&lt;br /&gt;
ls -l /etc/systemd/system/ | grep snap ### remove unwanted stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove Chromium:&lt;br /&gt;
&lt;br /&gt;
* ls -ld /home/*/snap/chromium/*&lt;br /&gt;
* echo /bin/rm -rf `ls -1d /home/*/snap/chromium/*`&lt;br /&gt;
* snap remove chromium&lt;br /&gt;
&lt;br /&gt;
Remove Firefox:&lt;br /&gt;
&lt;br /&gt;
* ls -ld /home/*/snap/firefox/*&lt;br /&gt;
* echo /bin/rm -rf `ls -1d /home/*/snap/firefox/*` ### this will delete &amp;quot;snap firefox&amp;quot; profiles of all users!!!&lt;br /&gt;
* snap remove firefox ### this will also delete &amp;quot;snap firefox&amp;quot; profiles of all users!!!&lt;br /&gt;
&lt;br /&gt;
Remove gir1.2-snapd-2:&lt;br /&gt;
* echo rm -vf /usr/lib/x86_64-linux-gnu/girepository-1.0/Snapd-2.typelib&lt;br /&gt;
&lt;br /&gt;
= boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* NOTE: extlinux is not compatible with ext4 &amp;quot;64bit&amp;quot; feature, it should be turned off:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 -O ^64bit /dev/sdX1&lt;br /&gt;
resize2fs -s /dev/sdX1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install syslinux and extlinux (THIS DOES NOT WORK!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install syslinux extlinux&lt;br /&gt;
dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdX ### NOT /dev/sdX1 NOT !!!&lt;br /&gt;
cd /boot&lt;br /&gt;
cp /usr/lib/syslinux/modules/bios/menu.c32 .&lt;br /&gt;
extlinux -i .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install syslinux and extlinux&lt;br /&gt;
&lt;br /&gt;
* copy from old SL6 USB disk (this is extlinux 6.02)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@localhost:/boot# ls -l&lt;br /&gt;
-rwxr-xr-x 1 root root   218952 Jan 28 17:40 extlinux&lt;br /&gt;
-rw-r--r-- 1 root root      402 Jan 29 14:45 extlinux.conf&lt;br /&gt;
-rw-r--r-- 1 root root      496 Jan 29 14:39 extlinux.conf~&lt;br /&gt;
-r--r--r-- 1 root root   122044 Jan 29 14:39 ldlinux.c32&lt;br /&gt;
-r--r--r-- 1 root root    67072 Jan 29 14:39 ldlinux.sys&lt;br /&gt;
-rwxr-xr-x 1 root root    24156 Jan 28 17:40 libutil.c32&lt;br /&gt;
-rw-r--r-- 1 root root      304 Jan 28 17:40 mbr.bin&lt;br /&gt;
-rw-r--r-- 1 root root    26140 Jan 28 17:40 memdisk&lt;br /&gt;
-rw-r--r-- 1 root root    69043 Jan 28 17:40 memtest86+-4.20.iso.zip&lt;br /&gt;
-rw-r--r-- 1 root root   183012 Jan 28 17:40 memtest86+-5.01&lt;br /&gt;
-rw-r--r-- 1 root root    26568 Jan 28 17:40 menu.c32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=mbr.bin of=/dev/sdX ### NOT /dev/sdX1 NOT !!!&lt;br /&gt;
extlinux -i .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that partition /dev/sdX1 is marked bootable (fdisk command &amp;quot;a&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* create /boot/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEFAULT menu.c32&lt;br /&gt;
PROMPT 0&lt;br /&gt;
TIMEOUT 50&lt;br /&gt;
&lt;br /&gt;
MENU TITLE TRIUMF DAQ USB BOOT32 ver K.O. 2025jan28&lt;br /&gt;
&lt;br /&gt;
LABEL linux&lt;br /&gt;
  MENU DEFAULT&lt;br /&gt;
  kernel /vmlinuz&lt;br /&gt;
  append initrd=/initrd.img panic=60 rootdelay=5 rootwait rw root=/dev/sda1&lt;br /&gt;
&lt;br /&gt;
LABEL linux-6.1.0-28-686&lt;br /&gt;
  kernel vmlinuz-6.1.0-28-686&lt;br /&gt;
  append initrd=initrd.img-6.1.0-28-686 panic=60 rootdelay=5 rootwait rw root=/dev/sda1&lt;br /&gt;
&lt;br /&gt;
LABEL memtest&lt;br /&gt;
  kernel memtest86+-1.65&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8291</id>
		<title>DaqVlanConfig</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8291"/>
		<updated>2025-02-21T19:46:29Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* GRSI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is the list of VLANs associated with the DAQ and DAQ-managed experimental areas.&lt;br /&gt;
&lt;br /&gt;
The master list of TRIUMF VLANs is available on [https://ccn.triumf.ca/sysadmin/network/vlan-assignments CCN VLAN list].&lt;br /&gt;
&lt;br /&gt;
Extra Information:&lt;br /&gt;
&lt;br /&gt;
* VLAN number is how CCN identifies this VLAN&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/images/4/4a/Psd_vlan_proposal.pdf This document] lists the original proposal for moving PSD experimental areas to new VLANs.  Some of the implementation details may no longer be correct, but the document explains the motivation for the change.&lt;br /&gt;
&lt;br /&gt;
== UCN == &lt;br /&gt;
* UCN   &lt;br /&gt;
* VLAN number = 68     &lt;br /&gt;
* IP range = 142.90.151.0/24 &lt;br /&gt;
* subnet = *.ucn.triumf.ca &lt;br /&gt;
* gateway = 142.90.151.254 &lt;br /&gt;
* switch ports: VLAN68 is available on ports XX and YY of switch ZZ&lt;br /&gt;
* [https://ccn.triumf.ca/sysadmin/network/firewalls/security-policies/internal#from-zone-triumf-lan-to-zone-ucn firewall rules]: Blocking all traffic from off-site other than http, https, ssh&lt;br /&gt;
&lt;br /&gt;
== CMMS == &lt;br /&gt;
* CMMS &lt;br /&gt;
* VLAN number = 56     &lt;br /&gt;
* IP range = 142.90.154.0/24 &lt;br /&gt;
* prefix = 24&lt;br /&gt;
* netmask = 255.255.255.0&lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.154.254 &lt;br /&gt;
* DAQ DHCP server: midm15, midm9a&lt;br /&gt;
* DNS server: 142.90.100.19 (for now)&lt;br /&gt;
* switch ports: VLAN56 is available on &lt;br /&gt;
** ports 25-44 of switch bay13 &lt;br /&gt;
** ports 0-23 of switch JUN63 &lt;br /&gt;
** outlet 243-8 in the DAQ lab.&lt;br /&gt;
* [https://ccn.triumf.ca/sysadmin/network/firewalls/security-policies/internal#from-zone-triumf-lan-to-zone-cmms firewall rules]: none yet.&lt;br /&gt;
* migration of IP addresses: [[MUSR_Cluster#CMMS_VLAN_migration]]&lt;br /&gt;
&lt;br /&gt;
== GRSI == &lt;br /&gt;
* Griffin/Tigress/EMMA&lt;br /&gt;
* VLAN number = 72     &lt;br /&gt;
* IP range = 142.90.156.0 – 142.90.159.255&lt;br /&gt;
* prefix = 22&lt;br /&gt;
* netmask = 142.90.252.0&lt;br /&gt;
* broadcast = 142.90.159.255&lt;br /&gt;
* subnet = *.triumf.ca  (I think this should be *.grsi.triumf.ca - TL) &lt;br /&gt;
* gateway = 142.90.159.254&lt;br /&gt;
* switch ports:  ports 1-3 of bay42 in TIGRESS&lt;br /&gt;
* firewall rules: none&lt;br /&gt;
&lt;br /&gt;
== GRIFFIN/TIGRESS (OLD, eventually to be retired)== &lt;br /&gt;
* Griffin/Tigress&lt;br /&gt;
* VLAN number = 70     &lt;br /&gt;
* IP range = 142.90.153.0/24 &lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.153.254 &lt;br /&gt;
* switch ports:  bay02 switch3 port 35 patch cable LE-lA&lt;br /&gt;
* firewall rules: ???&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=8272</id>
		<title>VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=8272"/>
		<updated>2025-02-14T01:36:19Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups. Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| penelope-daq.ucn.triumf.ca&lt;br /&gt;
| &lt;br /&gt;
| UCN&lt;br /&gt;
| 68 (UCN)&lt;br /&gt;
| DAQ for PENELOPE detector&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=8271</id>
		<title>VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=8271"/>
		<updated>2025-02-14T01:36:04Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups. Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| penelope-daq.ucn.triumf.ca&lt;br /&gt;
| PENELOPE DAQ&lt;br /&gt;
| UCN&lt;br /&gt;
| 68 (UCN)&lt;br /&gt;
| DAQ for PENELOPE detector&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8235</id>
		<title>DaqVlanConfig</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8235"/>
		<updated>2025-02-11T23:58:29Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is the list of VLANs associated with the DAQ and DAQ-managed experimental areas.&lt;br /&gt;
&lt;br /&gt;
The master list of TRIUMF VLANs is available on [https://ccn.triumf.ca/sysadmin/network/vlan-assignments CCN VLAN list].&lt;br /&gt;
&lt;br /&gt;
Extra Information:&lt;br /&gt;
&lt;br /&gt;
* VLAN number is how CCN identifies this VLAN&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/images/4/4a/Psd_vlan_proposal.pdf This document] lists the original proposal for moving PSD experimental areas to new VLANs.  Some of the implementation details may no longer be correct, but the document explains the motivation for the change.&lt;br /&gt;
&lt;br /&gt;
== UCN == &lt;br /&gt;
* UCN   &lt;br /&gt;
* VLAN number = 68     &lt;br /&gt;
* IP range = 142.90.151.0/24 &lt;br /&gt;
* subnet = *.ucn.triumf.ca &lt;br /&gt;
* gateway = 142.90.151.254 &lt;br /&gt;
* switch ports: VLAN68 is available on ports XX and YY of switch ZZ&lt;br /&gt;
* [https://ccn.triumf.ca/sysadmin/network/firewalls/security-policies/internal#from-zone-triumf-lan-to-zone-ucn firewall rules]: Blocking all traffic from off-site other than http, https, ssh&lt;br /&gt;
&lt;br /&gt;
== CMMS == &lt;br /&gt;
* CMMS &lt;br /&gt;
* VLAN number = 56     &lt;br /&gt;
* IP range = 142.90.154.0/24 &lt;br /&gt;
* prefix = 24&lt;br /&gt;
* netmask = 255.255.255.0&lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.154.254 &lt;br /&gt;
* DAQ DHCP server: midm15, midm9a&lt;br /&gt;
* DNS server: 142.90.100.19 (for now)&lt;br /&gt;
* switch ports: VLAN56 is available on &lt;br /&gt;
** ports 25-44 of switch bay13 &lt;br /&gt;
** ports 0-23 of switch JUN63 &lt;br /&gt;
** outlet 243-8 in the DAQ lab.&lt;br /&gt;
* [https://ccn.triumf.ca/sysadmin/network/firewalls/security-policies/internal#from-zone-triumf-lan-to-zone-cmms firewall rules]: none yet.&lt;br /&gt;
* migration of IP addresses: [[MUSR_Cluster#CMMS_VLAN_migration]]&lt;br /&gt;
&lt;br /&gt;
== GRSI == &lt;br /&gt;
* Griffin/Tigress/EMMA&lt;br /&gt;
* VLAN number = 72     &lt;br /&gt;
* IP range = 142.90.156.0 – 142.90.159.255&lt;br /&gt;
* prefix = 22&lt;br /&gt;
* netmask = 142.90.252.0&lt;br /&gt;
* broadcast = 142.90.159.255&lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.159.254&lt;br /&gt;
* switch ports:  ports 1-3 of bay42 in TIGRESS&lt;br /&gt;
* firewall rules: none&lt;br /&gt;
&lt;br /&gt;
== GRIFFIN/TIGRESS (OLD, eventually to be retired)== &lt;br /&gt;
* Griffin/Tigress&lt;br /&gt;
* VLAN number = 70     &lt;br /&gt;
* IP range = 142.90.153.0/24 &lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.153.254 &lt;br /&gt;
* switch ports:  bay02 switch3 port 35 patch cable LE-lA&lt;br /&gt;
* firewall rules: ???&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8234</id>
		<title>DaqVlanConfig</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8234"/>
		<updated>2025-02-11T23:13:31Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* GRSI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is the list of VLANs associated with the DAQ and DAQ-managed experimental areas.&lt;br /&gt;
&lt;br /&gt;
The master list of TRIUMF VLANs is available on [https://ccn.triumf.ca/sysadmin/network/vlan-assignments CCN VLAN list].&lt;br /&gt;
&lt;br /&gt;
Extra Information:&lt;br /&gt;
&lt;br /&gt;
* VLAN number is how CCN identifies this VLAN&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/images/4/4a/Psd_vlan_proposal.pdf This document] lists the original proposal for moving PSD experimental areas to new VLANs.  Some of the implementation details may no longer be correct, but the document explains the motivation for the change.&lt;br /&gt;
&lt;br /&gt;
== UCN == &lt;br /&gt;
* UCN   &lt;br /&gt;
* VLAN number = 68     &lt;br /&gt;
* IP range = 142.90.151.0/24 &lt;br /&gt;
* subnet = *.ucn.triumf.ca &lt;br /&gt;
* gateway = 142.90.151.254 &lt;br /&gt;
* switch ports: VLAN68 is available on ports XX and YY of switch ZZ&lt;br /&gt;
* [https://ccn.triumf.ca/sysadmin/network/firewalls/security-policies/internal#from-zone-triumf-lan-to-zone-ucn firewall rules]: Blocking all traffic from off-site other than http, https, ssh&lt;br /&gt;
&lt;br /&gt;
== CMMS == &lt;br /&gt;
* CMMS &lt;br /&gt;
* VLAN number = 56     &lt;br /&gt;
* IP range = 142.90.154.0/24 &lt;br /&gt;
* prefix = 24&lt;br /&gt;
* netmask = 255.255.255.0&lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.154.254 &lt;br /&gt;
* DAQ DHCP server: midm15, midm9a&lt;br /&gt;
* DNS server: 142.90.100.19 (for now)&lt;br /&gt;
* switch ports: VLAN56 is available on &lt;br /&gt;
** ports 25-44 of switch bay13 &lt;br /&gt;
** ports 0-23 of switch JUN63 &lt;br /&gt;
** outlet 243-8 in the DAQ lab.&lt;br /&gt;
* [https://ccn.triumf.ca/sysadmin/network/firewalls/security-policies/internal#from-zone-triumf-lan-to-zone-cmms firewall rules]: none yet.&lt;br /&gt;
* migration of IP addresses: [[MUSR_Cluster#CMMS_VLAN_migration]]&lt;br /&gt;
&lt;br /&gt;
== GRSI == &lt;br /&gt;
* Griffin/Tigress/EMMA&lt;br /&gt;
* VLAN number = 72     &lt;br /&gt;
* IP range = 142.90.156.0 – 142.90.159.255&lt;br /&gt;
* For cleaniness Steve divides the range as&lt;br /&gt;
** ISAC1 Griffin hosts on 142.90.156.0/22&lt;br /&gt;
** ISAC2 Tigress hosts on 142.90.158.0/22&lt;br /&gt;
** ISAC2 Emma hosts on 142.90./159.0/22&lt;br /&gt;
* prefix = 22&lt;br /&gt;
* netmask = 142.90.252.0&lt;br /&gt;
* broadcast = 142.90.159.255&lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.159.254&lt;br /&gt;
* switch ports:  ports 1-3 of bay42 in TIGRESS&lt;br /&gt;
* firewall rules: none&lt;br /&gt;
&lt;br /&gt;
== GRIFFIN/TIGRESS (OLD, eventually to be retired)== &lt;br /&gt;
* Griffin/Tigress&lt;br /&gt;
* VLAN number = 70     &lt;br /&gt;
* IP range = 142.90.153.0/24 &lt;br /&gt;
* subnet = *.triumf.ca &lt;br /&gt;
* gateway = 142.90.153.254 &lt;br /&gt;
* switch ports:  bay02 switch3 port 35 patch cable LE-lA&lt;br /&gt;
* firewall rules: ???&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8233</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8233"/>
		<updated>2025-02-11T23:04:35Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Install amanda client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
* before setting up new machine run memory test&lt;br /&gt;
* prepare flash drive with free version of memtest86: https://www.memtest86.com&lt;br /&gt;
* test boot from flash drive, test takes ~ few hours&lt;br /&gt;
* test will end with summary page, if passed continue with Ubuntu&lt;br /&gt;
* number that might be worth noting is memory latency&lt;br /&gt;
&lt;br /&gt;
= Ubuntu version =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsb_release -a&lt;br /&gt;
uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu installer =&lt;br /&gt;
&lt;br /&gt;
* updated for Ububtu LTS 20.04.01, 22.04.1, 24.04 (only minor differences)&lt;br /&gt;
&lt;br /&gt;
* download the latest Ubuntu LTS desktop installer iso image&lt;br /&gt;
* dd the image to a USB key&lt;br /&gt;
* power down, disconnect all disks (all HDDs, all SSDs, all M.2)&lt;br /&gt;
* connect the SSD to be used as system disk&lt;br /&gt;
* if system will use mirrored SSDs (using ZFS mirror), leave second SSD disconnected, we will activate it later&lt;br /&gt;
* power up&lt;br /&gt;
* boot from USB key in legacy mode or UEFI mode (select this in the BIOS boot menu - F8 for ASUS, F11 for Supermicro)&lt;br /&gt;
* follow the instruction:&lt;br /&gt;
* &amp;quot;try ubuntu or install ubuntu&amp;quot; - choose &amp;quot;install&amp;quot;&lt;br /&gt;
* select language - accept default&lt;br /&gt;
* &amp;quot;updates and other software&amp;quot; - accept default settings (&amp;quot;normal install&amp;quot;)&lt;br /&gt;
* &amp;quot;installation type&amp;quot; - select &amp;quot;advanced features&amp;quot; and &amp;quot;experimental: use ZFS&amp;quot;&lt;br /&gt;
* accept partition choice&lt;br /&gt;
* &amp;quot;where are you?&amp;quot; - select &amp;quot;Vancouver&amp;quot; (PST time zone)&lt;br /&gt;
* &amp;quot;who are you?&amp;quot; - leave all fields blank, except &amp;quot;username&amp;quot; set to &amp;quot;wheel&amp;quot;, &amp;quot;password&amp;quot; set to the root password. hostname will be set later after configuring the network&lt;br /&gt;
* don&#039;t install third party sw&lt;br /&gt;
* installation runs in a few minutes, when finished, reboot&lt;br /&gt;
* login as user wheel&lt;br /&gt;
* answer annouying questions:&lt;br /&gt;
* &amp;quot;livepatch&amp;quot; - say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;help improve&amp;quot; - select &amp;quot;do not send&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;privacy&amp;quot; - leave &amp;quot;location&amp;quot; as &amp;quot;off&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;ready to go&amp;quot;, say &amp;quot;done&amp;quot;&lt;br /&gt;
* right-click on the desktop, say &amp;quot;open in terminal&amp;quot;, a shell will open&lt;br /&gt;
* say &amp;quot;sudo /bin/bash&amp;quot;, enter the root password, you now have the root shell&lt;br /&gt;
* run nm-connection-editor to configure the network. use netmask 255.255.224.0, gateway 142.90.100.18, DNS 142.90.100.19, search path &amp;quot;triumf.ca&amp;quot;&lt;br /&gt;
* after network is up (can ping ladd00), continue with post-installation steps below&lt;br /&gt;
&lt;br /&gt;
= Install instructions =&lt;br /&gt;
&lt;br /&gt;
== prepare ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ssh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install git/scripts ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install git&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if needed, update git/scripts repository from ladd00 to daq00:&lt;br /&gt;
* git remote -v ### if it says daq00, we are good&lt;br /&gt;
* git remote set-url origin https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
* git pull ### check that it works&lt;br /&gt;
&lt;br /&gt;
== configure hostname ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap ==&lt;br /&gt;
&lt;br /&gt;
ubuntu installer creates a 2 GB swap partition, not useful&lt;br /&gt;
on 32-64 GB machine, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fstab ### comment out the &amp;quot;swap&amp;quot; line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on 64 GB RAM machines swap is not useful&lt;br /&gt;
* on machines booted from network (NFS-ROOT), swap does not work&lt;br /&gt;
* on machines running from flash (RPi, etc), flash is too slow for useful swap&lt;br /&gt;
* swap configured by linux installers invariably has wrong size and is not useful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable dphys-swapfile&lt;br /&gt;
systemctl stop dphys-swapfile&lt;br /&gt;
dphys-swapfile uninstall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maybe reboot ==&lt;br /&gt;
&lt;br /&gt;
this is a good point to reboot the machine to boot&lt;br /&gt;
the latest kernel and to set the correct hostname&lt;br /&gt;
&lt;br /&gt;
== install etckeeper ==&lt;br /&gt;
&lt;br /&gt;
keep contents of /etc in a git repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install etckeeper&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set timezone ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
timedatectl list-timezones | grep -i vancouver&lt;br /&gt;
timedatectl set-timezone America/Vancouver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install time synchronization ==&lt;br /&gt;
&lt;br /&gt;
check if chrony is installed correctly and is synched to TRIUMF time servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if not, remove old chrony and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove chrony&lt;br /&gt;
apt -y purge chrony&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and install it from scratch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install chrony&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
cp ~/git/scripts/etc/triumf.sources /etc/chrony/sources.d/&lt;br /&gt;
systemctl disable systemd-timesyncd.service&lt;br /&gt;
systemctl stop systemd-timesyncd.service&lt;br /&gt;
systemctl disable ntp&lt;br /&gt;
systemctl stop ntp&lt;br /&gt;
systemctl enable chrony&lt;br /&gt;
systemctl restart chrony&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reenable systemd-timesyncd ==&lt;br /&gt;
&lt;br /&gt;
ONLY IF CHRONY DOES NOT WORK&lt;br /&gt;
&lt;br /&gt;
To configure systemd-timesyncd, set &amp;quot;NTP=&amp;quot; in /etc/systemd/timesyncd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chrony&lt;br /&gt;
cat /etc/systemd/timesyncd.conf&lt;br /&gt;
systemctl enable systemd-timesyncd.service&lt;br /&gt;
systemctl restart systemd-timesyncd.service&lt;br /&gt;
systemctl status systemd-timesyncd.service&lt;br /&gt;
timedatectl status&lt;br /&gt;
timedatectl timesync-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
this is different from ubuntu 20. it uses /etc/mailname and it hardwires the hostname into main.cf.&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email ==&lt;br /&gt;
&lt;br /&gt;
we have an unusual email configuration. outgoing email should work to deliver error messages, notices, etc. incoming email is disabled, we do not receive email for local users.&lt;br /&gt;
&lt;br /&gt;
this causes problems with TRIUMF smtp server. if our message cannot be delivered (wrong email address or receipient computer is turned off), TRIUMF smtp server will generate a delivery failure notification email and try to send it to the &amp;quot;from&amp;quot; address of the failed message. but the &amp;quot;from&amp;quot; address does not receive any email, so another delivery failure  notification email is generated and an attempt to deliver it. which again fails, rinse and repeat.&lt;br /&gt;
&lt;br /&gt;
as solution, kray created a special rule, email from scrap.triumf.ca does not generate delivery failure notices. failed messages sit in the queue for 5 days, then they are deleted. (K.O. - confirmed with kray 3jan2024).&lt;br /&gt;
&lt;br /&gt;
to make this work we use the msmtp MTA package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&lt;br /&gt;
apt -y install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y install bsd-mailx&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -fv aliases /etc/aliases&lt;br /&gt;
/bin/cp -fv msmtprc /etc/msmtprc&lt;br /&gt;
/bin/rm -vf ~root/.forward&lt;br /&gt;
/bin/rm -vf /etc/mailname&lt;br /&gt;
Mail root&lt;br /&gt;
Subject: test&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
CC: &amp;lt;CR&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (postfix) ==&lt;br /&gt;
&lt;br /&gt;
THIS IS OBSOLETE!!!&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use smtp.triumf.ca&lt;br /&gt;
* CERN: use cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install postfix ### select &amp;quot;satellite system&amp;quot;, enter full hostname &amp;quot;xxx.triumf.ca&amp;quot;, enter &amp;quot;smtp.triumf.ca&amp;quot;&lt;br /&gt;
apt install mailutils&lt;br /&gt;
dpkg-reconfigure postfix ### (if postfix already installed)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo olchansk@triumf.ca lindner@triumf.ca bsmith@triumf.ca &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
mailx root&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable ping for all users (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
Without this tweak, Debian will report &amp;quot;operation not permitted&amp;quot; if a user tries to ping somewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &#039;net.ipv4.ping_group_range = 0 1000&#039; &amp;gt; /etc/sysctl.d/99-ping.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable apparmor ==&lt;br /&gt;
&lt;br /&gt;
On NFS-Root network booted machines!&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;man man&amp;quot; returns &amp;quot;permission denied&amp;quot; and syslog reports apparmor &amp;quot;sendmsg DENIED&amp;quot; errors, disable apparmor. This is supposedly fixed in kernel 6.0 and later (to be confirmed), see https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1784499&lt;br /&gt;
&lt;br /&gt;
Disable apparmor, see https://ubuntu.com/server/docs/security-apparmor&lt;br /&gt;
&lt;br /&gt;
This takes effect after a reboot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop apparmor.service&lt;br /&gt;
systemctl disable apparmor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install missing packages ==&lt;br /&gt;
&lt;br /&gt;
(apt eats terminal input, even the &amp;quot;yes |&amp;quot; trick does not quite work,&lt;br /&gt;
repeat the following commands until they report that everything&lt;br /&gt;
is installed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install ssh tcsh ethtool ncat rsync strace net-tools traceroute time minicom screen git lsof debsums tmux iptables telnet pax rpm mtools at gdisk&lt;br /&gt;
yes | apt -y install sysstat smartmontools lm-sensors&lt;br /&gt;
yes | apt -y install lsb-release&lt;br /&gt;
apt -y install vim # in addition to default vim-tiny, requested by IRIS&lt;br /&gt;
apt -y install tcl&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
yes | apt -y install flex bison&lt;br /&gt;
yes | apt -y install neofetch&lt;br /&gt;
yes | apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
yes | apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
yes | apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
yes | apt -y install mariadb-client ### mysql client&lt;br /&gt;
yes | apt -y install libz-dev libzstd-dev sqlite3 libsqlite3-dev unixodbc-dev&lt;br /&gt;
yes | apt -y install libssl-dev&lt;br /&gt;
yes | apt -y install emacs xemacs21 joe&lt;br /&gt;
yes | apt -y install gnuplot dos2unix&lt;br /&gt;
yes | apt -y install mutt bsd-mailx # email clients&lt;br /&gt;
yes | apt -y install liblz4-tool pbzip2&lt;br /&gt;
yes | apt -y install libc6-dev-i386 # otherwise no /usr/include/sys/types.h&lt;br /&gt;
yes | apt -y install libreadline-dev&lt;br /&gt;
yes | apt -y install ubuntu-mate-themes&lt;br /&gt;
yes | apt -y install libmotif-dev libxmu-dev&lt;br /&gt;
yes | apt -y install libusb-dev libusb-1.0-0-dev&lt;br /&gt;
yes | apt -y install i2c-tools libi2c-dev libi2c0&lt;br /&gt;
yes | apt -y install xfig gsfonts-x11 gsfonts-other # install fonts for xfig&lt;br /&gt;
yes | apt -y install libjson-perl&lt;br /&gt;
yes | apt -y install libgsl-dev # additional GNU Scientific Library&lt;br /&gt;
yes | apt -y install qt5-default # Qt development&lt;br /&gt;
yes | apt -y install python3-full python3-dev python3-dbg python3-pip ### for pyROOT&lt;br /&gt;
yes | apt -y install imagemagick imagemagick-common ckeditor # for elog&lt;br /&gt;
yes | apt -y install libjpeg-dev libjpeg-progs libjpeg-tools&lt;br /&gt;
yes | apt -y install linux-tools-common linux-tools-generic # cpupower frequency-info&lt;br /&gt;
yes | apt -y install rdesktop remmina remmina-plugin&amp;quot;*&amp;quot; # requested by POL&lt;br /&gt;
yes | apt -y install nlohmann-json3-dev # required to build MIDAS with ROOT 6.30 on Ubuntu-22&lt;br /&gt;
apt -y install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python3 libssl-dev libafterimage0 # from https://root.cern/install/dependencies/&lt;br /&gt;
apt -y install gfortran libpcre3-dev xlibmesa-glu-dev libglew-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio-dev graphviz-dev libldap2-dev python3-dev python3-numpy libxml2-dev libkrb5-dev libgsl0-dev qtwebengine5-dev nlohmann-json3-dev libtbb-dev libavahi-compat-libdnssd-dev # from https://root.cern/install/dependencies/&lt;br /&gt;
apt -y install libvdt-dev # for ROOT 6.32 on Ubuntu-24&lt;br /&gt;
apt -y install autoconf automake gperf # gnu package build tools&lt;br /&gt;
apt -y install u-boot-tools # for Xilinx petalinux&lt;br /&gt;
#apt -y install linux-headers-generic # to build linux kernel drivers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 20.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 # enable linux 5.11 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 22.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install linux-generic-hwe-22.04 # enable linux 6.2.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 24.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install linux-generic-hwe-24.04 # enable linux 6.8.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
See https://askubuntu.com/questions/1399383/how-to-install-firefox-as-a-traditional-deb-package-without-snap-in-ubuntu-22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add-apt-repository ppa:mozillateam/ppa&lt;br /&gt;
apt install firefox-esr&lt;br /&gt;
echo run firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure DNS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /etc/systemd/resolved.conf.d&lt;br /&gt;
cp etc/resolved-triumf.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
systemctl restart systemd-resolved&lt;br /&gt;
resolvectl&lt;br /&gt;
#systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ganglia ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install ganglia-monitor&lt;br /&gt;
cd ~root/git/scripts/ganglia&lt;br /&gt;
git pull&lt;br /&gt;
make install&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fix gmond start before network is ready:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ganglia-monitor.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ganglia-monitor.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ganglia-monitor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install gonodeinfo ==&lt;br /&gt;
&lt;br /&gt;
* go to https://bitbucket.org/dd1/gonodeinfo follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
#git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git remote set-url origin https://daq00.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: daq00.triumf.ca:8601&lt;br /&gt;
* run &amp;quot;gonodeinfo -v&amp;quot;&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run /opt/gonodeinfo/gonodereceive.exe -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== install emailonreboot ==&lt;br /&gt;
&lt;br /&gt;
send an email if computer is rebooted&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root&lt;br /&gt;
mkdir -p ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/rpms.git&lt;br /&gt;
cd rpms/emailonreboot&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install monitor_nfs ==&lt;br /&gt;
&lt;br /&gt;
monitor NFS mounts and complain about dead, stale and hung mounts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root&lt;br /&gt;
mkdir -p ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/rpms.git&lt;br /&gt;
cd rpms/monitor_nfs&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
* apt -y install xfonts-100dpi xfonts-75dpi&lt;br /&gt;
* restart Xorg (i.e. &amp;quot;killall Xorg&amp;quot;, this will log you out from the console)&lt;br /&gt;
* xlsfonts | grep -i helvetica ### should show fonts with different sizes, not just size 0 (scalable)&lt;br /&gt;
&lt;br /&gt;
== install libz.so.1 for CentOS compatibility ==&lt;br /&gt;
&lt;br /&gt;
KO - confirm which versions on quartus need this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install zlib1g&lt;br /&gt;
yes | apt-get -y install zlib1g:i386 libc6:i386 libgcc1:i386 gcc-6-base:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
(does not work anymore!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ftp.ca.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus 13.0sp1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0.50.0&lt;br /&gt;
/bin/cp -pv libpng12.so.0 libpng12.so.0.50.0 /lib/x86_64-linux-gnu/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for Xilinx ==&lt;br /&gt;
&lt;br /&gt;
ubuntu LTS 22.04 vivado 2020.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install autoconf libtool&lt;br /&gt;
apt install libtinfo5&lt;br /&gt;
apt install texinfo&lt;br /&gt;
apt install zlib1g:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for building ROOT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install libx11-dev libxpm-dev libxft-dev libxext-dev libpng-dev libjpeg-dev xlibmesa-glu-dev libxml2-dev libgsl-dev cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install 32-bit libraries for PHYSICA ==&lt;br /&gt;
&lt;br /&gt;
these instructions are for running 32-bit physica executable built for SL6 on ubuntu LTS 20.04&lt;br /&gt;
&lt;br /&gt;
install physica sources (cannot build, do not have g77)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages&lt;br /&gt;
git clone https://bitbucket.org/ttriumfdaq/physica.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install 32-bit libraries using ubuntu package manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install lib32z1 # libz.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy 32-bit SL6 shared libraries to /lib32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libX11.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libgd.so.2 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libpng12.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libreadline.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libncurses.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libg2c.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libxcb.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXpm.so.4 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libjpeg.so.62 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfontconfig.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfreetype.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libtinfo.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXau.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libexpat.so.1 /lib32/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ldd should report:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trinatdaq:trinat&amp;gt; ldd /usr/local/physica/physica.exe&lt;br /&gt;
	linux-gate.so.1 (0xf7fa2000)&lt;br /&gt;
	libX11.so.6 =&amp;gt; /lib32/libX11.so.6 (0xf7e43000)&lt;br /&gt;
	libgd.so.2 =&amp;gt; /lib32/libgd.so.2 (0xf7dfe000)&lt;br /&gt;
	libpng12.so.0 =&amp;gt; /lib32/libpng12.so.0 (0xf7dd6000)&lt;br /&gt;
	libz.so.1 =&amp;gt; /lib32/libz.so.1 (0xf7db8000)&lt;br /&gt;
	libreadline.so.6 =&amp;gt; /lib32/libreadline.so.6 (0xf7d7e000)&lt;br /&gt;
	libncurses.so.5 =&amp;gt; /lib32/libncurses.so.5 (0xf7d5b000)&lt;br /&gt;
	libg2c.so.0 =&amp;gt; /lib32/libg2c.so.0 (0xf7d3d000)&lt;br /&gt;
	libm.so.6 =&amp;gt; /lib32/libm.so.6 (0xf7c39000)&lt;br /&gt;
	libgcc_s.so.1 =&amp;gt; /lib32/libgcc_s.so.1 (0xf7c1a000)&lt;br /&gt;
	libc.so.6 =&amp;gt; /lib32/libc.so.6 (0xf7a2f000)&lt;br /&gt;
	libxcb.so.1 =&amp;gt; /lib32/libxcb.so.1 (0xf7a05000)&lt;br /&gt;
	libdl.so.2 =&amp;gt; /lib32/libdl.so.2 (0xf79ff000)&lt;br /&gt;
	libXpm.so.4 =&amp;gt; /lib32/libXpm.so.4 (0xf79ee000)&lt;br /&gt;
	libjpeg.so.62 =&amp;gt; /lib32/libjpeg.so.62 (0xf7997000)&lt;br /&gt;
	libfontconfig.so.1 =&amp;gt; /lib32/libfontconfig.so.1 (0xf7962000)&lt;br /&gt;
	libfreetype.so.6 =&amp;gt; /lib32/libfreetype.so.6 (0xf78c9000)&lt;br /&gt;
	libtinfo.so.5 =&amp;gt; /lib32/libtinfo.so.5 (0xf78b0000)&lt;br /&gt;
	/lib/ld-linux.so.2 (0xf7fa4000)&lt;br /&gt;
	libXau.so.6 =&amp;gt; /lib32/libXau.so.6 (0xf78ad000)&lt;br /&gt;
	libexpat.so.1 =&amp;gt; /lib32/libexpat.so.1 (0xf7885000)&lt;br /&gt;
trinatdaq:trinat&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set login environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv TRIUMF_FONTS $HOME/packages/physica/fonts&lt;br /&gt;
setenv PHYSICA_DIR $HOME/packages/physica&lt;br /&gt;
alias physica $PHYSICA_DIR/physica-SL6-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages/physica&lt;br /&gt;
physica&lt;br /&gt;
@rangauss.pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install wine ==&lt;br /&gt;
&lt;br /&gt;
As far as I know, only needed for BNMR/BNQR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install wine winetricks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install lightdm ==&lt;br /&gt;
&lt;br /&gt;
unlike the default gdm login manager, lightdm shows the machine hostname and does not require an extra mouse click to swicth from screen saver to login mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install lightdm&lt;br /&gt;
# select lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install desktop environments ==&lt;br /&gt;
&lt;br /&gt;
note: default display manager and default desktop are deficient, please do not skip this step.&lt;br /&gt;
&lt;br /&gt;
note: if apt asks to choose the display manager, select &amp;quot;lightdm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: KO - I recommend the &amp;quot;MATE&amp;quot; desktop.&lt;br /&gt;
&lt;br /&gt;
note: you will have to cut-and-paste this several times because &amp;quot;apt&amp;quot; eats commands, even with &amp;quot;-y&amp;quot; and even piped from &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# install MATE desktop&lt;br /&gt;
apt -y install ubuntu-mate-core ubuntu-mate-desktop ubuntu-mate-themes&lt;br /&gt;
# install Cinnamon desktop&lt;br /&gt;
apt -y install cinnamon&lt;br /&gt;
# install KDE desktop&lt;br /&gt;
apt -y install kde-standard kubuntu-settings-desktop&lt;br /&gt;
# install Lxqt desktop&lt;br /&gt;
# apt -y install lxqt # conflict over kubuntu-desktop, kubuntu-settings-desktop and desktop-base&lt;br /&gt;
# install Xfce4 desktop&lt;br /&gt;
apt -y install xfce4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ROOT ==&lt;br /&gt;
&lt;br /&gt;
Please install ROOT per instructions at https://root.cern.ch.&lt;br /&gt;
&lt;br /&gt;
NOTE1: The ROOT package available from Ubuntu repositories is severely out of date and cannot be used with MIDAS and ROOTANA. ### DO NOT DO THIS! apt-get install root-system&lt;br /&gt;
&lt;br /&gt;
NOTE2: as of 2017-Jan-09, ROOT binary kits for Ubuntu do not work (use GCC 5 instead of GCC6), build from source instead.&lt;br /&gt;
&lt;br /&gt;
== Install x2go ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install x2goserver x2goserver-xsession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable root login from ladd00/daq00 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
CTRL-C&lt;br /&gt;
/bin/cp ~root/git/scripts/etc/authorized_keys ~root/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable ssh access from outside of TRIUMF ==&lt;br /&gt;
&lt;br /&gt;
to stop ssh login spam, disable ssh access from outside of TRIUMF. this can be done by requesting a firewall block through the helpdesk or by local firewall rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo iptables -I INPUT ! -s 142.90.0.0/255.255.0.0 -p tcp --dport 22 -j REJECT &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install smart-status ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s ~/git/scripts/smart-status/smart-status.perl ~root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable boot menu and boot messages ==&lt;br /&gt;
&lt;br /&gt;
This will enable the grub menu (with a 10 sec timeout) and&lt;br /&gt;
replace black screen with exciting linux boot messages.&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_DEFAULT=0&lt;br /&gt;
#GRUB_TIMEOUT_STYLE=hidden&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;vga=769 video=640x480&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
#GRUB_GFXMODE=640x480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update grub config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable automatic updates =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install unattended-upgrades&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/99apt-conf-ko /etc/apt/apt.conf.d/&lt;br /&gt;
apt-config dump | grep Unattended&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is obsolete:&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/50unattended-upgrades&lt;br /&gt;
** uncomment in Allowed-Origins &amp;quot;-security&amp;quot; and &amp;quot;-updates&amp;quot;&lt;br /&gt;
** add in Allowed-Origins: &amp;quot;Google LLC:stable&amp;quot;;&lt;br /&gt;
** uncomment/add: &amp;quot;Unattended-Upgrade::Mail &amp;quot;root&amp;quot;;&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;7&amp;quot;;&lt;br /&gt;
APT::Periodic::Unattended-Upgrade &amp;quot;1&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test: unattended-upgrade --dry-run -v&lt;br /&gt;
&lt;br /&gt;
NOTE: update-on-shutdown is disabled.&lt;br /&gt;
&lt;br /&gt;
NOTE: there is no update-on-boot, but:&lt;br /&gt;
&lt;br /&gt;
NOTE: if machine was off for a long time, the systemd update timer would have expired and it will fire soon after reboot, causing an automatic update run. this is unwanted, and there is no fix or workaround for it. K.O. June-2023.&lt;br /&gt;
&lt;br /&gt;
= Fix bpool is full (obsolete) =&lt;br /&gt;
&lt;br /&gt;
THIS IS CAUSED BY OBSOLETE PACKAGE zsys. PLEASE: apt remove zsys&lt;br /&gt;
&lt;br /&gt;
= IPMI instructions =&lt;br /&gt;
&lt;br /&gt;
IPMI is the board management hardware on Supermicro and other server motherboards. This includes hardware sensors - fan rotation speed, temperatures and power supply voltages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ipmitool&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
* ipmitool sel list ### event list&lt;br /&gt;
* ipmitool sel elist ### event list&lt;br /&gt;
* ipmitool sel clear ### clear event list (if it becomes full)&lt;br /&gt;
* ipmitool sensor ### report hardware sensors&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel (U-24) =&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 24 installed on ZFS has rpool/USERDATA/home_xxx mounted on /home,&lt;br /&gt;
has to be moved or autofs /home will not work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep USERDATA | grep home | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
zfs set -u mountpoint=/home1 `zfs list | grep USERDATA | grep home | cut -f1 -d&amp;quot; &amp;quot;`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel =&lt;br /&gt;
&lt;br /&gt;
note: this MUST be done if ZFS root and NIS/autofs with /home.&lt;br /&gt;
&lt;br /&gt;
Default location of wheel&#039;s home directory will collide with autofs /home, it has to be moved,&lt;br /&gt;
for example to /wheel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# logout from the wheel user&lt;br /&gt;
# go to another computer&lt;br /&gt;
ssh root@daqubuntuxxx&lt;br /&gt;
zfs list | grep wheel ### identify zfs name wheel_xxxxxx&lt;br /&gt;
#zfs set mountpoint=/wheel rpool/USERDATA/wheel_hm8fzh&lt;br /&gt;
zfs set mountpoint=/wheel `zfs list | grep wheel | cut -f1 -d&amp;quot; &amp;quot;`&lt;br /&gt;
zfs list | grep wheel&lt;br /&gt;
emacs -nw /etc/passwd ### change wheel&#039;s home directory from /home/wheel to /wheel&lt;br /&gt;
su - wheel ### check that user wheel still works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will break wheel&#039;s ability to run snap programs, such as firefox, install chrome as listed below.&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 22.04, 24.04, debian 11, 12) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install rpcbind nis&lt;br /&gt;
echo DAQ-NIS &amp;gt;&amp;gt; /etc/defaultdomain&lt;br /&gt;
echo ypserver daq00.triumf.ca &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
systemctl enable ypbind.service&lt;br /&gt;
systemctl restart ypbind.service&lt;br /&gt;
systemctl status ypbind.service&lt;br /&gt;
ypwhich -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable ypserv:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i s/NISSERVER=false/NISSERVER=slave/ /etc/default/nis&lt;br /&gt;
/usr/lib/yp/ypinit -s daq00&lt;br /&gt;
echo ypserver localhost &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
sed -i &amp;quot;s/ypserver .*/ypserver localhost/&amp;quot; /etc/yp.conf&lt;br /&gt;
systemctl enable ypserv&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/nsswitch.conf to read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&lt;br /&gt;
#passwd: ...&lt;br /&gt;
#group: ...&lt;br /&gt;
#shadow: ...&lt;br /&gt;
&lt;br /&gt;
#netgroup: ...&lt;br /&gt;
#automount: ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable hourly update of nis maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is a new machine, then on the master NIS node (daq00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 20.04) =&lt;br /&gt;
&lt;br /&gt;
* apt-get -y install portmap nis ### will ask for NIS domain (DAQ-NIS)&lt;br /&gt;
* dpkg-reconfigure nis ### reconfigure if already installed&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* edit /etc/default/nis&lt;br /&gt;
** set &amp;quot;NISSERVER=slave&amp;quot;&lt;br /&gt;
** Ubuntu LTS 20.04, check that &amp;quot;YPBINDARGS=&amp;quot; is blank, remove &amp;quot;-no-dbus&amp;quot; if it is there&lt;br /&gt;
* #edit /etc/yp.conf, comment-out everything, add &amp;quot;domain DAQ-NIS server localhost&amp;quot;&lt;br /&gt;
* edit /etc/yp.conf, comment-out everything, add &amp;quot;ypserver localhost&amp;quot;&lt;br /&gt;
* /usr/lib/yp/ypinit -s daq00&lt;br /&gt;
* systemctl enable nis&lt;br /&gt;
* systemctl restart nis&lt;br /&gt;
* ypwhich&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* ypcat -k passwd&lt;br /&gt;
* vi /etc/nsswitch.conf ### add the automount line, modify the passwd, group and shadow lines to read this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable hourly update of NIS maps&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ### NOT NEEDED sudo vi /etc/idmapd.conf ### add line: &amp;quot;Domain = triumf.ca&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= enable autofs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
ls -l /home/olchansk ### test autofs, check file owner is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= enable NFS server =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install nfs-kernel-server&lt;br /&gt;
#edit /etc/exports&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NIS master =&lt;br /&gt;
&lt;br /&gt;
notes for setting up the NIS master&lt;br /&gt;
&lt;br /&gt;
== wheel user ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wheel&amp;quot; is the default administrative user. We do not want it&#039;s password exported to NIS (encrypted password hash is world visible) and we do not want it&#039;s home directory exported to NFS (~wheel/.ssh is world visible and potentially writable: anybody can change ~wheel/.ssh/authorized_keys).&lt;br /&gt;
&lt;br /&gt;
* move wheel&#039;s home directory from /home/wheel to /wheel (see special section about this)&lt;br /&gt;
* change wheel&#039;s UID and GID from 1000 to a value below MINUID in /var/yp/Makefile&lt;br /&gt;
&lt;br /&gt;
== coherent uids ==&lt;br /&gt;
&lt;br /&gt;
we do not want system accounts defined in /etc/passwd of the NIS master&lt;br /&gt;
to be included in the NIS map &amp;quot;passwd&amp;quot;. this causes trouble on NIS clients&lt;br /&gt;
where newly installed packages fail to create local system users because same&lt;br /&gt;
user already exists in NIS.&lt;br /&gt;
&lt;br /&gt;
This is controlled by MINUID in /var/yp/Makefile.&lt;br /&gt;
&lt;br /&gt;
Historical TRIUMF uids start from around 200, but several clusters do not have any historic TRIUMF uids below 500 and MINUID is set to:&lt;br /&gt;
* DAQ-NIS: MINUID=200&lt;br /&gt;
* ISAC-NIS: MINUID=500&lt;br /&gt;
* TITAN-NIS: MINUID=500&lt;br /&gt;
* MUSR-NIS: MINUID=500&lt;br /&gt;
* TIG-NIS: MINUID=500 (100 on SL6 mother8pi)&lt;br /&gt;
&lt;br /&gt;
Ubuntu 20 has two programs to create users:&lt;br /&gt;
* adduser - creates new users with UID 1000 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* adduser --system - creates new system users with UID 100 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* useradd - creates new users with UID 1000 and up as specified in /etc/login.defs. No problems here.&lt;br /&gt;
* useradd --system - creates new system users with UID 999 and down (read &amp;quot;man useradd&amp;quot;, section at the end about SYS_UID_MAX). This collides with NIS MINUID, these system users will be included in the NIS map and cause trouble.&lt;br /&gt;
&lt;br /&gt;
This problem cannot be fixed, SYS_UID_MIN, SYS_UID_MAX and UID_MIN in /etc/login.defs do not seem&lt;br /&gt;
to have any effect on UIDs chosen by &amp;quot;useradd --system&amp;quot;. (tested on Ubuntu LTS 20.04).&lt;br /&gt;
&lt;br /&gt;
So far only these system accounts seem to be affected by this:&lt;br /&gt;
* systemd-coredump&lt;br /&gt;
* ganglia&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/passwd&amp;quot; to identify the last unused system user uid (range 100..200)&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/group&amp;quot; to identify the last unused system user gid (range 100.200)&lt;br /&gt;
* systemd-coredump: manually change UID and GID (package systemd-coredump is usually not installed)&lt;br /&gt;
* ganglia: same thing, then change ownership on all ganglia files.&lt;br /&gt;
&lt;br /&gt;
Also read systemd author&#039;s opinion on system vs user UIDs:&lt;br /&gt;
https://github.com/systemd/systemd/issues/4850#issuecomment-265698275&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-logind NIS breakage =&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED FOR UBUNTU LTS 20.04 !!!&lt;br /&gt;
&lt;br /&gt;
there is a delay in ssh logins for normal users. &amp;quot;ssh -v&amp;quot; shows the delay is after &amp;quot;pledge...&amp;quot;. this&lt;br /&gt;
fix removes the delay.&lt;br /&gt;
&lt;br /&gt;
systemd developers think that we should not use NIS and made sure there are&lt;br /&gt;
problems if we do. To give them credit, they do offer a workaround. Read this:&lt;br /&gt;
https://github.com/poettering/systemd/commit/695fe4078f0df6564a1be1c4a6a9e8a640d23b67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-logind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-logind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-udevd NIS breakage =&lt;br /&gt;
&lt;br /&gt;
see same problem as above with udev getting stuck. ubuntu lts 20.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-udevd.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-udevd.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-udevd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure USB device permissions =&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usbmisc&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot; &lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyACM*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;*video*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* reload udev rules: udevadm control --reload-rules&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
* watch udev activity: udevadm monitor -p&lt;br /&gt;
&lt;br /&gt;
= Configure lightdm display manager =&lt;br /&gt;
&lt;br /&gt;
* enable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo lightdm | dpkg-reconfigure -fteletype lightdm&lt;br /&gt;
systemctl disable gdm&lt;br /&gt;
systemctl disable sddm&lt;br /&gt;
systemctl enable lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable login by NIS users&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp -v etc/lightdm_enable_nis_login.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart lightdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop gdm&lt;br /&gt;
systemctl restart lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install libpng12.so.0 =&lt;br /&gt;
&lt;br /&gt;
Quartus 16 needs libpng12:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install google-chrome =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb&lt;br /&gt;
dpkg -i google-chrome-stable_current_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
confirm autoupdate is enabled, observe dl.google.com is present in the list of repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
...&lt;br /&gt;
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,094 B]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOLLOWING IS OBSOLETE:&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -&lt;br /&gt;
sh -c &#039;echo &amp;quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/google-tmp.list&#039;&lt;br /&gt;
apt update&lt;br /&gt;
apt install google-chrome-stable&lt;br /&gt;
/bin/rm -f /etc/apt/sources.list.d/google-tmp.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install amanda client =&lt;br /&gt;
&lt;br /&gt;
ONLY ON MACHINES THAT HOST HOME DIRECTORIES&lt;br /&gt;
&lt;br /&gt;
* apt install amanda-client&lt;br /&gt;
* edit /etc/amandahosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amanda.triumf.ca amanda amdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check permissions on /etc/amandahosts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:/var/log/amanda# ls -l /etc/amandahosts&lt;br /&gt;
-rw------- 1 backup backup 49 Jan 27 10:48 /etc/amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix if needed: chown backup.backup /etc/amandahosts; chmod a= /etc/amandahosts; chmod u=wr /etc/amandahosts&lt;br /&gt;
* edit /etc/amanda-security.conf, add this line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runtar:gnutar_path=/usr/bin/tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the amanda machine:&lt;br /&gt;
&lt;br /&gt;
* in amanda disklist, use dump type &amp;quot;bsdtcp-comp-user-tar&amp;quot;&lt;br /&gt;
* su - amanda and run amcheck -c daily daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.1$ amcheck -c daily daq00&lt;br /&gt;
&lt;br /&gt;
Amanda Backup Client Hosts Check&lt;br /&gt;
--------------------------------&lt;br /&gt;
Client check: 1 host checked in 0.092 seconds.  0 problems found.&lt;br /&gt;
&lt;br /&gt;
(brought to you by Amanda 3.3.7p1.git.685ff76d)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable rc.local =&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, Ubuntu LTS 20.04 does not enable /etc/rc.local. Do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp -n -v etc/rc.local /etc/&lt;br /&gt;
chmod a+rx /etc/rc.local&lt;br /&gt;
cp etc/rc-local.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Remove unwanted packages =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt purge  bash-completion # broken, adds unwanted &amp;quot;\&amp;quot; if &amp;quot;ls -l $ROOTSYS/&amp;lt;tab&amp;gt;&amp;quot;&lt;br /&gt;
apt purge  zsys # broken, do not use&lt;br /&gt;
apt purge  sddm # login manager&lt;br /&gt;
apt purge  avahi-daemon avahi-autoipd # not sure what it does, observed using 100% CPU&lt;br /&gt;
apt purge  modemmanager # probes all serial ports to see if it&#039;s a modem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable unwanted services =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable mpd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl --global mask tracker-extract-3.service&lt;br /&gt;
systemctl --global mask tracker-miner-fs-3.service&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable sleep and suspend =&lt;br /&gt;
&lt;br /&gt;
note: we see some computers randomly shutdown or go to sleep, log files indicates the &amp;quot;sleep&amp;quot; or &amp;quot;suspend&amp;quot; button was pushed by user, but no such buttons actually exist. this is the fix for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target systemd-suspend.service systemd-hybrid-sleep.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable crontab @reboot for MIDAS =&lt;br /&gt;
&lt;br /&gt;
startup scripts have a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/cron.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/cron.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat cron.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependency tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
Crontab entry to start midas: (install in the midas user crontab, not root crontab)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - midasuser&lt;br /&gt;
crontab -l&lt;br /&gt;
#@reboot /bin/bash -l -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
#@reboot /bin/tcsh -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install apache httpd proxy for midas and elog =&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache2.&lt;br /&gt;
&lt;br /&gt;
First, configure apache2:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install apache2&lt;br /&gt;
cd /etc/apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file conf-available/ssl-daq14.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file sites-available/daq14-ssl.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
    &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName daq14.triumf.ca&lt;br /&gt;
        DocumentRoot /var/www/html&lt;br /&gt;
        ErrorLog /var/log/apache2/daq14.log&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        # note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
        ## use port specified in elogd.cfg&lt;br /&gt;
        #ProxyPass /elog/ http://localhost:8082/ retry=1 &lt;br /&gt;
        ## use mhttpd port&lt;br /&gt;
        #ProxyPass /      http://localhost:8080/ retry=1 &lt;br /&gt;
        Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
        &amp;lt;Location /&amp;gt;&lt;br /&gt;
            SSLRequireSSL&lt;br /&gt;
            AuthType Basic&lt;br /&gt;
            AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
            Require valid-user&lt;br /&gt;
            # create password file: touch /etc/apache2/htpasswd&lt;br /&gt;
            # to add new user or change password: htpasswd /etc/apache2/htpasswd username&lt;br /&gt;
            AuthUserFile /etc/apache2/htpasswd&lt;br /&gt;
        &amp;lt;/Location&amp;gt;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable ssl module&lt;br /&gt;
* enable new configurations&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
a2enmod headers&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
a2enconf ssl-daq14&lt;br /&gt;
a2ensite daq14-ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable default ssl sites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dissite 000-default-le-ssl&lt;br /&gt;
a2dissite 000-default&lt;br /&gt;
ls -l /etc/apache2/sites-enabled/ ### should show only daq14-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that there are no syntax problems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable and start apache2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 may fail to start, look in /var/log/apache2/error.log and /var/log/apache2/daq14.log&lt;br /&gt;
* if it says &amp;quot;Failed to configure ... certificate&amp;quot;, proceed to the step for setting certbot.&lt;br /&gt;
* try to access https://daq14.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, look at documentation for ufw.&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
(Note: unsurprisingly, this requires outside access to connect with letsencrypt, so won&#039;t work if PC is only accessible from on-site network)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that apache2 is listening on port 80, follow the apache2 instructions above (remove &amp;quot;listen 80&amp;quot; from apache2.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot (if necessary open tcp port 80 in the firewall, see documentation for ufw):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install certbot python3-certbot-apache&lt;br /&gt;
certbot certonly --standalone --installer apache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq14.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot install --apache --cert-name daq14.triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside /etc/apache2/sites-enabled/daq14-ssl.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in&lt;br /&gt;
/etc/letsencrypt/live/daq14.triumf.ca/&lt;br /&gt;
* to check current renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work with current version of certbot&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/apache2/htpasswd&lt;br /&gt;
htpasswd /etc/apache2/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart apache2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* try accessing MIDAS https://daq14.triumf.ca/ (make sure mhttpd is running)&lt;br /&gt;
* if it&#039;s not working, check odb setting FIXME!&lt;br /&gt;
* try accessing ELog https://daq14.triumf.ca/elog/ (make sure elogd is running)&lt;br /&gt;
* if it&#039;s not working, check elogd.cfg file and make sure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSL                  = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== generate self-signed certificate ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphacpc05:~# openssl req  -nodes -new -x509  -keyout server.key -out server.cert -days 1001&lt;br /&gt;
...+....+..+..........+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+..+...+.........+......+.+...+...+.....+...............+.........+...+.+......+...+...........+....+...+..+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+......+.+...+..+.......+..+...+.......+......+...+..+...+......+....+...............+..+...+....+...........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
......+......+.+..+......+.+......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.....+......+.+.........+......+.....+.+..+...+.......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.......+....+......+.....+...+...+.......+..+.+........+.+...+......+..+..........+..+.+...........+...+.......+......+.....+.......+...+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
-----&lt;br /&gt;
You are about to be asked to enter information that will be incorporated&lt;br /&gt;
into your certificate request.&lt;br /&gt;
What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;
There are quite a few fields but you can leave some blank&lt;br /&gt;
For some fields there will be a default value,&lt;br /&gt;
If you enter &#039;.&#039;, the field will be left blank.&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:CH&lt;br /&gt;
State or Province Name (full name) [Some-State]:Geneve&lt;br /&gt;
Locality Name (eg, city) []:CERN&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CERN&lt;br /&gt;
Organizational Unit Name (eg, section) []:ALPHA experiment           &lt;br /&gt;
Common Name (e.g. server FQDN or YOUR name) []:alphacpc05.cern.ch&lt;br /&gt;
Email Address []:&lt;br /&gt;
root@alphacpc05:~# &lt;br /&gt;
root@alphacpc05:~# &lt;br /&gt;
root@alphacpc05:~# ls -l&lt;br /&gt;
-rw-r--r-- 1 root root 1375 juil. 10 21:43 server.cert&lt;br /&gt;
-rw------- 1 root root 1708 juil. 10 21:42 server.key&lt;br /&gt;
root@alphacpc05:~# systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable elog PDF preview =&lt;br /&gt;
&lt;br /&gt;
NOTE: looks like U-24 already has this correctly.&lt;br /&gt;
&lt;br /&gt;
see https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&lt;br /&gt;
&lt;br /&gt;
* xemacs -nw /etc/ImageMagick-6/policy.xml&lt;br /&gt;
* remove this section at the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- disable ghostscript format types --&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;EPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PDF&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;XPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install Jupyter notebook =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From https://jupyter.org/install&lt;br /&gt;
apt install python3-pip&lt;br /&gt;
pip install jupyterlab&lt;br /&gt;
pip install notebook&lt;br /&gt;
~/.local/bin/jupyter notebook&lt;br /&gt;
watch the http://localhost:8888 URL that it printed&lt;br /&gt;
say &amp;quot;no&amp;quot; to offer to start firefox (it will not work!)&lt;br /&gt;
URL is: http://localhost:8888/tree?token=xxx&lt;br /&gt;
from the machine where you are running the web browser (i.e. google-chrome), run (replace trinat@trinatdaq with the username and machine name where you started jupyter)&lt;br /&gt;
open a new shell and run: ssh -v trinat@trinatdaq -L 8888:localhost:8888&lt;br /&gt;
in the web browser, open http://localhost:8888&lt;br /&gt;
this gives us the login page&lt;br /&gt;
in the password or token entry field, put the token from the &amp;quot;tree?token=xxx&amp;quot; above (printed by jupyter on startup)&lt;br /&gt;
push button &amp;quot;login&amp;quot;&lt;br /&gt;
jupyter page should open with the list of files in the trinat home directory&lt;br /&gt;
congratulate Brian with full success&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS quota report =&lt;br /&gt;
&lt;br /&gt;
If there are any ZFS volumes, install script to report disk and quota usage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/quotareport&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /var/www/html/zfsquotareport&lt;br /&gt;
cp -pv ~/git/scripts/quotareport/sorttable.js /var/www/html/zfsquotareport/&lt;br /&gt;
ln -s $PWD/zfsquotareport.perl /etc/cron.daily/&lt;br /&gt;
touch /etc/crontab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If httpd is configured to redirect &amp;quot;/&amp;quot; to MIDAS mhttpd:&lt;br /&gt;
* add following to /etc/apache2/sites-enabled/xxx-ssl.conf in front of &amp;quot;ProxyPass / ...&amp;quot;&lt;br /&gt;
* run &amp;quot;systemctl reload apache2&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not proxy zfs quota report directory &lt;br /&gt;
ProxyPass /zfsquotareport/ ! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install PHP =&lt;br /&gt;
&lt;br /&gt;
* apt install php libapache2-mod-php&lt;br /&gt;
* systemctl restart apache2&lt;br /&gt;
* create /var/www/html/info.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
phpinfo(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://daq00.triumf.ca/info.php&lt;br /&gt;
&lt;br /&gt;
= Configure TRIUMF printers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl stop cups-browsed.service&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
systemctl disable cups-browsed.service&lt;br /&gt;
systemctl stop snap.cups.cupsd.service&lt;br /&gt;
systemctl stop snap.cups.cups-browsed.service&lt;br /&gt;
systemctl disable snap.cups.cupsd.service&lt;br /&gt;
systemctl disable snap.cups.cups-browsed.service&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable core dumps =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 installs the apport package&lt;br /&gt;
which disabled core dumps from user applications. (google it up!).&lt;br /&gt;
It is not meant to do this and documentation claims that&lt;br /&gt;
it is not installed and not enabled by default. Oh, well...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove apport&lt;br /&gt;
apt autoremove ### will remove apport-symptoms and a few other packages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, core dumps are written to file &amp;quot;core&amp;quot; in the current directory.&lt;br /&gt;
See /proc/sys/kernel/core_pattern and /proc/sys/kernel/core_uses_pid.&lt;br /&gt;
&lt;br /&gt;
Enable core dump file names to include process id, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;echo 1 &amp;gt; /proc/sys/kernel/core_uses_pid&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable debugger =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 does not permit debugger to attach and debug&lt;br /&gt;
already running programs. To enable it, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable Ubuntu Pro nag =&lt;br /&gt;
&lt;br /&gt;
best I can tell, impossible at this time.&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! does nothing !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pro config set apt_news=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! breaks automatic updates because 20apt-esm-hook.conf is missing !!!&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;apt upgrade&amp;quot; requests Ubuntu Pro or esm-apps, disable the nag:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! likely same as above, breaks automatic updates !!!&lt;br /&gt;
&lt;br /&gt;
* comment out /etc/apt/apt.conf.d/20apt-esm-hook.conf&lt;br /&gt;
&lt;br /&gt;
== do not do this ==&lt;br /&gt;
&lt;br /&gt;
!!! removes too many packages !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove ubuntu-pro-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update packages =&lt;br /&gt;
&lt;br /&gt;
* apt update # update package list&lt;br /&gt;
* apt upgrade # install updated packages and update &amp;quot;kept back&amp;quot; packages&lt;br /&gt;
* apt autoremove # remove packages that apt thinks should be removed&lt;br /&gt;
&lt;br /&gt;
= Finish installation =&lt;br /&gt;
&lt;br /&gt;
Congratulations. There is nothing more to do!&lt;br /&gt;
&lt;br /&gt;
* reboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update to new version of Ubuntu =&lt;br /&gt;
&lt;br /&gt;
* run &amp;quot;do-release-upgrade -c&amp;quot;&lt;br /&gt;
* if it does not report new release Ubuntu 24, check /etc/update-manager/release-upgrades has &amp;quot;Prompt=lts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Update Ubuntu LTS 20.04 to LTS 22.04 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daqubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# reboot to clear out all updates&lt;br /&gt;
# vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;22.04 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
# do-release-upgrade&lt;br /&gt;
...&lt;br /&gt;
say yes...&lt;br /&gt;
...&lt;br /&gt;
login.defs, say &amp;quot;Y&amp;quot; (erase local changes, use packaged version)&lt;br /&gt;
/etc/systemd/resolved.conf, say &amp;quot;Y&amp;quot; (same as above)&lt;br /&gt;
firefox snap, say yes&lt;br /&gt;
unable to reach snap store, say &amp;quot;skip&amp;quot;&lt;br /&gt;
/etc/gmond.conf, say &amp;quot;Y&amp;quot;&lt;br /&gt;
/var/yp/Makefile, say &amp;quot;install the package maintainer&#039;s version&amp;quot;&lt;br /&gt;
/etc/ypserv.conf, same thing&lt;br /&gt;
/etc/ypserv.securenets, same thing&lt;br /&gt;
/etc/default/nis, same thing&lt;br /&gt;
/etc/speech-dispatcher/modules/mary-generic.conf, same thing&lt;br /&gt;
/etc/apt/apt.conf.d/50unattended-upgrades, same thing&lt;br /&gt;
...&lt;br /&gt;
278 packages are going to be removed, say yes&lt;br /&gt;
...&lt;br /&gt;
restart required, say yes&lt;br /&gt;
...&lt;br /&gt;
no ping... yes ping...&lt;br /&gt;
...&lt;br /&gt;
ssh daqubuntu, ok&lt;br /&gt;
apt update, fail, DNS does not work, &amp;quot;host security.ubuntu.com&amp;quot; does not resolve.&lt;br /&gt;
fix resolver per https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#Disable_NetworkManager&lt;br /&gt;
apt update, apt upgrade now works, 0 packages to update&lt;br /&gt;
NIS does not work.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== midm9a ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
login.defs&lt;br /&gt;
firefox snap&lt;br /&gt;
gmond.conf&lt;br /&gt;
ypserv&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
unattended-upgrades&lt;br /&gt;
amanda-security.conf&lt;br /&gt;
remove obsolete (no)&lt;br /&gt;
reboot&lt;br /&gt;
configure dns&lt;br /&gt;
reenable nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daq17 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox snap&lt;br /&gt;
imagemagick policy.xml&lt;br /&gt;
gmond.conf&lt;br /&gt;
chrony.conf&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
ypserv.conf&lt;br /&gt;
ypserv.securenets&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
50unattended-upgrades&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daq00 ===&lt;br /&gt;
&lt;br /&gt;
per https://serverpilot.io/docs/how-to-upgrade-ubuntu-20.04-to-22.04/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if it exists &amp;quot;too soon&amp;quot; without doing anything, run it without &amp;quot;-f xxx&amp;quot;, most likely it does not like something about this machine. in case of daq00 it did not like how the EFI partitions were mounted. after fixing it, non-interactive upgrade was successful.&lt;br /&gt;
&lt;br /&gt;
=== isdaq08 ===&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check for modified config files that make upgrade unhappy, deal with all files reported by debsums.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@isdaq08:~# debsums -ce&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
/etc/apt/apt.conf.d/10periodic&lt;br /&gt;
root@isdaq08:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* restore original /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;; &lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;0&amp;quot;; &lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;0&amp;quot;; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
&lt;br /&gt;
Run the upgrade:&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&lt;br /&gt;
Post upgrade:&lt;br /&gt;
&lt;br /&gt;
* configure DNS&lt;br /&gt;
* apt -y install linux-generic-hwe-22.04&lt;br /&gt;
* /bin/cp -v ~/git/scripts/etc/99apt-conf-ko /etc/apt/apt.conf.d/ # restore nightly updates&lt;br /&gt;
* /bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf # remove the ubuntu-pro nag&lt;br /&gt;
* install missing packages&lt;br /&gt;
* restore ganglia&lt;br /&gt;
* restore nis&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
== upgrade U-22 to U-24 ==&lt;br /&gt;
&lt;br /&gt;
generic instructions. below are notes from upgrades of specific machines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove desktop-base # causes installer crash&lt;br /&gt;
apt -y remove thunderbird  # avoid forced conversion to snap&lt;br /&gt;
apt update&lt;br /&gt;
apt -y upgrade&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
do-release-upgrade -c      # confirm upgrade will be to U-24&lt;br /&gt;
do-release-upgrade&lt;br /&gt;
# say &amp;quot;y&amp;quot; to all questions&lt;br /&gt;
# after installation starts, accept default answers to all questions&lt;br /&gt;
# should run for about 1 hour or so&lt;br /&gt;
# after upgrade finishes&lt;br /&gt;
apt update&lt;br /&gt;
apt -y upgrade&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if installation bombs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # will tell us to run &amp;quot;apt --fix-broken install&amp;quot;, do it&lt;br /&gt;
apt --fix-broken install&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # should resume the upgrade, will run for a long time&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade # should do nothing&lt;br /&gt;
apt autoremove&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== daqubuntu, U-24 ===&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check for modified config files that make upgrade unhappy, deal with all files reported by debsums.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# debsums -ce&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/ypserv.conf&lt;br /&gt;
/etc/ypserv.securenets&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
/etc/update-manager/release-upgrades&lt;br /&gt;
/etc/apt/apt.conf.d/10periodic&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
* restore original /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;; &lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;0&amp;quot;; &lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;0&amp;quot;; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* restore original release-upgrades: &amp;quot;Prompt: lts&amp;quot;&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
&lt;br /&gt;
Check for upgrade:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
There is no development version of an LTS available.&lt;br /&gt;
To upgrade to the latest non-LTS development release &lt;br /&gt;
set Prompt=normal in /etc/update-manager/release-upgrades.&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the upgrade:&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&lt;br /&gt;
Post upgrade:&lt;br /&gt;
&lt;br /&gt;
* configure DNS&lt;br /&gt;
* apt -y install linux-generic-hwe-22.04&lt;br /&gt;
* /bin/cp -v ~/git/scripts/etc/99apt-conf-ko /etc/apt/apt.conf.d/ # restore nightly updates&lt;br /&gt;
* /bin/rm /etc/apt/apt.conf.d/20apt-esm-hook.conf # remove the ubuntu-pro nag&lt;br /&gt;
* install missing packages&lt;br /&gt;
* restore ganglia&lt;br /&gt;
* restore nis&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
=== daq14, U-20-22-24 ===&lt;br /&gt;
&lt;br /&gt;
* apt update, apt upgrade&lt;br /&gt;
* apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 ### install kernel 5.15&lt;br /&gt;
* shutdown -r now&lt;br /&gt;
* stuck waiting for daq14 to shutdown...&lt;br /&gt;
* reboot into kernel 5.15&lt;br /&gt;
* ???&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ~&lt;br /&gt;
apt -y install debsums&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/apache2/ports.conf&lt;br /&gt;
/etc/dnsmasq.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
/etc/sudoers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 restore original ports.conf, uncomment &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* cp -pv /etc/dnsmasq.conf.dpkg-dist /etc/dnsmasq.conf&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* edit /etc/yp.conf, remove everything after &amp;quot;# ypserver ypserver.network.com&amp;quot;&lt;br /&gt;
* &amp;quot;debsums -ce&amp;quot; is now empty&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* runs for a long time&lt;br /&gt;
* stuck on &amp;quot;/etc/default/nis&amp;quot;, type &amp;quot;Y&amp;quot;, press enter, nothing for a bit, then resumes running&lt;br /&gt;
* finished&lt;br /&gt;
* configure DNS&lt;br /&gt;
* reboot&lt;br /&gt;
* have kernel 6.8&lt;br /&gt;
* apt update; apt upgrade&lt;br /&gt;
* apt upgrade guile-2.2-libs ### would not auto-update, &amp;quot;kept back&amp;quot;, has to be done by hand&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* diff /etc/default/nis.dpkg-dist  /etc/default/nis&lt;br /&gt;
* cp -pv /etc/default/nis.dpkg-dist  /etc/default/nis&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums: missing file /etc/init.d/nis (from nis package)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* we ignore this and run the update&lt;br /&gt;
* do-release-upgrade -c&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;24.04.1 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombs out without any error messages&lt;br /&gt;
* in /var/log/dist-upgrade/main.log reports &amp;quot;Failed to find a replacement for xapp&amp;quot; and other packages&lt;br /&gt;
* apt remove xapp usrmerge ureadahead thunderbird-gnome-support&lt;br /&gt;
* no go, complains about even more packages.&lt;br /&gt;
* apt list | grep installed | grep -v jammy ### show packages installed from non-ubuntu sources&lt;br /&gt;
* remove all packages marked &amp;quot;install,local&amp;quot; ### ubuntu updater does not know where they came from and so cannot update them.&lt;br /&gt;
* apt remove desktop-base ### not happy about this package in /var/log/dist-upgrade/apt.log&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* running for a long time...&lt;br /&gt;
&lt;br /&gt;
=== alpha04 U-20-24 ===&lt;br /&gt;
&lt;br /&gt;
* apt update, apt upgrade, apt autoremove&lt;br /&gt;
* reboot into latest kernel (already done)&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alpha04:~# debsums -ce&lt;br /&gt;
/etc/dnsmasq.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
root@alpha04:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* move /etc/dnsmasq.conf to /etc/dnsmasq.d/alpha04.conf&lt;br /&gt;
* apt remove dnsmasq&lt;br /&gt;
* apt remove ganglia-monitor&lt;br /&gt;
* apt remove nis&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* debsums -ce ### is now empty&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* it runs for a long time...&lt;br /&gt;
* complained about /etc/fwupd config files, not sure why...&lt;br /&gt;
* finished&lt;br /&gt;
* apt update, apt upgrade, apt autoremove&lt;br /&gt;
* restore dnsmasq: apt install dnsmasq, systemctl status dnsmasq&lt;br /&gt;
* restore ganglia, per instructions&lt;br /&gt;
* restore NIS: apt -y install rpcbind nis, ypwhich, ypwhich -m&lt;br /&gt;
* zpool upgrade rpool ### also upgrade any other zfs pools, see zpool status&lt;br /&gt;
* remove unwanted packages, per instructions&lt;br /&gt;
* run gonodeinfo&lt;br /&gt;
* reboot&lt;br /&gt;
* done&lt;br /&gt;
&lt;br /&gt;
== vera00 U20-22-24 ==&lt;br /&gt;
&lt;br /&gt;
* everything same as daq14 for U20-22&lt;br /&gt;
* kernel is still 5.15&lt;br /&gt;
* U22-24 is going...&lt;br /&gt;
* stuck for a few minutes on /etc/fwupd config files&lt;br /&gt;
* have kernel 6.8.0-49&lt;br /&gt;
* same steps as daq14&lt;br /&gt;
* reboot&lt;br /&gt;
* same steps as daq14&lt;br /&gt;
* done&lt;br /&gt;
&lt;br /&gt;
== phaarmonster U22-24 ==&lt;br /&gt;
&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/amandahosts&lt;br /&gt;
/etc/apache2/ports.conf&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* do-release-upgrade -c ### reports U24.04.1&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive ### bombs&lt;br /&gt;
* apt remove desktop-base; apt autoremove&lt;br /&gt;
* do-release-upgrade ### (interactive) runs ok&lt;br /&gt;
* bombed !!!&lt;br /&gt;
* apt upgrade spews errors and tells us to run &amp;quot;apt --fix-broken install&amp;quot;&lt;br /&gt;
* apt --fix-broken install ### runs&lt;br /&gt;
* bombs with thunderbird snap errors&lt;br /&gt;
* again... no go&lt;br /&gt;
* thunderbird snap complains about mounting /home, but /home is a symlink&lt;br /&gt;
* rm /home, mkdir /home&lt;br /&gt;
* again, runs ok&lt;br /&gt;
* asks about /etc/fwupd/fwupd.conf - say &amp;quot;Y&amp;quot; to install updated package version&lt;br /&gt;
* apt install completes&lt;br /&gt;
* apt update; apt upgrade ### running for a long time...&lt;br /&gt;
* finished&lt;br /&gt;
* install missing packages, etc&lt;br /&gt;
* reboot&lt;br /&gt;
* long wait... came back&lt;br /&gt;
* DNS does now work, systemd-resolved missing, apt install systemd-resolved, &amp;quot;configure DNS&amp;quot;&lt;br /&gt;
* done.&lt;br /&gt;
&lt;br /&gt;
== isdaq10 U22-24 ==&lt;br /&gt;
&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombed on desktop-base, &amp;quot;apt remove desktop-base; apt autoremove&amp;quot;&lt;br /&gt;
* bombed with errors&lt;br /&gt;
* running &amp;quot;apt --fix-broken install&amp;quot;&lt;br /&gt;
* complained about thunderbird snap&lt;br /&gt;
* complained about /etc/fwupd/fwupd.conf (say Y)&lt;br /&gt;
* finished ok&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade ### reports &amp;quot;1382 upgraded, 140 newly installed, 0 to remove and 29 not upgraded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== iris01 ==&lt;br /&gt;
&lt;br /&gt;
* debsums -ce&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ganglia/gmond.conf&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
/etc/yp.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove desktop-base&lt;br /&gt;
* apt remove thunderbird&lt;br /&gt;
* apt autoremove&lt;br /&gt;
* do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
* bombed with dpkg errors:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hplip wants wrong python&lt;br /&gt;
ganglia-monitor wants wrong libapr1&lt;br /&gt;
sssd-ad wants bunch of wrong libraries&lt;br /&gt;
xemacs21-mule&lt;br /&gt;
libnfsidmap1 wants libldap2&lt;br /&gt;
adn so forth...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt --fix-broken install -y&lt;br /&gt;
* bombs on ganglia - ganglia group absent from /etc/groups&lt;br /&gt;
* fix group ganglia by hand, remove ganglia group from NIS on isdaq00&lt;br /&gt;
* apt --fix-broken install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
== iris00 ==&lt;br /&gt;
&lt;br /&gt;
* stuck on &amp;quot;autofs: restarting&amp;quot;, login as root, kill iris midas, kill automount, systemctl restart autofs, noble got unstuck, ctrl-c systemctl restart autofs&lt;br /&gt;
* noble running...&lt;br /&gt;
* bombed with dpkg errors&lt;br /&gt;
* check ganglia user, group - both ok&lt;br /&gt;
* apt --fix-broken install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
== tigstore01 ==&lt;br /&gt;
&lt;br /&gt;
* no bomb-out&lt;br /&gt;
&lt;br /&gt;
== midm9b ==&lt;br /&gt;
&lt;br /&gt;
* apt remove desktop-base thunderbird&lt;br /&gt;
* bombed&lt;br /&gt;
* apt --fix-broken-install&lt;br /&gt;
* apt upgrade&lt;br /&gt;
&lt;br /&gt;
= Upgrade to new version of Debian =&lt;br /&gt;
&lt;br /&gt;
https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.en.html&lt;br /&gt;
&lt;br /&gt;
== 32-bit VME processor Debian 11 to 12 ==&lt;br /&gt;
&lt;br /&gt;
* cd git/scripts; git pull; cd ~&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade&lt;br /&gt;
* edit /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main&lt;br /&gt;
#deb http://deb.debian.org/debian/ bullseye main&lt;br /&gt;
#deb-src http://deb.debian.org/debian/ bullseye main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt update&lt;br /&gt;
* apt upgrade --without-new-pkgs&lt;br /&gt;
* apt full-upgrade&lt;br /&gt;
* apt list &#039;~c&#039;; apt purge &#039;~c&#039; # purge left-over config files [residual-config]&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Ubuntu package manager =&lt;br /&gt;
&lt;br /&gt;
* apt-get install xxx # install package xxx&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get upgrade&lt;br /&gt;
* apt-get dist-upgrade&lt;br /&gt;
* apt-get autoremove # remove automatically installed packages required by a removed package&lt;br /&gt;
* apt-get remove xxx # remove package xxx&lt;br /&gt;
* apt-cache search . # list all available packages&lt;br /&gt;
* apt-cache show &amp;quot;.&amp;quot; | grep ^Package # list al available packages&lt;br /&gt;
* apt-cache madison root-system # show all available versions of package root-system&lt;br /&gt;
* apt list # list all installed packages&lt;br /&gt;
* dpkg --listfiles libpng16-16 # list all files from this package&lt;br /&gt;
* apt list --installed # list all installed packages&lt;br /&gt;
* dpkg -S /bin/bash # what package provides this file?&lt;br /&gt;
* dpkg -L bash # what files provided by this package?&lt;br /&gt;
* debsums -ce # show modified config files&lt;br /&gt;
* apt-config dump # show apt configuration&lt;br /&gt;
* apt purge &#039;~c&#039; # purge all [residual-config] packages&lt;br /&gt;
&lt;br /&gt;
= Ubuntu zsys =&lt;br /&gt;
&lt;br /&gt;
NOTE: DO NOT USE ZSYS, see https://github.com/ubuntu/zsys/issues/218 and https://github.com/ubuntu/zsys/issues/230&lt;br /&gt;
&lt;br /&gt;
* scripted removal of old snapshots (replace &amp;quot;echo zfs destroy&amp;quot; with &amp;quot;zfs destroy&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list -t all | cut -f1 -d &amp;quot; &amp;quot; | grep autozsys | xargs -n1 echo zfs destroy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* manual removal of old snapshots&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zsysctl show&lt;br /&gt;
zsysctl state remove xy69ye -s&lt;br /&gt;
zsysctl state remove xy69ye&lt;br /&gt;
zsysctl state remove xy69ye -u wheel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt remove zsys&lt;br /&gt;
&lt;br /&gt;
NOTE: old zsys snapshots must be cleaned manually, &amp;quot;zsysctl state remove xxx --system&amp;quot; is broken and does not remove user data snapshots&lt;br /&gt;
&lt;br /&gt;
* manages system snapshots&lt;br /&gt;
* documentation: https://github.com/ubuntu/zsys&lt;br /&gt;
* documentation: (go to next article via link &amp;quot;newer&amp;quot; at the bottom) https://didrocks.fr/2020/05/21/zfs-focus-on-ubuntu-20.04-lts-whats-new/&lt;br /&gt;
* ubuntu 20.04 bug, too many snapshots cause /boot to become full and updates fail. https://github.com/ubuntu/zsys/issues/155&lt;br /&gt;
* solution: use custom /etc/zsys.conf, limit number of snapshots to 10, see trinatdaq:/etc/zsys.conf&lt;br /&gt;
* zsys commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-grub # list of all snapshots, errors if some snapshots are broken&lt;br /&gt;
zsysctl state remove lnc0k7 --system # remove snapshot&lt;br /&gt;
xemacs -nw /etc/zsys.conf; zsysctl service reload; zsysctl service gc # cause gc to run with new settings in zsys.conf&lt;br /&gt;
zfs list -r -t snapshot -o name,used,referenced,creation bpool/BOOT # list snapshots&lt;br /&gt;
zsysctl show # show snapshots&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu cloning =&lt;br /&gt;
&lt;br /&gt;
to clone a ubuntu image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /nfsroot/lxcpet&lt;br /&gt;
emacs -nw etc/hostname ### change hostname&lt;br /&gt;
emacs -nw etc/mailname ### change hostname (debian 11)&lt;br /&gt;
emacs -nw etc/defaultdomain ### change the NIS domainname&lt;br /&gt;
emacs -nw etc/yp.conf ### change the NIS server&lt;br /&gt;
cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu boot loader =&lt;br /&gt;
&lt;br /&gt;
== maintenance commands ==&lt;br /&gt;
&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* grub-install /dev/sda&lt;br /&gt;
&lt;br /&gt;
= Convert from single to dual mirrored ZFS SSD =&lt;br /&gt;
&lt;br /&gt;
Assuming Ubuntu LTS 22.04 with &amp;quot;instal on ZFS&amp;quot; option, we will&lt;br /&gt;
add a second SSD, configure ZFS to use both SSDs in mirrored&lt;br /&gt;
configuration and setup grub to boot from either SSD. This&lt;br /&gt;
is intended to create a full redundant system where failure&lt;br /&gt;
of either SSD does not break the system.&lt;br /&gt;
&lt;br /&gt;
* identify first SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* connect second SSD of identical size&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER   Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
    /dev/sdb  WD Blue SA510 2.5 250GB         22243Z803852              25        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if second SSD is not autodetected, reboot&lt;br /&gt;
* Clone partition table automatically&lt;br /&gt;
If both SSDs are identical size, use this simpler method of duplicating the partition table:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# sfdisk -d /dev/sda &amp;gt; part_table&lt;br /&gt;
root@midm9b:~# grep -v ^label-id part_table | sed -e &#039;s/, *uuid=[0-9A-F-]*//&#039; | sfdisk /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The grep and sed in the second command are there to prevent disk ID and partition IDs from being cloned. Alternatively the part_table file can be edited manually to remove the label-id line and the uuid entries from the individual partitions.&lt;br /&gt;
&lt;br /&gt;
* Clone partition table manually (e.g. for different size disks)&lt;br /&gt;
* list partition table of first SSD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create identical partitions on second SSD, use sector numbers from above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# gdisk /dev/sdb&lt;br /&gt;
GPT fdisk (gdisk) version 1.0.8&lt;br /&gt;
&lt;br /&gt;
Partition table scan:&lt;br /&gt;
  MBR: not present&lt;br /&gt;
  BSD: not present&lt;br /&gt;
  APM: not present&lt;br /&gt;
  GPT: not present&lt;br /&gt;
&lt;br /&gt;
Creating new GPT entries in memory.&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (1-128, default 1): &lt;br /&gt;
First sector (34-488397134, default = 2048) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (2048-488397134, default = 488397134) or {+-}size{KMGTP}: 1050623&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): ef00&lt;br /&gt;
Changed type of partition to &#039;EFI system partition&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (2-128, default 2): &lt;br /&gt;
First sector (34-488397134, default = 1050624) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (1050624-488397134, default = 488397134) or {+-}size{KMGTP}: 5244927&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): 8200&lt;br /&gt;
Changed type of partition to &#039;Linux swap&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (3-128, default 3): &lt;br /&gt;
First sector (34-488397134, default = 5244928) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (5244928-488397134, default = 488397134) or {+-}size{KMGTP}: 9439231&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): be00&lt;br /&gt;
Changed type of partition to &#039;Solaris boot&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (4-128, default 4): &lt;br /&gt;
First sector (34-488397134, default = 9439232) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (9439232-488397134, default = 488397134) or {+-}size{KMGTP}: &lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): bf00&lt;br /&gt;
Changed type of partition to &#039;Solaris root&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): w&lt;br /&gt;
&lt;br /&gt;
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING&lt;br /&gt;
PARTITIONS!!&lt;br /&gt;
&lt;br /&gt;
Do you want to proceed? (Y/N): y&lt;br /&gt;
OK; writing new GUID partition table (GPT) to /dev/sdb.&lt;br /&gt;
The operation has completed successfully.&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda /dev/sdb&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: EB251739-30C6-422F-A505-5887B5A0B603&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sdb1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sdb2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sdb3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sdb4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* identify second SSD partitions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3 -&amp;gt; ../../sdb3&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert bpool from single disk to mirrored disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  99e03dc0-7d4d-f24b-8fa1-f042b9f135db  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                   ONLINE       0     0     0&lt;br /&gt;
	  f6fd54f8-3af7-b943-ae3d-a4e480537fb9  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# zpool attach bpool 99e03dc0-7d4d-f24b-8fa1-f042b9f135db /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3&lt;br /&gt;
root@midm9b:~# zpool status bpool&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert rpool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
root@midm9b:~# zpool attach rpool f6fd54f8-3af7-b943-ae3d-a4e480537fb9 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4&lt;br /&gt;
root@midm9b:~# zpool status rpool&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Jan 20 19:40:45 2023&lt;br /&gt;
	5.83G scanned at 664M/s, 2.92M issued at 332K/s, 9.11G total&lt;br /&gt;
	0B resilvered, 0.03% done, no estimated completion time&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for resilver to complete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 9.65G in 00:00:36 with 0 errors on Fri Jan 20 19:41:21 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable booting from second SSD: (instead of /dev/sda1, /dev/sdb1, use UUID=xxx)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# mkfs.msdos /dev/sdb1&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sda&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sdb&lt;br /&gt;
root@midm20c:~# blkid | grep vfat ### identify UUID&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;DD89-5081&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;d0cb6be4-2f67-5b42-9b26-9e6905e9f774&amp;quot;&lt;br /&gt;
/dev/sdc1: UUID=&amp;quot;D970-86BA&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;e6d3b5b9-a512-44a2-9205-1a4db06ed2a2&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;DDA1-044C&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI System Partition&amp;quot; PARTUUID=&amp;quot;6dc9dff0-1c13-8045-a906-7803d3074c70&amp;quot;&lt;br /&gt;
root@midm20c:~# cat /etc/fstab | grep vfat ### add mount points with correct UUID&lt;br /&gt;
#UUID=D970-86BA  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
UUID=DDA1-044C  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
UUID=DD89-5081  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022      0       1&lt;br /&gt;
root@midm9b:~# mount -a&lt;br /&gt;
root@midm9b:~# df -kl&lt;br /&gt;
Filesystem                                       1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
...&lt;br /&gt;
/dev/sda1                                           523244   13720    509524   3% /boot/efi&lt;br /&gt;
/dev/sdb1                                           523244       4    523240   1% /boot/efi-sdb&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# rsync -av /boot/efi/ /boot/efi-sdb/&lt;br /&gt;
sending incremental file list&lt;br /&gt;
EFI/&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sda&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sdb&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup script to update grub on second SSD, it must be run manually after every kernel update&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ln -s ~/git/scripts/etc/update_efi_grub.perl ~/&lt;br /&gt;
root@midm9b:~# ~/update_efi_grub.perl -u&lt;br /&gt;
EFI dir: /boot/efi-sda&lt;br /&gt;
/boot/efi-sda: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sda/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sda: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sda/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
EFI dir: /boot/efi-sdb&lt;br /&gt;
/boot/efi-sdb: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sdb/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sdb: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sdb/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable NetworkManager =&lt;br /&gt;
&lt;br /&gt;
== Debian-12 ==&lt;br /&gt;
&lt;br /&gt;
* use netplan, https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_for_cloud&lt;br /&gt;
* apt install netplan.io&lt;br /&gt;
* systemctl enable systemd-networkd&lt;br /&gt;
* systemctl restart systemd-networkd&lt;br /&gt;
* create /etc/netplan/50-dhcp.yaml&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  ethernets:&lt;br /&gt;
    all-en:&lt;br /&gt;
      match:&lt;br /&gt;
        name: &amp;quot;en*&amp;quot;&lt;br /&gt;
      dhcp4: true&lt;br /&gt;
      dhcp6: true&lt;br /&gt;
      ignore-carrier: true ### do not drop IP address if network link drops&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* netplan apply&lt;br /&gt;
* netplan try&lt;br /&gt;
* ifconfig -a ### to check IP address settings&lt;br /&gt;
* netstat -rn ### to check default route&lt;br /&gt;
* cat /etc/resolv.conf ### to check DNS&lt;br /&gt;
* ls -l /run/systemd/netif/leases ### systemd-networkd dhcp leases&lt;br /&gt;
* NOTE: without &amp;quot;ignore-carrier&amp;quot; it will drop the IP address if network link drops, re-do dhcp when links comes back&lt;br /&gt;
* NOTE: wait-network-online will wait for all interfaces to get an IP address&lt;br /&gt;
&lt;br /&gt;
== Ubuntu-20 ==&lt;br /&gt;
&lt;br /&gt;
NOTE: THIS IS BROKEN IN UBUNTU LTS 22.04&lt;br /&gt;
&lt;br /&gt;
NetworkManager is useful for configuring dynamic&lt;br /&gt;
network interfaces, i.e. laptops that often move&lt;br /&gt;
between networks, or connect to multiple choice&lt;br /&gt;
of wifi networks, etc.&lt;br /&gt;
&lt;br /&gt;
For machines with statically configured network interfaces,&lt;br /&gt;
NetworkManager is not necessary.&lt;br /&gt;
&lt;br /&gt;
As it has been observed to become confused and observed&lt;br /&gt;
to malfunction when network links go up and down (it keeps&lt;br /&gt;
unnecessarily reconfiguring the ip address, etc), it can&lt;br /&gt;
be usefuil to disable it.&lt;br /&gt;
&lt;br /&gt;
* list all network interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /bin/ls -1 /sys/class/net/&lt;br /&gt;
enp0s31f6&lt;br /&gt;
lo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/network/interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename enp0s31f6=eth0&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
   address 142.90.120.94/19&lt;br /&gt;
   gateway 142.90.100.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* statically configure systemd-resolved&lt;br /&gt;
** create /etc/systemd/resolved.conf.d/resolved.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=142.90.100.19&lt;br /&gt;
Domains=triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** systemctl restart systemd-resolved&lt;br /&gt;
** resolvectl&lt;br /&gt;
** systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
* disable NetworkManager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
== U-22, U-24 ifup-ko ==&lt;br /&gt;
&lt;br /&gt;
Network configuration of modern linux is confused. There are at least 3 configuration methods, each with different shortcomings:&lt;br /&gt;
* the old ifup method is barely documented&lt;br /&gt;
* NetworkManager is well documented and tooled, but sometimes does strange things&lt;br /&gt;
* systemd-networkd is mysterious, and likely to do strange stuff, like all systemd stuff&lt;br /&gt;
* netplan is the latest method, configuration is simple but uses NetworkManager or systemd-networkd as backend.&lt;br /&gt;
&lt;br /&gt;
This is a solution for a specific situation of fixed computer with one fixed wired interface and maybe one or more additional interfaces for fixed wired private networks.&lt;br /&gt;
&lt;br /&gt;
Install /etc/ifup-ko, edit it with IP addresses of main and additional interfaces, let systemd run it in the right place in the boot sequence replacing NetworkManager and NetworkManager-wait-online .&lt;br /&gt;
&lt;br /&gt;
As bonus, /etc/ifup-ko waits up to 10 seconds for the main interface link to come up. If this is not needed, comment it out from the script.&lt;br /&gt;
&lt;br /&gt;
* prepare&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd ifup-ko&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* confirm interface names&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start ifup-ko ### should finish immediately or after 10 seconds&lt;br /&gt;
systemctl status ifup-ko -n 1000 ### observe list of interfaces is correct, name of main interface is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/ifup-ko&lt;br /&gt;
** add host IP address to the &amp;quot;ifconfig&amp;quot; line&lt;br /&gt;
** add gateway IP address to the &amp;quot;ip route add&amp;quot; line&lt;br /&gt;
* test&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start ifup-ko ### should finish immediately&lt;br /&gt;
systemctl status ifup-ko -n 1000 ### observe everything is configured as expected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cut-over&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable networkd-dispatcher&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
systemctl disable wpa_supplicant # if no Wifi or Wifi not in use&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Configure ECC memory =&lt;br /&gt;
&lt;br /&gt;
== Configure EDAC ==&lt;br /&gt;
&lt;br /&gt;
* apt install edac-utils rasdaemon&lt;br /&gt;
&lt;br /&gt;
=== Intel i3-2120 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@musr00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X9SCL/X9SCM&lt;br /&gt;
root@musr00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E-2236 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SCM-F&lt;br /&gt;
root@daq00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq00:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq00:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check edac sysfs files (Intel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:10 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank7&lt;br /&gt;
--w------- 1 root root 4096 Jan 25 15:10 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 25 15:10 uevent&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1270 v6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@grsnis01:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@grsnis01:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@grsnis01:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Feb 19 12:35 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank7&lt;br /&gt;
--w------- 1 root root 4096 Feb 19 12:35 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 19 12:35 uevent&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1245 v6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
[root@alphagdaq ~]# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
[root@alphagdaq ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------------------------------+&lt;br /&gt;
          |                      mc0                      |&lt;br /&gt;
          |  csrow0   |  csrow1   |  csrow2   |  csrow3   |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#3channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#3channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --summary&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: mc_event at /usr/sbin/ras-mc-ctl line 1129.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1130.&lt;br /&gt;
[root@alphagdaq ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3700X ===&lt;br /&gt;
&lt;br /&gt;
(memory is non-ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
root@daq13:~# edac-util &lt;br /&gt;
edac-util: Error: No memory controller data found.&lt;br /&gt;
root@daq13:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers loaded. No memory controllers found&lt;br /&gt;
root@daq13:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:26 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Jan 21 16:16 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 21 16:16 uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(memory is ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@trinatdaq:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@trinatdaq:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@trinatdaq:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Dec 15 13:04 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Dec 13 18:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 13 18:31 uevent&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank7&lt;br /&gt;
--w------- 1 root root 4096 Dec 15 13:04 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 uevent&lt;br /&gt;
root@trinatdaq:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 5000G ===&lt;br /&gt;
&lt;br /&gt;
* no linux driver for AMD 5000-series &amp;quot;G&amp;quot; CPU&lt;br /&gt;
* no mention of ECC in the BIOS settings&lt;br /&gt;
* unclear status of ECC support in AMD documentation (sais only &amp;quot;pro&amp;quot; &amp;quot;G&amp;quot; CPUs have ECC)&lt;br /&gt;
* unclear status of ECC support in ASUS documentation (web page out of date)&lt;br /&gt;
&lt;br /&gt;
=== AMD 5600X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-XE GAMING WIFI&lt;br /&gt;
root@daq17:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq17:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq17:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Aug 19 19:27 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 May 10 10:11 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 10 10:11 uevent&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank7&lt;br /&gt;
--w------- 1 root root 4096 Aug 19 19:27 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 uevent&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3955WX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 19 root root    0 Dez 12 04:48 mc0&lt;br /&gt;
drwxr-xr-x  2 root root    0 Dez 12 04:48 power&lt;br /&gt;
lrwxrwxrwx  1 root root    0 Dez  9 05:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r--  1 root root 4096 Dez  9 05:31 uevent&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# &lt;br /&gt;
root@alphasuperdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dez 12 04:48 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank10&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank11&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank12&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank13&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank14&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank15&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank7&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank8&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank9&lt;br /&gt;
--w------- 1 root root 4096 Feb 28 22:19 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 uevent&lt;br /&gt;
root@alphasuperdaq:~# &lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 868.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 869.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 872.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                                                                              mc0                                                                                              |&lt;br /&gt;
    |                                            csrow0                                             |                                            csrow1                                             |&lt;br /&gt;
    | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#0channel#2	0	0&lt;br /&gt;
mc#0csrow#1channel#7	0	0&lt;br /&gt;
mc#0csrow#0channel#3	0	0&lt;br /&gt;
mc#0csrow#1channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#2	0	0&lt;br /&gt;
mc#0csrow#0channel#7	0	0&lt;br /&gt;
mc#0csrow#1channel#3	0	0&lt;br /&gt;
mc#0csrow#0channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#6	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#6	0	0&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: ASUSTeK COMPUTER INC. model Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@alphasuperdaq:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 7700X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsfe05:~# apt install edac-utils&lt;br /&gt;
root@dsfe05:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro H13SAE-MF&lt;br /&gt;
root@dsfe05:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@dsfe05:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@dsfe05:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@dsfe05:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 May 14 09:33 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 May 14 09:33 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 May 14 09:33 rank5&lt;br /&gt;
--w------- 1 root root 4096 May 14 09:33 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 May 14 09:33 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 14 09:33 uevent&lt;br /&gt;
root@dsfe05:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure rasdaemon ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable rasdaemon&lt;br /&gt;
systemctl restart rasdaemon&lt;br /&gt;
systemctl status rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Mon 2021-01-25 15:16:37 PST; 3min 5s ago&lt;br /&gt;
   Main PID: 2477175 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 76958)&lt;br /&gt;
     Memory: 17.1M&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─2477175 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Listening to events for cpus 0 to 11&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mc_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording aer_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording extlog_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mce_record events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording arm_event events&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get reports ==&lt;br /&gt;
&lt;br /&gt;
* Intel 2x32GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-------------------------+&lt;br /&gt;
          |           mc0           |&lt;br /&gt;
          |   csrow0   |   csrow1   |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
channel1: |  16384 MB  |  16384 MB  |&lt;br /&gt;
channel0: |  16384 MB  |  16384 MB  |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Intel 4x16GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
mc#0csrow#2channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#2channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#3channel#0    0       0&lt;br /&gt;
mc#0csrow#3channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------+&lt;br /&gt;
          |          mc0          |&lt;br /&gt;
          |  csrow0   |  csrow1   |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: ubuntu LTS 22.04 DBD::SQLite::db error is not there.&lt;br /&gt;
&lt;br /&gt;
* AMD 7700 2x32GB DDR5 ECC DIMMs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsfe05:~# systemctl status rasdaemon&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Tue 2024-05-14 09:36:43 PDT; 33ms ago&lt;br /&gt;
    Process: 4088418 ExecStartPost=/usr/sbin/rasdaemon --enable (code=exited, status=0/SUCCESS)&lt;br /&gt;
   Main PID: 4088417 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 37300)&lt;br /&gt;
     Memory: 788.0K&lt;br /&gt;
        CPU: 5ms&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─4088417 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: ras:aer_event event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event ras:aer_event&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: mce:mce_record event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event mce:mce_record&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: ras:extlog_mem_event event enabled&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: Enabled event ras:extlog_mem_event&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording mc_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording aer_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording extlog_event events&lt;br /&gt;
May 14 09:36:43 dsfe05 rasdaemon[4088417]: rasdaemon: Recording mce_record events&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 907.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 908.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 911.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 830.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                              mc0                                              |&lt;br /&gt;
    |        csrow0         |        csrow1         |        csrow2         |        csrow3         |&lt;br /&gt;
    | channel0  | channel1  | channel0  | channel1  | channel0  | channel1  | channel0  | channel1  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------+&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model H13SAE-MF&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model H13SAE-MF&lt;br /&gt;
root@dsfe05:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
No MCE errors.&lt;br /&gt;
root@dsfe05:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= sensors =&lt;br /&gt;
&lt;br /&gt;
== VME CPU V7865 ==&lt;br /&gt;
&lt;br /&gt;
add to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe lm75&lt;br /&gt;
modprobe lm90&lt;br /&gt;
modprobe max1668&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
available sensors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@lxdaq23:~# sensors&lt;br /&gt;
max6657-i2c-0-4c&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +29.1°C  (low  = -55.0°C, high = +105.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst = +95.0°C)&lt;br /&gt;
temp2:        +31.5°C  (low  = -55.0°C, high = +105.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst = +95.0°C)&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Core 0:       +25.0°C  (crit = +100.0°C)&lt;br /&gt;
Core 1:       +25.0°C  (crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
max1805-i2c-0-18&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +35.0°C  (low  = -55.0°C, high = +127.0°C)&lt;br /&gt;
temp2:        +63.0°C  (low  = -55.0°C, high = +127.0°C)&lt;br /&gt;
temp3:          FAULT  (low  = -55.0°C, high = +127.0°C)  ALARM (HIGH)&lt;br /&gt;
&lt;br /&gt;
lm75-i2c-0-48&lt;br /&gt;
Adapter: SMBus I801 adapter at 0400&lt;br /&gt;
temp1:        +34.5°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
&lt;br /&gt;
root@lxdaq23:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS P7P55D EVO ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 2101&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@iris01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Core 0:       +34.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 1:       +37.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 2:       +38.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
Core 3:       +35.0°C  (high = +83.0°C, crit = +99.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0100&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.05 V)&lt;br /&gt;
temp1:        +46.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
atk0110-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
Vcore Voltage:      864.00 mV (min =  +0.80 V, max =  +1.60 V)&lt;br /&gt;
+3.3V Voltage:        3.38 V  (min =  +2.97 V, max =  +3.63 V)&lt;br /&gt;
+5V Voltage:          5.04 V  (min =  +4.50 V, max =  +5.50 V)&lt;br /&gt;
+12V Voltage:        12.15 V  (min = +10.20 V, max = +13.80 V)&lt;br /&gt;
CPU Fan Speed:       968 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Chassis1 Fan Speed: 1288 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Chassis2 Fan Speed: 1316 RPM  (min =  600 RPM, max = 7200 RPM)&lt;br /&gt;
Power Fan Speed:       0 RPM  (min =    0 RPM, max = 7200 RPM)&lt;br /&gt;
CPU Temperature:     +34.0°C  (high = +45.0°C, crit = +45.5°C)&lt;br /&gt;
MB Temperature:      +30.0°C  (high = +45.0°C, crit = +46.0°C)&lt;br /&gt;
&lt;br /&gt;
root@iris01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z97-WS ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 2704&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in /boot/grub/grub.cfg, add: GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;acpi_enforce_resources=no&amp;quot;&lt;br /&gt;
* update grub and reboot: grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@isdaq08:~# sensors&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  &lt;br /&gt;
temp2:        +29.8°C  &lt;br /&gt;
&lt;br /&gt;
nct6791-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:                 888.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                     1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:                    3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:                   3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                     1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                     1.99 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
3VSB:                    3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:                    3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                     1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in11:                  840.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in13:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                    0.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                  1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                  1040 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                     0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                 +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:                 +41.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:               -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:               -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                +35.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:               +127.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:           +41.0°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:           +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:            +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:            +0.0°C  &lt;br /&gt;
PCH_DIM0_TEMP:           +0.0°C  &lt;br /&gt;
intrusion0:            ALARM&lt;br /&gt;
intrusion1:            ALARM&lt;br /&gt;
beep_enable:           disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +42.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +42.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +40.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +39.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +39.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
root@isdaq08:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z170-DELUXE ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 3801&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe jc42 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe lm92 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in /boot/grub/grub.cfg, add: GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;acpi_enforce_resources=no&amp;quot;&lt;br /&gt;
* update grub and reboot: grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@iris00:~# sensors&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      600.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      144.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                        0.00 V  (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in7:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                      1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     600.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     592.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     968.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1370 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1437 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +32.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +42.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                  -128.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +50.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +28.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +50.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +42.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:               +0.0°C  &lt;br /&gt;
TSI2_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI3_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI4_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI5_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI6_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI7_TEMP:                +3892314.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-1a&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +36.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-18&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +34.8°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-1b&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +35.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-0-19&lt;br /&gt;
Adapter: SMBus I801 adapter at f040&lt;br /&gt;
temp1:        +36.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +52.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +52.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +48.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +47.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
root@iris00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS Z390M-PRO GAMING (WI-FI) ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 3006&lt;br /&gt;
* load sensors drivers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq18:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      696.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      208.00 mV (min =  +0.00 V, max =  +0.00 V)&lt;br /&gt;
in6:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.42 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.17 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.07 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1131 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                     1006 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +32.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +29.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +25.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN1:                    +7.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN2:                    +8.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +24.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN4:                   +83.0°C  (high = +80.0°C, hyst = +75.0°C)  ALARM&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +29.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:               +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +39.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +39.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +33.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +31.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 4:        +31.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 5:        +30.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  &lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +28.0°C  &lt;br /&gt;
&lt;br /&gt;
root@daq18:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS H110M-A/M.2 ==&lt;br /&gt;
&lt;br /&gt;
* BIOS version 4202&lt;br /&gt;
* echo modprobe coretemp &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midpol:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +33.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +33.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +30.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
acpitz-acpi-0&lt;br /&gt;
Adapter: ACPI interface&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      368.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      152.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      928.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                      1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     152.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                     128.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                     136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     120.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1004 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1143 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                   +118.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +29.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +30.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +110.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +31.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +36.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
TSI2_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI3_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI4_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI5_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI6_TEMP:                +3892314.0°C  &lt;br /&gt;
TSI7_TEMP:                +3892314.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
root@midpol:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS P9X79 WS ==&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/supportonly/P9X79%20WS/HelpDesk_Manual/&lt;br /&gt;
* BIOS version 4802&lt;br /&gt;
* modprobe nct6775&lt;br /&gt;
* modprobe coretemp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq14:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +29.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +24.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0200&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +39.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6776-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:           1.04 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:            3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:           3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:             2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:           904.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
3VSB:            3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:            3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:          1265 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:          1909 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:             0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:         +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:         +58.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermal diode&lt;br /&gt;
AUXTIN:         +31.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
PECI Agent 0:   +31.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                         (crit = +96.0°C)&lt;br /&gt;
PCH_CHIP_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:    +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:    +0.0°C  &lt;br /&gt;
intrusion0:    ALARM&lt;br /&gt;
intrusion1:    ALARM&lt;br /&gt;
beep_enable:   disabled&lt;br /&gt;
&lt;br /&gt;
root@daq14:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS TUF GAMING B550M-PLUS WIFI II ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 2803, 2806&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9a:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      488.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.82 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                       1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      760 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                     1264 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +25.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +22.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +95.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +25.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +25.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +25.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +23.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +32.4°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
amdgpu-pci-0800&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:        1.45 V  &lt;br /&gt;
vddnb:       993.00 mV &lt;br /&gt;
edge:         +28.0°C  &lt;br /&gt;
PPT:          20.00 W  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +33.4°C  &lt;br /&gt;
&lt;br /&gt;
root@midm9a:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS ASUS ROG STRIX B550-XE GAMING WIFI ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 2423, 2604&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# sensors&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      344.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                      992.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                      960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      216.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.81 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                     960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                     960.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     280.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                      845 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      998 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +28.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +27.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +94.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +28.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +28.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +97.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +27.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +33.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
amdgpu-pci-0600&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:        1.45 V  &lt;br /&gt;
vddnb:       999.00 mV &lt;br /&gt;
edge:         +29.0°C  &lt;br /&gt;
PPT:          14.00 W  &lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +30.0°C  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +33.9°C  &lt;br /&gt;
&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS ASUS ROG STRIX B550-E GAMING ==&lt;br /&gt;
&lt;br /&gt;
* bios 2803&lt;br /&gt;
* echo modprobe jc42 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# sensors&lt;br /&gt;
jc42-i2c-1-1b&lt;br /&gt;
Adapter: SMBus PIIX4 adapter port 0 at 0b00&lt;br /&gt;
temp1:        +25.0°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
iwlwifi_1-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +28.0°C  &lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0800&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +34.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6798-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      288.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      224.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.31 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        1.79 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     280.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     208.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                      843 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                      629 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                      746 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +22.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +25.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +93.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +22.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +96.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +27.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
jc42-i2c-1-1a&lt;br /&gt;
Adapter: SMBus PIIX4 adapter port 0 at 0b00&lt;br /&gt;
temp1:        +23.2°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)&lt;br /&gt;
                       (high =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
                       (crit =  +0.0°C, hyst =  +0.0°C)&lt;br /&gt;
&lt;br /&gt;
asusec-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
CPU_Opt:        0 RPM&lt;br /&gt;
Chipset:      +34.0°C  &lt;br /&gt;
CPU:          +25.0°C  &lt;br /&gt;
Motherboard:  +22.0°C  &lt;br /&gt;
T_Sensor:     -40.0°C  &lt;br /&gt;
VRM:          +31.0°C  &lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +28.0°C  &lt;br /&gt;
Tccd1:        +27.5°C  &lt;br /&gt;
&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASUS PRIME B650-PLUS ==&lt;br /&gt;
&lt;br /&gt;
* BIOS 1811&lt;br /&gt;
* echo modprobe nct6775 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@dsdaqgw:~# sensors&lt;br /&gt;
amdgpu-pci-0b00&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
vddgfx:      930.00 mV &lt;br /&gt;
vddnb:         1.19 V  &lt;br /&gt;
edge:         +38.0°C  &lt;br /&gt;
PPT:          25.10 W  &lt;br /&gt;
&lt;br /&gt;
nct6799-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                      920.00 mV (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                        1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                      320.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                        3.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                        3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                       1.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                       1.10 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                       1.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                     416.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                     328.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1253 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan7:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:                    +33.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +35.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +78.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                   +11.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                   +20.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                   +82.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0 Calibration:  +35.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:               +0.0°C  &lt;br /&gt;
TSI0_TEMP:                 +42.6°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               OK&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
Tctl:         +42.6°C  &lt;br /&gt;
Tccd1:        +36.4°C  &lt;br /&gt;
&lt;br /&gt;
root@dsdaqgw:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable CPU turbo mode =&lt;br /&gt;
&lt;br /&gt;
* Intel CPU has a nominal CPU frequency (i.e. 3.4GHz) and a turbo-boost CPU frequency (i.e. 4.0GHz). Here we will enable this turbo-boost mode.&lt;br /&gt;
* Find out CPU capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# lscpu | grep Hz&lt;br /&gt;
Model name:                      Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz&lt;br /&gt;
CPU MHz:                         3965.803&lt;br /&gt;
CPU max MHz:                     4000.0000&lt;br /&gt;
CPU min MHz:                     800.0000&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Look up this CPU in the Intel ARK database - google for the CPU model name, i.e.&lt;br /&gt;
https://ark.intel.com/content/www/us/en/ark/products/88196/intel-core-i7-6700-processor-8m-cache-up-to-4-00-ghz.html&lt;br /&gt;
* Find current frequency settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;powersave&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 2.72 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note the following:&lt;br /&gt;
** current governor is &amp;quot;powersave&amp;quot;&lt;br /&gt;
** &amp;quot;performance&amp;quot; governor is available&lt;br /&gt;
** &amp;quot;boost state support&amp;quot; is supported and active.&lt;br /&gt;
* Confirm CPU frequency governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Change governor to &amp;quot;performance&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-set --governor performance&lt;br /&gt;
Setting cpu: 0&lt;br /&gt;
Setting cpu: 1&lt;br /&gt;
Setting cpu: 2&lt;br /&gt;
Setting cpu: 3&lt;br /&gt;
Setting cpu: 4&lt;br /&gt;
Setting cpu: 5&lt;br /&gt;
Setting cpu: 6&lt;br /&gt;
Setting cpu: 7&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;performance&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 3.93 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* monitor CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower monitor&lt;br /&gt;
    | Nehalem                   || Mperf              || Idle_Stats                                     &lt;br /&gt;
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6   | C7s  | C8    &lt;br /&gt;
   0|  0.00|  0.00|  0.00|  0.00|| 88.80| 11.20|  3973||  0.00|  0.00|  0.01|  0.02|  0.31|  0.00|  4.25&lt;br /&gt;
   4|  0.00|  0.00|  0.00|  0.00||  4.70| 95.30|  3945||  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 95.03&lt;br /&gt;
   1|  0.73|  3.70|  0.00|  0.00||  4.52| 95.48|  3864||  0.00|  0.01|  1.19|  0.44|  2.82|  0.00| 90.23&lt;br /&gt;
   5|  0.73|  3.70|  0.00|  0.00||  0.37| 99.63|  3807||  0.00|  0.00|  0.03|  0.09|  1.70|  0.00| 97.64&lt;br /&gt;
   2|  2.28| 12.86|  0.00|  0.00||  1.41| 98.59|  3829||  0.00|  0.86|  3.17|  0.46|  7.70|  0.00| 85.87&lt;br /&gt;
   6|  2.28| 12.86|  0.00|  0.00||  2.88| 97.12|  3856||  0.00|  0.11|  4.56|  2.15| 10.31|  0.00| 78.99&lt;br /&gt;
   3|  1.33|  4.81|  0.00|  0.00||  0.99| 99.01|  3804||  0.00|  0.49|  0.79|  0.01|  1.03|  0.00| 96.12&lt;br /&gt;
   7|  1.34|  4.81|  0.00|  0.00||  1.26| 98.74|  3818||  0.00|  0.01|  2.32|  0.47|  5.02|  0.00| 90.06&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that the CPU is not overheating:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +38.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +34.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* congratulations, we are running at 4 GHz now!&lt;br /&gt;
&lt;br /&gt;
= Setup ubuntu as gateway to private network =&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* https://daq.triumf.ca/DaqWiki/index.php/VME-CPU#Setup_the_boot_host_computer_.28el7.29&lt;br /&gt;
* http://www.triumf.info/wiki/DAQwiki/index.php/Dhcpd_on_eth1&lt;br /&gt;
&lt;br /&gt;
== Steps to do ==&lt;br /&gt;
&lt;br /&gt;
!!! UPDATED 16feb2024 Ubuntu-22.04.03 !!!&lt;br /&gt;
&lt;br /&gt;
* assign network numbers to the private network, i.e. 192.168.1.x, 192.168.2.x, etc&lt;br /&gt;
* (on the gateway machine, each private network interface has to have a different network number)&lt;br /&gt;
* (each network interface can have multiple networks attached, via VLANs or via eth0:0, eth0:1 constructs)&lt;br /&gt;
* assign IP addresses on the private network, save them in /etc/hosts i.e. &amp;quot;hvps 192.168.1.10&amp;quot;&lt;br /&gt;
* (for simplicity, assign 192.168.1.1 to the gateway machine itself)&lt;br /&gt;
* (IP addresses 192.168.1.0 and 192.168.1.255 are &amp;quot;special&amp;quot;, do not use them)&lt;br /&gt;
* setup DNS server (dnsmasq) to serve contents of /etc/hosts via DNS (otherwise, many programs will see inconsistent name to IP address mapping)&lt;br /&gt;
* setup DHCP server (dnsmasq) to give out the IP addresses&lt;br /&gt;
* setup TFTP server (dnsmasq), pxelinux and NFS for diskless booting&lt;br /&gt;
* setup time server (chronyd) to provide common time to all devices&lt;br /&gt;
* setup NAT so machines on private network can access the internet (to get OS updates, etc)&lt;br /&gt;
* setup NIS and NFS so machines on the private network can use common home directories&lt;br /&gt;
* setup rsync backup of machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup hosts ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.101 dsfe01&lt;br /&gt;
... and so forth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup dns and dhcp ==&lt;br /&gt;
&lt;br /&gt;
!!! updated 16feb2024 for Ubuntu 22.04.3 !!!&lt;br /&gt;
&lt;br /&gt;
!!! note: stock systemd-resolved remains, is configured to forward queries to dnsmasq, configured to forward queries to TRIUMF DNS !!!&lt;br /&gt;
&lt;br /&gt;
!!! note: per authors of systemd, bare hostnames are not permitted, a DNS domain name must always be used. DNS domain name &amp;quot;dsdaq&amp;quot; is used in this example !!!&lt;br /&gt;
&lt;br /&gt;
* apt install dnsmasq&lt;br /&gt;
* ensure dnsmasq starts after all interfaces are up (Ubuntu-22)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/dnsmasq.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/dnsmasq.service.d/local.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/dnsmasq.conf&lt;br /&gt;
# DNS settings &lt;br /&gt;
#port=0 # disable DNS function &lt;br /&gt;
port=53 # enable DNS function &lt;br /&gt;
bind-interfaces # do not collide with systemd-resolved, we use 127.0.0.1:53, they use 127.0.0.53:53 &lt;br /&gt;
domain-needed &lt;br /&gt;
bogus-priv &lt;br /&gt;
no-resolv &lt;br /&gt;
#log-queries # log DNS quesries &lt;br /&gt;
 &lt;br /&gt;
# TRIUMF DNS settings &lt;br /&gt;
 &lt;br /&gt;
server=142.90.100.19 &lt;br /&gt;
expand-hosts &lt;br /&gt;
domain=dsdaq &lt;br /&gt;
local=/dsdaq/ &lt;br /&gt;
localmx # do not forward MX queries to TRIUMF &lt;br /&gt;
&lt;br /&gt;
# DHCP settings &lt;br /&gt;
interface=enp1s0f0 # VX network 192.168.0.x &lt;br /&gt;
#interface=missing  # FEP and TSP network 192.168.1.x &lt;br /&gt;
interface=enp1s0f1 # controls network 192.168.2.x &lt;br /&gt;
#dhcp-range=192.168.1.50,192.168.1.150,infinite &lt;br /&gt;
dhcp-range=192.168.0.0,static &lt;br /&gt;
dhcp-range=192.168.2.0,static &lt;br /&gt;
log-dhcp # log DHCP queries &lt;br /&gt;
#quiet-dhcp &lt;br /&gt;
dhcp-ignore=tag:!known &lt;br /&gt;
#dhcp-boot=pxelinux.0 &lt;br /&gt;
 &lt;br /&gt;
dhcp-option=option:dns-server,192.168.0.248 &lt;br /&gt;
dhcp-option=option:ntp-server,192.168.0.248 &lt;br /&gt;
 &lt;br /&gt;
# TFTP settings &lt;br /&gt;
 &lt;br /&gt;
enable-tftp &lt;br /&gt;
tftp-root=/tftpboot &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* #mkdir /tftpboot ### per tftp-root (if no ZFS)&lt;br /&gt;
* zfs create -o mountpoint=/tftpboot rpool/tftpboot ### (if root is ZFS)&lt;br /&gt;
* create resolved-dsdaq.conf with main IP address of dnsmasq&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=192.168.0.248&lt;br /&gt;
Domains=dsdaq triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir -p /etc/systemd/resolved.conf.d/&lt;br /&gt;
* /bin/rm -f /etc/systemd/resolved.conf.d/*.conf&lt;br /&gt;
* cp resolved-dsdaq.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
* systemctl stop systemd-resolved.service&lt;br /&gt;
* systemctl disable systemd-resolved.service&lt;br /&gt;
* systemctl enable dnsmasq&lt;br /&gt;
* systemctl restart dnsmasq&lt;br /&gt;
* try to &amp;quot;ping&amp;quot; or &amp;quot;host&amp;quot; some names from /etc/hosts, it should work&lt;br /&gt;
* try to ping daq00, daq00.triumf.ca, all should work&lt;br /&gt;
* resolved-dsdaq.conf goes into /etc/systemd/resolved.conf.d/ of all machines on the private network&lt;br /&gt;
* if not using systemd-resolved, edit /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
== setup chronyd ==&lt;br /&gt;
&lt;br /&gt;
* enable ntp server:&lt;br /&gt;
* disable systemd-timesyncd, configure and enable chronyd per instructions above&lt;br /&gt;
* create dsdaq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# chrony config for dsdaq server&lt;br /&gt;
&lt;br /&gt;
#allow 192.168.0.0&lt;br /&gt;
#allow 192.168.1.0&lt;br /&gt;
#allow 192.168.2.0&lt;br /&gt;
allow all&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cp dsdaq.conf /etc/chrony/conf.d/&lt;br /&gt;
* systemctl restart chronyd&lt;br /&gt;
* chronyc tracking ### wait until time is synchronized (a few seconds)&lt;br /&gt;
* create dsdaq.sources # use hostname or IP address of chronyd server&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Put this file in /etc/chrony/sources.d&lt;br /&gt;
# systemctl restart chrony&lt;br /&gt;
# chronyc sources&lt;br /&gt;
# chronyc tracking&lt;br /&gt;
server dsdaqgw iburst prefer&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* dsdaq.sources goes to /etc/chrony/sources.d of all machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup diskless network booting ==&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux for legacy pxe boot ===&lt;br /&gt;
&lt;br /&gt;
* add bits in dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dhcp-host=ac:1f:6b:9e:7f:4a,dsfe01,infinite&lt;br /&gt;
dhcp-boot=pxelinux.0&lt;br /&gt;
dhcp-option=17,&amp;quot;192.168.0.251:/nfsroot/%s,vers=3&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup pxelinux for Ubuntu-18&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2&lt;br /&gt;
tar xjvf syslinux-4.03.tar.bz2&lt;br /&gt;
cd syslinux-4.03&lt;br /&gt;
cp -pv ./core/pxelinux.0 ./com32/hdt/hdt.c32 ./memdisk/memdisk ./com32/menu/menu.c32 /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.iso.zip&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.iso.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.alias&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.pcimap&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/pci.ids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir pxelinux.cfg&lt;br /&gt;
* emacs -nw pxelinux.cfg/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSVSLICE PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label hdt&lt;br /&gt;
  kernel hdt.c32&lt;br /&gt;
&lt;br /&gt;
label memtest86+-5.01 &lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-5.01.iso.gz &lt;br /&gt;
&lt;br /&gt;
label memtest86+-4.20&lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-4.20.iso.zip&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-5.3.0-26-generic&lt;br /&gt;
  menu default&lt;br /&gt;
  kernel vmlinuz-5.3.0-26-generic&lt;br /&gt;
  append initrd=initrd.img-5.3.0-26-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.1.1:/zssd/nfsroot/dsfe01 toram ip=dhcp panic=60 BOOTIF=enp1s0f0&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux for efi pxe boot ===&lt;br /&gt;
&lt;br /&gt;
* https://c-nergy.be/blog/?p=13808&lt;br /&gt;
* add dnsmasq.conf bits. note: to use dhcp root-path, see the &amp;quot;nfsroot=auto&amp;quot; patch below and make sure to use the &amp;quot;dhcp-option-force&amp;quot; command (mkinitramfs dhcp client does not ask for root-path, we have to force-feed it).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# uefi pxe&lt;br /&gt;
&lt;br /&gt;
dhcp-boot=tag:uefipxe,uefi/syslinux.efi&lt;br /&gt;
dhcp-option-force=tag:fe01,option:root-path,192.168.0.248:/nfsroot/fe01&lt;br /&gt;
&lt;br /&gt;
# VX network 192.168.0.x&lt;br /&gt;
&lt;br /&gt;
dhcp-host=40:a6:b7:c1:d9:c5,fe01,infinite,set:uefipxe,set:fe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apt install syslinux pxelinux syslinux-common syslinux-efi syslinux-utils&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /tftpboot/uefi&lt;br /&gt;
cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/ldlinux.e64 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/menu.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/hdt.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libutil.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libmenu.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libcom32.c32 /tftpboot/uefi/&lt;br /&gt;
cp /usr/lib/syslinux/modules/efi64/libgpl.c32 /tftpboot/uefi/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, it should bomb with &amp;quot;cannot load pxelinux.cfg/default&amp;quot;&lt;br /&gt;
* mkdir /tftpboot/uefi/pxelinux.cfg&lt;br /&gt;
* create /tftpboot/uefi/pxelinux.cfg/default, note nfsroot path is hardwired, note &amp;quot;http:&amp;quot; is used to load vmlinuz and initrd files (because tftp is super slow)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSDAQGW UEFI PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-6.5.0-17-generic&lt;br /&gt;
  kernel http://192.168.0.248:8088/uefi/vmlinuz-6.5.0-17-generic&lt;br /&gt;
  append initrd=http://192.168.0.248:8088/uefi/initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=auto rw ip=dhcp panic=60&lt;br /&gt;
&lt;br /&gt;
# append initrd=http://192.168.0.248:8088/uefi/initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.0.248:/nfsroot/fe01 rw ip=dhcp panic=60&lt;br /&gt;
&lt;br /&gt;
#  append initrd=initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.0.248:/nfsroot/fe01 rw ip=dhcp panic=60&lt;br /&gt;
#  append initrd=initrd.img-6.5.0-17-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=auto ip=dhcp rw panic=60&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, it will bomb with &amp;quot;cannot load http://....&amp;quot;&lt;br /&gt;
* install mini_httpd on port 8088, see https://acme.com/software/mini_httpd/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install mini-httpd&lt;br /&gt;
emacs -nw /etc/default/mini-httpd # set &amp;quot;START=1&amp;quot;&lt;br /&gt;
emacs -nw /etc/mini-httpd.conf # set &amp;quot;host=192.168.0.248&amp;quot;, &amp;quot;port=8088&amp;quot;, &amp;quot;data_dir=/tftpboot&amp;quot;&lt;br /&gt;
mkdir /etc/systemd/system/mini-httpd.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/mini-httpd.service.d/local.conf&lt;br /&gt;
systemctl enable mini-httpd&lt;br /&gt;
systemctl restart mini-httpd&lt;br /&gt;
systemctl status mini-httpd&lt;br /&gt;
wget http://192.168.0.248:8088/uefi/syslinux.efi&lt;br /&gt;
tail -100 /var/log/mini_httpd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix U-22 initramfs bug for &amp;quot;nfsroot=auto&amp;quot;, otherwise, &amp;quot;nfsroot=&amp;quot; has to be different for each machine and you have to have separate pxelinux config files for each machine&lt;br /&gt;
** emacs -nw /usr/lib/initramfs-tools/etc/dhcp/dhclient-enter-hooks.d/config&lt;br /&gt;
** add &amp;quot;echo ROOTPATH=...&amp;quot; if it is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                echo &amp;quot;ROOTSERVER=&#039;${new_routers%% *}&#039;&amp;quot; &lt;br /&gt;
                echo &amp;quot;ROOTPATH=&#039;$new_root_path&#039;&amp;quot; &lt;br /&gt;
                echo &amp;quot;HOSTNAME=&#039;$new_host_name&#039;&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix U-24 initramfs bug for &amp;quot;nfsroot=auto&amp;quot;, otherwise, &amp;quot;nfsroot=&amp;quot; has to be different for each machine and you have to have separate pxelinux config files for each machine&lt;br /&gt;
** emacs -nw /usr/share/initramfs-tools/dhcpcd-hooks/70-net-conf&lt;br /&gt;
** add &amp;quot;ROOTPATH=...&amp;quot; if it is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DNSDOMAIN=&#039;${new_domain_name-}&#039;                                                                                                                                                &lt;br /&gt;
ROOTSERVER=&#039;${new_routers-}&#039;                                                                                                                                                   &lt;br /&gt;
ROOTPATH=&#039;${new_root_path-}&#039;                                                                                                                                                   &lt;br /&gt;
filename=&#039;${new_filename-}&#039;                                                                                                                                                    &lt;br /&gt;
DHCPLEASETIME=&#039;${new_dhcp_lease_time-}&#039;                                                                                                                                        &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** regenerate initramfs (be careful you generate it for the right kernel!)&lt;br /&gt;
** see https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/2054482&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkinitramfs 6.5.0-18-generic&lt;br /&gt;
mkinitramfs 6.8.0-51-generic -o /boot/initrd.img-6.8.0-51-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux kernel and initrd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz-6.5.0-18-generic /tftpboot/uefi/&lt;br /&gt;
cp /boot/initrd.img-6.5.0-18-generic /tftpboot/uefi/&lt;br /&gt;
chmod a+r /tftpboot/uefi/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to boot, should bomb with messages about &amp;quot;trying to mount root filesystem&amp;quot;&lt;br /&gt;
* tail /var/log/syslog&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 vendor class: PXEClient:Arch:00007:UNDI:003016&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 1:netmask, 2:time-offset, 3:router, 4, 5, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 6:dns-server, 12:hostname, 13:boot-file-size, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 15:domain-name, 17:root-path, 18:extension-path, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 22:max-datagram-reassembly, 23:default-ttl, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 28:broadcast, 40:nis-domain, 41:nis-server, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 42:ntp-server, 43:vendor-encap, 50:requested-address, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 51:lease-time, 54:server-identifier, 58:T1, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 59:T2, 60:vendor-class, 66:tftp-server, 67:bootfile-name, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 97:client-machine-id, 128, 129, 130, 131, &lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 132, 133, 134, 135&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 broadcast response&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 18 option: 67 bootfile-name  uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:02 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 vendor class: PXEClient:Arch:00007:UNDI:003016&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 1:netmask, 2:time-offset, 3:router, 4, 5, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 6:dns-server, 12:hostname, 13:boot-file-size, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 15:domain-name, 17:root-path, 18:extension-path, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 22:max-datagram-reassembly, 23:default-ttl, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 28:broadcast, 40:nis-domain, 41:nis-server, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 42:ntp-server, 43:vendor-encap, 50:requested-address, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 51:lease-time, 54:server-identifier, 58:T1, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 59:T2, 60:vendor-class, 66:tftp-server, 67:bootfile-name, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 97:client-machine-id, 128, 129, 130, 131, &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 requested options: 132, 133, 134, 135&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 broadcast response&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 18 option: 67 bootfile-name  uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065885 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: error 8 User aborted the transfer received from 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/syslinux.efi to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/syslinux.efi to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 requested options: 1:netmask, 3:router, 6:dns-server&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 broadcast response&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:05 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 requested options: 1:netmask, 3:router, 6:dns-server&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 broadcast response&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-dhcp[3629416]: 2348065887 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/ldlinux.e64 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/01-40-a6-b7-c1-d9-c5 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8006E not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8006 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A800 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A80 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A8 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0A not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C0 not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: file /tftpboot/uefi/pxelinux.cfg/C not found&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/pxelinux.cfg/default to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:09 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/menu.c32 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:10 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/libutil.c32 to 192.168.0.110&lt;br /&gt;
Feb 16 20:43:10 dsdaqgw dnsmasq-tftp[3629416]: sent /tftpboot/uefi/pxelinux.cfg/default to 192.168.0.110&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 client provides name: dsdaqgw.triumf.ca&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPDISCOVER(enp1s0f0) 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPOFFER(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 1:netmask, 28:broadcast, 2:time-offset, 3:router, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 15:domain-name, 6:dns-server, 119:domain-search, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 12:hostname, 44:netbios-ns, 47:netbios-scope, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 26:mtu, 121:classless-static-route, 42:ntp-server&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  1 option: 53 message-type  2&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 available DHCP subnet: 192.168.0.0/255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 client provides name: dsdaqgw.triumf.ca&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPREQUEST(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 tags: uefipxe, fe01, known, enp1s0f0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 DHCPACK(enp1s0f0) 192.168.0.110 40:a6:b7:c1:d9:c5 fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 1:netmask, 28:broadcast, 2:time-offset, 3:router, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 15:domain-name, 6:dns-server, 119:domain-search, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 12:hostname, 44:netbios-ns, 47:netbios-scope, &lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 requested options: 26:mtu, 121:classless-static-route, 42:ntp-server&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 bootfile name: uefi/syslinux.efi&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 next server: 192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  1 option: 53 message-type  5&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 54 server-identifier  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 51 lease-time  infinite&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  1 netmask  255.255.255.0&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 28 broadcast  192.168.0.255&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  3 router  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  5 option: 15 domain-name  dsdaq&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 12 hostname  fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size: 27 option: 17 root-path  192.168.0.248:/nfsroot/fe01&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option: 42 ntp-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw dnsmasq-dhcp[3629416]: 3693523458 sent size:  4 option:  6 dns-server  192.168.0.248&lt;br /&gt;
Feb 16 20:44:54 dsdaqgw rpc.mountd[3350210]: authenticated mount request from 192.168.0.110:981 for /nfsroot/fe01 (/nfsroot/fe01)&lt;br /&gt;
Feb 16 20:45:07 dsdaqgw rpc.mountd[3350210]: authenticated unmount request from 192.168.0.110:859 for /nfsroot/fe01/tmp/autoDY4k5u (/nfsroot/fe01)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tail /var/log/mini_httpd.log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.0.110 - - [16/Feb/2024:20:43:15 -0800] &amp;quot;GET /uefi/vmlinuz-6.5.0-17-generic HTTP/1.0&amp;quot; 200 14227944 &amp;quot;&amp;quot; &amp;quot;Syslinux/6.04&amp;quot;&lt;br /&gt;
192.168.0.110 - - [16/Feb/2024:20:43:24 -0800] &amp;quot;GET /uefi/initrd.img-6.5.0-17-generic HTTP/1.0&amp;quot; 200 137824833 &amp;quot;&amp;quot; &amp;quot;Syslinux/6.04&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup efi http boot ===&lt;br /&gt;
&lt;br /&gt;
https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-deployment-prep-uefi-httpboot.html&lt;br /&gt;
&lt;br /&gt;
=== setup linux kernel ===&lt;br /&gt;
&lt;br /&gt;
* copy the kernel files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
rsync -av config* initrd* System.map* vmlinuz* /tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /tftpboot&lt;br /&gt;
* chmod a+r *&lt;br /&gt;
&lt;br /&gt;
=== setup nfs ===&lt;br /&gt;
&lt;br /&gt;
* apt-get install nfs-kernel-server&lt;br /&gt;
* enable NFS over UDP, edit /etc/nfs.conf add &amp;quot;udp=y&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
udp=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart nfs-server.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/exports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/nfsroot/dsfe01 dsfe01(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable services&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl enable nfs-mountd&lt;br /&gt;
systemctl enable nfs-idmapd&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
systemctl restart nfs-mountd&lt;br /&gt;
systemctl restart nfs-idmapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* after editing /etc/exports, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exportfs -av&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup userland ===&lt;br /&gt;
&lt;br /&gt;
!!! ubuntu-18 version !!!&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/nfsroot&lt;br /&gt;
* zfs set dedup=verify rpool/nfsroot ### enable deduplication to save disk space because most linux images have mostly identical files&lt;br /&gt;
* clone ubuntu&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /nfsroot/dsfe01&lt;br /&gt;
cd /&lt;br /&gt;
rsync -avx . /nfsroot/dsfe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit config files:&lt;br /&gt;
* cd /nfsroot/dsfe01&lt;br /&gt;
* emacs -nw etc/hostname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/mailname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/yp.conf ### change daq00.triumf.ca to musr00.triumf.ca&lt;br /&gt;
* emacs -nw etc/defaultdomain ### change to MUSR-NIS&lt;br /&gt;
* cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
* emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
* emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
* emacs -nw etc/fstab ### add this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/nfsroot/dsfe01 / nfs defaults,nolock 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw etc/chrony/chrony.conf&lt;br /&gt;
** comment-out all &amp;quot;pool&amp;quot; and &amp;quot;server&amp;quot; entries&lt;br /&gt;
** add entry &amp;quot;server 192.168.1.1 iburst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After dsfe01 is booted:&lt;br /&gt;
&lt;br /&gt;
* disable services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable apache2&lt;br /&gt;
systemctl disable dnsmasq&lt;br /&gt;
systemctl disable zfs-import-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup additional machines, clone dsfe01 instead of cloning the gateway machine&lt;br /&gt;
&lt;br /&gt;
=== Allow manpages to be viewed ===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted over NFS, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will report a permission error. Fix it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/&lt;br /&gt;
apparmor_parser -R /etc/apparmor.d/usr.bin.man&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup shared home directory ==&lt;br /&gt;
&lt;br /&gt;
=== on the gateway machine ===&lt;br /&gt;
* define netgroups&lt;br /&gt;
* emacs -nw /etc/netgroup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dsfe (dsfe01,,) (dsfe02,,)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/nsswitch.conf ### edit the netgroup line to read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netgroup: files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* export the home directories:&lt;br /&gt;
* emacs -nw /etc/exports ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/home1 @dsfe(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* exportfs -rc&lt;br /&gt;
&lt;br /&gt;
=== on the frontend machine ===&lt;br /&gt;
&lt;br /&gt;
* mkdir /home&lt;br /&gt;
* emacs -nw /etc/fstab ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/home1 /home nfs defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
&lt;br /&gt;
== setup NAT ==&lt;br /&gt;
&lt;br /&gt;
NAT allows machines on the private network to connect to the internet: https://en.wikipedia.org/wiki/Network_address_translation&lt;br /&gt;
&lt;br /&gt;
In these examples:&lt;br /&gt;
* replace &amp;quot;eno1&amp;quot; with name of the outgoing interface (the one connected to the TRIUMF network).&lt;br /&gt;
* replace &amp;quot;enp11s0&amp;quot; with name of the private network interface (192.168.1.x network)&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/rc.local ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
# enable NAT&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
# uncomment following lines if machine has prohibitive FORWARD rules:&lt;br /&gt;
#/sbin/iptables -I FORWARD -i eno1 -o enp11s0 -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
#/sbin/iptables -I FORWARD -i enp11s0 -o eno1 -j ACCEPT&lt;br /&gt;
#iptables -L -v&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
#sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
sh /etc/firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/firewall-rfc1918.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# prevent RFC1918 private network IP addresses from&lt;br /&gt;
# going in and out from our uplink.&lt;br /&gt;
&lt;br /&gt;
ETH=eno1&lt;br /&gt;
&lt;br /&gt;
iptables -F in-rfc1918&lt;br /&gt;
iptables -N in-rfc1918&lt;br /&gt;
iptables -A in-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -I INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -F out-rfc1918&lt;br /&gt;
iptables -N out-rfc1918&lt;br /&gt;
iptables -A out-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -I OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -D FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
iptables -D FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
iptables -I FORWARD -j out-rfc1918 -o $ETH &lt;br /&gt;
&lt;br /&gt;
# allow TRIUMF-SECURE network&lt;br /&gt;
&lt;br /&gt;
iptables -I in-rfc1918 -s 10.90.0.0/255.255.0.0 -j ACCEPT &lt;br /&gt;
iptables -I out-rfc1918 -d 10.90.0.0/255.255.0.0 -j ACCEPT &lt;br /&gt;
&lt;br /&gt;
# show configuration&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= KVM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install cpu-checker&lt;br /&gt;
&lt;br /&gt;
root@daq13:~# kvm-ok &lt;br /&gt;
INFO: /dev/kvm exists&lt;br /&gt;
KVM acceleration can be used&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&lt;br /&gt;
(if not, shutdown, go into BIOS settings, enable CPU virtualization)&lt;br /&gt;
&lt;br /&gt;
apt install virtinst ### will install many packages&lt;br /&gt;
apt install libvirt-clients libvirt-daemon-system-systemd libvirt-daemon qemu qemu-kvm libvirt-daemon-system virtinst bridge-utils&lt;br /&gt;
&lt;br /&gt;
root@daq13:/home1/wheel# virsh list --all&lt;br /&gt;
 Id   Name           State&lt;br /&gt;
------------------------------&lt;br /&gt;
 1    ubuntu-guest   running&lt;br /&gt;
&lt;br /&gt;
apt install virt-manager&lt;br /&gt;
&lt;br /&gt;
virt-install --name ubuntu-guest --os-variant ubuntu20.04 --vcpus 2 --ram 2048 --location /daq/daqstore/olchansk/linux/Ubuntu/ubuntu-20.04.3-desktop-amd64.iso --network bridge=virbr0,model=virtio --graphics none --extra-args=&#039;console=ttyS0,115200n8 serial&#039;&lt;br /&gt;
&lt;br /&gt;
virtual machine will start, boot, etc&lt;br /&gt;
to get out of it, CTRL + Shift followed by ]&lt;br /&gt;
&lt;br /&gt;
ssh wheel@daq13&lt;br /&gt;
virt-manager&lt;br /&gt;
&lt;br /&gt;
run virt-install again, omit &amp;quot;--graphics none&amp;quot;, open graphics console from virt-manager, it booted into ubuntu installer desktop&lt;br /&gt;
&lt;br /&gt;
virt-install --name test10 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --filesystem /kvm_ladd00,/ --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial&amp;quot; --graphics none&lt;br /&gt;
&lt;br /&gt;
virt-install --name test14 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --disk /tmp/xxx/ladd00.img,bus=sata --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
build image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/tmp/xxx/ladd00.img bs=1024M count=20&lt;br /&gt;
mkfs.ext3 /tmp/xxx/ladd00.img ### ext4 fails to mount by SL6 kernel, &amp;quot;unknown ext4 options&amp;quot;&lt;br /&gt;
cd /kvm_ladd00/&lt;br /&gt;
mount -o loop /tmp/xxx/ladd00.img /mnt/tmp&lt;br /&gt;
rsync -av . /mnt/tmp/ --delete&lt;br /&gt;
umount /mnt/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the guest, configure network: /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script will be executed *after* all the other init scripts.&lt;br /&gt;
# You can put your own initialization stuff in here if you don&#039;t&lt;br /&gt;
# want to do the full Sys V style init stuff.&lt;br /&gt;
&lt;br /&gt;
touch /var/lock/subsys/local&lt;br /&gt;
&lt;br /&gt;
ifconfig eth2 192.168.122.2&lt;br /&gt;
route add -net 0.0.0.0 gw 192.168.122.1&lt;br /&gt;
ifconfig -a&lt;br /&gt;
netstat -rn&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== virtualize SL6 ladd00 ==&lt;br /&gt;
&lt;br /&gt;
* on ladd00:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
mkinitrd /boot/initramfs-2.6.32-754.35.1.el6.x86_64-netboot.img 2.6.32-754.35.1.el6.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* on daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs create rpool/kvm-ladd00&lt;br /&gt;
cd /kvm-ladd00&lt;br /&gt;
rsync -avx ladd00:/ . --exclude nfsroot&lt;br /&gt;
brctl addbr virbr0&lt;br /&gt;
ifconfig virbr0 192.168.1.1&lt;br /&gt;
echo /kvm-ladd00 192.168.1.2(rw,no_root_squash,no_all_squash,async,no_subtree_check) &amp;gt;&amp;gt; /etc/exports&lt;br /&gt;
exportfs -rv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virt-install --name kvm-ladd00 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=virtio --boot kernel=/kvm-ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm-ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64-netboot.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0:ladd00::off nfsroot=192.168.1.1:/kvm-ladd00 console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --nodisks --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* adjust kvm-ladd00 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit yp.conf&lt;br /&gt;
edit resolv.conf&lt;br /&gt;
edit root/.ssh/authorized_keys&lt;br /&gt;
enable rngd or /dev/random does not work, sshd does not work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* virsh shutdown test24&lt;br /&gt;
* virsh --connect qemu:///system start test24&lt;br /&gt;
* virsh console test24 ### to exit, ctrl+[ or ctrl+]&lt;br /&gt;
* virsh undefine test24&lt;br /&gt;
* virsh autostart kvm-ladd00&lt;br /&gt;
* virsh dominfo kvm-ladd00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# virsh dominfo kvm-ladd00&lt;br /&gt;
Id:             1&lt;br /&gt;
Name:           kvm-ladd00&lt;br /&gt;
UUID:           1d1f8fed-8b65-4411-a51b-e0ecf359d2f1&lt;br /&gt;
OS Type:        hvm&lt;br /&gt;
State:          running&lt;br /&gt;
CPU(s):         2&lt;br /&gt;
CPU time:       27.7s&lt;br /&gt;
Max memory:     2097152 KiB&lt;br /&gt;
Used memory:    2097152 KiB&lt;br /&gt;
Persistent:     yes&lt;br /&gt;
Autostart:      enable&lt;br /&gt;
Managed save:   no&lt;br /&gt;
Security model: apparmor&lt;br /&gt;
Security DOI:   0&lt;br /&gt;
Security label: libvirt-1d1f8fed-8b65-4411-a51b-e0ecf359d2f1 (enforcing)&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* delete unused images in /var/lib/libvirt/images&lt;br /&gt;
&lt;br /&gt;
= ARM64 cross-compiler =&lt;br /&gt;
&lt;br /&gt;
* arm64, aarch64 are Xilinx FPGA Cortex-A53, RPi4, RPi5 machines&lt;br /&gt;
* install packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install g++-12-aarch64-linux-gnu gcc-12-aarch64-linux-gnu-base libstdc++-12-dev-arm64-cross&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aarch64-linux-gnu-gcc-12 -o ttcp.aarch64 ttcp.c -static&lt;br /&gt;
aarch64-linux-gnu-g++-12 -o fecdm.exe -O2 -g -Wall -Wuninitialized -std=c++20 fecdm.o dsdm.o /home/dsdaqdev/packages_common/midas/linux-aarch64-remoteonly/lib/libmidas.a -pthread -lrt -lutil /nfsroot/gdm00/usr/lib/aarch64-linux-gnu/libi2c.a -static&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ARM cross-compiler =&lt;br /&gt;
&lt;br /&gt;
* armv7 (RPi3, MityARM CAMAC) machines&lt;br /&gt;
* install packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install g++-12-arm-linux-gnueabihf gcc-12-arm-linux-gnueabihf libstdc++-12-dev-armhf-cross&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* find out the correct -march setting, on the target machine, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gdm00:~# g++ -Q --help=target | grep march&lt;br /&gt;
  -march=                     		armv8-a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* build something:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arm-linux-gnueabihf-gcc -o ttcp1 ttcp.c -march=armv7 -static&lt;br /&gt;
arm-linux-gnueabihf-gcc -o memcpy.armv7 memcpy.cc -march=armv7 -static -O2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 32-bit intel cross-compiler =&lt;br /&gt;
&lt;br /&gt;
Ubuntu 22.04:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libstdc++-11-dev:i386&lt;br /&gt;
apt install zlib1g-dev:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* &amp;quot;g++ -m32&amp;quot; does not find libstdc++, please use &amp;quot;g++ -m32 -L/usr/lib/gcc/i686-linux-gnu/11/&amp;quot;&lt;br /&gt;
* to cross-build 32-bit MIDAS, use &amp;quot;make linux32&amp;quot;.&lt;br /&gt;
* executables cross-build on Ubuntu-22 do NOT run on 32-bit Debain-11 (GLIBC and GLIBCXX version mismatch)&lt;br /&gt;
* executables cross-build on Ubuntu-22 run on 32-bit Debian-12.&lt;br /&gt;
&lt;br /&gt;
= SSH settings for EPICS =&lt;br /&gt;
&lt;br /&gt;
* TRIUMF EPICS runs obsolete version of SSH&lt;br /&gt;
* add this to the use .ssh/config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host sbp1*&lt;br /&gt;
HostKeyAlgorithms +ssh-rsa&lt;br /&gt;
PubKeyAcceptedAlgorithms +ssh-rsa&lt;br /&gt;
KexAlgorithms +diffie-hellman-group1-sha1&lt;br /&gt;
ForwardX11 yes&lt;br /&gt;
ForwardX11Trusted yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= changes for VME processors =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y remove sysstat man-db&lt;br /&gt;
apt -y purge dkms&lt;br /&gt;
apt -y purge mdadm&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= remove snap (U-24) =&lt;br /&gt;
&lt;br /&gt;
Note: snap stores data in $USER/snap/$SNAPNAME, removing a snap on one machine will remove this data from all users even if they want to use snap on some other machine.&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove chromium ### see below&lt;br /&gt;
echo snap remove firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove firmware-updater&lt;br /&gt;
snap remove gtk-common-themes&lt;br /&gt;
snap remove snapd-desktop-integration&lt;br /&gt;
snap remove snap-store&lt;br /&gt;
snap remove hunspell-dictionaries-1-7-2004&lt;br /&gt;
snap remove gnome-system-monitor&lt;br /&gt;
snap remove gnome-3-26-1604&lt;br /&gt;
snap remove gnome-3-28-1804&lt;br /&gt;
snap remove gnome-3-34-1804&lt;br /&gt;
snap remove gnome-3-38-2004&lt;br /&gt;
snap remove gnome-42-2204&lt;br /&gt;
snap remove gnome-46-2404&lt;br /&gt;
snap remove mesa-2404&lt;br /&gt;
snap remove core&lt;br /&gt;
snap remove core18&lt;br /&gt;
snap remove core20&lt;br /&gt;
snap remove core22&lt;br /&gt;
snap remove core24&lt;br /&gt;
snap remove bare&lt;br /&gt;
snap remove snapd&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# snap list&lt;br /&gt;
No snaps are installed yet. Try &#039;snap install hello-world&#039;.&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identify packages that install snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list | grep snap | grep installed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox/noble,now 1:1snap1-0ubuntu5 amd64 [installed]&lt;br /&gt;
gir1.2-snapd-2/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnapd-glib-2-1/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnapd-qt-2-1/noble,now 1.64-0ubuntu5 amd64 [installed,automatic]&lt;br /&gt;
libsnappy1v5/noble,now 1.1.10-1build1 amd64 [installed,automatic]&lt;br /&gt;
plasma-discover-backend-snap/noble,now 5.27.11-0ubuntu2 amd64 [installed]&lt;br /&gt;
snapd/noble-updates,now 2.66.1+24.04 amd64 [installed]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove packages that install snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chromium-browser&lt;br /&gt;
apt remove chromium-codecs-ffmpeg-extra&lt;br /&gt;
apt remove thunderbird&lt;br /&gt;
apt remove firefox&lt;br /&gt;
apt remove plasma-discover-backend-snap&lt;br /&gt;
apt remove plasma-discover-snap-backend&lt;br /&gt;
apt remove snapd&lt;br /&gt;
apt purge  snapd&lt;br /&gt;
# package gir1.2-snapd-2 is required by ubuntu-mate-desktop &amp;amp; co&lt;br /&gt;
# libsnapd-glib-2-1 is required by gstreamer, gnome-remote-desktop &amp;amp; co&lt;br /&gt;
ls -l /etc/systemd/system/ | grep snap ### remove unwanted stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove Chromium:&lt;br /&gt;
&lt;br /&gt;
* ls -ld /home/*/snap/chromium/*&lt;br /&gt;
* echo /bin/rm -rf `ls -1d /home/*/snap/chromium/*`&lt;br /&gt;
* snap remove chromium&lt;br /&gt;
&lt;br /&gt;
Remove Firefox:&lt;br /&gt;
&lt;br /&gt;
* ls -ld /home/*/snap/firefox/*&lt;br /&gt;
* echo /bin/rm -rf `ls -1d /home/*/snap/firefox/*` ### this will delete &amp;quot;snap firefox&amp;quot; profiles of all users!!!&lt;br /&gt;
* snap remove firefox ### this will also delete &amp;quot;snap firefox&amp;quot; profiles of all users!!!&lt;br /&gt;
&lt;br /&gt;
Remove gir1.2-snapd-2:&lt;br /&gt;
* echo rm -vf /usr/lib/x86_64-linux-gnu/girepository-1.0/Snapd-2.typelib&lt;br /&gt;
&lt;br /&gt;
= boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* NOTE: extlinux is not compatible with ext4 &amp;quot;64bit&amp;quot; feature, it should be turned off:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 -O ^64bit /dev/sdX1&lt;br /&gt;
resize2fs -s /dev/sdX1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install syslinux and extlinux (THIS DOES NOT WORK!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install syslinux extlinux&lt;br /&gt;
dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdX ### NOT /dev/sdX1 NOT !!!&lt;br /&gt;
cd /boot&lt;br /&gt;
cp /usr/lib/syslinux/modules/bios/menu.c32 .&lt;br /&gt;
extlinux -i .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install syslinux and extlinux&lt;br /&gt;
&lt;br /&gt;
* copy from old SL6 USB disk (this is extlinux 6.02)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@localhost:/boot# ls -l&lt;br /&gt;
-rwxr-xr-x 1 root root   218952 Jan 28 17:40 extlinux&lt;br /&gt;
-rw-r--r-- 1 root root      402 Jan 29 14:45 extlinux.conf&lt;br /&gt;
-rw-r--r-- 1 root root      496 Jan 29 14:39 extlinux.conf~&lt;br /&gt;
-r--r--r-- 1 root root   122044 Jan 29 14:39 ldlinux.c32&lt;br /&gt;
-r--r--r-- 1 root root    67072 Jan 29 14:39 ldlinux.sys&lt;br /&gt;
-rwxr-xr-x 1 root root    24156 Jan 28 17:40 libutil.c32&lt;br /&gt;
-rw-r--r-- 1 root root      304 Jan 28 17:40 mbr.bin&lt;br /&gt;
-rw-r--r-- 1 root root    26140 Jan 28 17:40 memdisk&lt;br /&gt;
-rw-r--r-- 1 root root    69043 Jan 28 17:40 memtest86+-4.20.iso.zip&lt;br /&gt;
-rw-r--r-- 1 root root   183012 Jan 28 17:40 memtest86+-5.01&lt;br /&gt;
-rw-r--r-- 1 root root    26568 Jan 28 17:40 menu.c32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=mbr.bin of=/dev/sdX ### NOT /dev/sdX1 NOT !!!&lt;br /&gt;
extlinux -i .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that partition /dev/sdX1 is marked bootable (fdisk command &amp;quot;a&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* create /boot/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEFAULT menu.c32&lt;br /&gt;
PROMPT 0&lt;br /&gt;
TIMEOUT 50&lt;br /&gt;
&lt;br /&gt;
MENU TITLE TRIUMF DAQ USB BOOT32 ver K.O. 2025jan28&lt;br /&gt;
&lt;br /&gt;
LABEL linux&lt;br /&gt;
  MENU DEFAULT&lt;br /&gt;
  kernel /vmlinuz&lt;br /&gt;
  append initrd=/initrd.img panic=60 rootdelay=5 rootwait rw root=/dev/sda1&lt;br /&gt;
&lt;br /&gt;
LABEL linux-6.1.0-28-686&lt;br /&gt;
  kernel vmlinuz-6.1.0-28-686&lt;br /&gt;
  append initrd=initrd.img-6.1.0-28-686 panic=60 rootdelay=5 rootwait rw root=/dev/sda1&lt;br /&gt;
&lt;br /&gt;
LABEL memtest&lt;br /&gt;
  kernel memtest86+-1.65&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=TrdataDcache&amp;diff=8145</id>
		<title>TrdataDcache</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=TrdataDcache&amp;diff=8145"/>
		<updated>2025-01-10T00:28:26Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The TRIUMF dcache trdata system has been decommissioned as of Jan 2025; old data has been backed up to disks.  please contact Thomas L. for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a set of historical information about the trdata system; the information is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
_____________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Experimental Data Storage is a facility dedicated to store large amount of data produced by TRIUMF experimental groups. This system is based on the DCache software (Desy and FermiLab) and consists uniquely of storage. No CPU power is available. To the users, only the main server machine TRDATA00 is visible. The files are stored on one or several disk server machines. The system is easily expendable. To obtain disk space on this system, please contact Pierre Amaudruz or Thomas Lindner (lindner@triumf.ca). The disk servers are running RAID 6 software but the files are not backed up to another system. The users should not count on this facility as a permanent archive at this point. Currently the system has ~125 TB available.&lt;br /&gt;
&lt;br /&gt;
We are currently migrating the dcache system from an older version to a new version on a new computer.  The following is useful information for the transition period:&lt;br /&gt;
&lt;br /&gt;
* the new system is already up and running.  You can see the new dcache interface here:&lt;br /&gt;
&lt;br /&gt;
http://trdata00.triumf.ca:2288&lt;br /&gt;
&lt;br /&gt;
* Files from the old dcache system have been all copied to the new system (except for pienu files, for which special arrangements are being made).&lt;br /&gt;
&lt;br /&gt;
* You can copy file from the new system with either the dccp command:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dccp dcap://trdata00.triumf.ca/pnfs/triumf.ca/data/iris/2015/iris_000029060000.mid.gz .&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or the globus-url-copy grid command (assuming you have grid tools installed and a valid, registered grid certificate):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;globus-url-copy -p 5 -vb gsiftp://trdata00.triumf.ca/pnfs/triumf.ca/data/iris/2012/run00750.mid.gz file:///home/lindner/run00750.mid.gz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Installing dccp itself is pretty easy.  To install from a standard SL5/6 desktop you can just use the version of dccp that you get from EPEL; ie, just do &lt;br /&gt;
&lt;br /&gt;
 yum install dcap&lt;br /&gt;
&lt;br /&gt;
Installing globus-url-copy is more complicated and involved.  Contact Thomas Lindner for more information.&lt;br /&gt;
&lt;br /&gt;
* (For sys-admins only): from TRIUMF computers you can also mount the dcache system by doing following:&lt;br /&gt;
&lt;br /&gt;
    mkdir -p /pnfs&lt;br /&gt;
    edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs&amp;quot;&lt;br /&gt;
    . /etc/rc.local &lt;br /&gt;
&lt;br /&gt;
* After March 4th, the new system was eenamed as trdata00 and the old system became unavailable.&lt;br /&gt;
&lt;br /&gt;
There is administrative details [[trdata_admin|TRDATA admin]]&lt;br /&gt;
&lt;br /&gt;
You can also access the [http://ccn.triumf.ca/file-storage/experimental-data-storage original documentation] for the old trdata setup.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=8144</id>
		<title>Sysman</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=8144"/>
		<updated>2025-01-10T00:27:58Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System management ==&lt;br /&gt;
&lt;br /&gt;
* [http://daq-plone.triumf.ca/SM/docs/local Misc documentation on the daq-plone site]&lt;br /&gt;
* [[Daqinv]] DAQ inventory database&lt;br /&gt;
* [[Amanda]] AMANDA backups&lt;br /&gt;
&lt;br /&gt;
== Computer clusters ==&lt;br /&gt;
&lt;br /&gt;
* [[DAQ_Cluster]] [[ISAC_Cluster]] [[MUSR_Cluster]] [http://www.triumf.info/wiki/DAQwiki/index.php/TITAN TITAN]&lt;br /&gt;
* gonodeinfo: [https://daq00.triumf.ca/gonodeinfo/gonodereport.html all] [https://daq00.triumf.ca/gonodeinfo/group-titan.html titan] [https://daq00.triumf.ca/gonodeinfo/group-isac.html isac] [https://daq00.triumf.ca/gonodeinfo/group-cmms.html cmms] (username/password: midas/midas)&lt;br /&gt;
* gonodeinfo: [https://dsvslice.triumf.ca/gonodeinfo/gonodereport.html dsvslice] (username/password: midas/midas)&lt;br /&gt;
* [https://daqstore.triumf.ca/ganglia ganglia] (username/password: midas/midas) (runs on daqstore, see daqstore:/etc/rc.local)&lt;br /&gt;
* [https://daq00.triumf.ca/ganglia new ganglia] (username/password: midas/midas) (runs on daq00)&lt;br /&gt;
* zfsquotareport: [https://daq00.triumf.ca/zfsquotareport/zfsquota.html daq00] [https://isdaq00.triumf.ca/zfsquotareport/zfsquota.html isdaq00] [https://alpha00.triumf.ca/zfsquotareport/zfsquota.html alpha00] [musr00] [midm9a] [https://iris00.triumf.ca/zfsquotareport/zfsquota.html iris00] [https://midemma01.triumf.ca/zfsquotareport/zfsquota.html midemma01] [https://trinatdaq.triumf.ca/zfsquotareport/zfsquota.html trinatdaq] [titan00] [https://daqstore.triumf.ca/zfsquotareport/zfsquota.html daqstore]&lt;br /&gt;
* [https://ladd00.triumf.ca/diskusers/disks.html Diskusers] &lt;br /&gt;
* [https://daq00.triumf.ca/~olchansk/pingmon/triumf.html network ping monitor]&lt;br /&gt;
* [https://daq00.triumf.ca/~daqweb/daqbackup/ daqbackup]&lt;br /&gt;
&lt;br /&gt;
* TRDATA dcache status [[TrdataDcache]]&lt;br /&gt;
* [[DiskScrub]] Documentation for diskscrub&lt;br /&gt;
* [[disk_benchmarks]]&lt;br /&gt;
* [[graphics_benchmarks]]&lt;br /&gt;
* [[VMs]] DAQ VMs&lt;br /&gt;
&lt;br /&gt;
== Linux documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[SLinstall]] SL5/SL6/CentOS7/CentOS8 install instructions&lt;br /&gt;
* [[Ubuntu]] Ubuntu install instructions&lt;br /&gt;
* [[Raspbian]] Raspbian OS for ARM processors (Raspberry Pi, Cyclone5 SoC, etc)&lt;br /&gt;
* [[ZFS]] ZFS instructions&lt;br /&gt;
* [[rPi-RT]] Real-Time kernel for Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
== Misc documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[DaqVlanConfig]] VLANs for DAQ and experiments&lt;br /&gt;
* [[PcHardware]] DAQ PC Configurations&lt;br /&gt;
* [[PcRackmount]] DAQ Rackmounted Configurations&lt;br /&gt;
* [[DaqSvn]] DAQ SVN repositories and instructions (obsolete)&lt;br /&gt;
* [[Quartus]] Altera Quartus&lt;br /&gt;
* [[HADOOP]] (obsolete)&lt;br /&gt;
* [[EPICS]]&lt;br /&gt;
* [[VNC]]&lt;br /&gt;
* [[Cloning_raid1_boot_disks]]&lt;br /&gt;
* [[Setup_MIDAS_experiment]] (moved to MidasWiki)&lt;br /&gt;
* [[IEEE_MAC_TRIUMF]] IEEE MAC addresses assigned to TRIUMF&lt;br /&gt;
* [[DaqWikiManagement]] DAQWiki management&lt;br /&gt;
* [[PHYSICA]]&lt;br /&gt;
* [[ROOT]]&lt;br /&gt;
* [[MIDAS]]&lt;br /&gt;
* [[ROOTANA]] : ROOT Analyzer for MIDAS (moved to MidasWiki)&lt;br /&gt;
* [[ROODY]]&lt;br /&gt;
* [[ser2net]] USB-Serial-RS232 interface&lt;br /&gt;
* [[GIT]]&lt;br /&gt;
* [[TrdataDcache]] tradata dcache system for experimental data storage&lt;br /&gt;
* [[dhcpd_on_eth1]] Enabling dhcpd on secondary ethernet port&lt;br /&gt;
* [[nextcloud]]&lt;br /&gt;
* [[DAQ_VMs]] DAQ and experimental group VMs&lt;br /&gt;
* [[MegaRAID]] instructions for dealing with MegaRAID hardware raid adapters&lt;br /&gt;
* obsolete data acquisition software: [https://daq.triumf.ca/~daqweb/doc/susiq/ SUSIQ] [https://daq.triumf.ca/~daqweb/doc/nova/ NOVA]&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=8143</id>
		<title>Sysman</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=8143"/>
		<updated>2025-01-10T00:27:22Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System management ==&lt;br /&gt;
&lt;br /&gt;
* [http://daq-plone.triumf.ca/SM/docs/local Misc documentation on the daq-plone site]&lt;br /&gt;
* [[Daqinv]] DAQ inventory database&lt;br /&gt;
* [[Amanda]] AMANDA backups&lt;br /&gt;
&lt;br /&gt;
== Computer clusters ==&lt;br /&gt;
&lt;br /&gt;
* [[DAQ_Cluster]] [[ISAC_Cluster]] [[MUSR_Cluster]] [http://www.triumf.info/wiki/DAQwiki/index.php/TITAN TITAN]&lt;br /&gt;
* gonodeinfo: [https://daq00.triumf.ca/gonodeinfo/gonodereport.html all] [https://daq00.triumf.ca/gonodeinfo/group-titan.html titan] [https://daq00.triumf.ca/gonodeinfo/group-isac.html isac] [https://daq00.triumf.ca/gonodeinfo/group-cmms.html cmms] (username/password: midas/midas)&lt;br /&gt;
* gonodeinfo: [https://dsvslice.triumf.ca/gonodeinfo/gonodereport.html dsvslice] (username/password: midas/midas)&lt;br /&gt;
* [https://daqstore.triumf.ca/ganglia ganglia] (username/password: midas/midas) (runs on daqstore, see daqstore:/etc/rc.local)&lt;br /&gt;
* [https://daq00.triumf.ca/ganglia new ganglia] (username/password: midas/midas) (runs on daq00)&lt;br /&gt;
* zfsquotareport: [https://daq00.triumf.ca/zfsquotareport/zfsquota.html daq00] [https://isdaq00.triumf.ca/zfsquotareport/zfsquota.html isdaq00] [https://alpha00.triumf.ca/zfsquotareport/zfsquota.html alpha00] [musr00] [midm9a] [https://iris00.triumf.ca/zfsquotareport/zfsquota.html iris00] [https://midemma01.triumf.ca/zfsquotareport/zfsquota.html midemma01] [https://trinatdaq.triumf.ca/zfsquotareport/zfsquota.html trinatdaq] [titan00] [https://daqstore.triumf.ca/zfsquotareport/zfsquota.html daqstore]&lt;br /&gt;
* [https://ladd00.triumf.ca/diskusers/disks.html Diskusers] &lt;br /&gt;
* [https://daq00.triumf.ca/~olchansk/pingmon/triumf.html network ping monitor]&lt;br /&gt;
* [https://daq00.triumf.ca/~daqweb/daqbackup/ daqbackup]&lt;br /&gt;
&lt;br /&gt;
* [[TrdataDcache] TRDATA dcache status]&lt;br /&gt;
* [[DiskScrub]] Documentation for diskscrub&lt;br /&gt;
* [[disk_benchmarks]]&lt;br /&gt;
* [[graphics_benchmarks]]&lt;br /&gt;
* [[VMs]] DAQ VMs&lt;br /&gt;
&lt;br /&gt;
== Linux documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[SLinstall]] SL5/SL6/CentOS7/CentOS8 install instructions&lt;br /&gt;
* [[Ubuntu]] Ubuntu install instructions&lt;br /&gt;
* [[Raspbian]] Raspbian OS for ARM processors (Raspberry Pi, Cyclone5 SoC, etc)&lt;br /&gt;
* [[ZFS]] ZFS instructions&lt;br /&gt;
* [[rPi-RT]] Real-Time kernel for Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
== Misc documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[DaqVlanConfig]] VLANs for DAQ and experiments&lt;br /&gt;
* [[PcHardware]] DAQ PC Configurations&lt;br /&gt;
* [[PcRackmount]] DAQ Rackmounted Configurations&lt;br /&gt;
* [[DaqSvn]] DAQ SVN repositories and instructions (obsolete)&lt;br /&gt;
* [[Quartus]] Altera Quartus&lt;br /&gt;
* [[HADOOP]] (obsolete)&lt;br /&gt;
* [[EPICS]]&lt;br /&gt;
* [[VNC]]&lt;br /&gt;
* [[Cloning_raid1_boot_disks]]&lt;br /&gt;
* [[Setup_MIDAS_experiment]] (moved to MidasWiki)&lt;br /&gt;
* [[IEEE_MAC_TRIUMF]] IEEE MAC addresses assigned to TRIUMF&lt;br /&gt;
* [[DaqWikiManagement]] DAQWiki management&lt;br /&gt;
* [[PHYSICA]]&lt;br /&gt;
* [[ROOT]]&lt;br /&gt;
* [[MIDAS]]&lt;br /&gt;
* [[ROOTANA]] : ROOT Analyzer for MIDAS (moved to MidasWiki)&lt;br /&gt;
* [[ROODY]]&lt;br /&gt;
* [[ser2net]] USB-Serial-RS232 interface&lt;br /&gt;
* [[GIT]]&lt;br /&gt;
* [[TrdataDcache]] tradata dcache system for experimental data storage&lt;br /&gt;
* [[dhcpd_on_eth1]] Enabling dhcpd on secondary ethernet port&lt;br /&gt;
* [[nextcloud]]&lt;br /&gt;
* [[DAQ_VMs]] DAQ and experimental group VMs&lt;br /&gt;
* [[MegaRAID]] instructions for dealing with MegaRAID hardware raid adapters&lt;br /&gt;
* obsolete data acquisition software: [https://daq.triumf.ca/~daqweb/doc/susiq/ SUSIQ] [https://daq.triumf.ca/~daqweb/doc/nova/ NOVA]&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=TrdataDcache&amp;diff=8142</id>
		<title>TrdataDcache</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=TrdataDcache&amp;diff=8142"/>
		<updated>2025-01-10T00:26:29Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The TRIUMF dcache trdata system has been decommissioned as of Jan 2025; please contact Thomas L. for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a set of historical information about the trdata system; the information is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
_____________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Experimental Data Storage is a facility dedicated to store large amount of data produced by TRIUMF experimental groups. This system is based on the DCache software (Desy and FermiLab) and consists uniquely of storage. No CPU power is available. To the users, only the main server machine TRDATA00 is visible. The files are stored on one or several disk server machines. The system is easily expendable. To obtain disk space on this system, please contact Pierre Amaudruz or Thomas Lindner (lindner@triumf.ca). The disk servers are running RAID 6 software but the files are not backed up to another system. The users should not count on this facility as a permanent archive at this point. Currently the system has ~125 TB available.&lt;br /&gt;
&lt;br /&gt;
We are currently migrating the dcache system from an older version to a new version on a new computer.  The following is useful information for the transition period:&lt;br /&gt;
&lt;br /&gt;
* the new system is already up and running.  You can see the new dcache interface here:&lt;br /&gt;
&lt;br /&gt;
http://trdata00.triumf.ca:2288&lt;br /&gt;
&lt;br /&gt;
* Files from the old dcache system have been all copied to the new system (except for pienu files, for which special arrangements are being made).&lt;br /&gt;
&lt;br /&gt;
* You can copy file from the new system with either the dccp command:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dccp dcap://trdata00.triumf.ca/pnfs/triumf.ca/data/iris/2015/iris_000029060000.mid.gz .&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or the globus-url-copy grid command (assuming you have grid tools installed and a valid, registered grid certificate):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;globus-url-copy -p 5 -vb gsiftp://trdata00.triumf.ca/pnfs/triumf.ca/data/iris/2012/run00750.mid.gz file:///home/lindner/run00750.mid.gz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Installing dccp itself is pretty easy.  To install from a standard SL5/6 desktop you can just use the version of dccp that you get from EPEL; ie, just do &lt;br /&gt;
&lt;br /&gt;
 yum install dcap&lt;br /&gt;
&lt;br /&gt;
Installing globus-url-copy is more complicated and involved.  Contact Thomas Lindner for more information.&lt;br /&gt;
&lt;br /&gt;
* (For sys-admins only): from TRIUMF computers you can also mount the dcache system by doing following:&lt;br /&gt;
&lt;br /&gt;
    mkdir -p /pnfs&lt;br /&gt;
    edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs&amp;quot;&lt;br /&gt;
    . /etc/rc.local &lt;br /&gt;
&lt;br /&gt;
* After March 4th, the new system was eenamed as trdata00 and the old system became unavailable.&lt;br /&gt;
&lt;br /&gt;
There is administrative details [[trdata_admin|TRDATA admin]]&lt;br /&gt;
&lt;br /&gt;
You can also access the [http://ccn.triumf.ca/file-storage/experimental-data-storage original documentation] for the old trdata setup.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=TrdataDcache&amp;diff=8141</id>
		<title>TrdataDcache</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=TrdataDcache&amp;diff=8141"/>
		<updated>2025-01-10T00:26:18Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
The TRIUMF dcache trdata system has been decommissioned as of Jan 2025; please contact Thomas L. for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a set of historical information about the trdata system; the information is no longer relevant.&lt;br /&gt;
_____________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Experimental Data Storage is a facility dedicated to store large amount of data produced by TRIUMF experimental groups. This system is based on the DCache software (Desy and FermiLab) and consists uniquely of storage. No CPU power is available. To the users, only the main server machine TRDATA00 is visible. The files are stored on one or several disk server machines. The system is easily expendable. To obtain disk space on this system, please contact Pierre Amaudruz or Thomas Lindner (lindner@triumf.ca). The disk servers are running RAID 6 software but the files are not backed up to another system. The users should not count on this facility as a permanent archive at this point. Currently the system has ~125 TB available.&lt;br /&gt;
&lt;br /&gt;
We are currently migrating the dcache system from an older version to a new version on a new computer.  The following is useful information for the transition period:&lt;br /&gt;
&lt;br /&gt;
* the new system is already up and running.  You can see the new dcache interface here:&lt;br /&gt;
&lt;br /&gt;
http://trdata00.triumf.ca:2288&lt;br /&gt;
&lt;br /&gt;
* Files from the old dcache system have been all copied to the new system (except for pienu files, for which special arrangements are being made).&lt;br /&gt;
&lt;br /&gt;
* You can copy file from the new system with either the dccp command:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dccp dcap://trdata00.triumf.ca/pnfs/triumf.ca/data/iris/2015/iris_000029060000.mid.gz .&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or the globus-url-copy grid command (assuming you have grid tools installed and a valid, registered grid certificate):&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;globus-url-copy -p 5 -vb gsiftp://trdata00.triumf.ca/pnfs/triumf.ca/data/iris/2012/run00750.mid.gz file:///home/lindner/run00750.mid.gz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Installing dccp itself is pretty easy.  To install from a standard SL5/6 desktop you can just use the version of dccp that you get from EPEL; ie, just do &lt;br /&gt;
&lt;br /&gt;
 yum install dcap&lt;br /&gt;
&lt;br /&gt;
Installing globus-url-copy is more complicated and involved.  Contact Thomas Lindner for more information.&lt;br /&gt;
&lt;br /&gt;
* (For sys-admins only): from TRIUMF computers you can also mount the dcache system by doing following:&lt;br /&gt;
&lt;br /&gt;
    mkdir -p /pnfs&lt;br /&gt;
    edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs&amp;quot;&lt;br /&gt;
    . /etc/rc.local &lt;br /&gt;
&lt;br /&gt;
* After March 4th, the new system was eenamed as trdata00 and the old system became unavailable.&lt;br /&gt;
&lt;br /&gt;
There is administrative details [[trdata_admin|TRDATA admin]]&lt;br /&gt;
&lt;br /&gt;
You can also access the [http://ccn.triumf.ca/file-storage/experimental-data-storage original documentation] for the old trdata setup.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=7108</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=7108"/>
		<updated>2023-04-05T20:58:36Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* move /home/wheel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Ubuntu =&lt;br /&gt;
&lt;br /&gt;
AAA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ubuntu version =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsb_release -a&lt;br /&gt;
uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu installer =&lt;br /&gt;
&lt;br /&gt;
* updated for Ububtu LTS 20.04.01, 22.04.1&lt;br /&gt;
&lt;br /&gt;
* download the latest Ubuntu LTS desktop installer iso image&lt;br /&gt;
* dd the image to a USB key&lt;br /&gt;
* power down, disconnect all disks (all HDDs, all SSDs, all M.2)&lt;br /&gt;
* connect the SSD to be used as system disk&lt;br /&gt;
* if system will use mirrored SSDs (using ZFS mirror), leave second SSD disconnected, we will activate it later&lt;br /&gt;
* power up&lt;br /&gt;
* boot from USB key in legacy mode or UEFI mode (select this in the BIOS boot menu - F8 for ASUS, F11 for Supermicro)&lt;br /&gt;
* follow the instruction:&lt;br /&gt;
* &amp;quot;try ubuntu or install ubuntu&amp;quot; - choose &amp;quot;install&amp;quot;&lt;br /&gt;
* select language - accept default&lt;br /&gt;
* &amp;quot;updates and other software&amp;quot; - accept default settings (&amp;quot;normal install&amp;quot;)&lt;br /&gt;
* &amp;quot;installation type&amp;quot; - select &amp;quot;advanced features&amp;quot; and &amp;quot;experimental: use ZFS&amp;quot;&lt;br /&gt;
* accept partition choice&lt;br /&gt;
* &amp;quot;where are you?&amp;quot; - select &amp;quot;Vancouver&amp;quot; (PST time zone)&lt;br /&gt;
* &amp;quot;who are you?&amp;quot; - leave all fields blank, except &amp;quot;username&amp;quot; set to &amp;quot;wheel&amp;quot;, &amp;quot;password&amp;quot; set to the root password. hostname will be set later after configuring the network&lt;br /&gt;
* installation runs in a few minutes, when finished, reboot&lt;br /&gt;
* login as user wheel&lt;br /&gt;
* answer annouying questions:&lt;br /&gt;
* &amp;quot;livepatch&amp;quot; - say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;help improve&amp;quot; - select &amp;quot;do not send&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;privacy&amp;quot; - leave &amp;quot;location&amp;quot; as &amp;quot;off&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;ready to go&amp;quot;, say &amp;quot;done&amp;quot;&lt;br /&gt;
* right-click on the desktop, say &amp;quot;open in terminal&amp;quot;, a shell will open&lt;br /&gt;
* say &amp;quot;sudo /bin/bash&amp;quot;, enter the root password, you now have the root shell&lt;br /&gt;
* run nm-connection-editor to configure the network. use netmask 255.255.224.0, gateway 142.90.100.18, DNS 142.90.100.19, search path &amp;quot;triumf.ca&amp;quot;&lt;br /&gt;
* after network is up (can ping ladd00), continue with post-installation steps below&lt;br /&gt;
&lt;br /&gt;
= Install instructions =&lt;br /&gt;
&lt;br /&gt;
== prepare ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ssh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure hostname ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap ==&lt;br /&gt;
&lt;br /&gt;
ubuntu installer creates a 2 GB swap partition, not useful&lt;br /&gt;
on 32-64 GB machine, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fstab ### comment out the &amp;quot;swap&amp;quot; line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maybe reboot ==&lt;br /&gt;
&lt;br /&gt;
this is a good point to reboot the machine to boot&lt;br /&gt;
the latest kernel and to set the correct hostname&lt;br /&gt;
&lt;br /&gt;
== install etckeeper ==&lt;br /&gt;
&lt;br /&gt;
keep contents of /etc in a git repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install etckeeper&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set timezone ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
timedatectl list-timezones | grep -i vancouver&lt;br /&gt;
timedatectl set-timezone America/Vancouver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install time synchronization ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install chrony&lt;br /&gt;
echo server time1.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
echo server time2.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
echo server time3.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
systemctl disable systemd-timesyncd.service&lt;br /&gt;
systemctl stop systemd-timesyncd.service&lt;br /&gt;
systemctl disable ntp&lt;br /&gt;
systemctl stop ntp&lt;br /&gt;
systemctl enable chrony&lt;br /&gt;
systemctl restart chrony&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reenable systemd-timesyncd ==&lt;br /&gt;
&lt;br /&gt;
ONLY IF CHRONY DOES NOT WORK&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chrony&lt;br /&gt;
systemctl enable systemd-timesyncd.service&lt;br /&gt;
systemctl restart systemd-timesyncd.service&lt;br /&gt;
systemctl status systemd-timesyncd.service&lt;br /&gt;
timedatectl status&lt;br /&gt;
timedatectl timesync-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
this is different from ubuntu 20. it uses /etc/mailname and it hardwires the hostname into main.cf.&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email ==&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use smtp.triumf.ca&lt;br /&gt;
* CERN: use cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install postfix ### select &amp;quot;satellite system&amp;quot;, enter full hostname &amp;quot;xxx.triumf.ca&amp;quot;, enter &amp;quot;smtp.triumf.ca&amp;quot;&lt;br /&gt;
apt install mailutils&lt;br /&gt;
dpkg-reconfigure postfix ### (if postfix already installed)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo olchansk@triumf.ca lindner@triumf.ca bsmith@triumf.ca &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
mailx root&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable ping for all users (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
Without this tweak, Debian will report &amp;quot;operation not permitted&amp;quot; if a user tries to ping somewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &#039;net.ipv4.ping_group_range = 0 1000&#039; &amp;gt; /etc/sysctl.d/99-ping.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install missing packages ==&lt;br /&gt;
&lt;br /&gt;
(apt eats terminal input, even the &amp;quot;yes |&amp;quot; trick does not quite work,&lt;br /&gt;
repeat the following commands until they report that everything&lt;br /&gt;
is installed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install ssh tcsh ethtool ncat rsync strace net-tools sysstat smartmontools lm-sensors traceroute time minicom screen git lsof debsums tmux&lt;br /&gt;
yes | apt -y install lsb-release&lt;br /&gt;
yes | apt -y install flex bison&lt;br /&gt;
yes | apt -y install neofetch&lt;br /&gt;
yes | apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
yes | apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
yes | apt -y install python&lt;br /&gt;
yes | apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
yes | apt -y install mariadb-client ### mysql client&lt;br /&gt;
yes | apt -y install libz-dev sqlite3 libsqlite3-dev unixodbc-dev&lt;br /&gt;
yes | apt -y install libssl-dev&lt;br /&gt;
yes | apt -y install emacs xemacs21 joe&lt;br /&gt;
yes | apt -y install gnuplot dos2unix&lt;br /&gt;
yes | apt -y install mutt bsd-mailx # email clients&lt;br /&gt;
yes | apt -y install liblz4-tool pbzip2&lt;br /&gt;
yes | apt -y install libc6-dev-i386 # otherwise no /usr/include/sys/types.h&lt;br /&gt;
yes | apt -y install libreadline-dev&lt;br /&gt;
yes | apt -y install chromium-browser chromium-codecs-ffmpeg-extra&lt;br /&gt;
yes | apt -y install ubuntu-mate-themes&lt;br /&gt;
yes | apt -y install libmotif-dev libxmu-dev&lt;br /&gt;
yes | apt -y install libusb-dev libusb-1.0-0-dev&lt;br /&gt;
yes | apt -y install xfig gsfonts-x11 gsfonts-other # install fonts for xfig&lt;br /&gt;
yes | apt -y install libjson-perl&lt;br /&gt;
yes | apt -y install libgsl-dev # additional GNU Scientific Library&lt;br /&gt;
yes | apt -y install qt5-default # Qt development&lt;br /&gt;
yes | apt -y install python3.8-full python3.8-dev python3.8-dbg python3-pip ### for pyROOT&lt;br /&gt;
yes | apt -y install imagemagick imagemagick-common ckeditor # for elog&lt;br /&gt;
yes | apt -y install libjpeg-dev libjpeg-progs libjpeg-tools&lt;br /&gt;
yes | apt -y install linux-tools-common linux-tools-generic # cpupower frequency-info&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 20.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 # enable linux 5.11 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install git/scripts ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
* on 64 GB RAM machines swap is not useful&lt;br /&gt;
* on machines booted from network (NFS-ROOT), swap does not work&lt;br /&gt;
* on machines running from flash (RPi, etc), flash is too slow for useful swap&lt;br /&gt;
* swap configured by linux installers invariably has wrong size and is not useful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable dphys-swapfile&lt;br /&gt;
systemctl stop dphys-swapfile&lt;br /&gt;
dphys-swapfile uninstall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure DNS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /etc/systemd/resolved.conf.d&lt;br /&gt;
cp etc/resolved-triumf.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
systemctl restart systemd-resolved&lt;br /&gt;
resolvectl&lt;br /&gt;
#systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ganglia ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install ganglia-monitor&lt;br /&gt;
systemctl enable ganglia-monitor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/gmond-ubuntu.conf /etc/ganglia/gmond.conf&lt;br /&gt;
ln -s ganglia/gmond.conf /etc&lt;br /&gt;
# ln -s arm-linux-gnueabihf/ganglia /usr/lib/ganglia ### fix path for ARM CPU&lt;br /&gt;
# ln -s i386-linux-gnu/ganglia /usr/lib/ganglia ### fix path for 32-bit Intel CPU&lt;br /&gt;
systemctl restart ganglia-monitor&lt;br /&gt;
systemctl status ganglia-monitor&lt;br /&gt;
ps -efw | grep gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/ganglia&lt;br /&gt;
make install&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install gonodeinfo ==&lt;br /&gt;
&lt;br /&gt;
* go to https://bitbucket.org/dd1/gonodeinfo follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: daq00.triumf.ca:8601&lt;br /&gt;
* run &amp;quot;gonodeinfo -v&amp;quot;&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run /opt/gonodeinfo/gonodereceive.exe -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== install libz.so.1 for CentOS compatibility ==&lt;br /&gt;
&lt;br /&gt;
KO - confirm which versions on quartus need this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install zlib1g&lt;br /&gt;
yes | apt-get -y install zlib1g:i386 libc6:i386 libgcc1:i386 gcc-6-base:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
(does not work anymore!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ftp.ca.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus 13.0sp1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0.50.0&lt;br /&gt;
/bin/cp -pv libpng12.so.0 libpng12.so.0.50.0 /lib/x86_64-linux-gnu/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for Xilinx ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install texinfo&lt;br /&gt;
apt install zlib1g:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for building ROOT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install libx11-dev libxpm-dev libxft-dev libxext-dev libpng-dev libjpeg-dev xlibmesa-glu-dev libxml2-dev libgsl-dev cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install 32-bit libraries for PHYSICA ==&lt;br /&gt;
&lt;br /&gt;
these instructions are for running 32-bit physica executable built for SL6 on ubuntu LTS 20.04&lt;br /&gt;
&lt;br /&gt;
install physica sources (cannot build, do not have g77)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages&lt;br /&gt;
git clone https://bitbucket.org/ttriumfdaq/physica.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install 32-bit libraries using ubuntu package manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install lib32z1 # libz.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy 32-bit SL6 shared libraries to /lib32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libX11.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libgd.so.2 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libpng12.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libreadline.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libncurses.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libg2c.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libxcb.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXpm.so.4 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libjpeg.so.62 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfontconfig.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfreetype.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libtinfo.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXau.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libexpat.so.1 /lib32/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ldd should report:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trinatdaq:trinat&amp;gt; ldd /usr/local/physica/physica.exe&lt;br /&gt;
	linux-gate.so.1 (0xf7fa2000)&lt;br /&gt;
	libX11.so.6 =&amp;gt; /lib32/libX11.so.6 (0xf7e43000)&lt;br /&gt;
	libgd.so.2 =&amp;gt; /lib32/libgd.so.2 (0xf7dfe000)&lt;br /&gt;
	libpng12.so.0 =&amp;gt; /lib32/libpng12.so.0 (0xf7dd6000)&lt;br /&gt;
	libz.so.1 =&amp;gt; /lib32/libz.so.1 (0xf7db8000)&lt;br /&gt;
	libreadline.so.6 =&amp;gt; /lib32/libreadline.so.6 (0xf7d7e000)&lt;br /&gt;
	libncurses.so.5 =&amp;gt; /lib32/libncurses.so.5 (0xf7d5b000)&lt;br /&gt;
	libg2c.so.0 =&amp;gt; /lib32/libg2c.so.0 (0xf7d3d000)&lt;br /&gt;
	libm.so.6 =&amp;gt; /lib32/libm.so.6 (0xf7c39000)&lt;br /&gt;
	libgcc_s.so.1 =&amp;gt; /lib32/libgcc_s.so.1 (0xf7c1a000)&lt;br /&gt;
	libc.so.6 =&amp;gt; /lib32/libc.so.6 (0xf7a2f000)&lt;br /&gt;
	libxcb.so.1 =&amp;gt; /lib32/libxcb.so.1 (0xf7a05000)&lt;br /&gt;
	libdl.so.2 =&amp;gt; /lib32/libdl.so.2 (0xf79ff000)&lt;br /&gt;
	libXpm.so.4 =&amp;gt; /lib32/libXpm.so.4 (0xf79ee000)&lt;br /&gt;
	libjpeg.so.62 =&amp;gt; /lib32/libjpeg.so.62 (0xf7997000)&lt;br /&gt;
	libfontconfig.so.1 =&amp;gt; /lib32/libfontconfig.so.1 (0xf7962000)&lt;br /&gt;
	libfreetype.so.6 =&amp;gt; /lib32/libfreetype.so.6 (0xf78c9000)&lt;br /&gt;
	libtinfo.so.5 =&amp;gt; /lib32/libtinfo.so.5 (0xf78b0000)&lt;br /&gt;
	/lib/ld-linux.so.2 (0xf7fa4000)&lt;br /&gt;
	libXau.so.6 =&amp;gt; /lib32/libXau.so.6 (0xf78ad000)&lt;br /&gt;
	libexpat.so.1 =&amp;gt; /lib32/libexpat.so.1 (0xf7885000)&lt;br /&gt;
trinatdaq:trinat&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set login environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv TRIUMF_FONTS $HOME/packages/physica/fonts&lt;br /&gt;
setenv PHYSICA_DIR $HOME/packages/physica&lt;br /&gt;
alias physica $PHYSICA_DIR/physica-SL6-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages/physica&lt;br /&gt;
physica&lt;br /&gt;
@rangauss.pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install lightdm ==&lt;br /&gt;
&lt;br /&gt;
unlike the default gdm login manager, lightdm shows the machine hostname and does not require an extra mouse click to swicth from screen saver to login mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install lightdm&lt;br /&gt;
# select lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install desktop environments ==&lt;br /&gt;
&lt;br /&gt;
note: default display manager and default desktop are deficient, please do not skip this step.&lt;br /&gt;
&lt;br /&gt;
note: if apt asks to choose the display manager, select &amp;quot;lightdm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: KO - I recommend the &amp;quot;MATE&amp;quot; desktop.&lt;br /&gt;
&lt;br /&gt;
note: you will have to cut-and-paste this several times because &amp;quot;apt&amp;quot; eats commands, even with &amp;quot;-y&amp;quot; and even piped from &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# install MATE desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install ubuntu-mate-core ubuntu-mate-desktop ubuntu-mate-themes&lt;br /&gt;
# install Cinnamon desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install cinnamon&lt;br /&gt;
# install KDE desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install kubuntu-desktop&lt;br /&gt;
# install Lxqt desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install lxqt&lt;br /&gt;
# install Xfce4 desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install xfce4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ROOT ==&lt;br /&gt;
&lt;br /&gt;
Please install ROOT per instructions at http://root.cern.ch.&lt;br /&gt;
&lt;br /&gt;
NOTE1: The ROOT package available from Ubuntu repositories is severely out of date and cannot be used with MIDAS and ROOTANA. ### DO NOT DO THIS! apt-get install root-system&lt;br /&gt;
&lt;br /&gt;
NOTE2: as of 2017-Jan-09, ROOT binary kits for Ubuntu do not work (use GCC 5 instead of GCC6), build from source instead.&lt;br /&gt;
&lt;br /&gt;
== Install x2go ==&lt;br /&gt;
&lt;br /&gt;
KO - is this still needed? does it cause any security problems?&lt;br /&gt;
&lt;br /&gt;
x2go instructions, thanks to Art O.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add-apt-repository ppa:x2go/stable&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install x2goserver x2goserver-xsession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable root login from ladd00/daq00 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
CTRL-C&lt;br /&gt;
/bin/cp ~root/git/scripts/etc/authorized_keys ~root/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install smart-status ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s ~/git/scripts/smart-status/smart-status.perl ~root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable boot menu and boot messages ==&lt;br /&gt;
&lt;br /&gt;
This will enable the grub menu (with a 10 sec timeout) and&lt;br /&gt;
replace black screen with exciting linux boot messages.&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_DEFAULT=0&lt;br /&gt;
#GRUB_TIMEOUT_STYLE=hidden&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;vga=769 video=640x480&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
#GRUB_GFXMODE=640x480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update grub config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reboot ==&lt;br /&gt;
&lt;br /&gt;
this completes installation of the base system.&lt;br /&gt;
&lt;br /&gt;
following sections modify basic ubuntu to fix known problems and to enable special stuff.&lt;br /&gt;
&lt;br /&gt;
= Enable automatic updates =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install unattended-upgrades&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/99apt-conf-ko /etc/apt/apt.conf.d/&lt;br /&gt;
apt-config dump | grep Unattended&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is obsolete:&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/50unattended-upgrades&lt;br /&gt;
** uncomment in Allowed-Origins &amp;quot;-security&amp;quot; and &amp;quot;-updates&amp;quot;&lt;br /&gt;
** add in Allowed-Origins: &amp;quot;Google LLC:stable&amp;quot;;&lt;br /&gt;
** uncomment/add: &amp;quot;Unattended-Upgrade::Mail &amp;quot;root&amp;quot;;&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;7&amp;quot;;&lt;br /&gt;
APT::Periodic::Unattended-Upgrade &amp;quot;1&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test: unattended-upgrade --dry-run -v&lt;br /&gt;
&lt;br /&gt;
= Fix bpool is full =&lt;br /&gt;
&lt;br /&gt;
!!! only if ROOT on ZFS !!!&lt;br /&gt;
&lt;br /&gt;
There is an error in the zsys package that causes bpool to run out of space,&lt;br /&gt;
see [[#Ubuntu zsys]] for more details.&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/zsys.conf /etc/&lt;br /&gt;
zsysctl service reload&lt;br /&gt;
zsysctl service gc&lt;br /&gt;
zpool list bpool&lt;br /&gt;
zfs list bpool&lt;br /&gt;
df /boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= IPMI instructions =&lt;br /&gt;
&lt;br /&gt;
IPMI is the board management hardware on Supermicro and other server motherboards. This includes hardware sensors - fan rotation speed, temperatures and power supply voltages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ipmitool&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
* ipmitool sel list ### event list&lt;br /&gt;
* ipmitool sel elist ### event list&lt;br /&gt;
* ipmitool sel clear ### clear event list (if it becomes full)&lt;br /&gt;
* ipmitool sensor ### report hardware sensors&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel =&lt;br /&gt;
&lt;br /&gt;
note: this MUST be done if ZFS root and NIS/autofs with /home.&lt;br /&gt;
&lt;br /&gt;
Default location of wheel&#039;s home directory will collide with autofs /home, it has to be moved,&lt;br /&gt;
for example to /wheel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# logout from the wheel user&lt;br /&gt;
# go to another computer&lt;br /&gt;
ssh root@daqubuntuxxx&lt;br /&gt;
zfs list | grep wheel ### identify zfs name wheel_xxxxxx&lt;br /&gt;
zfs set mountpoint=/wheel rpool/USERDATA/wheel_hm8fzh&lt;br /&gt;
emacs -nw /etc/passwd ### change wheel&#039;s home directory from /home/wheel to /wheel&lt;br /&gt;
su - wheel ### check that user wheel still works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TL edit (April 2023): I think also need to do chown wheel.wheel /wheel&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 22.04, debian 11) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install rpcbind nis&lt;br /&gt;
echo DAQ-NIS &amp;gt;&amp;gt; /etc/defaultdomain&lt;br /&gt;
echo ypserver daq00.triumf.ca &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
systemctl enable ypbind.service&lt;br /&gt;
systemctl restart ypbind.service&lt;br /&gt;
systemctl status ypbind.service&lt;br /&gt;
ypwhich -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable ypserv:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i s/NISSERVER=false/NISSERVER=slave/ /etc/default/nis&lt;br /&gt;
/usr/lib/yp/ypinit -s daq00&lt;br /&gt;
echo ypserver localhost &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
sed -i &amp;quot;s/ypserver .*/ypserver localhost/&amp;quot; /etc/yp.conf&lt;br /&gt;
systemctl enable ypserv&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/nsswitch.conf to read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable hourly update of nis maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is a new machine, then on the master NIS node (daq00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 20.04) =&lt;br /&gt;
&lt;br /&gt;
* apt-get -y install portmap nis ### will ask for NIS domain (DAQ-NIS)&lt;br /&gt;
* dpkg-reconfigure nis ### reconfigure if already installed&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* edit /etc/default/nis&lt;br /&gt;
** set &amp;quot;NISSERVER=slave&amp;quot;&lt;br /&gt;
** Ubuntu LTS 20.04, check that &amp;quot;YPBINDARGS=&amp;quot; is blank, remove &amp;quot;-no-dbus&amp;quot; if it is there&lt;br /&gt;
* #edit /etc/yp.conf, comment-out everything, add &amp;quot;domain DAQ-NIS server localhost&amp;quot;&lt;br /&gt;
* edit /etc/yp.conf, comment-out everything, add &amp;quot;ypserver localhost&amp;quot;&lt;br /&gt;
* /usr/lib/yp/ypinit -s daq00&lt;br /&gt;
* systemctl enable nis&lt;br /&gt;
* systemctl restart nis&lt;br /&gt;
* ypwhich&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* ypcat -k passwd&lt;br /&gt;
* vi /etc/nsswitch.conf ### add the automount line, modify the passwd, group and shadow lines to read this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable hourly update of NIS maps&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ### NOT NEEDED sudo vi /etc/idmapd.conf ### add line: &amp;quot;Domain = triumf.ca&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= enable autofs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
ls -l /home/olchansk ### test autofs, check file owner is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= enable NFS server =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install nfs-kernel-server&lt;br /&gt;
#edit /etc/exports&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NIS master =&lt;br /&gt;
&lt;br /&gt;
notes for setting up the NIS master&lt;br /&gt;
&lt;br /&gt;
== wheel user ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wheel&amp;quot; is the default administrative user. We do not want it&#039;s password exported to NIS (encrypted password hash is world visible) and we do not want it&#039;s home directory exported to NFS (~wheel/.ssh is world visible and potentially writable: anybody can change ~wheel/.ssh/authorized_keys).&lt;br /&gt;
&lt;br /&gt;
* move wheel&#039;s home directory from /home/wheel to /wheel (see special section about this)&lt;br /&gt;
* change wheel&#039;s UID and GID from 1000 to a value below MINUID in /var/yp/Makefile&lt;br /&gt;
&lt;br /&gt;
== coherent uids ==&lt;br /&gt;
&lt;br /&gt;
we do not want system accounts defined in /etc/passwd of the NIS master&lt;br /&gt;
to be included in the NIS map &amp;quot;passwd&amp;quot;. this causes trouble on NIS clients&lt;br /&gt;
where newly installed packages fail to create local system users because same&lt;br /&gt;
user already exists in NIS.&lt;br /&gt;
&lt;br /&gt;
This is controlled by MINUID in /var/yp/Makefile.&lt;br /&gt;
&lt;br /&gt;
Historical TRIUMF uids start from around 200, but several clusters do not have any historic TRIUMF uids below 500 and MINUID is set to:&lt;br /&gt;
* DAQ-NIS: MINUID=200&lt;br /&gt;
* ISAC-NIS: MINUID=500&lt;br /&gt;
* TITAN-NIS: MINUID=500&lt;br /&gt;
* MUSR-NIS: MINUID=500&lt;br /&gt;
* TIG-NIS: MINUID=500 (100 on SL6 mother8pi)&lt;br /&gt;
&lt;br /&gt;
Ubuntu 20 has two programs to create users:&lt;br /&gt;
* adduser - creates new users with UID 1000 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* adduser --system - creates new system users with UID 100 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* useradd - creates new users with UID 1000 and up as specified in /etc/login.defs. No problems here.&lt;br /&gt;
* useradd --system - creates new system users with UID 999 and down (read &amp;quot;man useradd&amp;quot;, section at the end about SYS_UID_MAX). This collides with NIS MINUID, these system users will be included in the NIS map and cause trouble.&lt;br /&gt;
&lt;br /&gt;
This problem cannot be fixed, SYS_UID_MIN, SYS_UID_MAX and UID_MIN in /etc/login.defs do not seem&lt;br /&gt;
to have any effect on UIDs chosen by &amp;quot;useradd --system&amp;quot;. (tested on Ubuntu LTS 20.04).&lt;br /&gt;
&lt;br /&gt;
So far only these system accounts seem to be affected by this:&lt;br /&gt;
* systemd-coredump&lt;br /&gt;
* ganglia&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/passwd&amp;quot; to identify the last unused system user uid (range 100..200)&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/group&amp;quot; to identify the last unused system user gid (range 100.200)&lt;br /&gt;
* systemd-coredump: manually change UID and GID (package systemd-coredump is usually not installed)&lt;br /&gt;
* ganglia: same thing, then change ownership on all ganglia files.&lt;br /&gt;
&lt;br /&gt;
Also read systemd author&#039;s opinion on system vs user UIDs:&lt;br /&gt;
https://github.com/systemd/systemd/issues/4850#issuecomment-265698275&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-logind NIS breakage =&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED FOR UBUNTU LTS 20.04 !!!&lt;br /&gt;
&lt;br /&gt;
there is a delay in ssh logins for normal users. &amp;quot;ssh -v&amp;quot; shows the delay is after &amp;quot;pledge...&amp;quot;. this&lt;br /&gt;
fix removes the delay.&lt;br /&gt;
&lt;br /&gt;
systemd developers think that we should not use NIS and made sure there are&lt;br /&gt;
problems if we do. To give them credit, they do offer a workaround. Read this:&lt;br /&gt;
https://github.com/poettering/systemd/commit/695fe4078f0df6564a1be1c4a6a9e8a640d23b67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-logind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-logind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-udevd NIS breakage =&lt;br /&gt;
&lt;br /&gt;
see same problem as above with udev getting stuck. ubuntu lts 20.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-udevd.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-udevd.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-udevd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure USB device permissions =&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usbmisc&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot; &lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyACM*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;*video*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* reload udev rules: udevadm control --reload-rules&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
* watch udev activity: udevadm monitor -p&lt;br /&gt;
&lt;br /&gt;
= Configure lightdm display manager =&lt;br /&gt;
&lt;br /&gt;
* enable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo lightdm | dpkg-reconfigure -fteletype lightdm&lt;br /&gt;
systemctl disable gdm&lt;br /&gt;
systemctl disable sddm&lt;br /&gt;
systemctl enable lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable login by NIS users&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp -v etc/lightdm_enable_nis_login.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart lightdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop gdm&lt;br /&gt;
systemctl restart lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install libpng12.so.0 =&lt;br /&gt;
&lt;br /&gt;
Quartus 16 needs libpng12:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install google-chrome =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb&lt;br /&gt;
dpkg -i google-chrome-stable_current_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
confirm autoupdate is enabled, observe dl.google.com is present in the list of repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
...&lt;br /&gt;
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,094 B]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOLLOWING IS OBSOLETE:&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -&lt;br /&gt;
sh -c &#039;echo &amp;quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/google-tmp.list&#039;&lt;br /&gt;
apt update&lt;br /&gt;
apt install google-chrome-stable&lt;br /&gt;
/bin/rm -f /etc/apt/sources.list.d/google-tmp.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install amanda client =&lt;br /&gt;
&lt;br /&gt;
ONLY ONE MACHINES THAT HOST HOME DIRECTORIES&lt;br /&gt;
&lt;br /&gt;
* apt install amanda-client&lt;br /&gt;
* edit /etc/amandahosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amanda.triumf.ca amanda amdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check permissions on /etc/amandahosts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:/var/log/amanda# ls -l /etc/amandahosts&lt;br /&gt;
-rw------- 1 backup backup 49 Jan 27 10:48 /etc/amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix if needed: chown backup.backup /etc/amandahosts; chmod a= /etc/amandahosts; chmod u=wr /etc/amandahosts&lt;br /&gt;
* edit /etc/amanda-security.conf, add this line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runtar:gnutar_path=/usr/bin/tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the amanda machine:&lt;br /&gt;
&lt;br /&gt;
* in amanda disklist, use dump type &amp;quot;bsdtcp-comp-user-tar&amp;quot;&lt;br /&gt;
* su - amanda and run amcheck -c daily daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.1$ amcheck -c daily daq00&lt;br /&gt;
&lt;br /&gt;
Amanda Backup Client Hosts Check&lt;br /&gt;
--------------------------------&lt;br /&gt;
Client check: 1 host checked in 0.092 seconds.  0 problems found.&lt;br /&gt;
&lt;br /&gt;
(brought to you by Amanda 3.3.7p1.git.685ff76d)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable rc.local =&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, Ubuntu LTS 20.04 does not enable /etc/rc.local. Do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp -n -v etc/rc.local /etc/&lt;br /&gt;
chmod a+rx /etc/rc.local&lt;br /&gt;
cp etc/rc-local.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable unwanted services =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable mpd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl --global mask tracker-extract-3.service&lt;br /&gt;
systemctl --global mask tracker-miner-fs-3.service&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable sleep and suspend =&lt;br /&gt;
&lt;br /&gt;
note: we see some computers randomly shutdown or go to sleep, log files indicates the &amp;quot;sleep&amp;quot; or &amp;quot;suspend&amp;quot; button was pushed by user, but no such buttons actually exist. this is the fix for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target systemd-suspend.service systemd-hybrid-sleep.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable crontab @reboot for MIDAS =&lt;br /&gt;
&lt;br /&gt;
startup scripts have a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/cron.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/cron.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat cron.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependency tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
Crontab entry to start midas: (install in the midas user crontab, not root crontab)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - midasuser&lt;br /&gt;
crontab -l&lt;br /&gt;
#@reboot /bin/bash -l -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
#@reboot /bin/tcsh -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install apache httpd proxy for midas and elog =&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache2.&lt;br /&gt;
&lt;br /&gt;
First, configure apache2:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install apache2&lt;br /&gt;
cd /etc/apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file conf-available/ssl-daq14.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file sites-available/daq14-ssl.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
    &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName daq14.triumf.ca&lt;br /&gt;
        DocumentRoot /var/www/html&lt;br /&gt;
        ErrorLog /var/log/apache2/daq14.log&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        # note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
        ## use port specified in elogd.cfg&lt;br /&gt;
        #ProxyPass /elog/ http://localhost:8082/ retry=1 &lt;br /&gt;
        ## use mhttpd port&lt;br /&gt;
        #ProxyPass /      http://localhost:8080/ retry=1 &lt;br /&gt;
        Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
        &amp;lt;Location /&amp;gt;&lt;br /&gt;
            SSLRequireSSL&lt;br /&gt;
            AuthType Basic&lt;br /&gt;
            AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
            Require valid-user&lt;br /&gt;
            # create password file: touch /etc/apache2/htpasswd&lt;br /&gt;
            # to add new user or change password: htpasswd /etc/apache2/htpasswd username&lt;br /&gt;
            AuthUserFile /etc/apache2/htpasswd&lt;br /&gt;
        &amp;lt;/Location&amp;gt;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable ssl module&lt;br /&gt;
* enable new configurations&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
a2enmod headers&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
a2enconf ssl-daq14&lt;br /&gt;
a2ensite daq14-ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable default ssl sites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dissite 000-default-le-ssl&lt;br /&gt;
a2dissite 000-default&lt;br /&gt;
ls -l /etc/apache2/sites-enabled/ ### should show only daq14-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that there are no syntax problems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable and start apache2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 may fail to start, look in /var/log/apache2/error.log and /var/log/apache2/daq14.log&lt;br /&gt;
* if it says &amp;quot;Failed to configure ... certificate&amp;quot;, proceed to the step for setting certbot.&lt;br /&gt;
* try to access https://daq14.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, look at documentation for ufw.&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that apache2 is listening on port 80, follow the apache2 instructions above (remove &amp;quot;listen 80&amp;quot; from apache2.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot (if necessary open tcp port 80 in the firewall, see documentation for ufw):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install certbot python3-certbot-apache&lt;br /&gt;
certbot certonly --standalone --installer apache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq14.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot install --apache --cert-name daq14.triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside /etc/apache2/sites-enabled/daq14-ssl.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in&lt;br /&gt;
/etc/letsencrypt/live/daq14.triumf.ca/&lt;br /&gt;
* to check current renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work with current version of certbot&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/apache2/htpasswd&lt;br /&gt;
htpasswd /etc/apache2/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart apache2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try accessing MIDAS https://daq14.triumf.ca/ (make sure mhttpd is running)&lt;br /&gt;
* if it&#039;s not working, check odb setting FIXME!&lt;br /&gt;
* try accessing ELog https://daq14.triumf.ca/elog/ (make sure elogd is running)&lt;br /&gt;
* if it&#039;s not working, check elogd.cfg file and make sure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSL                  = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
= Enable elog PDF preview =&lt;br /&gt;
&lt;br /&gt;
see https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&lt;br /&gt;
&lt;br /&gt;
* xemacs -nw /etc/ImageMagick-6/policy.xml&lt;br /&gt;
* remove this section at the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- disable ghostscript format types --&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;EPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PDF&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;XPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS quota report =&lt;br /&gt;
&lt;br /&gt;
If there are any ZFS volumes, install script to report disk and quota usage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/quotareport&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /var/www/html/zfsquotareport&lt;br /&gt;
cp -pv ~/git/scripts/quotareport/sorttable.js /var/www/html/zfsquotareport/&lt;br /&gt;
ln -s $PWD/zfsquotareport.perl /etc/cron.daily/&lt;br /&gt;
touch /etc/crontab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If httpd is configured to redirect &amp;quot;/&amp;quot; to MIDAS mhttpd:&lt;br /&gt;
* add following to /etc/apache2/sites-enabled/xxx-ssl.conf in front of &amp;quot;ProxyPass / ...&amp;quot;&lt;br /&gt;
* run &amp;quot;systemctl reload apache2&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not proxy zfs quota report directory &lt;br /&gt;
ProxyPass /zfsquotareport/ ! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install PHP =&lt;br /&gt;
&lt;br /&gt;
* apt install php libapache2-mod-php&lt;br /&gt;
* systemctl restart apache2&lt;br /&gt;
* create /var/www/html/info.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
phpinfo(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://daq00.triumf.ca/info.php&lt;br /&gt;
&lt;br /&gt;
= Configure TRIUMF printers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable core dumps =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 installs the apport package&lt;br /&gt;
which disabled core dumps from user applications. (google it up!).&lt;br /&gt;
It is not meant to do this and documentation claims that&lt;br /&gt;
it is not installed and not enabled by default. Oh, well...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove apport&lt;br /&gt;
apt autoremove ### will remove apport-symptoms and a few other packages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, core dumps are written to file &amp;quot;core&amp;quot; in the current directory.&lt;br /&gt;
See /proc/sys/kernel/core_pattern and /proc/sys/kernel/core_uses_pid.&lt;br /&gt;
&lt;br /&gt;
= Enable debugger =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 does not permit debugger to attach and debug&lt;br /&gt;
already running programs. To enable it, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable Ubuntu Pro nag =&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;apt upgrade&amp;quot; requests Ubuntu Pro or esm-apps, disable the nag:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/mv /etc/apt/apt.conf.d/20apt-esm-hook.conf /etc/apt/apt.conf.d/20apt-esm-hook.conf-disable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update packages =&lt;br /&gt;
&lt;br /&gt;
* apt-get update # update package list&lt;br /&gt;
* apt-get dist-upgrade # install updated packages and update &amp;quot;kept back&amp;quot; packages&lt;br /&gt;
* apt-get autoremove # remove packages that apt thinks should be removed&lt;br /&gt;
&lt;br /&gt;
= Finish installation =&lt;br /&gt;
&lt;br /&gt;
Congratulations. There is nothing more to do!&lt;br /&gt;
&lt;br /&gt;
* reboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS =&lt;br /&gt;
&lt;br /&gt;
!!! after installing all the packages, after updating the system, after updating the linux kernel, after rebooting into latest kernel !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install zfsutils-linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow generic ZFS instructions: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
= Update to new version of Ubuntu =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
do-release-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update Ubuntu LTS 20.04 to LTS 22.04:&lt;br /&gt;
&lt;br /&gt;
== daqubuntu ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# reboot to clear out all updates&lt;br /&gt;
# vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;22.04 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
# do-release-upgrade&lt;br /&gt;
...&lt;br /&gt;
say yes...&lt;br /&gt;
...&lt;br /&gt;
login.defs, say &amp;quot;Y&amp;quot; (erase local changes, use packaged version)&lt;br /&gt;
/etc/systemd/resolved.conf, say &amp;quot;Y&amp;quot; (same as above)&lt;br /&gt;
firefox snap, say yes&lt;br /&gt;
unable to reach snap store, say &amp;quot;skip&amp;quot;&lt;br /&gt;
/etc/gmond.conf, say &amp;quot;Y&amp;quot;&lt;br /&gt;
/var/yp/Makefile, say &amp;quot;install the package maintainer&#039;s version&amp;quot;&lt;br /&gt;
/etc/ypserv.conf, same thing&lt;br /&gt;
/etc/ypserv.securenets, same thing&lt;br /&gt;
/etc/default/nis, same thing&lt;br /&gt;
/etc/speech-dispatcher/modules/mary-generic.conf, same thing&lt;br /&gt;
/etc/apt/apt.conf.d/50unattended-upgrades, same thing&lt;br /&gt;
...&lt;br /&gt;
278 packages are going to be removed, say yes&lt;br /&gt;
...&lt;br /&gt;
restart required, say yes&lt;br /&gt;
...&lt;br /&gt;
no ping... yes ping...&lt;br /&gt;
...&lt;br /&gt;
ssh daqubuntu, ok&lt;br /&gt;
apt update, fail, DNS does not work, &amp;quot;host security.ubuntu.com&amp;quot; does not resolve.&lt;br /&gt;
fix resolver per https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#Disable_NetworkManager&lt;br /&gt;
apt update, apt upgrade now works, 0 packages to update&lt;br /&gt;
NIS does not work.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== midm9a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
login.defs&lt;br /&gt;
firefox snap&lt;br /&gt;
gmond.conf&lt;br /&gt;
ypserv&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
unattended-upgrades&lt;br /&gt;
amanda-security.conf&lt;br /&gt;
remove obsolete (no)&lt;br /&gt;
reboot&lt;br /&gt;
configure dns&lt;br /&gt;
reenable nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== daq17 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox snap&lt;br /&gt;
imagemagick policy.xml&lt;br /&gt;
gmond.conf&lt;br /&gt;
chrony.conf&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
ypserv.conf&lt;br /&gt;
ypserv.securenets&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
50unattended-upgrades&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== daq00 ==&lt;br /&gt;
&lt;br /&gt;
per https://serverpilot.io/docs/how-to-upgrade-ubuntu-20.04-to-22.04/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if it exists &amp;quot;too soon&amp;quot; without doing anything, run it without &amp;quot;-f xxx&amp;quot;, most likely it does not like something about this machine. in case of daq00 it did not like how the EFI partitions were mounted. after fixing it, non-interactive upgrade was successful.&lt;br /&gt;
&lt;br /&gt;
= Ubuntu package manager =&lt;br /&gt;
&lt;br /&gt;
* apt-get install xxx # install package xxx&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get upgrade&lt;br /&gt;
* apt-get dist-upgrade&lt;br /&gt;
* apt-get autoremove # remove automatically installed packages required by a removed package&lt;br /&gt;
* apt-get remove xxx # remove package xxx&lt;br /&gt;
* apt-cache search . # list all available packages&lt;br /&gt;
* apt-cache show &amp;quot;.&amp;quot; | grep ^Package # list al available packages&lt;br /&gt;
* apt-cache madison root-system # show all available versions of package root-system&lt;br /&gt;
* apt list # list all installed packages&lt;br /&gt;
* dpkg --listfiles libpng16-16 # list all files from this package&lt;br /&gt;
* apt list --installed # list all installed packages&lt;br /&gt;
* dpkg -S /bin/bash # what package provides this file?&lt;br /&gt;
* dpkg -L bash # what files provided by this package?&lt;br /&gt;
* debsums -ce # show modified config files&lt;br /&gt;
* apt-config dump # show apt configuration&lt;br /&gt;
&lt;br /&gt;
= Ubuntu zsys =&lt;br /&gt;
&lt;br /&gt;
* manages system snapshots&lt;br /&gt;
* documentation: https://github.com/ubuntu/zsys&lt;br /&gt;
* documentation: (go to next article via link &amp;quot;newer&amp;quot; at the bottom) https://didrocks.fr/2020/05/21/zfs-focus-on-ubuntu-20.04-lts-whats-new/&lt;br /&gt;
* ubuntu 20.04 bug, too many snapshots cause /boot to become full and updates fail. https://github.com/ubuntu/zsys/issues/155&lt;br /&gt;
* solution: use custom /etc/zsys.conf, limit number of snapshots to 10, see trinatdaq:/etc/zsys.conf&lt;br /&gt;
* zsys commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-grub # list of all snapshots, errors if some snapshots are broken&lt;br /&gt;
zsysctl state remove lnc0k7 --system # remove snapshot&lt;br /&gt;
xemacs -nw /etc/zsys.conf; zsysctl service reload; zsysctl service gc # cause gc to run with new settings in zsys.conf&lt;br /&gt;
zfs list -r -t snapshot -o name,used,referenced,creation bpool/BOOT # list snapshots&lt;br /&gt;
zsysctl show # show snapshots&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu cloning =&lt;br /&gt;
&lt;br /&gt;
to clone a ubuntu image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /nfsroot/lxcpet&lt;br /&gt;
emacs -nw etc/hostname ### change hostname&lt;br /&gt;
emacs -nw etc/mailname ### change hostname (debian 11)&lt;br /&gt;
emacs -nw etc/defaultdomain ### change the NIS domainname&lt;br /&gt;
emacs -nw etc/yp.conf ### change the NIS server&lt;br /&gt;
cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu boot loader =&lt;br /&gt;
&lt;br /&gt;
== boot from ZFS ==&lt;br /&gt;
&lt;br /&gt;
* use UEFI boot with syslinux, see here: https://daq.triumf.ca/DaqWiki/index.php/SLinstall#Configure_UEFI_boot&lt;br /&gt;
* apt install zfs-initramfs&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* ZFS structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# zfs list&lt;br /&gt;
NAME                                               USED  AVAIL     REFER  MOUNTPOINT&lt;br /&gt;
rpool                                              147G  1.62T       96K  /&lt;br /&gt;
rpool/ROOT                                        17.8G  1.62T       96K  none&lt;br /&gt;
rpool/ROOT/ubuntu_00aaaa                          17.8G  1.62T     6.22G  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy OS image to rpool/ROOT/ubuntu_00aaaa&lt;br /&gt;
* zfs set mountpoint=/ rpool&lt;br /&gt;
* zfs set mountpoint=none rpool/ROOT&lt;br /&gt;
* zfs set mountpoint=/ rpool/ROOT/ubuntu_00aaaa&lt;br /&gt;
* zfs get all | grep mountpoint&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpool                     mountpoint            /                      local&lt;br /&gt;
rpool/ROOT                mountpoint            none                   local&lt;br /&gt;
rpool/ROOT/ubuntu_00aaaa  mountpoint            /                      local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in linux kernel command line (syslinux.cfg), set &amp;quot;root=&amp;quot; to &amp;quot;root=ZFS=rpool/ROOT/ubuntu_00aaaa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== boot from ZFS mirror ==&lt;br /&gt;
&lt;br /&gt;
=== setup the EFI partitions ===&lt;br /&gt;
&lt;br /&gt;
* assuming /dev/sdb is already setup for EFI boot, setup /dev/sda the same way:&lt;br /&gt;
* partition the second boot disk same as first boot disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# gdisk -l /dev/sdb&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI system partition&lt;br /&gt;
   2         1050624      3907029134   1.8 TiB     8300  Linux filesystem&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkfs.msdos /dev/sdX1&lt;br /&gt;
* create mount points&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda1 /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1 &lt;br /&gt;
/dev/sdb1 /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
* df | grep boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# df | grep boot&lt;br /&gt;
/dev/sdb1                    523248    98100     425148  19% /boot/efi-sdb&lt;br /&gt;
/dev/sda1                    523248        4     523244   1% /boot/efi-sda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy boot files to new boot disk&lt;br /&gt;
* cd /boot/efi-sdX; rsync -av . /boot/efi-sdY&lt;br /&gt;
* set BIOS to boot from &amp;quot;UEFI Hard drive&amp;quot;, disable legacy boot (except for booting from USB key in legacy mode)&lt;br /&gt;
* if using UEFI boot syslinux per these instructions, linux kernel update has to be done manually:&lt;br /&gt;
* run ~/git/scripts/etc/update_efi_mirror.perl, follow instructions that it prints.&lt;br /&gt;
&lt;br /&gt;
=== setup zfs partitions ===&lt;br /&gt;
&lt;br /&gt;
use partitions compatible with Ubuntu &amp;quot;install on ZFS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* gdisk &amp;quot;o&amp;quot; to create new GPT partition table&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; +512M ef00 to create EFI partition&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; +2G 8200 to create linux swap partition (not used)&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; +2G BE00 to create ZFS bpool partition&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; xxx BF00 create ZFS rpool partition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gdisk -l /dev/sda&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System Partition&lt;br /&gt;
   2         1050624         5244927   2.0 GiB     8200  &lt;br /&gt;
   3         5244928         9439231   2.0 GiB     BE00  &lt;br /&gt;
   4         9439232       234441614   107.3 GiB   BF00  &lt;br /&gt;
root@midm9a:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup zfs mirror ===&lt;br /&gt;
&lt;br /&gt;
* see here: https://daq.triumf.ca/DaqWiki/index.php/ZFS#Convert_pool_from_single_to_mirror&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# ls -l /dev/disk/by-id/ata*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Feb 19 16:47 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801081-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Feb 19 16:47 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801101-part2 -&amp;gt; ../../sdb2&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                             STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                            ONLINE       0     0     0&lt;br /&gt;
          ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool attach rpool ata-WDC_WDS200T2B0A-00SM50_205007801101-part2 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801081-part2&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
        continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Feb 19 16:54:39 2021&lt;br /&gt;
        12.6G scanned at 3.16G/s, 1.02G issued at 262M/s, 12.6G total&lt;br /&gt;
        1.02G resilvered, 8.09% done, 0 days 00:00:45 to go&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                               STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                              ONLINE       0     0     0&lt;br /&gt;
          mirror-0                                         ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801081-part2  ONLINE       0     0     0  (resilvering)&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 12.7G in 0 days 00:00:40 with 0 errors on Fri Feb 19 16:55:19 2021&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                               STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                              ONLINE       0     0     0&lt;br /&gt;
          mirror-0                                         ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801081-part2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maintenance commands ==&lt;br /&gt;
&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* grub-install /dev/sda&lt;br /&gt;
&lt;br /&gt;
= Convert from single to dual mirrored ZFS SSD =&lt;br /&gt;
&lt;br /&gt;
Assuming Ubuntu LTS 22.04 with &amp;quot;instal on ZFS&amp;quot; option, we will&lt;br /&gt;
add a second SSD, configure ZFS to use both SSDs in mirrored&lt;br /&gt;
configuration and setup grub to boot from either SSD. This&lt;br /&gt;
is intended to create a full redundant system where failure&lt;br /&gt;
of either SSD does not break the system.&lt;br /&gt;
&lt;br /&gt;
* identify first SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* connect second SSD of identical size&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER   Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
    /dev/sdb  WD Blue SA510 2.5 250GB         22243Z803852              25        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if second SSD is not autodetected, reboot&lt;br /&gt;
* list partition table of first SSD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create identical partitions on second SSD, use sector numbers from above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# gdisk /dev/sdb&lt;br /&gt;
GPT fdisk (gdisk) version 1.0.8&lt;br /&gt;
&lt;br /&gt;
Partition table scan:&lt;br /&gt;
  MBR: not present&lt;br /&gt;
  BSD: not present&lt;br /&gt;
  APM: not present&lt;br /&gt;
  GPT: not present&lt;br /&gt;
&lt;br /&gt;
Creating new GPT entries in memory.&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (1-128, default 1): &lt;br /&gt;
First sector (34-488397134, default = 2048) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (2048-488397134, default = 488397134) or {+-}size{KMGTP}: 1050623&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): ef00&lt;br /&gt;
Changed type of partition to &#039;EFI system partition&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (2-128, default 2): &lt;br /&gt;
First sector (34-488397134, default = 1050624) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (1050624-488397134, default = 488397134) or {+-}size{KMGTP}: 5244927&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): 8200&lt;br /&gt;
Changed type of partition to &#039;Linux swap&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (3-128, default 3): &lt;br /&gt;
First sector (34-488397134, default = 5244928) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (5244928-488397134, default = 488397134) or {+-}size{KMGTP}: 9439231&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): be00&lt;br /&gt;
Changed type of partition to &#039;Solaris boot&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (4-128, default 4): &lt;br /&gt;
First sector (34-488397134, default = 9439232) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (9439232-488397134, default = 488397134) or {+-}size{KMGTP}: &lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): bf00&lt;br /&gt;
Changed type of partition to &#039;Solaris root&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): w&lt;br /&gt;
&lt;br /&gt;
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING&lt;br /&gt;
PARTITIONS!!&lt;br /&gt;
&lt;br /&gt;
Do you want to proceed? (Y/N): y&lt;br /&gt;
OK; writing new GUID partition table (GPT) to /dev/sdb.&lt;br /&gt;
The operation has completed successfully.&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda /dev/sdb&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: EB251739-30C6-422F-A505-5887B5A0B603&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sdb1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sdb2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sdb3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sdb4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* identify second SSD partitions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3 -&amp;gt; ../../sdb3&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert bpool from single disk to mirrored disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  99e03dc0-7d4d-f24b-8fa1-f042b9f135db  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                   ONLINE       0     0     0&lt;br /&gt;
	  f6fd54f8-3af7-b943-ae3d-a4e480537fb9  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# zpool attach bpool 99e03dc0-7d4d-f24b-8fa1-f042b9f135db /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3&lt;br /&gt;
root@midm9b:~# zpool status bpool&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert rpool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
root@midm9b:~# zpool attach rpool f6fd54f8-3af7-b943-ae3d-a4e480537fb9 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4&lt;br /&gt;
root@midm9b:~# zpool status rpool&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Jan 20 19:40:45 2023&lt;br /&gt;
	5.83G scanned at 664M/s, 2.92M issued at 332K/s, 9.11G total&lt;br /&gt;
	0B resilvered, 0.03% done, no estimated completion time&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for resilver to complete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 9.65G in 00:00:36 with 0 errors on Fri Jan 20 19:41:21 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable booting from second SSD: (instead of /dev/sda1, /dev/sdb1, use UUID=xxx)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# mkfs.msdos /dev/sdb1&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sda&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sdb&lt;br /&gt;
root@midm9b:~# echo &amp;quot;/dev/sda1 /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
root@midm9b:~# echo &amp;quot;/dev/sdb1 /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
root@midm9b:~# mount -a&lt;br /&gt;
root@midm9b:~# df -kl&lt;br /&gt;
Filesystem                                       1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
...&lt;br /&gt;
/dev/sda1                                           523244   13720    509524   3% /boot/efi&lt;br /&gt;
/dev/sdb1                                           523244       4    523240   1% /boot/efi-sdb&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# rsync -av /boot/efi/ /boot/efi-sdb/&lt;br /&gt;
sending incremental file list&lt;br /&gt;
EFI/&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sda&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sdb&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup script to update grub on second SSD, it must be run manually after every kernel update&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ln -s ~/git/scripts/etc/update_efi_grub.perl ~/&lt;br /&gt;
root@midm9b:~# ~/update_efi_grub.perl -u&lt;br /&gt;
EFI dir: /boot/efi-sda&lt;br /&gt;
/boot/efi-sda: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sda/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sda: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sda/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
EFI dir: /boot/efi-sdb&lt;br /&gt;
/boot/efi-sdb: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sdb/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sdb: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sdb/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable NetworkManager =&lt;br /&gt;
&lt;br /&gt;
NetworkManager is useful for configuring dynamic&lt;br /&gt;
network interfaces, i.e. laptops that often move&lt;br /&gt;
between networks, or connect to multiple choice&lt;br /&gt;
of wifi networks, etc.&lt;br /&gt;
&lt;br /&gt;
For machines with statically configured network interfaces,&lt;br /&gt;
NetworkManager is not necessary.&lt;br /&gt;
&lt;br /&gt;
As it has been observed to become confused and observed&lt;br /&gt;
to malfunction when network links go up and down (it keeps&lt;br /&gt;
unnecessarily reconfiguring the ip address, etc), it can&lt;br /&gt;
be usefuil to disable it.&lt;br /&gt;
&lt;br /&gt;
* list all network interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /bin/ls -1 /sys/class/net/&lt;br /&gt;
enp0s31f6&lt;br /&gt;
lo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/network/interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename enp0s31f6=eth0&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
   address 142.90.120.94/19&lt;br /&gt;
   gateway 142.90.100.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* statically configure systemd-resolved&lt;br /&gt;
** create /etc/systemd/resolved.conf.d/resolved.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=142.90.100.19&lt;br /&gt;
Domains=triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** systemctl restart systemd-resolved&lt;br /&gt;
** resolvectl&lt;br /&gt;
** systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
* disable NetworkManager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Configure ECC memory =&lt;br /&gt;
&lt;br /&gt;
== Configure EDAC ==&lt;br /&gt;
&lt;br /&gt;
* apt install edac-utils&lt;br /&gt;
&lt;br /&gt;
=== Intel i3-2120 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@musr00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X9SCL/X9SCM&lt;br /&gt;
root@musr00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E-2236 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SCM-F&lt;br /&gt;
root@daq00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq00:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq00:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check edac sysfs files (Intel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:10 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank7&lt;br /&gt;
--w------- 1 root root 4096 Jan 25 15:10 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 25 15:10 uevent&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1270 v6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@grsnis01:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@grsnis01:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@grsnis01:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Feb 19 12:35 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank7&lt;br /&gt;
--w------- 1 root root 4096 Feb 19 12:35 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 19 12:35 uevent&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1245 v6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
[root@alphagdaq ~]# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
[root@alphagdaq ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------------------------------+&lt;br /&gt;
          |                      mc0                      |&lt;br /&gt;
          |  csrow0   |  csrow1   |  csrow2   |  csrow3   |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#3channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#3channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --summary&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: mc_event at /usr/sbin/ras-mc-ctl line 1129.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1130.&lt;br /&gt;
[root@alphagdaq ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3700X ===&lt;br /&gt;
&lt;br /&gt;
(memory is non-ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
root@daq13:~# edac-util &lt;br /&gt;
edac-util: Error: No memory controller data found.&lt;br /&gt;
root@daq13:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers loaded. No memory controllers found&lt;br /&gt;
root@daq13:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:26 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Jan 21 16:16 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 21 16:16 uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(memory is ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@trinatdaq:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@trinatdaq:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@trinatdaq:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Dec 15 13:04 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Dec 13 18:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 13 18:31 uevent&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank7&lt;br /&gt;
--w------- 1 root root 4096 Dec 15 13:04 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 uevent&lt;br /&gt;
root@trinatdaq:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 5000G ===&lt;br /&gt;
&lt;br /&gt;
* no linux driver for AMD 5000-series &amp;quot;G&amp;quot; CPU&lt;br /&gt;
* no mention of ECC in the BIOS settings&lt;br /&gt;
* unclear status of ECC support in AMD documentation (sais only &amp;quot;pro&amp;quot; &amp;quot;G&amp;quot; CPUs have ECC)&lt;br /&gt;
* unclear status of ECC support in ASUS documentation (web page out of date)&lt;br /&gt;
&lt;br /&gt;
=== AMD 5600X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-XE GAMING WIFI&lt;br /&gt;
root@daq17:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq17:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq17:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Aug 19 19:27 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 May 10 10:11 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 10 10:11 uevent&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank7&lt;br /&gt;
--w------- 1 root root 4096 Aug 19 19:27 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 uevent&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3955WX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 19 root root    0 Dez 12 04:48 mc0&lt;br /&gt;
drwxr-xr-x  2 root root    0 Dez 12 04:48 power&lt;br /&gt;
lrwxrwxrwx  1 root root    0 Dez  9 05:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r--  1 root root 4096 Dez  9 05:31 uevent&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# &lt;br /&gt;
root@alphasuperdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dez 12 04:48 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank10&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank11&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank12&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank13&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank14&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank15&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank7&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank8&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank9&lt;br /&gt;
--w------- 1 root root 4096 Feb 28 22:19 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 uevent&lt;br /&gt;
root@alphasuperdaq:~# &lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 868.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 869.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 872.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                                                                              mc0                                                                                              |&lt;br /&gt;
    |                                            csrow0                                             |                                            csrow1                                             |&lt;br /&gt;
    | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#0channel#2	0	0&lt;br /&gt;
mc#0csrow#1channel#7	0	0&lt;br /&gt;
mc#0csrow#0channel#3	0	0&lt;br /&gt;
mc#0csrow#1channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#2	0	0&lt;br /&gt;
mc#0csrow#0channel#7	0	0&lt;br /&gt;
mc#0csrow#1channel#3	0	0&lt;br /&gt;
mc#0csrow#0channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#6	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#6	0	0&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: ASUSTeK COMPUTER INC. model Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@alphasuperdaq:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure rasdaemon ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable rasdaemon&lt;br /&gt;
systemctl restart rasdaemon&lt;br /&gt;
systemctl status rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Mon 2021-01-25 15:16:37 PST; 3min 5s ago&lt;br /&gt;
   Main PID: 2477175 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 76958)&lt;br /&gt;
     Memory: 17.1M&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─2477175 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Listening to events for cpus 0 to 11&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mc_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording aer_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording extlog_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mce_record events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording arm_event events&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get reports ==&lt;br /&gt;
&lt;br /&gt;
* Intel 2x32GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-------------------------+&lt;br /&gt;
          |           mc0           |&lt;br /&gt;
          |   csrow0   |   csrow1   |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
channel1: |  16384 MB  |  16384 MB  |&lt;br /&gt;
channel0: |  16384 MB  |  16384 MB  |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Intel 4x16GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
mc#0csrow#2channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#2channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#3channel#0    0       0&lt;br /&gt;
mc#0csrow#3channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------+&lt;br /&gt;
          |          mc0          |&lt;br /&gt;
          |  csrow0   |  csrow1   |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: ubuntu LTS 22.04 DBD::SQLite::db error is not there.&lt;br /&gt;
&lt;br /&gt;
= sensors =&lt;br /&gt;
&lt;br /&gt;
== ASUS P9X79 WS ==&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/supportonly/P9X79%20WS/HelpDesk_Manual/&lt;br /&gt;
* BIOS version 4802&lt;br /&gt;
* modprobe nct6775&lt;br /&gt;
* modprobe coretemp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq14:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +29.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +24.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0200&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +39.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6776-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:           1.04 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:            3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:           3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:             2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:           904.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
3VSB:            3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:            3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:          1265 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:          1909 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:             0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:         +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:         +58.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermal diode&lt;br /&gt;
AUXTIN:         +31.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
PECI Agent 0:   +31.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                         (crit = +96.0°C)&lt;br /&gt;
PCH_CHIP_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:    +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:    +0.0°C  &lt;br /&gt;
intrusion0:    ALARM&lt;br /&gt;
intrusion1:    ALARM&lt;br /&gt;
beep_enable:   disabled&lt;br /&gt;
&lt;br /&gt;
root@daq14:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable CPU turbo mode =&lt;br /&gt;
&lt;br /&gt;
* Intel CPU has a nominal CPU frequency (i.e. 3.4GHz) and a turbo-boost CPU frequency (i.e. 4.0GHz). Here we will enable this turbo-boost mode.&lt;br /&gt;
* Find out CPU capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# lscpu | grep Hz&lt;br /&gt;
Model name:                      Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz&lt;br /&gt;
CPU MHz:                         3965.803&lt;br /&gt;
CPU max MHz:                     4000.0000&lt;br /&gt;
CPU min MHz:                     800.0000&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Look up this CPU in the Intel ARK database - google for the CPU model name, i.e.&lt;br /&gt;
https://ark.intel.com/content/www/us/en/ark/products/88196/intel-core-i7-6700-processor-8m-cache-up-to-4-00-ghz.html&lt;br /&gt;
* Find current frequency settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;powersave&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 2.72 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note the following:&lt;br /&gt;
** current governor is &amp;quot;powersave&amp;quot;&lt;br /&gt;
** &amp;quot;performance&amp;quot; governor is available&lt;br /&gt;
** &amp;quot;boost state support&amp;quot; is supported and active.&lt;br /&gt;
* Confirm CPU frequency governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Change governor to &amp;quot;performance&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-set --governor performance&lt;br /&gt;
Setting cpu: 0&lt;br /&gt;
Setting cpu: 1&lt;br /&gt;
Setting cpu: 2&lt;br /&gt;
Setting cpu: 3&lt;br /&gt;
Setting cpu: 4&lt;br /&gt;
Setting cpu: 5&lt;br /&gt;
Setting cpu: 6&lt;br /&gt;
Setting cpu: 7&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;performance&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 3.93 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* monitor CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower monitor&lt;br /&gt;
    | Nehalem                   || Mperf              || Idle_Stats                                     &lt;br /&gt;
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6   | C7s  | C8    &lt;br /&gt;
   0|  0.00|  0.00|  0.00|  0.00|| 88.80| 11.20|  3973||  0.00|  0.00|  0.01|  0.02|  0.31|  0.00|  4.25&lt;br /&gt;
   4|  0.00|  0.00|  0.00|  0.00||  4.70| 95.30|  3945||  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 95.03&lt;br /&gt;
   1|  0.73|  3.70|  0.00|  0.00||  4.52| 95.48|  3864||  0.00|  0.01|  1.19|  0.44|  2.82|  0.00| 90.23&lt;br /&gt;
   5|  0.73|  3.70|  0.00|  0.00||  0.37| 99.63|  3807||  0.00|  0.00|  0.03|  0.09|  1.70|  0.00| 97.64&lt;br /&gt;
   2|  2.28| 12.86|  0.00|  0.00||  1.41| 98.59|  3829||  0.00|  0.86|  3.17|  0.46|  7.70|  0.00| 85.87&lt;br /&gt;
   6|  2.28| 12.86|  0.00|  0.00||  2.88| 97.12|  3856||  0.00|  0.11|  4.56|  2.15| 10.31|  0.00| 78.99&lt;br /&gt;
   3|  1.33|  4.81|  0.00|  0.00||  0.99| 99.01|  3804||  0.00|  0.49|  0.79|  0.01|  1.03|  0.00| 96.12&lt;br /&gt;
   7|  1.34|  4.81|  0.00|  0.00||  1.26| 98.74|  3818||  0.00|  0.01|  2.32|  0.47|  5.02|  0.00| 90.06&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that the CPU is not overheating:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +38.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +34.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* congratulations, we are running at 4 GHz now!&lt;br /&gt;
&lt;br /&gt;
= Setup ubuntu as gateway to private network =&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* https://daq.triumf.ca/DaqWiki/index.php/VME-CPU#Setup_the_boot_host_computer_.28el7.29&lt;br /&gt;
* http://www.triumf.info/wiki/DAQwiki/index.php/Dhcpd_on_eth1&lt;br /&gt;
&lt;br /&gt;
== Steps to do ==&lt;br /&gt;
&lt;br /&gt;
* assign network numbers to the private network, i.e. 192.168.1.x, 192.168.2.x, etc&lt;br /&gt;
* (on the gateway machine, each private network interface has to have a different network number)&lt;br /&gt;
* (each network interface can have multiple networks attached, via VLANs or via eth0:0, eth0:1 constructs)&lt;br /&gt;
* assign IP addresses on the private network, save them in /etc/hosts i.e. &amp;quot;hvps 192.168.1.10&amp;quot;&lt;br /&gt;
* (for simplicity, assign 192.168.1.1 to the gateway machine itself)&lt;br /&gt;
* (IP addresses 192.168.1.0 and 192.168.1.255 are &amp;quot;special&amp;quot;, do not use them)&lt;br /&gt;
* setup DNS server (dnsmasq) to serve contents of /etc/hosts via DNS (otherwise, many programs will see inconsistent name to IP address mapping)&lt;br /&gt;
* setup DHCP server (ISC dhcpd or dnsmasq) to give out the IP addresses&lt;br /&gt;
* setup tftp, pxelinux and NFS for diskless booting&lt;br /&gt;
* setup time server (chronyd) to provide common time to all devices&lt;br /&gt;
* setup NAT so machines on private network can access the internet (to get OS updates, etc)&lt;br /&gt;
* setup NIS and NFS so machines on the private network can use common home directories&lt;br /&gt;
* setup rsync backup of machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup hosts ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.101 dsfe01&lt;br /&gt;
... and so forth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup dns and dhcp ==&lt;br /&gt;
&lt;br /&gt;
* apt install dnsmasq&lt;br /&gt;
* edit /etc/dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/dnsmasq.conf&lt;br /&gt;
# DNS settings&lt;br /&gt;
#port=0 # disable DNS function&lt;br /&gt;
port=53 # enable DNS function&lt;br /&gt;
domain-needed&lt;br /&gt;
bogus-priv&lt;br /&gt;
no-resolv&lt;br /&gt;
server=142.90.100.19&lt;br /&gt;
# DHCP settings&lt;br /&gt;
interface=enp1s0f0 # DHCP interface&lt;br /&gt;
#dhcp-range=192.168.1.50,192.168.1.150,infinite&lt;br /&gt;
dhcp-range=192.168.1.0,static&lt;br /&gt;
#log-dhcp&lt;br /&gt;
quiet-dhcp&lt;br /&gt;
#dhcp-ignore=tag:!known&lt;br /&gt;
dhcp-boot=pxelinux.0&lt;br /&gt;
#dhcp-host=ac:1f:6b:9e:7f:4a,192.168.1.100,10m&lt;br /&gt;
dhcp-host=ac:1f:6b:9e:7f:4a,dsfe01,infinite&lt;br /&gt;
# TFTP settings&lt;br /&gt;
enable-tftp&lt;br /&gt;
tftp-root=/tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* #mkdir /zssd/tftpboot ### per tftp-root (if no ZFS)&lt;br /&gt;
* zfs create -o mountpoint=/tftpboot rpool/tftpboot ### (if root is ZFS)&lt;br /&gt;
* systemctl stop systemd-resolved.service&lt;br /&gt;
* systemctl disable systemd-resolved.service&lt;br /&gt;
* rm /etc/resolv.conf&lt;br /&gt;
* create new /etc/resolv.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 127.0.0.1&lt;br /&gt;
search snolab.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* systemctl enable dnsmasq&lt;br /&gt;
* systemctl restart dnsmasq&lt;br /&gt;
&lt;br /&gt;
== setup chronyd ==&lt;br /&gt;
&lt;br /&gt;
* enable ntp server:&lt;br /&gt;
* configure and enable chronyd per instructions above&lt;br /&gt;
* echo &amp;quot;allow 192.168.1.0/24&amp;quot; &amp;gt; /etc/chrony/conf.d/allow-localhost.conf&lt;br /&gt;
* systemctl restart chronyd&lt;br /&gt;
* chronyc tracking ### wait until time is synchronized (a few seconds)&lt;br /&gt;
&lt;br /&gt;
== setup diskless network booting ==&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2&lt;br /&gt;
tar xjvf syslinux-4.03.tar.bz2&lt;br /&gt;
cd syslinux-4.03&lt;br /&gt;
cp -pv ./core/pxelinux.0 ./com32/hdt/hdt.c32 ./memdisk/memdisk ./com32/menu/menu.c32 /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.iso.zip&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.iso.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.alias&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.pcimap&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/pci.ids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir pxelinux.cfg&lt;br /&gt;
* emacs -nw pxelinux.cfg/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSVSLICE PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label hdt&lt;br /&gt;
  kernel hdt.c32&lt;br /&gt;
&lt;br /&gt;
label memtest86+-5.01 &lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-5.01.iso.gz &lt;br /&gt;
&lt;br /&gt;
label memtest86+-4.20&lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-4.20.iso.zip&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-5.3.0-26-generic&lt;br /&gt;
  menu default&lt;br /&gt;
  kernel vmlinuz-5.3.0-26-generic&lt;br /&gt;
  append initrd=initrd.img-5.3.0-26-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.1.1:/zssd/nfsroot/dsfe01 toram ip=dhcp panic=60 BOOTIF=enp1s0f0&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup linux kernel ===&lt;br /&gt;
&lt;br /&gt;
* copy the kernel files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
rsync -av config* initrd* System.map* vmlinuz* /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
* chmod a+r *&lt;br /&gt;
&lt;br /&gt;
=== setup nfs ===&lt;br /&gt;
&lt;br /&gt;
* apt-get install nfs-kernel-server&lt;br /&gt;
* emacs -nw /etc/exports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/nfsroot/dsfe01 dsfe01(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable services&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl enable nfs-mountd&lt;br /&gt;
systemctl enable nfs-idmapd&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
systemctl restart nfs-mountd&lt;br /&gt;
systemctl restart nfs-idmapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* after editing /etc/exports, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exportfs -av&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup userland ===&lt;br /&gt;
&lt;br /&gt;
* zfs create zssd/nfsroot&lt;br /&gt;
* zfs set dedup=verify zssd/nfsroot ### enable deduplication to save disk space because most linux images have mostly identical files&lt;br /&gt;
* clone ubuntu&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /zssd/nfsroot/dsfe01&lt;br /&gt;
cd /&lt;br /&gt;
rsync -avx . /zssd/nfsroot/dsfe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit config files:&lt;br /&gt;
* cd /zssd/nfsroot/dsfe01&lt;br /&gt;
* emacs -nw etc/hostname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/mailname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/yp.conf ### change daq00.triumf.ca to musr00.triumf.ca&lt;br /&gt;
* emacs -nw etc/defaultdomain ### change to MUSR-NIS&lt;br /&gt;
* cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
* emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
* emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
* emacs -nw etc/fstab ### add this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/nfsroot/dsfe01 / nfs defaults,nolock 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw etc/chrony/chrony.conf&lt;br /&gt;
** comment-out all &amp;quot;pool&amp;quot; and &amp;quot;server&amp;quot; entries&lt;br /&gt;
** add entry &amp;quot;server 192.168.1.1 iburst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After dsfe01 is booted:&lt;br /&gt;
&lt;br /&gt;
* disable services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable apache2&lt;br /&gt;
systemctl disable dnsmasq&lt;br /&gt;
systemctl disable zfs-import-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup additional machines, clone dsfe01 instead of cloning the gateway machine&lt;br /&gt;
&lt;br /&gt;
=== Allow manpages to be viewed ===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted over NFS, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will report a permission error. Fix it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/&lt;br /&gt;
apparmor_parser -R /etc/apparmor.d/usr.bin.man&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup shared home directory ==&lt;br /&gt;
&lt;br /&gt;
=== on the gateway machine ===&lt;br /&gt;
* define netgroups&lt;br /&gt;
* emacs -nw /etc/netgroup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dsfe (dsfe01,,) (dsfe02,,)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/nsswitch.conf ### edit the netgroup line to read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netgroup: files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* export the home directories:&lt;br /&gt;
* emacs -nw /etc/exports ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/home1 @dsfe(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* exportfs -rc&lt;br /&gt;
&lt;br /&gt;
=== on the frontend machine ===&lt;br /&gt;
&lt;br /&gt;
* mkdir /home&lt;br /&gt;
* emacs -nw /etc/fstab ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/home1 /home nfs defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
&lt;br /&gt;
== setup NAT ==&lt;br /&gt;
&lt;br /&gt;
NAT allows machines on the private network to connect to the internet: https://en.wikipedia.org/wiki/Network_address_translation&lt;br /&gt;
&lt;br /&gt;
In these examples:&lt;br /&gt;
* replace &amp;quot;eno1&amp;quot; with name of the outgoing interface (the one connected to the TRIUMF network).&lt;br /&gt;
* replace &amp;quot;enp11s0&amp;quot; with name of the private network interface (192.168.1.x network)&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/rc.local ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
# uncomment following lines if machine has prohibitive FORWARD rules:&lt;br /&gt;
#/sbin/iptables -I FORWARD -i eno1 -o enp11s0 -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
#/sbin/iptables -I FORWARD -i enp11s0 -o eno1 -j ACCEPT&lt;br /&gt;
#iptables -L -v&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
#sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
sh /etc/firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/firewall-rfc1918.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# prevent RFC1918 private network IP addresses from&lt;br /&gt;
# going in and out from our uplink.&lt;br /&gt;
&lt;br /&gt;
ETH=eno1&lt;br /&gt;
&lt;br /&gt;
iptables -F in-rfc1918&lt;br /&gt;
iptables -N in-rfc1918&lt;br /&gt;
iptables -A in-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -I INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -F out-rfc1918&lt;br /&gt;
iptables -N out-rfc1918&lt;br /&gt;
iptables -A out-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -I OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= KVM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install cpu-checker&lt;br /&gt;
&lt;br /&gt;
root@daq13:~# kvm-ok &lt;br /&gt;
INFO: /dev/kvm exists&lt;br /&gt;
KVM acceleration can be used&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&lt;br /&gt;
(if not, shutdown, go into BIOS settings, enable CPU virtualization)&lt;br /&gt;
&lt;br /&gt;
apt install virtinst ### will install many packages&lt;br /&gt;
apt install libvirt-clients libvirt-daemon-system-systemd libvirt-daemon qemu qemu-kvm libvirt-daemon-system virtinst bridge-utils&lt;br /&gt;
&lt;br /&gt;
root@daq13:/home1/wheel# virsh list --all&lt;br /&gt;
 Id   Name           State&lt;br /&gt;
------------------------------&lt;br /&gt;
 1    ubuntu-guest   running&lt;br /&gt;
&lt;br /&gt;
apt install virt-manager&lt;br /&gt;
&lt;br /&gt;
virt-install --name ubuntu-guest --os-variant ubuntu20.04 --vcpus 2 --ram 2048 --location /daq/daqstore/olchansk/linux/Ubuntu/ubuntu-20.04.3-desktop-amd64.iso --network bridge=virbr0,model=virtio --graphics none --extra-args=&#039;console=ttyS0,115200n8 serial&#039;&lt;br /&gt;
&lt;br /&gt;
virtual machine will start, boot, etc&lt;br /&gt;
to get out of it, CTRL + Shift followed by ]&lt;br /&gt;
&lt;br /&gt;
ssh wheel@daq13&lt;br /&gt;
virt-manager&lt;br /&gt;
&lt;br /&gt;
run virt-install again, omit &amp;quot;--graphics none&amp;quot;, open graphics console from virt-manager, it booted into ubuntu installer desktop&lt;br /&gt;
&lt;br /&gt;
virt-install --name test10 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --filesystem /kvm_ladd00,/ --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial&amp;quot; --graphics none&lt;br /&gt;
&lt;br /&gt;
virt-install --name test14 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --disk /tmp/xxx/ladd00.img,bus=sata --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
build image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/tmp/xxx/ladd00.img bs=1024M count=20&lt;br /&gt;
mkfs.ext3 /tmp/xxx/ladd00.img ### ext4 fails to mount by SL6 kernel, &amp;quot;unknown ext4 options&amp;quot;&lt;br /&gt;
cd /kvm_ladd00/&lt;br /&gt;
mount -o loop /tmp/xxx/ladd00.img /mnt/tmp&lt;br /&gt;
rsync -av . /mnt/tmp/ --delete&lt;br /&gt;
umount /mnt/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the guest, configure network: /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script will be executed *after* all the other init scripts.&lt;br /&gt;
# You can put your own initialization stuff in here if you don&#039;t&lt;br /&gt;
# want to do the full Sys V style init stuff.&lt;br /&gt;
&lt;br /&gt;
touch /var/lock/subsys/local&lt;br /&gt;
&lt;br /&gt;
ifconfig eth2 192.168.122.2&lt;br /&gt;
route add -net 0.0.0.0 gw 192.168.122.1&lt;br /&gt;
ifconfig -a&lt;br /&gt;
netstat -rn&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ARM cross-compiler =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libgcc-9-dev-arm64-cross&lt;br /&gt;
apt install gcc-arm-linux-gnueabi&lt;br /&gt;
apt install gcc-arm-linux-gnueabihf&lt;br /&gt;
apt install g++-arm-linux-gnueabihf&lt;br /&gt;
apt install g++-arm-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arm-linux-gnueabi-gcc -o ttcp1 ttcp.c -march=armv7 -static&lt;br /&gt;
arm-linux-gnueabi-gcc -o memcpy.armv7 memcpy.cc -march=armv7 -static -O2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=7107</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=7107"/>
		<updated>2023-04-05T20:05:15Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* enable NIS (ubuntu 22.04, debian 11) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Ubuntu =&lt;br /&gt;
&lt;br /&gt;
AAA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ubuntu version =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsb_release -a&lt;br /&gt;
uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu installer =&lt;br /&gt;
&lt;br /&gt;
* updated for Ububtu LTS 20.04.01, 22.04.1&lt;br /&gt;
&lt;br /&gt;
* download the latest Ubuntu LTS desktop installer iso image&lt;br /&gt;
* dd the image to a USB key&lt;br /&gt;
* power down, disconnect all disks (all HDDs, all SSDs, all M.2)&lt;br /&gt;
* connect the SSD to be used as system disk&lt;br /&gt;
* if system will use mirrored SSDs (using ZFS mirror), leave second SSD disconnected, we will activate it later&lt;br /&gt;
* power up&lt;br /&gt;
* boot from USB key in legacy mode or UEFI mode (select this in the BIOS boot menu - F8 for ASUS, F11 for Supermicro)&lt;br /&gt;
* follow the instruction:&lt;br /&gt;
* &amp;quot;try ubuntu or install ubuntu&amp;quot; - choose &amp;quot;install&amp;quot;&lt;br /&gt;
* select language - accept default&lt;br /&gt;
* &amp;quot;updates and other software&amp;quot; - accept default settings (&amp;quot;normal install&amp;quot;)&lt;br /&gt;
* &amp;quot;installation type&amp;quot; - select &amp;quot;advanced features&amp;quot; and &amp;quot;experimental: use ZFS&amp;quot;&lt;br /&gt;
* accept partition choice&lt;br /&gt;
* &amp;quot;where are you?&amp;quot; - select &amp;quot;Vancouver&amp;quot; (PST time zone)&lt;br /&gt;
* &amp;quot;who are you?&amp;quot; - leave all fields blank, except &amp;quot;username&amp;quot; set to &amp;quot;wheel&amp;quot;, &amp;quot;password&amp;quot; set to the root password. hostname will be set later after configuring the network&lt;br /&gt;
* installation runs in a few minutes, when finished, reboot&lt;br /&gt;
* login as user wheel&lt;br /&gt;
* answer annouying questions:&lt;br /&gt;
* &amp;quot;livepatch&amp;quot; - say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;help improve&amp;quot; - select &amp;quot;do not send&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;privacy&amp;quot; - leave &amp;quot;location&amp;quot; as &amp;quot;off&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;ready to go&amp;quot;, say &amp;quot;done&amp;quot;&lt;br /&gt;
* right-click on the desktop, say &amp;quot;open in terminal&amp;quot;, a shell will open&lt;br /&gt;
* say &amp;quot;sudo /bin/bash&amp;quot;, enter the root password, you now have the root shell&lt;br /&gt;
* run nm-connection-editor to configure the network. use netmask 255.255.224.0, gateway 142.90.100.18, DNS 142.90.100.19, search path &amp;quot;triumf.ca&amp;quot;&lt;br /&gt;
* after network is up (can ping ladd00), continue with post-installation steps below&lt;br /&gt;
&lt;br /&gt;
= Install instructions =&lt;br /&gt;
&lt;br /&gt;
== prepare ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ssh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure hostname ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap ==&lt;br /&gt;
&lt;br /&gt;
ubuntu installer creates a 2 GB swap partition, not useful&lt;br /&gt;
on 32-64 GB machine, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fstab ### comment out the &amp;quot;swap&amp;quot; line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maybe reboot ==&lt;br /&gt;
&lt;br /&gt;
this is a good point to reboot the machine to boot&lt;br /&gt;
the latest kernel and to set the correct hostname&lt;br /&gt;
&lt;br /&gt;
== install etckeeper ==&lt;br /&gt;
&lt;br /&gt;
keep contents of /etc in a git repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install etckeeper&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== set timezone ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
timedatectl list-timezones | grep -i vancouver&lt;br /&gt;
timedatectl set-timezone America/Vancouver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install time synchronization ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install chrony&lt;br /&gt;
echo server time1.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
echo server time2.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
echo server time3.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
systemctl disable systemd-timesyncd.service&lt;br /&gt;
systemctl stop systemd-timesyncd.service&lt;br /&gt;
systemctl disable ntp&lt;br /&gt;
systemctl stop ntp&lt;br /&gt;
systemctl enable chrony&lt;br /&gt;
systemctl restart chrony&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reenable systemd-timesyncd ==&lt;br /&gt;
&lt;br /&gt;
ONLY IF CHRONY DOES NOT WORK&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove chrony&lt;br /&gt;
systemctl enable systemd-timesyncd.service&lt;br /&gt;
systemctl restart systemd-timesyncd.service&lt;br /&gt;
systemctl status systemd-timesyncd.service&lt;br /&gt;
timedatectl status&lt;br /&gt;
timedatectl timesync-status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
this is different from ubuntu 20. it uses /etc/mailname and it hardwires the hostname into main.cf.&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email ==&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use smtp.triumf.ca&lt;br /&gt;
* CERN: use cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install postfix ### select &amp;quot;satellite system&amp;quot;, enter full hostname &amp;quot;xxx.triumf.ca&amp;quot;, enter &amp;quot;smtp.triumf.ca&amp;quot;&lt;br /&gt;
apt install mailutils&lt;br /&gt;
dpkg-reconfigure postfix ### (if postfix already installed)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo olchansk@triumf.ca lindner@triumf.ca bsmith@triumf.ca &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
mailx root&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable ping for all users (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
Without this tweak, Debian will report &amp;quot;operation not permitted&amp;quot; if a user tries to ping somewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &#039;net.ipv4.ping_group_range = 0 1000&#039; &amp;gt; /etc/sysctl.d/99-ping.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install missing packages ==&lt;br /&gt;
&lt;br /&gt;
(apt eats terminal input, even the &amp;quot;yes |&amp;quot; trick does not quite work,&lt;br /&gt;
repeat the following commands until they report that everything&lt;br /&gt;
is installed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install ssh tcsh ethtool ncat rsync strace net-tools sysstat smartmontools lm-sensors traceroute time minicom screen git lsof debsums tmux&lt;br /&gt;
yes | apt -y install lsb-release&lt;br /&gt;
yes | apt -y install flex bison&lt;br /&gt;
yes | apt -y install neofetch&lt;br /&gt;
yes | apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
yes | apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
yes | apt -y install python&lt;br /&gt;
yes | apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
yes | apt -y install mariadb-client ### mysql client&lt;br /&gt;
yes | apt -y install libz-dev sqlite3 libsqlite3-dev unixodbc-dev&lt;br /&gt;
yes | apt -y install libssl-dev&lt;br /&gt;
yes | apt -y install emacs xemacs21 joe&lt;br /&gt;
yes | apt -y install gnuplot dos2unix&lt;br /&gt;
yes | apt -y install mutt bsd-mailx # email clients&lt;br /&gt;
yes | apt -y install liblz4-tool pbzip2&lt;br /&gt;
yes | apt -y install libc6-dev-i386 # otherwise no /usr/include/sys/types.h&lt;br /&gt;
yes | apt -y install libreadline-dev&lt;br /&gt;
yes | apt -y install chromium-browser chromium-codecs-ffmpeg-extra&lt;br /&gt;
yes | apt -y install ubuntu-mate-themes&lt;br /&gt;
yes | apt -y install libmotif-dev libxmu-dev&lt;br /&gt;
yes | apt -y install libusb-dev libusb-1.0-0-dev&lt;br /&gt;
yes | apt -y install xfig gsfonts-x11 gsfonts-other # install fonts for xfig&lt;br /&gt;
yes | apt -y install libjson-perl&lt;br /&gt;
yes | apt -y install libgsl-dev # additional GNU Scientific Library&lt;br /&gt;
yes | apt -y install qt5-default # Qt development&lt;br /&gt;
yes | apt -y install python3.8-full python3.8-dev python3.8-dbg python3-pip ### for pyROOT&lt;br /&gt;
yes | apt -y install imagemagick imagemagick-common ckeditor # for elog&lt;br /&gt;
yes | apt -y install libjpeg-dev libjpeg-progs libjpeg-tools&lt;br /&gt;
yes | apt -y install linux-tools-common linux-tools-generic # cpupower frequency-info&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu LTS 20.04:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 # enable linux 5.11 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install git/scripts ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
* on 64 GB RAM machines swap is not useful&lt;br /&gt;
* on machines booted from network (NFS-ROOT), swap does not work&lt;br /&gt;
* on machines running from flash (RPi, etc), flash is too slow for useful swap&lt;br /&gt;
* swap configured by linux installers invariably has wrong size and is not useful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable dphys-swapfile&lt;br /&gt;
systemctl stop dphys-swapfile&lt;br /&gt;
dphys-swapfile uninstall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure DNS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /etc/systemd/resolved.conf.d&lt;br /&gt;
cp etc/resolved-triumf.conf /etc/systemd/resolved.conf.d/&lt;br /&gt;
systemctl restart systemd-resolved&lt;br /&gt;
resolvectl&lt;br /&gt;
#systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ganglia ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install ganglia-monitor&lt;br /&gt;
systemctl enable ganglia-monitor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/gmond-ubuntu.conf /etc/ganglia/gmond.conf&lt;br /&gt;
ln -s ganglia/gmond.conf /etc&lt;br /&gt;
# ln -s arm-linux-gnueabihf/ganglia /usr/lib/ganglia ### fix path for ARM CPU&lt;br /&gt;
# ln -s i386-linux-gnu/ganglia /usr/lib/ganglia ### fix path for 32-bit Intel CPU&lt;br /&gt;
systemctl restart ganglia-monitor&lt;br /&gt;
systemctl status ganglia-monitor&lt;br /&gt;
ps -efw | grep gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/ganglia&lt;br /&gt;
make install&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install gonodeinfo ==&lt;br /&gt;
&lt;br /&gt;
* go to https://bitbucket.org/dd1/gonodeinfo follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: daq00.triumf.ca:8601&lt;br /&gt;
* run &amp;quot;gonodeinfo -v&amp;quot;&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run /opt/gonodeinfo/gonodereceive.exe -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== install libz.so.1 for CentOS compatibility ==&lt;br /&gt;
&lt;br /&gt;
KO - confirm which versions on quartus need this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install zlib1g&lt;br /&gt;
yes | apt-get -y install zlib1g:i386 libc6:i386 libgcc1:i386 gcc-6-base:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
(does not work anymore!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ftp.ca.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus 13.0sp1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0.50.0&lt;br /&gt;
/bin/cp -pv libpng12.so.0 libpng12.so.0.50.0 /lib/x86_64-linux-gnu/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for Xilinx ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install texinfo&lt;br /&gt;
apt install zlib1g:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for building ROOT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install libx11-dev libxpm-dev libxft-dev libxext-dev libpng-dev libjpeg-dev xlibmesa-glu-dev libxml2-dev libgsl-dev cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install 32-bit libraries for PHYSICA ==&lt;br /&gt;
&lt;br /&gt;
these instructions are for running 32-bit physica executable built for SL6 on ubuntu LTS 20.04&lt;br /&gt;
&lt;br /&gt;
install physica sources (cannot build, do not have g77)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages&lt;br /&gt;
git clone https://bitbucket.org/ttriumfdaq/physica.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install 32-bit libraries using ubuntu package manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install lib32z1 # libz.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy 32-bit SL6 shared libraries to /lib32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libX11.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libgd.so.2 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libpng12.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libreadline.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libncurses.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libg2c.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libxcb.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXpm.so.4 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libjpeg.so.62 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfontconfig.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfreetype.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libtinfo.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXau.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libexpat.so.1 /lib32/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ldd should report:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trinatdaq:trinat&amp;gt; ldd /usr/local/physica/physica.exe&lt;br /&gt;
	linux-gate.so.1 (0xf7fa2000)&lt;br /&gt;
	libX11.so.6 =&amp;gt; /lib32/libX11.so.6 (0xf7e43000)&lt;br /&gt;
	libgd.so.2 =&amp;gt; /lib32/libgd.so.2 (0xf7dfe000)&lt;br /&gt;
	libpng12.so.0 =&amp;gt; /lib32/libpng12.so.0 (0xf7dd6000)&lt;br /&gt;
	libz.so.1 =&amp;gt; /lib32/libz.so.1 (0xf7db8000)&lt;br /&gt;
	libreadline.so.6 =&amp;gt; /lib32/libreadline.so.6 (0xf7d7e000)&lt;br /&gt;
	libncurses.so.5 =&amp;gt; /lib32/libncurses.so.5 (0xf7d5b000)&lt;br /&gt;
	libg2c.so.0 =&amp;gt; /lib32/libg2c.so.0 (0xf7d3d000)&lt;br /&gt;
	libm.so.6 =&amp;gt; /lib32/libm.so.6 (0xf7c39000)&lt;br /&gt;
	libgcc_s.so.1 =&amp;gt; /lib32/libgcc_s.so.1 (0xf7c1a000)&lt;br /&gt;
	libc.so.6 =&amp;gt; /lib32/libc.so.6 (0xf7a2f000)&lt;br /&gt;
	libxcb.so.1 =&amp;gt; /lib32/libxcb.so.1 (0xf7a05000)&lt;br /&gt;
	libdl.so.2 =&amp;gt; /lib32/libdl.so.2 (0xf79ff000)&lt;br /&gt;
	libXpm.so.4 =&amp;gt; /lib32/libXpm.so.4 (0xf79ee000)&lt;br /&gt;
	libjpeg.so.62 =&amp;gt; /lib32/libjpeg.so.62 (0xf7997000)&lt;br /&gt;
	libfontconfig.so.1 =&amp;gt; /lib32/libfontconfig.so.1 (0xf7962000)&lt;br /&gt;
	libfreetype.so.6 =&amp;gt; /lib32/libfreetype.so.6 (0xf78c9000)&lt;br /&gt;
	libtinfo.so.5 =&amp;gt; /lib32/libtinfo.so.5 (0xf78b0000)&lt;br /&gt;
	/lib/ld-linux.so.2 (0xf7fa4000)&lt;br /&gt;
	libXau.so.6 =&amp;gt; /lib32/libXau.so.6 (0xf78ad000)&lt;br /&gt;
	libexpat.so.1 =&amp;gt; /lib32/libexpat.so.1 (0xf7885000)&lt;br /&gt;
trinatdaq:trinat&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set login environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv TRIUMF_FONTS $HOME/packages/physica/fonts&lt;br /&gt;
setenv PHYSICA_DIR $HOME/packages/physica&lt;br /&gt;
alias physica $PHYSICA_DIR/physica-SL6-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages/physica&lt;br /&gt;
physica&lt;br /&gt;
@rangauss.pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install lightdm ==&lt;br /&gt;
&lt;br /&gt;
unlike the default gdm login manager, lightdm shows the machine hostname and does not require an extra mouse click to swicth from screen saver to login mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install lightdm&lt;br /&gt;
# select lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install desktop environments ==&lt;br /&gt;
&lt;br /&gt;
note: default display manager and default desktop are deficient, please do not skip this step.&lt;br /&gt;
&lt;br /&gt;
note: if apt asks to choose the display manager, select &amp;quot;lightdm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: KO - I recommend the &amp;quot;MATE&amp;quot; desktop.&lt;br /&gt;
&lt;br /&gt;
note: you will have to cut-and-paste this several times because &amp;quot;apt&amp;quot; eats commands, even with &amp;quot;-y&amp;quot; and even piped from &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# install MATE desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install ubuntu-mate-core ubuntu-mate-desktop ubuntu-mate-themes&lt;br /&gt;
# install Cinnamon desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install cinnamon&lt;br /&gt;
# install KDE desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install kubuntu-desktop&lt;br /&gt;
# install Lxqt desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install lxqt&lt;br /&gt;
# install Xfce4 desktop&lt;br /&gt;
DEBIAN_FRONTEND=noninteractive apt -y install xfce4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ROOT ==&lt;br /&gt;
&lt;br /&gt;
Please install ROOT per instructions at http://root.cern.ch.&lt;br /&gt;
&lt;br /&gt;
NOTE1: The ROOT package available from Ubuntu repositories is severely out of date and cannot be used with MIDAS and ROOTANA. ### DO NOT DO THIS! apt-get install root-system&lt;br /&gt;
&lt;br /&gt;
NOTE2: as of 2017-Jan-09, ROOT binary kits for Ubuntu do not work (use GCC 5 instead of GCC6), build from source instead.&lt;br /&gt;
&lt;br /&gt;
== Install x2go ==&lt;br /&gt;
&lt;br /&gt;
KO - is this still needed? does it cause any security problems?&lt;br /&gt;
&lt;br /&gt;
x2go instructions, thanks to Art O.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add-apt-repository ppa:x2go/stable&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install x2goserver x2goserver-xsession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable root login from ladd00/daq00 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
CTRL-C&lt;br /&gt;
/bin/cp ~root/git/scripts/etc/authorized_keys ~root/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install smart-status ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s ~/git/scripts/smart-status/smart-status.perl ~root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable boot menu and boot messages ==&lt;br /&gt;
&lt;br /&gt;
This will enable the grub menu (with a 10 sec timeout) and&lt;br /&gt;
replace black screen with exciting linux boot messages.&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_DEFAULT=0&lt;br /&gt;
#GRUB_TIMEOUT_STYLE=hidden&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;vga=769 video=640x480&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
#GRUB_GFXMODE=640x480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update grub config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reboot ==&lt;br /&gt;
&lt;br /&gt;
this completes installation of the base system.&lt;br /&gt;
&lt;br /&gt;
following sections modify basic ubuntu to fix known problems and to enable special stuff.&lt;br /&gt;
&lt;br /&gt;
= Enable automatic updates =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install unattended-upgrades&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/99apt-conf-ko /etc/apt/apt.conf.d/&lt;br /&gt;
apt-config dump | grep Unattended&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is obsolete:&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/50unattended-upgrades&lt;br /&gt;
** uncomment in Allowed-Origins &amp;quot;-security&amp;quot; and &amp;quot;-updates&amp;quot;&lt;br /&gt;
** add in Allowed-Origins: &amp;quot;Google LLC:stable&amp;quot;;&lt;br /&gt;
** uncomment/add: &amp;quot;Unattended-Upgrade::Mail &amp;quot;root&amp;quot;;&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;7&amp;quot;;&lt;br /&gt;
APT::Periodic::Unattended-Upgrade &amp;quot;1&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test: unattended-upgrade --dry-run -v&lt;br /&gt;
&lt;br /&gt;
= Fix bpool is full =&lt;br /&gt;
&lt;br /&gt;
!!! only if ROOT on ZFS !!!&lt;br /&gt;
&lt;br /&gt;
There is an error in the zsys package that causes bpool to run out of space,&lt;br /&gt;
see [[#Ubuntu zsys]] for more details.&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/zsys.conf /etc/&lt;br /&gt;
zsysctl service reload&lt;br /&gt;
zsysctl service gc&lt;br /&gt;
zpool list bpool&lt;br /&gt;
zfs list bpool&lt;br /&gt;
df /boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= IPMI instructions =&lt;br /&gt;
&lt;br /&gt;
IPMI is the board management hardware on Supermicro and other server motherboards. This includes hardware sensors - fan rotation speed, temperatures and power supply voltages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ipmitool&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
* ipmitool sel list ### event list&lt;br /&gt;
* ipmitool sel elist ### event list&lt;br /&gt;
* ipmitool sel clear ### clear event list (if it becomes full)&lt;br /&gt;
* ipmitool sensor ### report hardware sensors&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel =&lt;br /&gt;
&lt;br /&gt;
note: this MUST be done if ZFS root and NIS/autofs with /home.&lt;br /&gt;
&lt;br /&gt;
Default location of wheel&#039;s home directory will collide with autofs /home, it has to be moved,&lt;br /&gt;
for example to /wheel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# logout from the wheel user&lt;br /&gt;
# go to another computer&lt;br /&gt;
ssh root@daqubuntuxxx&lt;br /&gt;
zfs list | grep wheel ### identify zfs name wheel_xxxxxx&lt;br /&gt;
zfs set mountpoint=/wheel rpool/USERDATA/wheel_hm8fzh&lt;br /&gt;
emacs -nw /etc/passwd ### change wheel&#039;s home directory from /home/wheel to /wheel&lt;br /&gt;
su - wheel ### check that user wheel still works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 22.04, debian 11) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install rpcbind nis&lt;br /&gt;
echo DAQ-NIS &amp;gt;&amp;gt; /etc/defaultdomain&lt;br /&gt;
echo ypserver daq00.triumf.ca &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
systemctl enable ypbind.service&lt;br /&gt;
systemctl restart ypbind.service&lt;br /&gt;
systemctl status ypbind.service&lt;br /&gt;
ypwhich -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable ypserv:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i s/NISSERVER=false/NISSERVER=slave/ /etc/default/nis&lt;br /&gt;
/usr/lib/yp/ypinit -s daq00&lt;br /&gt;
echo ypserver localhost &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
sed -i &amp;quot;s/ypserver .*/ypserver localhost/&amp;quot; /etc/yp.conf&lt;br /&gt;
systemctl enable ypserv&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/nsswitch.conf to read:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
enable hourly update of nis maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is a new machine, then on the master NIS node (daq00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
&lt;br /&gt;
= enable NIS (ubuntu 20.04) =&lt;br /&gt;
&lt;br /&gt;
* apt-get -y install portmap nis ### will ask for NIS domain (DAQ-NIS)&lt;br /&gt;
* dpkg-reconfigure nis ### reconfigure if already installed&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* edit /etc/default/nis&lt;br /&gt;
** set &amp;quot;NISSERVER=slave&amp;quot;&lt;br /&gt;
** Ubuntu LTS 20.04, check that &amp;quot;YPBINDARGS=&amp;quot; is blank, remove &amp;quot;-no-dbus&amp;quot; if it is there&lt;br /&gt;
* #edit /etc/yp.conf, comment-out everything, add &amp;quot;domain DAQ-NIS server localhost&amp;quot;&lt;br /&gt;
* edit /etc/yp.conf, comment-out everything, add &amp;quot;ypserver localhost&amp;quot;&lt;br /&gt;
* /usr/lib/yp/ypinit -s daq00&lt;br /&gt;
* systemctl enable nis&lt;br /&gt;
* systemctl restart nis&lt;br /&gt;
* ypwhich&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* ypcat -k passwd&lt;br /&gt;
* vi /etc/nsswitch.conf ### add the automount line, modify the passwd, group and shadow lines to read this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable hourly update of NIS maps&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ### NOT NEEDED sudo vi /etc/idmapd.conf ### add line: &amp;quot;Domain = triumf.ca&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= enable autofs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
ls -l /home/olchansk ### test autofs, check file owner is correct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= enable NFS server =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install nfs-kernel-server&lt;br /&gt;
#edit /etc/exports&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NIS master =&lt;br /&gt;
&lt;br /&gt;
notes for setting up the NIS master&lt;br /&gt;
&lt;br /&gt;
== wheel user ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wheel&amp;quot; is the default administrative user. We do not want it&#039;s password exported to NIS (encrypted password hash is world visible) and we do not want it&#039;s home directory exported to NFS (~wheel/.ssh is world visible and potentially writable: anybody can change ~wheel/.ssh/authorized_keys).&lt;br /&gt;
&lt;br /&gt;
* move wheel&#039;s home directory from /home/wheel to /wheel (see special section about this)&lt;br /&gt;
* change wheel&#039;s UID and GID from 1000 to a value below MINUID in /var/yp/Makefile&lt;br /&gt;
&lt;br /&gt;
== coherent uids ==&lt;br /&gt;
&lt;br /&gt;
we do not want system accounts defined in /etc/passwd of the NIS master&lt;br /&gt;
to be included in the NIS map &amp;quot;passwd&amp;quot;. this causes trouble on NIS clients&lt;br /&gt;
where newly installed packages fail to create local system users because same&lt;br /&gt;
user already exists in NIS.&lt;br /&gt;
&lt;br /&gt;
This is controlled by MINUID in /var/yp/Makefile.&lt;br /&gt;
&lt;br /&gt;
Historical TRIUMF uids start from around 200, but several clusters do not have any historic TRIUMF uids below 500 and MINUID is set to:&lt;br /&gt;
* DAQ-NIS: MINUID=200&lt;br /&gt;
* ISAC-NIS: MINUID=500&lt;br /&gt;
* TITAN-NIS: MINUID=500&lt;br /&gt;
* MUSR-NIS: MINUID=500&lt;br /&gt;
* TIG-NIS: MINUID=500 (100 on SL6 mother8pi)&lt;br /&gt;
&lt;br /&gt;
Ubuntu 20 has two programs to create users:&lt;br /&gt;
* adduser - creates new users with UID 1000 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* adduser --system - creates new system users with UID 100 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* useradd - creates new users with UID 1000 and up as specified in /etc/login.defs. No problems here.&lt;br /&gt;
* useradd --system - creates new system users with UID 999 and down (read &amp;quot;man useradd&amp;quot;, section at the end about SYS_UID_MAX). This collides with NIS MINUID, these system users will be included in the NIS map and cause trouble.&lt;br /&gt;
&lt;br /&gt;
This problem cannot be fixed, SYS_UID_MIN, SYS_UID_MAX and UID_MIN in /etc/login.defs do not seem&lt;br /&gt;
to have any effect on UIDs chosen by &amp;quot;useradd --system&amp;quot;. (tested on Ubuntu LTS 20.04).&lt;br /&gt;
&lt;br /&gt;
So far only these system accounts seem to be affected by this:&lt;br /&gt;
* systemd-coredump&lt;br /&gt;
* ganglia&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/passwd&amp;quot; to identify the last unused system user uid (range 100..200)&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/group&amp;quot; to identify the last unused system user gid (range 100.200)&lt;br /&gt;
* systemd-coredump: manually change UID and GID (package systemd-coredump is usually not installed)&lt;br /&gt;
* ganglia: same thing, then change ownership on all ganglia files.&lt;br /&gt;
&lt;br /&gt;
Also read systemd author&#039;s opinion on system vs user UIDs:&lt;br /&gt;
https://github.com/systemd/systemd/issues/4850#issuecomment-265698275&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-logind NIS breakage =&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED FOR UBUNTU LTS 20.04 !!!&lt;br /&gt;
&lt;br /&gt;
there is a delay in ssh logins for normal users. &amp;quot;ssh -v&amp;quot; shows the delay is after &amp;quot;pledge...&amp;quot;. this&lt;br /&gt;
fix removes the delay.&lt;br /&gt;
&lt;br /&gt;
systemd developers think that we should not use NIS and made sure there are&lt;br /&gt;
problems if we do. To give them credit, they do offer a workaround. Read this:&lt;br /&gt;
https://github.com/poettering/systemd/commit/695fe4078f0df6564a1be1c4a6a9e8a640d23b67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-logind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-logind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-udevd NIS breakage =&lt;br /&gt;
&lt;br /&gt;
see same problem as above with udev getting stuck. ubuntu lts 20.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-udevd.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-udevd.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-udevd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure USB device permissions =&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usbmisc&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot; &lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyACM*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;*video*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* reload udev rules: udevadm control --reload-rules&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
* watch udev activity: udevadm monitor -p&lt;br /&gt;
&lt;br /&gt;
= Configure lightdm display manager =&lt;br /&gt;
&lt;br /&gt;
* enable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo lightdm | dpkg-reconfigure -fteletype lightdm&lt;br /&gt;
systemctl disable gdm&lt;br /&gt;
systemctl disable sddm&lt;br /&gt;
systemctl enable lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable login by NIS users&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp -v etc/lightdm_enable_nis_login.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart lightdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop gdm&lt;br /&gt;
systemctl restart lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install libpng12.so.0 =&lt;br /&gt;
&lt;br /&gt;
Quartus 16 needs libpng12:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install google-chrome =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb&lt;br /&gt;
dpkg -i google-chrome-stable_current_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
confirm autoupdate is enabled, observe dl.google.com is present in the list of repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
...&lt;br /&gt;
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,094 B]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FOLLOWING IS OBSOLETE:&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -&lt;br /&gt;
sh -c &#039;echo &amp;quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/google-tmp.list&#039;&lt;br /&gt;
apt update&lt;br /&gt;
apt install google-chrome-stable&lt;br /&gt;
/bin/rm -f /etc/apt/sources.list.d/google-tmp.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install amanda client =&lt;br /&gt;
&lt;br /&gt;
ONLY ONE MACHINES THAT HOST HOME DIRECTORIES&lt;br /&gt;
&lt;br /&gt;
* apt install amanda-client&lt;br /&gt;
* edit /etc/amandahosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amanda.triumf.ca amanda amdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check permissions on /etc/amandahosts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:/var/log/amanda# ls -l /etc/amandahosts&lt;br /&gt;
-rw------- 1 backup backup 49 Jan 27 10:48 /etc/amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix if needed: chown backup.backup /etc/amandahosts; chmod a= /etc/amandahosts; chmod u=wr /etc/amandahosts&lt;br /&gt;
* edit /etc/amanda-security.conf, add this line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runtar:gnutar_path=/usr/bin/tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the amanda machine:&lt;br /&gt;
&lt;br /&gt;
* in amanda disklist, use dump type &amp;quot;bsdtcp-comp-user-tar&amp;quot;&lt;br /&gt;
* su - amanda and run amcheck -c daily daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.1$ amcheck -c daily daq00&lt;br /&gt;
&lt;br /&gt;
Amanda Backup Client Hosts Check&lt;br /&gt;
--------------------------------&lt;br /&gt;
Client check: 1 host checked in 0.092 seconds.  0 problems found.&lt;br /&gt;
&lt;br /&gt;
(brought to you by Amanda 3.3.7p1.git.685ff76d)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable rc.local =&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, Ubuntu LTS 20.04 does not enable /etc/rc.local. Do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp -n -v etc/rc.local /etc/&lt;br /&gt;
chmod a+rx /etc/rc.local&lt;br /&gt;
cp etc/rc-local.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable unwanted services =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable mpd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl --global mask tracker-extract-3.service&lt;br /&gt;
systemctl --global mask tracker-miner-fs-3.service&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable sleep and suspend =&lt;br /&gt;
&lt;br /&gt;
note: we see some computers randomly shutdown or go to sleep, log files indicates the &amp;quot;sleep&amp;quot; or &amp;quot;suspend&amp;quot; button was pushed by user, but no such buttons actually exist. this is the fix for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target systemd-suspend.service systemd-hybrid-sleep.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable crontab @reboot for MIDAS =&lt;br /&gt;
&lt;br /&gt;
startup scripts have a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/cron.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/cron.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat cron.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependency tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
Crontab entry to start midas: (install in the midas user crontab, not root crontab)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - midasuser&lt;br /&gt;
crontab -l&lt;br /&gt;
#@reboot /bin/bash -l -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
#@reboot /bin/tcsh -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install apache httpd proxy for midas and elog =&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache2.&lt;br /&gt;
&lt;br /&gt;
First, configure apache2:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install apache2&lt;br /&gt;
cd /etc/apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file conf-available/ssl-daq14.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file sites-available/daq14-ssl.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
    &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName daq14.triumf.ca&lt;br /&gt;
        DocumentRoot /var/www/html&lt;br /&gt;
        ErrorLog /var/log/apache2/daq14.log&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        # note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
        ## use port specified in elogd.cfg&lt;br /&gt;
        #ProxyPass /elog/ http://localhost:8082/ retry=1 &lt;br /&gt;
        ## use mhttpd port&lt;br /&gt;
        #ProxyPass /      http://localhost:8080/ retry=1 &lt;br /&gt;
        Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
        &amp;lt;Location /&amp;gt;&lt;br /&gt;
            SSLRequireSSL&lt;br /&gt;
            AuthType Basic&lt;br /&gt;
            AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
            Require valid-user&lt;br /&gt;
            # create password file: touch /etc/apache2/htpasswd&lt;br /&gt;
            # to add new user or change password: htpasswd /etc/apache2/htpasswd username&lt;br /&gt;
            AuthUserFile /etc/apache2/htpasswd&lt;br /&gt;
        &amp;lt;/Location&amp;gt;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable ssl module&lt;br /&gt;
* enable new configurations&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
a2enmod headers&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
a2enconf ssl-daq14&lt;br /&gt;
a2ensite daq14-ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable default ssl sites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dissite 000-default-le-ssl&lt;br /&gt;
a2dissite 000-default&lt;br /&gt;
ls -l /etc/apache2/sites-enabled/ ### should show only daq14-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that there are no syntax problems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable and start apache2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 may fail to start, look in /var/log/apache2/error.log and /var/log/apache2/daq14.log&lt;br /&gt;
* if it says &amp;quot;Failed to configure ... certificate&amp;quot;, proceed to the step for setting certbot.&lt;br /&gt;
* try to access https://daq14.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, look at documentation for ufw.&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that apache2 is listening on port 80, follow the apache2 instructions above (remove &amp;quot;listen 80&amp;quot; from apache2.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot (if necessary open tcp port 80 in the firewall, see documentation for ufw):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install certbot python3-certbot-apache&lt;br /&gt;
certbot certonly --standalone --installer apache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq14.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot install --apache --cert-name daq14.triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside /etc/apache2/sites-enabled/daq14-ssl.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in&lt;br /&gt;
/etc/letsencrypt/live/daq14.triumf.ca/&lt;br /&gt;
* to check current renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work with current version of certbot&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/apache2/htpasswd&lt;br /&gt;
htpasswd /etc/apache2/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart apache2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try accessing MIDAS https://daq14.triumf.ca/ (make sure mhttpd is running)&lt;br /&gt;
* if it&#039;s not working, check odb setting FIXME!&lt;br /&gt;
* try accessing ELog https://daq14.triumf.ca/elog/ (make sure elogd is running)&lt;br /&gt;
* if it&#039;s not working, check elogd.cfg file and make sure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSL                  = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
= Enable elog PDF preview =&lt;br /&gt;
&lt;br /&gt;
see https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&lt;br /&gt;
&lt;br /&gt;
* xemacs -nw /etc/ImageMagick-6/policy.xml&lt;br /&gt;
* remove this section at the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- disable ghostscript format types --&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;EPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PDF&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;XPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS quota report =&lt;br /&gt;
&lt;br /&gt;
If there are any ZFS volumes, install script to report disk and quota usage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/quotareport&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /var/www/html/zfsquotareport&lt;br /&gt;
cp -pv ~/git/scripts/quotareport/sorttable.js /var/www/html/zfsquotareport/&lt;br /&gt;
ln -s $PWD/zfsquotareport.perl /etc/cron.daily/&lt;br /&gt;
touch /etc/crontab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If httpd is configured to redirect &amp;quot;/&amp;quot; to MIDAS mhttpd:&lt;br /&gt;
* add following to /etc/apache2/sites-enabled/xxx-ssl.conf in front of &amp;quot;ProxyPass / ...&amp;quot;&lt;br /&gt;
* run &amp;quot;systemctl reload apache2&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not proxy zfs quota report directory &lt;br /&gt;
ProxyPass /zfsquotareport/ ! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install PHP =&lt;br /&gt;
&lt;br /&gt;
* apt install php libapache2-mod-php&lt;br /&gt;
* systemctl restart apache2&lt;br /&gt;
* create /var/www/html/info.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
phpinfo(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://daq00.triumf.ca/info.php&lt;br /&gt;
&lt;br /&gt;
= Configure TRIUMF printers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable core dumps =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 installs the apport package&lt;br /&gt;
which disabled core dumps from user applications. (google it up!).&lt;br /&gt;
It is not meant to do this and documentation claims that&lt;br /&gt;
it is not installed and not enabled by default. Oh, well...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove apport&lt;br /&gt;
apt autoremove ### will remove apport-symptoms and a few other packages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, core dumps are written to file &amp;quot;core&amp;quot; in the current directory.&lt;br /&gt;
See /proc/sys/kernel/core_pattern and /proc/sys/kernel/core_uses_pid.&lt;br /&gt;
&lt;br /&gt;
= Enable debugger =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 does not permit debugger to attach and debug&lt;br /&gt;
already running programs. To enable it, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable Ubuntu Pro nag =&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;apt upgrade&amp;quot; requests Ubuntu Pro or esm-apps, disable the nag:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/mv /etc/apt/apt.conf.d/20apt-esm-hook.conf /etc/apt/apt.conf.d/20apt-esm-hook.conf-disable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update packages =&lt;br /&gt;
&lt;br /&gt;
* apt-get update # update package list&lt;br /&gt;
* apt-get dist-upgrade # install updated packages and update &amp;quot;kept back&amp;quot; packages&lt;br /&gt;
* apt-get autoremove # remove packages that apt thinks should be removed&lt;br /&gt;
&lt;br /&gt;
= Finish installation =&lt;br /&gt;
&lt;br /&gt;
Congratulations. There is nothing more to do!&lt;br /&gt;
&lt;br /&gt;
* reboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS =&lt;br /&gt;
&lt;br /&gt;
!!! after installing all the packages, after updating the system, after updating the linux kernel, after rebooting into latest kernel !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install zfsutils-linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow generic ZFS instructions: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
= Update to new version of Ubuntu =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
do-release-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update Ubuntu LTS 20.04 to LTS 22.04:&lt;br /&gt;
&lt;br /&gt;
== daqubuntu ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# reboot to clear out all updates&lt;br /&gt;
# vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
# do-release-upgrade -c&lt;br /&gt;
Checking for a new Ubuntu release&lt;br /&gt;
New release &#039;22.04 LTS&#039; available.&lt;br /&gt;
Run &#039;do-release-upgrade&#039; to upgrade to it.&lt;br /&gt;
# do-release-upgrade&lt;br /&gt;
...&lt;br /&gt;
say yes...&lt;br /&gt;
...&lt;br /&gt;
login.defs, say &amp;quot;Y&amp;quot; (erase local changes, use packaged version)&lt;br /&gt;
/etc/systemd/resolved.conf, say &amp;quot;Y&amp;quot; (same as above)&lt;br /&gt;
firefox snap, say yes&lt;br /&gt;
unable to reach snap store, say &amp;quot;skip&amp;quot;&lt;br /&gt;
/etc/gmond.conf, say &amp;quot;Y&amp;quot;&lt;br /&gt;
/var/yp/Makefile, say &amp;quot;install the package maintainer&#039;s version&amp;quot;&lt;br /&gt;
/etc/ypserv.conf, same thing&lt;br /&gt;
/etc/ypserv.securenets, same thing&lt;br /&gt;
/etc/default/nis, same thing&lt;br /&gt;
/etc/speech-dispatcher/modules/mary-generic.conf, same thing&lt;br /&gt;
/etc/apt/apt.conf.d/50unattended-upgrades, same thing&lt;br /&gt;
...&lt;br /&gt;
278 packages are going to be removed, say yes&lt;br /&gt;
...&lt;br /&gt;
restart required, say yes&lt;br /&gt;
...&lt;br /&gt;
no ping... yes ping...&lt;br /&gt;
...&lt;br /&gt;
ssh daqubuntu, ok&lt;br /&gt;
apt update, fail, DNS does not work, &amp;quot;host security.ubuntu.com&amp;quot; does not resolve.&lt;br /&gt;
fix resolver per https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#Disable_NetworkManager&lt;br /&gt;
apt update, apt upgrade now works, 0 packages to update&lt;br /&gt;
NIS does not work.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== midm9a ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
login.defs&lt;br /&gt;
firefox snap&lt;br /&gt;
gmond.conf&lt;br /&gt;
ypserv&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
unattended-upgrades&lt;br /&gt;
amanda-security.conf&lt;br /&gt;
remove obsolete (no)&lt;br /&gt;
reboot&lt;br /&gt;
configure dns&lt;br /&gt;
reenable nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== daq17 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firefox snap&lt;br /&gt;
imagemagick policy.xml&lt;br /&gt;
gmond.conf&lt;br /&gt;
chrony.conf&lt;br /&gt;
/var/yp/Makefile&lt;br /&gt;
ypserv.conf&lt;br /&gt;
ypserv.securenets&lt;br /&gt;
/etc/default/nis&lt;br /&gt;
50unattended-upgrades&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== daq00 ==&lt;br /&gt;
&lt;br /&gt;
per https://serverpilot.io/docs/how-to-upgrade-ubuntu-20.04-to-22.04/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
do-release-upgrade -f DistUpgradeViewNonInteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if it exists &amp;quot;too soon&amp;quot; without doing anything, run it without &amp;quot;-f xxx&amp;quot;, most likely it does not like something about this machine. in case of daq00 it did not like how the EFI partitions were mounted. after fixing it, non-interactive upgrade was successful.&lt;br /&gt;
&lt;br /&gt;
= Ubuntu package manager =&lt;br /&gt;
&lt;br /&gt;
* apt-get install xxx # install package xxx&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get upgrade&lt;br /&gt;
* apt-get dist-upgrade&lt;br /&gt;
* apt-get autoremove # remove automatically installed packages required by a removed package&lt;br /&gt;
* apt-get remove xxx # remove package xxx&lt;br /&gt;
* apt-cache search . # list all available packages&lt;br /&gt;
* apt-cache show &amp;quot;.&amp;quot; | grep ^Package # list al available packages&lt;br /&gt;
* apt-cache madison root-system # show all available versions of package root-system&lt;br /&gt;
* apt list # list all installed packages&lt;br /&gt;
* dpkg --listfiles libpng16-16 # list all files from this package&lt;br /&gt;
* apt list --installed # list all installed packages&lt;br /&gt;
* dpkg -S /bin/bash # what package provides this file?&lt;br /&gt;
* dpkg -L bash # what files provided by this package?&lt;br /&gt;
* debsums -ce # show modified config files&lt;br /&gt;
* apt-config dump # show apt configuration&lt;br /&gt;
&lt;br /&gt;
= Ubuntu zsys =&lt;br /&gt;
&lt;br /&gt;
* manages system snapshots&lt;br /&gt;
* documentation: https://github.com/ubuntu/zsys&lt;br /&gt;
* documentation: (go to next article via link &amp;quot;newer&amp;quot; at the bottom) https://didrocks.fr/2020/05/21/zfs-focus-on-ubuntu-20.04-lts-whats-new/&lt;br /&gt;
* ubuntu 20.04 bug, too many snapshots cause /boot to become full and updates fail. https://github.com/ubuntu/zsys/issues/155&lt;br /&gt;
* solution: use custom /etc/zsys.conf, limit number of snapshots to 10, see trinatdaq:/etc/zsys.conf&lt;br /&gt;
* zsys commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-grub # list of all snapshots, errors if some snapshots are broken&lt;br /&gt;
zsysctl state remove lnc0k7 --system # remove snapshot&lt;br /&gt;
xemacs -nw /etc/zsys.conf; zsysctl service reload; zsysctl service gc # cause gc to run with new settings in zsys.conf&lt;br /&gt;
zfs list -r -t snapshot -o name,used,referenced,creation bpool/BOOT # list snapshots&lt;br /&gt;
zsysctl show # show snapshots&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu cloning =&lt;br /&gt;
&lt;br /&gt;
to clone a ubuntu image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /nfsroot/lxcpet&lt;br /&gt;
emacs -nw etc/hostname ### change hostname&lt;br /&gt;
emacs -nw etc/mailname ### change hostname (debian 11)&lt;br /&gt;
emacs -nw etc/defaultdomain ### change the NIS domainname&lt;br /&gt;
emacs -nw etc/yp.conf ### change the NIS server&lt;br /&gt;
cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu boot loader =&lt;br /&gt;
&lt;br /&gt;
== boot from ZFS ==&lt;br /&gt;
&lt;br /&gt;
* use UEFI boot with syslinux, see here: https://daq.triumf.ca/DaqWiki/index.php/SLinstall#Configure_UEFI_boot&lt;br /&gt;
* apt install zfs-initramfs&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* ZFS structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# zfs list&lt;br /&gt;
NAME                                               USED  AVAIL     REFER  MOUNTPOINT&lt;br /&gt;
rpool                                              147G  1.62T       96K  /&lt;br /&gt;
rpool/ROOT                                        17.8G  1.62T       96K  none&lt;br /&gt;
rpool/ROOT/ubuntu_00aaaa                          17.8G  1.62T     6.22G  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy OS image to rpool/ROOT/ubuntu_00aaaa&lt;br /&gt;
* zfs set mountpoint=/ rpool&lt;br /&gt;
* zfs set mountpoint=none rpool/ROOT&lt;br /&gt;
* zfs set mountpoint=/ rpool/ROOT/ubuntu_00aaaa&lt;br /&gt;
* zfs get all | grep mountpoint&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpool                     mountpoint            /                      local&lt;br /&gt;
rpool/ROOT                mountpoint            none                   local&lt;br /&gt;
rpool/ROOT/ubuntu_00aaaa  mountpoint            /                      local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in linux kernel command line (syslinux.cfg), set &amp;quot;root=&amp;quot; to &amp;quot;root=ZFS=rpool/ROOT/ubuntu_00aaaa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== boot from ZFS mirror ==&lt;br /&gt;
&lt;br /&gt;
=== setup the EFI partitions ===&lt;br /&gt;
&lt;br /&gt;
* assuming /dev/sdb is already setup for EFI boot, setup /dev/sda the same way:&lt;br /&gt;
* partition the second boot disk same as first boot disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# gdisk -l /dev/sdb&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI system partition&lt;br /&gt;
   2         1050624      3907029134   1.8 TiB     8300  Linux filesystem&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkfs.msdos /dev/sdX1&lt;br /&gt;
* create mount points&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda1 /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1 &lt;br /&gt;
/dev/sdb1 /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
* df | grep boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# df | grep boot&lt;br /&gt;
/dev/sdb1                    523248    98100     425148  19% /boot/efi-sdb&lt;br /&gt;
/dev/sda1                    523248        4     523244   1% /boot/efi-sda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy boot files to new boot disk&lt;br /&gt;
* cd /boot/efi-sdX; rsync -av . /boot/efi-sdY&lt;br /&gt;
* set BIOS to boot from &amp;quot;UEFI Hard drive&amp;quot;, disable legacy boot (except for booting from USB key in legacy mode)&lt;br /&gt;
* if using UEFI boot syslinux per these instructions, linux kernel update has to be done manually:&lt;br /&gt;
* run ~/git/scripts/etc/update_efi_mirror.perl, follow instructions that it prints.&lt;br /&gt;
&lt;br /&gt;
=== setup zfs partitions ===&lt;br /&gt;
&lt;br /&gt;
use partitions compatible with Ubuntu &amp;quot;install on ZFS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* gdisk &amp;quot;o&amp;quot; to create new GPT partition table&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; +512M ef00 to create EFI partition&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; +2G 8200 to create linux swap partition (not used)&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; +2G BE00 to create ZFS bpool partition&lt;br /&gt;
* gdisk &amp;quot;n&amp;quot; xxx BF00 create ZFS rpool partition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gdisk -l /dev/sda&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System Partition&lt;br /&gt;
   2         1050624         5244927   2.0 GiB     8200  &lt;br /&gt;
   3         5244928         9439231   2.0 GiB     BE00  &lt;br /&gt;
   4         9439232       234441614   107.3 GiB   BF00  &lt;br /&gt;
root@midm9a:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup zfs mirror ===&lt;br /&gt;
&lt;br /&gt;
* see here: https://daq.triumf.ca/DaqWiki/index.php/ZFS#Convert_pool_from_single_to_mirror&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# ls -l /dev/disk/by-id/ata*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Feb 19 16:47 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801081-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Feb 19 16:47 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801101-part2 -&amp;gt; ../../sdb2&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                             STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                            ONLINE       0     0     0&lt;br /&gt;
          ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool attach rpool ata-WDC_WDS200T2B0A-00SM50_205007801101-part2 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801081-part2&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
        continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Feb 19 16:54:39 2021&lt;br /&gt;
        12.6G scanned at 3.16G/s, 1.02G issued at 262M/s, 12.6G total&lt;br /&gt;
        1.02G resilvered, 8.09% done, 0 days 00:00:45 to go&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                               STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                              ONLINE       0     0     0&lt;br /&gt;
          mirror-0                                         ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801081-part2  ONLINE       0     0     0  (resilvering)&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 12.7G in 0 days 00:00:40 with 0 errors on Fri Feb 19 16:55:19 2021&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                               STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                              ONLINE       0     0     0&lt;br /&gt;
          mirror-0                                         ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801081-part2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maintenance commands ==&lt;br /&gt;
&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* grub-install /dev/sda&lt;br /&gt;
&lt;br /&gt;
= Convert from single to dual mirrored ZFS SSD =&lt;br /&gt;
&lt;br /&gt;
Assuming Ubuntu LTS 22.04 with &amp;quot;instal on ZFS&amp;quot; option, we will&lt;br /&gt;
add a second SSD, configure ZFS to use both SSDs in mirrored&lt;br /&gt;
configuration and setup grub to boot from either SSD. This&lt;br /&gt;
is intended to create a full redundant system where failure&lt;br /&gt;
of either SSD does not break the system.&lt;br /&gt;
&lt;br /&gt;
* identify first SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* connect second SSD of identical size&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ./smart-status.perl &lt;br /&gt;
        Disk                    model               serial     temperature  realloc  pending   uncorr  CRC err     RRER   Errors     Link&lt;br /&gt;
    /dev/sda  WD Blue SA510 2.5 250GB         22243Z803769              24        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
    /dev/sdb  WD Blue SA510 2.5 250GB         22243Z803852              25        .        ?        ?        .        ?        .      6.0&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* if second SSD is not autodetected, reboot&lt;br /&gt;
* list partition table of first SSD:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create identical partitions on second SSD, use sector numbers from above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# gdisk /dev/sdb&lt;br /&gt;
GPT fdisk (gdisk) version 1.0.8&lt;br /&gt;
&lt;br /&gt;
Partition table scan:&lt;br /&gt;
  MBR: not present&lt;br /&gt;
  BSD: not present&lt;br /&gt;
  APM: not present&lt;br /&gt;
  GPT: not present&lt;br /&gt;
&lt;br /&gt;
Creating new GPT entries in memory.&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (1-128, default 1): &lt;br /&gt;
First sector (34-488397134, default = 2048) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (2048-488397134, default = 488397134) or {+-}size{KMGTP}: 1050623&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): ef00&lt;br /&gt;
Changed type of partition to &#039;EFI system partition&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (2-128, default 2): &lt;br /&gt;
First sector (34-488397134, default = 1050624) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (1050624-488397134, default = 488397134) or {+-}size{KMGTP}: 5244927&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): 8200&lt;br /&gt;
Changed type of partition to &#039;Linux swap&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (3-128, default 3): &lt;br /&gt;
First sector (34-488397134, default = 5244928) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (5244928-488397134, default = 488397134) or {+-}size{KMGTP}: 9439231&lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): be00&lt;br /&gt;
Changed type of partition to &#039;Solaris boot&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): n&lt;br /&gt;
Partition number (4-128, default 4): &lt;br /&gt;
First sector (34-488397134, default = 9439232) or {+-}size{KMGTP}: &lt;br /&gt;
Last sector (9439232-488397134, default = 488397134) or {+-}size{KMGTP}: &lt;br /&gt;
Current type is 8300 (Linux filesystem)&lt;br /&gt;
Hex code or GUID (L to show codes, Enter = 8300): bf00&lt;br /&gt;
Changed type of partition to &#039;Solaris root&#039;&lt;br /&gt;
&lt;br /&gt;
Command (? for help): w&lt;br /&gt;
&lt;br /&gt;
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING&lt;br /&gt;
PARTITIONS!!&lt;br /&gt;
&lt;br /&gt;
Do you want to proceed? (Y/N): y&lt;br /&gt;
OK; writing new GUID partition table (GPT) to /dev/sdb.&lt;br /&gt;
The operation has completed successfully.&lt;br /&gt;
root@midm9b:~# fdisk -l /dev/sda /dev/sdb&lt;br /&gt;
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 951A4174-B4C6-400D-99F5-BE9B5627FA8E&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sda1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sda2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sda3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sda4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors&lt;br /&gt;
Disk model: WD Blue SA510 2.&lt;br /&gt;
Units: sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: EB251739-30C6-422F-A505-5887B5A0B603&lt;br /&gt;
&lt;br /&gt;
Device       Start       End   Sectors   Size Type&lt;br /&gt;
/dev/sdb1     2048   1050623   1048576   512M EFI System&lt;br /&gt;
/dev/sdb2  1050624   5244927   4194304     2G Linux swap&lt;br /&gt;
/dev/sdb3  5244928   9439231   4194304     2G Solaris boot&lt;br /&gt;
/dev/sdb4  9439232 488397134 478957903 228.4G Solaris root&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* identify second SSD partitions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3 -&amp;gt; ../../sdb3&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert bpool from single disk to mirrored disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                   ONLINE       0     0     0&lt;br /&gt;
	  99e03dc0-7d4d-f24b-8fa1-f042b9f135db  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                    STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                   ONLINE       0     0     0&lt;br /&gt;
	  f6fd54f8-3af7-b943-ae3d-a4e480537fb9  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# zpool attach bpool 99e03dc0-7d4d-f24b-8fa1-f042b9f135db /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3&lt;br /&gt;
root@midm9b:~# zpool status bpool&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* convert rpool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ls -l /dev/disk/by-id/ata*part4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4 -&amp;gt; ../../sdb4&lt;br /&gt;
root@midm9b:~# zpool attach rpool f6fd54f8-3af7-b943-ae3d-a4e480537fb9 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4&lt;br /&gt;
root@midm9b:~# zpool status rpool&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
	continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Jan 20 19:40:45 2023&lt;br /&gt;
	5.83G scanned at 664M/s, 2.92M issued at 332K/s, 9.11G total&lt;br /&gt;
	0B resilvered, 0.03% done, no estimated completion time&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait for resilver to complete&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# zpool status&lt;br /&gt;
  pool: bpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 247M in 00:00:00 with 0 errors on Fri Jan 20 19:39:40 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	bpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    99e03dc0-7d4d-f24b-8fa1-f042b9f135db            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part3  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 9.65G in 00:00:36 with 0 errors on Fri Jan 20 19:41:21 2023&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
	NAME                                                STATE     READ WRITE CKSUM&lt;br /&gt;
	rpool                                               ONLINE       0     0     0&lt;br /&gt;
	  mirror-0                                          ONLINE       0     0     0&lt;br /&gt;
	    f6fd54f8-3af7-b943-ae3d-a4e480537fb9            ONLINE       0     0     0&lt;br /&gt;
	    ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part4  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable booting from second SSD: (instead of /dev/sda1, /dev/sdb1, use UUID=xxx)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# mkfs.msdos /dev/sdb1&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sda&lt;br /&gt;
root@midm9b:~# mkdir /boot/efi-sdb&lt;br /&gt;
root@midm9b:~# echo &amp;quot;/dev/sda1 /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
root@midm9b:~# echo &amp;quot;/dev/sdb1 /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&amp;quot; &amp;gt;&amp;gt; /etc/fstab&lt;br /&gt;
root@midm9b:~# mount -a&lt;br /&gt;
root@midm9b:~# df -kl&lt;br /&gt;
Filesystem                                       1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
...&lt;br /&gt;
/dev/sda1                                           523244   13720    509524   3% /boot/efi&lt;br /&gt;
/dev/sdb1                                           523244       4    523240   1% /boot/efi-sdb&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# rsync -av /boot/efi/ /boot/efi-sdb/&lt;br /&gt;
sending incremental file list&lt;br /&gt;
EFI/&lt;br /&gt;
...&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sda&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# ls -l /boot/efi-sdb&lt;br /&gt;
total 8&lt;br /&gt;
drwxr-xr-x 4 root root 4096 Jan 19 23:26 EFI&lt;br /&gt;
drwxr-xr-x 5 root root 4096 Jan 19 23:26 grub&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* setup script to update grub on second SSD, it must be run manually after every kernel update&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@midm9b:~# ln -s ~/git/scripts/etc/update_efi_grub.perl ~/&lt;br /&gt;
root@midm9b:~# ~/update_efi_grub.perl -u&lt;br /&gt;
EFI dir: /boot/efi-sda&lt;br /&gt;
/boot/efi-sda: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sda/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sda: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sda/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
EFI dir: /boot/efi-sdb&lt;br /&gt;
/boot/efi-sdb: update grub: rsync  -av --delete-after --modify-window=2 /boot/efi/grub/ /boot/efi-sdb/grub&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 5,313 bytes  received 11 bytes  10,648.00 bytes/sec&lt;br /&gt;
total size is 7,944,644  speedup is 1,492.23&lt;br /&gt;
/boot/efi-sdb: update efi:  rsync  -av --delete-after --modify-window=2 /boot/efi/EFI/  /boot/efi-sdb/EFI&lt;br /&gt;
building file list ... done&lt;br /&gt;
&lt;br /&gt;
sent 216 bytes  received 11 bytes  454.00 bytes/sec&lt;br /&gt;
total size is 5,452,378  speedup is 24,019.29&lt;br /&gt;
root@midm9b:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable NetworkManager =&lt;br /&gt;
&lt;br /&gt;
NetworkManager is useful for configuring dynamic&lt;br /&gt;
network interfaces, i.e. laptops that often move&lt;br /&gt;
between networks, or connect to multiple choice&lt;br /&gt;
of wifi networks, etc.&lt;br /&gt;
&lt;br /&gt;
For machines with statically configured network interfaces,&lt;br /&gt;
NetworkManager is not necessary.&lt;br /&gt;
&lt;br /&gt;
As it has been observed to become confused and observed&lt;br /&gt;
to malfunction when network links go up and down (it keeps&lt;br /&gt;
unnecessarily reconfiguring the ip address, etc), it can&lt;br /&gt;
be usefuil to disable it.&lt;br /&gt;
&lt;br /&gt;
* list all network interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /bin/ls -1 /sys/class/net/&lt;br /&gt;
enp0s31f6&lt;br /&gt;
lo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/network/interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename enp0s31f6=eth0&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
   address 142.90.120.94/19&lt;br /&gt;
   gateway 142.90.100.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* statically configure systemd-resolved&lt;br /&gt;
** create /etc/systemd/resolved.conf.d/resolved.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Resolve]&lt;br /&gt;
DNS=142.90.100.19&lt;br /&gt;
Domains=triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** systemctl restart systemd-resolved&lt;br /&gt;
** resolvectl&lt;br /&gt;
** systemd-analyze cat-config systemd/resolved.conf&lt;br /&gt;
* disable NetworkManager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Configure ECC memory =&lt;br /&gt;
&lt;br /&gt;
== Configure EDAC ==&lt;br /&gt;
&lt;br /&gt;
* apt install edac-utils&lt;br /&gt;
&lt;br /&gt;
=== Intel i3-2120 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@musr00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X9SCL/X9SCM&lt;br /&gt;
root@musr00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E-2236 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SCM-F&lt;br /&gt;
root@daq00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq00:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq00:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check edac sysfs files (Intel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:10 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank7&lt;br /&gt;
--w------- 1 root root 4096 Jan 25 15:10 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 25 15:10 uevent&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1270 v6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@grsnis01:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@grsnis01:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@grsnis01:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Feb 19 12:35 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank7&lt;br /&gt;
--w------- 1 root root 4096 Feb 19 12:35 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 19 12:35 uevent&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1245 v6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
[root@alphagdaq ~]# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
[root@alphagdaq ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------------------------------+&lt;br /&gt;
          |                      mc0                      |&lt;br /&gt;
          |  csrow0   |  csrow1   |  csrow2   |  csrow3   |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#3channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#3channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --summary&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: mc_event at /usr/sbin/ras-mc-ctl line 1129.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1130.&lt;br /&gt;
[root@alphagdaq ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3700X ===&lt;br /&gt;
&lt;br /&gt;
(memory is non-ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
root@daq13:~# edac-util &lt;br /&gt;
edac-util: Error: No memory controller data found.&lt;br /&gt;
root@daq13:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers loaded. No memory controllers found&lt;br /&gt;
root@daq13:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:26 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Jan 21 16:16 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 21 16:16 uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(memory is ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@trinatdaq:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@trinatdaq:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@trinatdaq:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Dec 15 13:04 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Dec 13 18:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 13 18:31 uevent&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank7&lt;br /&gt;
--w------- 1 root root 4096 Dec 15 13:04 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 uevent&lt;br /&gt;
root@trinatdaq:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 5000G ===&lt;br /&gt;
&lt;br /&gt;
* no linux driver for AMD 5000-series &amp;quot;G&amp;quot; CPU&lt;br /&gt;
* no mention of ECC in the BIOS settings&lt;br /&gt;
* unclear status of ECC support in AMD documentation (sais only &amp;quot;pro&amp;quot; &amp;quot;G&amp;quot; CPUs have ECC)&lt;br /&gt;
* unclear status of ECC support in ASUS documentation (web page out of date)&lt;br /&gt;
&lt;br /&gt;
=== AMD 5600X ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq17:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-XE GAMING WIFI&lt;br /&gt;
root@daq17:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq17:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq17:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Aug 19 19:27 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 May 10 10:11 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 May 10 10:11 uevent&lt;br /&gt;
root@daq17:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Aug 19 19:27 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Aug 19 19:27 rank7&lt;br /&gt;
--w------- 1 root root 4096 Aug 19 19:27 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Aug 19 19:27 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Aug 19 19:27 uevent&lt;br /&gt;
root@daq17:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3955WX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 19 root root    0 Dez 12 04:48 mc0&lt;br /&gt;
drwxr-xr-x  2 root root    0 Dez 12 04:48 power&lt;br /&gt;
lrwxrwxrwx  1 root root    0 Dez  9 05:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r--  1 root root 4096 Dez  9 05:31 uevent&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# &lt;br /&gt;
root@alphasuperdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dez 12 04:48 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank10&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank11&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank12&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank13&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank14&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank15&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank7&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank8&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank9&lt;br /&gt;
--w------- 1 root root 4096 Feb 28 22:19 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 uevent&lt;br /&gt;
root@alphasuperdaq:~# &lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 868.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 869.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 872.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                                                                              mc0                                                                                              |&lt;br /&gt;
    |                                            csrow0                                             |                                            csrow1                                             |&lt;br /&gt;
    | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#0channel#2	0	0&lt;br /&gt;
mc#0csrow#1channel#7	0	0&lt;br /&gt;
mc#0csrow#0channel#3	0	0&lt;br /&gt;
mc#0csrow#1channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#2	0	0&lt;br /&gt;
mc#0csrow#0channel#7	0	0&lt;br /&gt;
mc#0csrow#1channel#3	0	0&lt;br /&gt;
mc#0csrow#0channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#6	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#6	0	0&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: ASUSTeK COMPUTER INC. model Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@alphasuperdaq:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure rasdaemon ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable rasdaemon&lt;br /&gt;
systemctl restart rasdaemon&lt;br /&gt;
systemctl status rasdaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Mon 2021-01-25 15:16:37 PST; 3min 5s ago&lt;br /&gt;
   Main PID: 2477175 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 76958)&lt;br /&gt;
     Memory: 17.1M&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─2477175 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Listening to events for cpus 0 to 11&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mc_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording aer_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording extlog_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mce_record events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording arm_event events&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get reports ==&lt;br /&gt;
&lt;br /&gt;
* Intel 2x32GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-------------------------+&lt;br /&gt;
          |           mc0           |&lt;br /&gt;
          |   csrow0   |   csrow1   |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
channel1: |  16384 MB  |  16384 MB  |&lt;br /&gt;
channel0: |  16384 MB  |  16384 MB  |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Intel 4x16GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
mc#0csrow#2channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#2channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#3channel#0    0       0&lt;br /&gt;
mc#0csrow#3channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------+&lt;br /&gt;
          |          mc0          |&lt;br /&gt;
          |  csrow0   |  csrow1   |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: ubuntu LTS 22.04 DBD::SQLite::db error is not there.&lt;br /&gt;
&lt;br /&gt;
= sensors =&lt;br /&gt;
&lt;br /&gt;
== ASUS P9X79 WS ==&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/supportonly/P9X79%20WS/HelpDesk_Manual/&lt;br /&gt;
* BIOS version 4802&lt;br /&gt;
* modprobe nct6775&lt;br /&gt;
* modprobe coretemp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq14:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +29.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +24.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0200&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +39.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6776-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:           1.04 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:            3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:           3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:             2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:           904.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
3VSB:            3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:            3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:          1265 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:          1909 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:             0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:         +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:         +58.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermal diode&lt;br /&gt;
AUXTIN:         +31.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
PECI Agent 0:   +31.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                         (crit = +96.0°C)&lt;br /&gt;
PCH_CHIP_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:    +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:    +0.0°C  &lt;br /&gt;
intrusion0:    ALARM&lt;br /&gt;
intrusion1:    ALARM&lt;br /&gt;
beep_enable:   disabled&lt;br /&gt;
&lt;br /&gt;
root@daq14:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable CPU turbo mode =&lt;br /&gt;
&lt;br /&gt;
* Intel CPU has a nominal CPU frequency (i.e. 3.4GHz) and a turbo-boost CPU frequency (i.e. 4.0GHz). Here we will enable this turbo-boost mode.&lt;br /&gt;
* Find out CPU capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# lscpu | grep Hz&lt;br /&gt;
Model name:                      Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz&lt;br /&gt;
CPU MHz:                         3965.803&lt;br /&gt;
CPU max MHz:                     4000.0000&lt;br /&gt;
CPU min MHz:                     800.0000&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Look up this CPU in the Intel ARK database - google for the CPU model name, i.e.&lt;br /&gt;
https://ark.intel.com/content/www/us/en/ark/products/88196/intel-core-i7-6700-processor-8m-cache-up-to-4-00-ghz.html&lt;br /&gt;
* Find current frequency settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;powersave&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 2.72 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note the following:&lt;br /&gt;
** current governor is &amp;quot;powersave&amp;quot;&lt;br /&gt;
** &amp;quot;performance&amp;quot; governor is available&lt;br /&gt;
** &amp;quot;boost state support&amp;quot; is supported and active.&lt;br /&gt;
* Confirm CPU frequency governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Change governor to &amp;quot;performance&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-set --governor performance&lt;br /&gt;
Setting cpu: 0&lt;br /&gt;
Setting cpu: 1&lt;br /&gt;
Setting cpu: 2&lt;br /&gt;
Setting cpu: 3&lt;br /&gt;
Setting cpu: 4&lt;br /&gt;
Setting cpu: 5&lt;br /&gt;
Setting cpu: 6&lt;br /&gt;
Setting cpu: 7&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;performance&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 3.93 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* monitor CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower monitor&lt;br /&gt;
    | Nehalem                   || Mperf              || Idle_Stats                                     &lt;br /&gt;
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6   | C7s  | C8    &lt;br /&gt;
   0|  0.00|  0.00|  0.00|  0.00|| 88.80| 11.20|  3973||  0.00|  0.00|  0.01|  0.02|  0.31|  0.00|  4.25&lt;br /&gt;
   4|  0.00|  0.00|  0.00|  0.00||  4.70| 95.30|  3945||  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 95.03&lt;br /&gt;
   1|  0.73|  3.70|  0.00|  0.00||  4.52| 95.48|  3864||  0.00|  0.01|  1.19|  0.44|  2.82|  0.00| 90.23&lt;br /&gt;
   5|  0.73|  3.70|  0.00|  0.00||  0.37| 99.63|  3807||  0.00|  0.00|  0.03|  0.09|  1.70|  0.00| 97.64&lt;br /&gt;
   2|  2.28| 12.86|  0.00|  0.00||  1.41| 98.59|  3829||  0.00|  0.86|  3.17|  0.46|  7.70|  0.00| 85.87&lt;br /&gt;
   6|  2.28| 12.86|  0.00|  0.00||  2.88| 97.12|  3856||  0.00|  0.11|  4.56|  2.15| 10.31|  0.00| 78.99&lt;br /&gt;
   3|  1.33|  4.81|  0.00|  0.00||  0.99| 99.01|  3804||  0.00|  0.49|  0.79|  0.01|  1.03|  0.00| 96.12&lt;br /&gt;
   7|  1.34|  4.81|  0.00|  0.00||  1.26| 98.74|  3818||  0.00|  0.01|  2.32|  0.47|  5.02|  0.00| 90.06&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that the CPU is not overheating:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +38.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +34.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* congratulations, we are running at 4 GHz now!&lt;br /&gt;
&lt;br /&gt;
= Setup ubuntu as gateway to private network =&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* https://daq.triumf.ca/DaqWiki/index.php/VME-CPU#Setup_the_boot_host_computer_.28el7.29&lt;br /&gt;
* http://www.triumf.info/wiki/DAQwiki/index.php/Dhcpd_on_eth1&lt;br /&gt;
&lt;br /&gt;
== Steps to do ==&lt;br /&gt;
&lt;br /&gt;
* assign network numbers to the private network, i.e. 192.168.1.x, 192.168.2.x, etc&lt;br /&gt;
* (on the gateway machine, each private network interface has to have a different network number)&lt;br /&gt;
* (each network interface can have multiple networks attached, via VLANs or via eth0:0, eth0:1 constructs)&lt;br /&gt;
* assign IP addresses on the private network, save them in /etc/hosts i.e. &amp;quot;hvps 192.168.1.10&amp;quot;&lt;br /&gt;
* (for simplicity, assign 192.168.1.1 to the gateway machine itself)&lt;br /&gt;
* (IP addresses 192.168.1.0 and 192.168.1.255 are &amp;quot;special&amp;quot;, do not use them)&lt;br /&gt;
* setup DNS server (dnsmasq) to serve contents of /etc/hosts via DNS (otherwise, many programs will see inconsistent name to IP address mapping)&lt;br /&gt;
* setup DHCP server (ISC dhcpd or dnsmasq) to give out the IP addresses&lt;br /&gt;
* setup tftp, pxelinux and NFS for diskless booting&lt;br /&gt;
* setup time server (chronyd) to provide common time to all devices&lt;br /&gt;
* setup NAT so machines on private network can access the internet (to get OS updates, etc)&lt;br /&gt;
* setup NIS and NFS so machines on the private network can use common home directories&lt;br /&gt;
* setup rsync backup of machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup hosts ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.101 dsfe01&lt;br /&gt;
... and so forth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup dns and dhcp ==&lt;br /&gt;
&lt;br /&gt;
* apt install dnsmasq&lt;br /&gt;
* edit /etc/dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/dnsmasq.conf&lt;br /&gt;
# DNS settings&lt;br /&gt;
#port=0 # disable DNS function&lt;br /&gt;
port=53 # enable DNS function&lt;br /&gt;
domain-needed&lt;br /&gt;
bogus-priv&lt;br /&gt;
no-resolv&lt;br /&gt;
server=142.90.100.19&lt;br /&gt;
# DHCP settings&lt;br /&gt;
interface=enp1s0f0 # DHCP interface&lt;br /&gt;
#dhcp-range=192.168.1.50,192.168.1.150,infinite&lt;br /&gt;
dhcp-range=192.168.1.0,static&lt;br /&gt;
#log-dhcp&lt;br /&gt;
quiet-dhcp&lt;br /&gt;
#dhcp-ignore=tag:!known&lt;br /&gt;
dhcp-boot=pxelinux.0&lt;br /&gt;
#dhcp-host=ac:1f:6b:9e:7f:4a,192.168.1.100,10m&lt;br /&gt;
dhcp-host=ac:1f:6b:9e:7f:4a,dsfe01,infinite&lt;br /&gt;
# TFTP settings&lt;br /&gt;
enable-tftp&lt;br /&gt;
tftp-root=/tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* #mkdir /zssd/tftpboot ### per tftp-root (if no ZFS)&lt;br /&gt;
* zfs create -o mountpoint=/tftpboot rpool/tftpboot ### (if root is ZFS)&lt;br /&gt;
* systemctl stop systemd-resolved.service&lt;br /&gt;
* systemctl disable systemd-resolved.service&lt;br /&gt;
* rm /etc/resolv.conf&lt;br /&gt;
* create new /etc/resolv.conf with this contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 127.0.0.1&lt;br /&gt;
search snolab.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* systemctl enable dnsmasq&lt;br /&gt;
* systemctl restart dnsmasq&lt;br /&gt;
&lt;br /&gt;
== setup chronyd ==&lt;br /&gt;
&lt;br /&gt;
* enable ntp server:&lt;br /&gt;
* configure and enable chronyd per instructions above&lt;br /&gt;
* echo &amp;quot;allow 192.168.1.0/24&amp;quot; &amp;gt; /etc/chrony/conf.d/allow-localhost.conf&lt;br /&gt;
* systemctl restart chronyd&lt;br /&gt;
* chronyc tracking ### wait until time is synchronized (a few seconds)&lt;br /&gt;
&lt;br /&gt;
== setup diskless network booting ==&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2&lt;br /&gt;
tar xjvf syslinux-4.03.tar.bz2&lt;br /&gt;
cd syslinux-4.03&lt;br /&gt;
cp -pv ./core/pxelinux.0 ./com32/hdt/hdt.c32 ./memdisk/memdisk ./com32/menu/menu.c32 /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.iso.zip&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.iso.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.alias&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.pcimap&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/pci.ids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir pxelinux.cfg&lt;br /&gt;
* emacs -nw pxelinux.cfg/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSVSLICE PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label hdt&lt;br /&gt;
  kernel hdt.c32&lt;br /&gt;
&lt;br /&gt;
label memtest86+-5.01 &lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-5.01.iso.gz &lt;br /&gt;
&lt;br /&gt;
label memtest86+-4.20&lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-4.20.iso.zip&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-5.3.0-26-generic&lt;br /&gt;
  menu default&lt;br /&gt;
  kernel vmlinuz-5.3.0-26-generic&lt;br /&gt;
  append initrd=initrd.img-5.3.0-26-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.1.1:/zssd/nfsroot/dsfe01 toram ip=dhcp panic=60 BOOTIF=enp1s0f0&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup linux kernel ===&lt;br /&gt;
&lt;br /&gt;
* copy the kernel files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
rsync -av config* initrd* System.map* vmlinuz* /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
* chmod a+r *&lt;br /&gt;
&lt;br /&gt;
=== setup nfs ===&lt;br /&gt;
&lt;br /&gt;
* apt-get install nfs-kernel-server&lt;br /&gt;
* emacs -nw /etc/exports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/nfsroot/dsfe01 dsfe01(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable services&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl enable nfs-mountd&lt;br /&gt;
systemctl enable nfs-idmapd&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
systemctl restart nfs-mountd&lt;br /&gt;
systemctl restart nfs-idmapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* after editing /etc/exports, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exportfs -av&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup userland ===&lt;br /&gt;
&lt;br /&gt;
* zfs create zssd/nfsroot&lt;br /&gt;
* zfs set dedup=verify zssd/nfsroot ### enable deduplication to save disk space because most linux images have mostly identical files&lt;br /&gt;
* clone ubuntu&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /zssd/nfsroot/dsfe01&lt;br /&gt;
cd /&lt;br /&gt;
rsync -avx . /zssd/nfsroot/dsfe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit config files:&lt;br /&gt;
* cd /zssd/nfsroot/dsfe01&lt;br /&gt;
* emacs -nw etc/hostname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/mailname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/yp.conf ### change daq00.triumf.ca to musr00.triumf.ca&lt;br /&gt;
* emacs -nw etc/defaultdomain ### change to MUSR-NIS&lt;br /&gt;
* cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
* emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
* emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
* emacs -nw etc/fstab ### add this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/nfsroot/dsfe01 / nfs defaults,nolock 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw etc/chrony/chrony.conf&lt;br /&gt;
** comment-out all &amp;quot;pool&amp;quot; and &amp;quot;server&amp;quot; entries&lt;br /&gt;
** add entry &amp;quot;server 192.168.1.1 iburst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After dsfe01 is booted:&lt;br /&gt;
&lt;br /&gt;
* disable services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable apache2&lt;br /&gt;
systemctl disable dnsmasq&lt;br /&gt;
systemctl disable zfs-import-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup additional machines, clone dsfe01 instead of cloning the gateway machine&lt;br /&gt;
&lt;br /&gt;
=== Allow manpages to be viewed ===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted over NFS, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will report a permission error. Fix it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/&lt;br /&gt;
apparmor_parser -R /etc/apparmor.d/usr.bin.man&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup shared home directory ==&lt;br /&gt;
&lt;br /&gt;
=== on the gateway machine ===&lt;br /&gt;
* define netgroups&lt;br /&gt;
* emacs -nw /etc/netgroup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dsfe (dsfe01,,) (dsfe02,,)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/nsswitch.conf ### edit the netgroup line to read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netgroup: files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* export the home directories:&lt;br /&gt;
* emacs -nw /etc/exports ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/home1 @dsfe(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* exportfs -rc&lt;br /&gt;
&lt;br /&gt;
=== on the frontend machine ===&lt;br /&gt;
&lt;br /&gt;
* mkdir /home&lt;br /&gt;
* emacs -nw /etc/fstab ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/home1 /home nfs defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
&lt;br /&gt;
== setup NAT ==&lt;br /&gt;
&lt;br /&gt;
NAT allows machines on the private network to connect to the internet: https://en.wikipedia.org/wiki/Network_address_translation&lt;br /&gt;
&lt;br /&gt;
In these examples:&lt;br /&gt;
* replace &amp;quot;eno1&amp;quot; with name of the outgoing interface (the one connected to the TRIUMF network).&lt;br /&gt;
* replace &amp;quot;enp11s0&amp;quot; with name of the private network interface (192.168.1.x network)&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/rc.local ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
# uncomment following lines if machine has prohibitive FORWARD rules:&lt;br /&gt;
#/sbin/iptables -I FORWARD -i eno1 -o enp11s0 -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
#/sbin/iptables -I FORWARD -i enp11s0 -o eno1 -j ACCEPT&lt;br /&gt;
#iptables -L -v&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
#sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
sh /etc/firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/firewall-rfc1918.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# prevent RFC1918 private network IP addresses from&lt;br /&gt;
# going in and out from our uplink.&lt;br /&gt;
&lt;br /&gt;
ETH=eno1&lt;br /&gt;
&lt;br /&gt;
iptables -F in-rfc1918&lt;br /&gt;
iptables -N in-rfc1918&lt;br /&gt;
iptables -A in-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -I INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -F out-rfc1918&lt;br /&gt;
iptables -N out-rfc1918&lt;br /&gt;
iptables -A out-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -I OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= KVM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install cpu-checker&lt;br /&gt;
&lt;br /&gt;
root@daq13:~# kvm-ok &lt;br /&gt;
INFO: /dev/kvm exists&lt;br /&gt;
KVM acceleration can be used&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&lt;br /&gt;
(if not, shutdown, go into BIOS settings, enable CPU virtualization)&lt;br /&gt;
&lt;br /&gt;
apt install virtinst ### will install many packages&lt;br /&gt;
apt install libvirt-clients libvirt-daemon-system-systemd libvirt-daemon qemu qemu-kvm libvirt-daemon-system virtinst bridge-utils&lt;br /&gt;
&lt;br /&gt;
root@daq13:/home1/wheel# virsh list --all&lt;br /&gt;
 Id   Name           State&lt;br /&gt;
------------------------------&lt;br /&gt;
 1    ubuntu-guest   running&lt;br /&gt;
&lt;br /&gt;
apt install virt-manager&lt;br /&gt;
&lt;br /&gt;
virt-install --name ubuntu-guest --os-variant ubuntu20.04 --vcpus 2 --ram 2048 --location /daq/daqstore/olchansk/linux/Ubuntu/ubuntu-20.04.3-desktop-amd64.iso --network bridge=virbr0,model=virtio --graphics none --extra-args=&#039;console=ttyS0,115200n8 serial&#039;&lt;br /&gt;
&lt;br /&gt;
virtual machine will start, boot, etc&lt;br /&gt;
to get out of it, CTRL + Shift followed by ]&lt;br /&gt;
&lt;br /&gt;
ssh wheel@daq13&lt;br /&gt;
virt-manager&lt;br /&gt;
&lt;br /&gt;
run virt-install again, omit &amp;quot;--graphics none&amp;quot;, open graphics console from virt-manager, it booted into ubuntu installer desktop&lt;br /&gt;
&lt;br /&gt;
virt-install --name test10 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --filesystem /kvm_ladd00,/ --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial&amp;quot; --graphics none&lt;br /&gt;
&lt;br /&gt;
virt-install --name test14 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --disk /tmp/xxx/ladd00.img,bus=sata --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
build image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/tmp/xxx/ladd00.img bs=1024M count=20&lt;br /&gt;
mkfs.ext3 /tmp/xxx/ladd00.img ### ext4 fails to mount by SL6 kernel, &amp;quot;unknown ext4 options&amp;quot;&lt;br /&gt;
cd /kvm_ladd00/&lt;br /&gt;
mount -o loop /tmp/xxx/ladd00.img /mnt/tmp&lt;br /&gt;
rsync -av . /mnt/tmp/ --delete&lt;br /&gt;
umount /mnt/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the guest, configure network: /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script will be executed *after* all the other init scripts.&lt;br /&gt;
# You can put your own initialization stuff in here if you don&#039;t&lt;br /&gt;
# want to do the full Sys V style init stuff.&lt;br /&gt;
&lt;br /&gt;
touch /var/lock/subsys/local&lt;br /&gt;
&lt;br /&gt;
ifconfig eth2 192.168.122.2&lt;br /&gt;
route add -net 0.0.0.0 gw 192.168.122.1&lt;br /&gt;
ifconfig -a&lt;br /&gt;
netstat -rn&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ARM cross-compiler =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libgcc-9-dev-arm64-cross&lt;br /&gt;
apt install gcc-arm-linux-gnueabi&lt;br /&gt;
apt install gcc-arm-linux-gnueabihf&lt;br /&gt;
apt install g++-arm-linux-gnueabihf&lt;br /&gt;
apt install g++-arm-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arm-linux-gnueabi-gcc -o ttcp1 ttcp.c -march=armv7 -static&lt;br /&gt;
arm-linux-gnueabi-gcc -o memcpy.armv7 memcpy.cc -march=armv7 -static -O2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=6440</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=6440"/>
		<updated>2022-06-08T20:18:59Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* NIS and autofs instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Ubuntu =&lt;br /&gt;
&lt;br /&gt;
AAA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ubuntu version =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsb_release -a&lt;br /&gt;
uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu installer =&lt;br /&gt;
&lt;br /&gt;
* updated for Ububtu LTS 20.04.01&lt;br /&gt;
&lt;br /&gt;
* download the latest Ubuntu LTS desktop installer iso image&lt;br /&gt;
* dd the image to a USB key&lt;br /&gt;
* power down, disconnect all disks (all HDDs, all SSDs, all M.2)&lt;br /&gt;
* connect the SSD to be used as system disk&lt;br /&gt;
* if system will use mirrored SSDs (using ZFS mirror), leave second SSD disconnected, we will activate it later&lt;br /&gt;
* power up&lt;br /&gt;
* boot from USB key in legacy mode or UEFI mode (select this in the BIOS boot menu - F8 for ASUS, F11 for Supermicro)&lt;br /&gt;
* follow the instruction:&lt;br /&gt;
* &amp;quot;try ubuntu or install ubuntu&amp;quot; - choose &amp;quot;install&amp;quot;&lt;br /&gt;
* select language - accept default&lt;br /&gt;
* &amp;quot;updates and other software&amp;quot; - accept default settings (&amp;quot;normal install&amp;quot;)&lt;br /&gt;
* &amp;quot;installation type&amp;quot; - select &amp;quot;advanced features&amp;quot; and &amp;quot;experimental: use ZFS&amp;quot;&lt;br /&gt;
* accept partition choice&lt;br /&gt;
* &amp;quot;where are you?&amp;quot; - select &amp;quot;Vancouver&amp;quot; (PST time zone)&lt;br /&gt;
* &amp;quot;who are you?&amp;quot; - leave all fields blank, except &amp;quot;username&amp;quot; set to &amp;quot;wheel&amp;quot;, &amp;quot;password&amp;quot; set to the root password. hostname will be set later after configuring the network&lt;br /&gt;
* installation runs in a few minutes, when finished, reboot&lt;br /&gt;
* login as user wheel&lt;br /&gt;
* answer annouying questions:&lt;br /&gt;
* &amp;quot;livepatch&amp;quot; - say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;help improve&amp;quot; - select &amp;quot;do not send&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;privacy&amp;quot; - leave &amp;quot;location&amp;quot; as &amp;quot;off&amp;quot;, say &amp;quot;next&amp;quot;&lt;br /&gt;
* &amp;quot;ready to go&amp;quot;, say &amp;quot;done&amp;quot;&lt;br /&gt;
* right-click on the desktop, say &amp;quot;open in terminal&amp;quot;, a shell will open&lt;br /&gt;
* say &amp;quot;sudo /bin/bash&amp;quot;, enter the root password, you now have the root shell&lt;br /&gt;
* run nm-connection-editor to configure the network&lt;br /&gt;
* after network is up (can ping ladd00), continue with post-installation steps below&lt;br /&gt;
&lt;br /&gt;
= Install instructions =&lt;br /&gt;
&lt;br /&gt;
== prepare ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ssh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== configure hostname ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap ==&lt;br /&gt;
&lt;br /&gt;
ubuntu installer creates a 2 GB swap partition, not useful&lt;br /&gt;
on 32-64 GB machine, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fstab ### comment out the &amp;quot;swap&amp;quot; line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maybe reboot ==&lt;br /&gt;
&lt;br /&gt;
this is a good point to reboot the machine to boot&lt;br /&gt;
the latest kernel and to set the correct hostname&lt;br /&gt;
&lt;br /&gt;
== install time synchronization ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get -y install chrony&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo server time1.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
echo server time2.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
echo server time3.triumf.ca iburst &amp;gt;&amp;gt; /etc/chrony/chrony.conf&lt;br /&gt;
systemctl disable systemd-timesyncd.service&lt;br /&gt;
systemctl stop systemd-timesyncd.service&lt;br /&gt;
systemctl disable ntp&lt;br /&gt;
systemctl stop ntp&lt;br /&gt;
systemctl enable chrony&lt;br /&gt;
systemctl restart chrony&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
this is different from ubuntu 20. it uses /etc/mailname and it hardwires the hostname into main.cf.&lt;br /&gt;
&lt;br /&gt;
== enable outgoing email ==&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use smtp.triumf.ca&lt;br /&gt;
* CERN: use cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install postfix ### select &amp;quot;satellite system&amp;quot;, enter full hostname &amp;quot;xxx.triumf.ca&amp;quot;, enter &amp;quot;smtp.triumf.ca&amp;quot;&lt;br /&gt;
dpkg-reconfigure postfix ### (if postfix already installed)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install -y mailutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo olchansk@triumf.ca lindner@triumf.ca &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
mailx root&lt;br /&gt;
test&lt;br /&gt;
^D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install missing packages ==&lt;br /&gt;
&lt;br /&gt;
(apt eats terminal input, even the &amp;quot;yes |&amp;quot; trick does not quite work,&lt;br /&gt;
repeat the following commands until they report that everything&lt;br /&gt;
is installed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt -y install ssh tcsh ethtool ncat rsync strace net-tools sysstat smartmontools lm-sensors traceroute time minicom screen git lsof&lt;br /&gt;
yes | apt -y install lsb-release&lt;br /&gt;
yes | apt -y install flex bison&lt;br /&gt;
yes | apt -y install neofetch&lt;br /&gt;
yes | apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
yes | apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
yes | apt -y install python&lt;br /&gt;
yes | apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
yes | apt -y install mariadb-client ### mysql client&lt;br /&gt;
yes | apt -y install libz-dev sqlite3 libsqlite3-dev unixodbc-dev&lt;br /&gt;
yes | apt -y install libssl-dev&lt;br /&gt;
yes | apt -y install emacs xemacs21 joe&lt;br /&gt;
yes | apt -y install gnuplot dos2unix&lt;br /&gt;
yes | apt -y install mutt bsd-mailx # email clients&lt;br /&gt;
yes | apt -y install liblz4-tool pbzip2&lt;br /&gt;
yes | apt -y install libc6-dev-i386 # otherwise no /usr/include/sys/types.h&lt;br /&gt;
yes | apt -y install libreadline-dev&lt;br /&gt;
yes | apt -y install chromium-browser chromium-codecs-ffmpeg-extra&lt;br /&gt;
yes | apt -y install ubuntu-mate-themes&lt;br /&gt;
yes | apt -y install libmotif-dev libxmu-dev&lt;br /&gt;
yes | apt -y install libusb-dev libusb-1.0-0-dev&lt;br /&gt;
yes | apt -y install xfig gsfonts-x11 gsfonts-other # install fonts for xfig&lt;br /&gt;
yes | apt -y install libjson-perl&lt;br /&gt;
yes | apt -y install libgsl-dev # additional GNU Scientific Library&lt;br /&gt;
yes | apt -y install qt5-default # Qt development&lt;br /&gt;
yes | apt -y install python3.8-full python3.8-dev python3.8-dbg python3-pip ### for pyROOT&lt;br /&gt;
yes | apt -y install imagemagick imagemagick-common ckeditor # for elog&lt;br /&gt;
yes | apt -y install linux-tools-common linux-tools-generic # cpupower frequency-info&lt;br /&gt;
yes | apt -y install linux-image-generic-hwe-20.04 linux-tools-virtual-hwe-20.04 # enable linux 5.11 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install git/scripts ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== disable swap (debian 11) ==&lt;br /&gt;
&lt;br /&gt;
* on 64 GB RAM machines swap is not useful&lt;br /&gt;
* on machines booted from network (NFS-ROOT), swap does not work&lt;br /&gt;
* on machines running from flash (RPi, etc), flash is too slow for useful swap&lt;br /&gt;
* swap configured by linux installers invariably has wrong size and is not useful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable dphys-swapfile&lt;br /&gt;
systemctl stop dphys-swapfile&lt;br /&gt;
dphys-swapfile uninstall&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ganglia ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install ganglia-monitor&lt;br /&gt;
systemctl enable ganglia-monitor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/gmond-ubuntu.conf /etc/ganglia/gmond.conf&lt;br /&gt;
ln -s ganglia/gmond.conf /etc&lt;br /&gt;
# ln -s arm-linux-gnueabihf/ganglia /usr/lib/ganglia ### fix path for ARM CPU&lt;br /&gt;
# ln -s i386-linux-gnu/ganglia /usr/lib/ganglia ### fix path for 32-bit Intel CPU&lt;br /&gt;
systemctl restart ganglia-monitor&lt;br /&gt;
systemctl status ganglia-monitor&lt;br /&gt;
ps -efw | grep gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/ganglia&lt;br /&gt;
make install&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install gonodeinfo ==&lt;br /&gt;
&lt;br /&gt;
* go to https://bitbucket.org/dd1/gonodeinfo follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: daq00.triumf.ca:8601&lt;br /&gt;
* run &amp;quot;gonodeinfo -v&amp;quot;&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run /opt/gonodeinfo/gonodereceive.exe -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== install libz.so.1 for CentOS compatibility ==&lt;br /&gt;
&lt;br /&gt;
KO - confirm which versions on quartus need this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yes | apt-get -y install zlib1g&lt;br /&gt;
yes | apt-get -y install zlib1g:i386 libc6:i386 libgcc1:i386 gcc-6-base:i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus compatibility ==&lt;br /&gt;
&lt;br /&gt;
(does not work anymore!!!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ftp.ca.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.50-2+deb8u2_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install libpng12.so.0 for Quartus 13.0sp1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/libpng12.so.0.50.0&lt;br /&gt;
/bin/cp -pv libpng12.so.0 libpng12.so.0.50.0 /lib/x86_64-linux-gnu/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install packages for building ROOT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install libx11-dev libxpm-dev libxft-dev libxext-dev libpng-dev libjpeg-dev xlibmesa-glu-dev libxml2-dev libgsl-dev cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install 32-bit libraries for PHYSICA ==&lt;br /&gt;
&lt;br /&gt;
these instructions are for running 32-bit physica executable built for SL6 on ubuntu LTS 20.04&lt;br /&gt;
&lt;br /&gt;
install physica sources (cannot build, do not have g77)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages&lt;br /&gt;
git clone https://bitbucket.org/ttriumfdaq/physica.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
install 32-bit libraries using ubuntu package manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install lib32z1 # libz.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
copy 32-bit SL6 shared libraries to /lib32&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libX11.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libgd.so.2 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libpng12.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libreadline.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libncurses.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libg2c.so.0 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libxcb.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXpm.so.4 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libjpeg.so.62 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfontconfig.so.1 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libfreetype.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libtinfo.so.5 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libXau.so.6 /lib32/&lt;br /&gt;
root@trinatdaq:~# cp /daq/daqstore/olchansk/daq/physica-SL6/libexpat.so.1 /lib32/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ldd should report:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trinatdaq:trinat&amp;gt; ldd /usr/local/physica/physica.exe&lt;br /&gt;
	linux-gate.so.1 (0xf7fa2000)&lt;br /&gt;
	libX11.so.6 =&amp;gt; /lib32/libX11.so.6 (0xf7e43000)&lt;br /&gt;
	libgd.so.2 =&amp;gt; /lib32/libgd.so.2 (0xf7dfe000)&lt;br /&gt;
	libpng12.so.0 =&amp;gt; /lib32/libpng12.so.0 (0xf7dd6000)&lt;br /&gt;
	libz.so.1 =&amp;gt; /lib32/libz.so.1 (0xf7db8000)&lt;br /&gt;
	libreadline.so.6 =&amp;gt; /lib32/libreadline.so.6 (0xf7d7e000)&lt;br /&gt;
	libncurses.so.5 =&amp;gt; /lib32/libncurses.so.5 (0xf7d5b000)&lt;br /&gt;
	libg2c.so.0 =&amp;gt; /lib32/libg2c.so.0 (0xf7d3d000)&lt;br /&gt;
	libm.so.6 =&amp;gt; /lib32/libm.so.6 (0xf7c39000)&lt;br /&gt;
	libgcc_s.so.1 =&amp;gt; /lib32/libgcc_s.so.1 (0xf7c1a000)&lt;br /&gt;
	libc.so.6 =&amp;gt; /lib32/libc.so.6 (0xf7a2f000)&lt;br /&gt;
	libxcb.so.1 =&amp;gt; /lib32/libxcb.so.1 (0xf7a05000)&lt;br /&gt;
	libdl.so.2 =&amp;gt; /lib32/libdl.so.2 (0xf79ff000)&lt;br /&gt;
	libXpm.so.4 =&amp;gt; /lib32/libXpm.so.4 (0xf79ee000)&lt;br /&gt;
	libjpeg.so.62 =&amp;gt; /lib32/libjpeg.so.62 (0xf7997000)&lt;br /&gt;
	libfontconfig.so.1 =&amp;gt; /lib32/libfontconfig.so.1 (0xf7962000)&lt;br /&gt;
	libfreetype.so.6 =&amp;gt; /lib32/libfreetype.so.6 (0xf78c9000)&lt;br /&gt;
	libtinfo.so.5 =&amp;gt; /lib32/libtinfo.so.5 (0xf78b0000)&lt;br /&gt;
	/lib/ld-linux.so.2 (0xf7fa4000)&lt;br /&gt;
	libXau.so.6 =&amp;gt; /lib32/libXau.so.6 (0xf78ad000)&lt;br /&gt;
	libexpat.so.1 =&amp;gt; /lib32/libexpat.so.1 (0xf7885000)&lt;br /&gt;
trinatdaq:trinat&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
set login environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv TRIUMF_FONTS $HOME/packages/physica/fonts&lt;br /&gt;
setenv PHYSICA_DIR $HOME/packages/physica&lt;br /&gt;
alias physica $PHYSICA_DIR/physica-SL6-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/packages/physica&lt;br /&gt;
physica&lt;br /&gt;
@rangauss.pcm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install desktop environments ==&lt;br /&gt;
&lt;br /&gt;
note: default display manager and default desktop are deficient, please do not skip this step.&lt;br /&gt;
&lt;br /&gt;
note: if apt asks to choose the display manager, select &amp;quot;lightdm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: KO - I recommend the &amp;quot;MATE&amp;quot; desktop.&lt;br /&gt;
&lt;br /&gt;
note: you will have to cut-and-paste this several times because &amp;quot;apt&amp;quot; eats commands, even with &amp;quot;-y&amp;quot; and even piped from &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# install MATE desktop&lt;br /&gt;
yes | apt -y install ubuntu-mate-core ubuntu-mate-desktop ubuntu-mate-themes&lt;br /&gt;
# install Cinnamon desktop&lt;br /&gt;
yes | apt -y install cinnamon&lt;br /&gt;
# install KDE desktop&lt;br /&gt;
yes | apt -y install kubuntu-desktop&lt;br /&gt;
# install Lxqt desktop&lt;br /&gt;
yes | apt -y install lxqt&lt;br /&gt;
# install Xfce4 desktop&lt;br /&gt;
yes | apt -y install xfce4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install ROOT ==&lt;br /&gt;
&lt;br /&gt;
Please install ROOT per instructions at http://root.cern.ch.&lt;br /&gt;
&lt;br /&gt;
NOTE1: The ROOT package available from Ubuntu repositories is severely out of date and cannot be used with MIDAS and ROOTANA. ### DO NOT DO THIS! apt-get install root-system&lt;br /&gt;
&lt;br /&gt;
NOTE2: as of 2017-Jan-09, ROOT binary kits for Ubuntu do not work (use GCC 5 instead of GCC6), build from source instead.&lt;br /&gt;
&lt;br /&gt;
== Install x2go ==&lt;br /&gt;
&lt;br /&gt;
KO - is this still needed? does it cause any security problems?&lt;br /&gt;
&lt;br /&gt;
x2go instructions, thanks to Art O.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add-apt-repository ppa:x2go/stable&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install x2goserver x2goserver-xsession&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== enable root login from ladd00/daq00 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
CTRL-C&lt;br /&gt;
/bin/cp ~root/git/scripts/etc/authorized_keys ~root/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install smart-status ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s ~/git/scripts/smart-status/smart-status.perl ~root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== reboot ==&lt;br /&gt;
&lt;br /&gt;
this completes installation of the base system.&lt;br /&gt;
&lt;br /&gt;
following sections modify basic ubuntu to fix known problems and to enable special stuff.&lt;br /&gt;
&lt;br /&gt;
= Enable automatic updates =&lt;br /&gt;
&lt;br /&gt;
* apt install unattended-upgrades&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/50unattended-upgrades&lt;br /&gt;
** uncomment in Allowed-Origins &amp;quot;-security&amp;quot; and &amp;quot;-updates&amp;quot;&lt;br /&gt;
** add in Allowed-Origins: &amp;quot;Google LLC:stable&amp;quot;;&lt;br /&gt;
** uncomment/add: &amp;quot;Unattended-Upgrade::Mail &amp;quot;root&amp;quot;;&lt;br /&gt;
* emacs -nw /etc/apt/apt.conf.d/10periodic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APT::Periodic::Update-Package-Lists &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::Download-Upgradeable-Packages &amp;quot;1&amp;quot;;&lt;br /&gt;
APT::Periodic::AutocleanInterval &amp;quot;7&amp;quot;;&lt;br /&gt;
APT::Periodic::Unattended-Upgrade &amp;quot;1&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* test: unattended-upgrade --dry-run -v&lt;br /&gt;
&lt;br /&gt;
= Fix bpool is full =&lt;br /&gt;
&lt;br /&gt;
!!! only if ROOT on ZFS !!!&lt;br /&gt;
&lt;br /&gt;
There is an error in the zsys package that causes bpool to run out of space,&lt;br /&gt;
see [[#Ubuntu zsys]] for more details.&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/zsys.conf /etc/&lt;br /&gt;
zsysctl service reload&lt;br /&gt;
zsysctl service gc&lt;br /&gt;
zpool list bpool&lt;br /&gt;
zfs list bpool&lt;br /&gt;
df /boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= IPMI instructions =&lt;br /&gt;
&lt;br /&gt;
IPMI is the board management hardware on Supermicro and other server motherboards. This includes hardware sensors - fan rotation speed, temperatures and power supply voltages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ipmitool&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
* ipmitool sel list ### event list&lt;br /&gt;
* ipmitool sel elist ### event list&lt;br /&gt;
* ipmitool sel clear ### clear event list (if it becomes full)&lt;br /&gt;
* ipmitool sensor ### report hardware sensors&lt;br /&gt;
&lt;br /&gt;
= move /home/wheel =&lt;br /&gt;
&lt;br /&gt;
note: this MUST be done if ZFS root and NIS/autofs with /home.&lt;br /&gt;
&lt;br /&gt;
Default location of wheel&#039;s home directory will collide with autofs /home, it has to be moved,&lt;br /&gt;
for example to /wheel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# logout from the wheel user&lt;br /&gt;
# go to another computer&lt;br /&gt;
ssh root@daqubuntuxxx&lt;br /&gt;
zfs list | grep wheel ### identify zfs name wheel_xxxxxx&lt;br /&gt;
zfs set mountpoint=/wheel rpool/USERDATA/wheel_hm8fzh&lt;br /&gt;
emacs -nw /etc/passwd ### change wheel&#039;s home directory from /home/wheel to /wheel&lt;br /&gt;
su - wheel ### check that user wheel still works&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= NIS instructions (debian 11) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install rpcbind nis&lt;br /&gt;
echo DAQ-NIS &amp;gt;&amp;gt; /etc/defaultdomain&lt;br /&gt;
echo ypserver daq00.triumf.ca &amp;gt;&amp;gt; /etc/yp.conf&lt;br /&gt;
systemctl enable ypbind.service&lt;br /&gt;
systemctl restart ypbind.service&lt;br /&gt;
systemctl status ypbind.service&lt;br /&gt;
ypwhich -m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then as below:&lt;br /&gt;
&lt;br /&gt;
= NIS and autofs instructions =&lt;br /&gt;
&lt;br /&gt;
* apt-get -y install portmap nis ### will ask for NIS domain (DAQ-NIS)&lt;br /&gt;
* dpkg-reconfigure nis ### reconfigure if already installed&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* edit /etc/default/nis&lt;br /&gt;
** set &amp;quot;NISSERVER=slave&amp;quot;&lt;br /&gt;
** Ubuntu LTS 20.04, check that &amp;quot;YPBINDARGS=&amp;quot; is blank, remove &amp;quot;-no-dbus&amp;quot; if it is there&lt;br /&gt;
* #edit /etc/yp.conf, comment-out everything, add &amp;quot;domain DAQ-NIS server localhost&amp;quot;&lt;br /&gt;
* edit /etc/yp.conf, comment-out everything, add &amp;quot;ypserver localhost&amp;quot;&lt;br /&gt;
* /usr/lib/yp/ypinit -s daq00&lt;br /&gt;
* systemctl enable nis&lt;br /&gt;
* systemctl restart nis&lt;br /&gt;
* ypwhich&lt;br /&gt;
* ypwhich -m&lt;br /&gt;
* ypcat -k passwd&lt;br /&gt;
* apt-get -y install autofs&lt;br /&gt;
* systemctl enable autofs&lt;br /&gt;
* vi /etc/nsswitch.conf ### add the automount line, modify the passwd, group and shadow lines to read this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# begin get data from nis&lt;br /&gt;
passwd: files nis&lt;br /&gt;
group: files nis&lt;br /&gt;
shadow: files nis&lt;br /&gt;
automount:  files nis&lt;br /&gt;
netgroup: files nis&lt;br /&gt;
# end get data from nis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* systemctl restart autofs&lt;br /&gt;
* enable hourly update of NIS maps&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ### NOT NEEDED sudo vi /etc/idmapd.conf ### add line: &amp;quot;Domain = triumf.ca&amp;quot;&lt;br /&gt;
* ls -l /home/olchansk ### test autofs, check file owner is correct&lt;br /&gt;
&lt;br /&gt;
= NIS master =&lt;br /&gt;
&lt;br /&gt;
notes for setting up the NIS master&lt;br /&gt;
&lt;br /&gt;
== wheel user ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;wheel&amp;quot; is the default administrative user. We do not want it&#039;s password exported to NIS (encrypted password hash is world visible) and we do not want it&#039;s home directory exported to NFS (~wheel/.ssh is world visible and potentially writable: anybody can change ~wheel/.ssh/authorized_keys).&lt;br /&gt;
&lt;br /&gt;
* move wheel&#039;s home directory from /home/wheel to /wheel (see special section about this)&lt;br /&gt;
* change wheel&#039;s UID and GID from 1000 to a value below NIMUID in /var/yp/Makefile&lt;br /&gt;
&lt;br /&gt;
== coherent uids ==&lt;br /&gt;
&lt;br /&gt;
we do not want system accounts defined in /etc/passwd of the NIS master&lt;br /&gt;
to be included in the NIS map &amp;quot;passwd&amp;quot;. this causes trouble on NIS clients&lt;br /&gt;
where newly installed packages fail to create local system users because same&lt;br /&gt;
user already exists in NIS.&lt;br /&gt;
&lt;br /&gt;
This is controlled by MINUID in /var/yp/Makefile.&lt;br /&gt;
&lt;br /&gt;
Historical TRIUMF uids start from around 200, but several clusters do not have any historic TRIUMF uids below 500 and MINUID is set to:&lt;br /&gt;
* DAQ-NIS: MINUID=200&lt;br /&gt;
* ISAC-NIS: MINUID=500&lt;br /&gt;
* TITAN-NIS: MINUID=500&lt;br /&gt;
* MUSR-NIS: MINUID=500&lt;br /&gt;
* TIG-NIS: MINUID=500 (100 on SL6 mother8pi)&lt;br /&gt;
&lt;br /&gt;
Ubuntu 20 has two programs to create users:&lt;br /&gt;
* adduser - creates new users with UID 1000 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* adduser --system - creates new system users with UID 100 and up as specified in /etc/adduser.conf. No problems here.&lt;br /&gt;
* useradd - creates new users with UID 1000 and up as specified in /etc/login.defs. No problems here.&lt;br /&gt;
* useradd --system - creates new system users with UID 999 and down (read &amp;quot;man useradd&amp;quot;, section at the end about SYS_UID_MAX). This collides with NIS MINUID, these system users will be included in the NIS map and cause trouble.&lt;br /&gt;
&lt;br /&gt;
This problem cannot be fixed, SYS_UID_MIN, SYS_UID_MAX and UID_MIN in /etc/login.defs do not seem&lt;br /&gt;
to have any effect on UIDs chosen by &amp;quot;useradd --system&amp;quot;. (tested on Ubuntu LTS 20.04).&lt;br /&gt;
&lt;br /&gt;
So far only these system accounts seem to be affected by this:&lt;br /&gt;
* systemd-coredump&lt;br /&gt;
* ganglia&lt;br /&gt;
&lt;br /&gt;
To fix:&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/passwd&amp;quot; to identify the last unused system user uid (range 100..200)&lt;br /&gt;
* run &amp;quot;sort -r -n -t: -k3 /etc/group&amp;quot; to identify the last unused system user gid (range 100.200)&lt;br /&gt;
* systemd-coredump: manually change UID and GID (package systemd-coredump is usually not installed)&lt;br /&gt;
* ganglia: same thing, then change ownership on all ganglia files.&lt;br /&gt;
&lt;br /&gt;
Also read systemd author&#039;s opinion on system vs user UIDs:&lt;br /&gt;
https://github.com/systemd/systemd/issues/4850#issuecomment-265698275&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-logind NIS breakage =&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED FOR UBUNTU LTS 20.04 !!!&lt;br /&gt;
&lt;br /&gt;
there is a delay in ssh logins for normal users. &amp;quot;ssh -v&amp;quot; shows the delay is after &amp;quot;pledge...&amp;quot;. this&lt;br /&gt;
fix removes the delay.&lt;br /&gt;
&lt;br /&gt;
systemd developers think that we should not use NIS and made sure there are&lt;br /&gt;
problems if we do. To give them credit, they do offer a workaround. Read this:&lt;br /&gt;
https://github.com/poettering/systemd/commit/695fe4078f0df6564a1be1c4a6a9e8a640d23b67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-logind.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-logind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-logind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fix systemd-udevd NIS breakage =&lt;br /&gt;
&lt;br /&gt;
see same problem as above with udev getting stuck. ubuntu lts 20.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/systemd-udevd.service.d&lt;br /&gt;
echo -e &amp;quot;[Service]\nIPAddressDeny=\n&amp;quot; &amp;gt; /etc/systemd/system/systemd-udevd.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat systemd-udevd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure lightdm display manager =&lt;br /&gt;
&lt;br /&gt;
* enable it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo lightdm | dpkg-reconfigure -fteletype lightdm&lt;br /&gt;
systemctl disable gdm&lt;br /&gt;
systemctl disable sddm&lt;br /&gt;
systemctl enable lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable login by NIS users&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp -v etc/lightdm_enable_nis_login.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart lightdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop gdm&lt;br /&gt;
systemctl restart lightdm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install libpng12.so.0 =&lt;br /&gt;
&lt;br /&gt;
Quartus 16 needs libpng12:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
dpkg --install libpng12-0_1.2.54-1ubuntu1_amd64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install google-chrome =&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
https://www.ubuntuupdates.org/ppa/google_chrome?dist=stable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -&lt;br /&gt;
sh -c &#039;echo &amp;quot;deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/google-tmp.list&#039;&lt;br /&gt;
apt update&lt;br /&gt;
apt install google-chrome-stable&lt;br /&gt;
/bin/rm -f /etc/apt/sources.list.d/google-tmp.list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install amanda client =&lt;br /&gt;
&lt;br /&gt;
* apt install amanda-client&lt;br /&gt;
* edit /etc/amandahosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amanda.triumf.ca amanda amdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check permissions on /etc/amandahosts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:/var/log/amanda# ls -l /etc/amandahosts&lt;br /&gt;
-rw------- 1 backup backup 49 Jan 27 10:48 /etc/amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* fix if needed: chown backup.backup /etc/amandahosts; chmod a= /etc/amandahosts; chmod u=wr /etc/amandahosts&lt;br /&gt;
* edit /etc/amanda-security.conf, add this line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runtar:gnutar_path=/usr/bin/tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the amanda machine:&lt;br /&gt;
&lt;br /&gt;
* in amanda disklist, use dump type &amp;quot;bsdtcp-comp-user-tar&amp;quot;&lt;br /&gt;
* su - amanda and run amcheck -c daq00&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.1$ amcheck -c daily daq00&lt;br /&gt;
&lt;br /&gt;
Amanda Backup Client Hosts Check&lt;br /&gt;
--------------------------------&lt;br /&gt;
Client check: 1 host checked in 0.092 seconds.  0 problems found.&lt;br /&gt;
&lt;br /&gt;
(brought to you by Amanda 3.3.7p1.git.685ff76d)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable rc.local =&lt;br /&gt;
&lt;br /&gt;
For reasons unknown, Ubuntu LTS 20.04 does not enable /etc/rc.local. Do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cp etc/rc.local /etc/&lt;br /&gt;
chmod a+rx /etc/rc.local&lt;br /&gt;
cp etc/rc-local.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable unwanted services =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable mpd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Disable sleep and suspend =&lt;br /&gt;
&lt;br /&gt;
note: we see some computers randomly shutdown or go to sleep, log files indicates the &amp;quot;sleep&amp;quot; or &amp;quot;suspend&amp;quot; button was pushed by user, but no such buttons actually exist. this is the fix for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target systemd-suspend.service systemd-hybrid-sleep.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable crontab @reboot for MIDAS =&lt;br /&gt;
&lt;br /&gt;
startup scripts have a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/cron.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/cron.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat cron.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependency tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
Crontab entry to start midas: (install in the midas user crontab, not root crontab)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - midasuser&lt;br /&gt;
crontab -l&lt;br /&gt;
#@reboot /bin/bash -l -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
#@reboot /bin/tcsh -c &amp;quot;/home/trinat/bin/start-daq-applications&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install apache httpd proxy for midas and elog =&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache2.&lt;br /&gt;
&lt;br /&gt;
First, configure apache2:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install apache2&lt;br /&gt;
cd /etc/apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file conf-available/ssl-daq14.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file sites-available/daq14-ssl.conf # use actual hostname instead of daq14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
    &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName daq14.triumf.ca&lt;br /&gt;
        DocumentRoot /var/www/html&lt;br /&gt;
        ErrorLog /var/log/apache2/daq14.log&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        # note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
        ## use port specified in elogd.cfg&lt;br /&gt;
        #ProxyPass /elog/ http://localhost:8082/ retry=1 &lt;br /&gt;
        ## use mhttpd port&lt;br /&gt;
        #ProxyPass /      http://localhost:8080/ retry=1 &lt;br /&gt;
        Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
        &amp;lt;Location /&amp;gt;&lt;br /&gt;
            SSLRequireSSL&lt;br /&gt;
            AuthType Basic&lt;br /&gt;
            AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
            Require valid-user&lt;br /&gt;
            # create password file: touch /etc/apache2/htpasswd&lt;br /&gt;
            # to add new user or change password: htpasswd /etc/apache2/htpasswd username&lt;br /&gt;
            AuthUserFile /etc/apache2/htpasswd&lt;br /&gt;
        &amp;lt;/Location&amp;gt;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* stop apache2 from listening on port 80: edit /etc/apache2/ports.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable ssl module&lt;br /&gt;
* enable new configurations&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
a2enmod headers&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
a2enconf ssl-daq14&lt;br /&gt;
a2ensite daq14-ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable default ssl sites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dissite 000-default-le-ssl&lt;br /&gt;
a2dissite 000-default&lt;br /&gt;
ls -l /etc/apache2/sites-enabled/ ### should show only daq14-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that there are no syntax problems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable and start apache2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* apache2 may fail to start, look in /var/log/apache2/error.log and /var/log/apache2/daq14.log&lt;br /&gt;
* if it says &amp;quot;Failed to configure ... certificate&amp;quot;, proceed to the step for setting certbot.&lt;br /&gt;
* try to access https://daq14.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, look at documentation for ufw.&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that apache2 is listening on port 80, follow the apache2 instructions above (remove &amp;quot;listen 80&amp;quot; from apache2.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot (if necessary open tcp port 80 in the firewall, see documentation for ufw):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install certbot python3-certbot-apache&lt;br /&gt;
certbot certonly --standalone --installer apache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq14.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot install --apache --cert-name daq14.triumf.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside /etc/apache2/sites-enabled/daq14-ssl.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in&lt;br /&gt;
/etc/letsencrypt/live/daq14.triumf.ca/&lt;br /&gt;
* to check current renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work with current version of certbot&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/apache2/htpasswd&lt;br /&gt;
htpasswd /etc/apache2/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* restart apache2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try accessing MIDAS https://daq14.triumf.ca/ (make sure mhttpd is running)&lt;br /&gt;
* if it&#039;s not working, check odb setting FIXME!&lt;br /&gt;
* try accessing ELog https://daq14.triumf.ca/elog/ (make sure elogd is running)&lt;br /&gt;
* if it&#039;s not working, check elogd.cfg file and make sure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSL                  = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
= Enable elog PDF preview =&lt;br /&gt;
&lt;br /&gt;
see https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&lt;br /&gt;
&lt;br /&gt;
* xemacs -nw /etc/ImageMagick-6/policy.xml&lt;br /&gt;
* remove this section at the end:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- disable ghostscript format types --&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PS3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;EPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;PDF&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;policy domain=&amp;quot;coder&amp;quot; rights=&amp;quot;none&amp;quot; pattern=&amp;quot;XPS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS quota report =&lt;br /&gt;
&lt;br /&gt;
If there are any ZFS volumes, install script to report disk and quota usage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/quotareport&lt;br /&gt;
git pull&lt;br /&gt;
mkdir /var/www/html/zfsquotareport&lt;br /&gt;
cp -pv ~/git/scripts/quotareport/sorttable.js /var/www/html/zfsquotareport/&lt;br /&gt;
ln -s $PWD/zfsquotareport.perl /etc/cron.daily/&lt;br /&gt;
touch /etc/crontab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If httpd is configured to redirect &amp;quot;/&amp;quot; to MIDAS mhttpd:&lt;br /&gt;
* add following to /etc/apache2/sites-enabled/xxx-ssl.conf in front of &amp;quot;ProxyPass / ...&amp;quot;&lt;br /&gt;
* run &amp;quot;systemctl reload apache2&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## do not proxy zfs quota report directory &lt;br /&gt;
ProxyPass /zfsquotareport/ ! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install PHP =&lt;br /&gt;
&lt;br /&gt;
* apt install php libapache2-mod-php&lt;br /&gt;
* systemctl restart apache2&lt;br /&gt;
* create /var/www/html/info.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
phpinfo(); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://daq00.triumf.ca/info.php&lt;br /&gt;
&lt;br /&gt;
= Configure TRIUMF printers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable core dumps =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 installs the apport package&lt;br /&gt;
which disabled core dumps from user applications. (google it up!).&lt;br /&gt;
It is not meant to do this and documentation claims that&lt;br /&gt;
it is not installed and not enabled by default. Oh, well...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove apport&lt;br /&gt;
apt autoremove ### will remove apport-symptoms and a few other packages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, core dumps are written to file &amp;quot;core&amp;quot; in the current directory.&lt;br /&gt;
See /proc/sys/kernel/core_pattern and /proc/sys/kernel/core_uses_pid.&lt;br /&gt;
&lt;br /&gt;
= Enable debugger =&lt;br /&gt;
&lt;br /&gt;
By default, Ubuntu LTS 20.04 does not permit debugger to attach and debug&lt;br /&gt;
already running programs. To enable it, add following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure GRUB boot loader =&lt;br /&gt;
&lt;br /&gt;
This will enable the grub menu (with a 10 sec timeout) and&lt;br /&gt;
replace black screen with exciting linux boot messages.&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_DEFAULT=0&lt;br /&gt;
#GRUB_TIMEOUT_STYLE=hidden&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;vga=769 video=640x480&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;&amp;quot;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
#GRUB_GFXMODE=640x480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update grub config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-mkconfig -o /boot/grub/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Update packages =&lt;br /&gt;
&lt;br /&gt;
* apt-get update # update package list&lt;br /&gt;
* apt-get dist-upgrade # install updated packages and update &amp;quot;kept back&amp;quot; packages&lt;br /&gt;
* apt-get autoremove # remove packages that apt thinks should be removed&lt;br /&gt;
&lt;br /&gt;
= Finish installation =&lt;br /&gt;
&lt;br /&gt;
* reboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install ZFS =&lt;br /&gt;
&lt;br /&gt;
!!! after installing all the packages, after updating the system, after updating the linux kernel, after rebooting into latest kernel !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install zfsutils-linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow generic ZFS instructions: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
= Update to new version of Ubuntu =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/update-manager/release-upgrades # set &amp;quot;Prompt=normal&amp;quot;&lt;br /&gt;
do-release-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu package manager =&lt;br /&gt;
&lt;br /&gt;
* apt-get install xxx # install package xxx&lt;br /&gt;
* apt-get update&lt;br /&gt;
* apt-get upgrade&lt;br /&gt;
* apt-get dist-upgrade&lt;br /&gt;
* apt-get autoremove # remove automatically installed packages required by a removed package&lt;br /&gt;
* apt-get remove xxx # remove package xxx&lt;br /&gt;
* apt-cache search . # list all available packages&lt;br /&gt;
* apt-cache show &amp;quot;.&amp;quot; | grep ^Package # list al available packages&lt;br /&gt;
* apt-cache madison root-system # show all available versions of package root-system&lt;br /&gt;
* apt list # list all installed packages&lt;br /&gt;
* dpkg --listfiles libpng16-16 # list all files from this package&lt;br /&gt;
* apt list --installed # list all installed packages&lt;br /&gt;
* dpkg -S /bin/bash # what package provides this file?&lt;br /&gt;
* dpkg -L bash # what files provided by this package?&lt;br /&gt;
&lt;br /&gt;
= Ubuntu zsys =&lt;br /&gt;
&lt;br /&gt;
* manages system snapshots&lt;br /&gt;
* documentation: https://github.com/ubuntu/zsys&lt;br /&gt;
* documentation: (go to next article via link &amp;quot;newer&amp;quot; at the bottom) https://didrocks.fr/2020/05/21/zfs-focus-on-ubuntu-20.04-lts-whats-new/&lt;br /&gt;
* ubuntu 20.04 bug, too many snapshots cause /boot to become full and updates fail. https://github.com/ubuntu/zsys/issues/155&lt;br /&gt;
* solution: use custom /etc/zsys.conf, limit number of snapshots to 10, see trinatdaq:/etc/zsys.conf&lt;br /&gt;
* zsys commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-grub # list of all snapshots, errors if some snapshots are broken&lt;br /&gt;
zsysctl state remove lnc0k7 --system # remove snapshot&lt;br /&gt;
xemacs -nw /etc/zsys.conf; zsysctl service reload; zsysctl service gc # cause gc to run with new settings in zsys.conf&lt;br /&gt;
zfs list -r -t snapshot -o name,used,referenced,creation bpool/BOOT # list snapshots&lt;br /&gt;
zsysctl show # show snapshots&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu cloning =&lt;br /&gt;
&lt;br /&gt;
to clone a ubuntu image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /nfsroot/lxcpet&lt;br /&gt;
emacs -nw etc/hostname ### change hostname&lt;br /&gt;
emacs -nw etc/mailname ### change hostname (debian 11)&lt;br /&gt;
emacs -nw etc/defaultdomain ### change the NIS domainname&lt;br /&gt;
emacs -nw etc/yp.conf ### change the NIS server&lt;br /&gt;
cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ubuntu boot loader =&lt;br /&gt;
&lt;br /&gt;
== boot from ZFS ==&lt;br /&gt;
&lt;br /&gt;
* use UEFI boot with syslinux, see here: https://daq.triumf.ca/DaqWiki/index.php/SLinstall#Configure_UEFI_boot&lt;br /&gt;
* apt install zfs-initramfs&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* ZFS structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# zfs list&lt;br /&gt;
NAME                                               USED  AVAIL     REFER  MOUNTPOINT&lt;br /&gt;
rpool                                              147G  1.62T       96K  /&lt;br /&gt;
rpool/ROOT                                        17.8G  1.62T       96K  none&lt;br /&gt;
rpool/ROOT/ubuntu_00aaaa                          17.8G  1.62T     6.22G  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy OS image to rpool/ROOT/ubuntu_00aaaa&lt;br /&gt;
* zfs set mountpoint=/ rpool&lt;br /&gt;
* zfs set mountpoint=none rpool/ROOT&lt;br /&gt;
* zfs set mountpoint=/ rpool/ROOT/ubuntu_00aaaa&lt;br /&gt;
* zfs get all | grep mountpoint&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpool                     mountpoint            /                      local&lt;br /&gt;
rpool/ROOT                mountpoint            none                   local&lt;br /&gt;
rpool/ROOT/ubuntu_00aaaa  mountpoint            /                      local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* in linux kernel command line (syslinux.cfg), set &amp;quot;root=&amp;quot; to &amp;quot;root=ZFS=rpool/ROOT/ubuntu_00aaaa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== boot from ZFS mirror ==&lt;br /&gt;
&lt;br /&gt;
=== setup the EFI partitions ===&lt;br /&gt;
&lt;br /&gt;
* assuming /dev/sdb is already setup for EFI boot, setup /dev/sda the same way:&lt;br /&gt;
* partition the second boot disk same as first boot disk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# gdisk -l /dev/sdb&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI system partition&lt;br /&gt;
   2         1050624      3907029134   1.8 TiB     8300  Linux filesystem&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkfs.msdos /dev/sdX1&lt;br /&gt;
* create mount points&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda1 /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1 &lt;br /&gt;
/dev/sdb1 /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
* df | grep boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# df | grep boot&lt;br /&gt;
/dev/sdb1                    523248    98100     425148  19% /boot/efi-sdb&lt;br /&gt;
/dev/sda1                    523248        4     523244   1% /boot/efi-sda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy boot files to new boot disk&lt;br /&gt;
* cd /boot/efi-sdX; rsync -av . /boot/efi-sdY&lt;br /&gt;
* set BIOS to boot from &amp;quot;UEFI Hard drive&amp;quot;, disable legacy boot (except for booting from USB key in legacy mode)&lt;br /&gt;
* if using UEFI boot syslinux per these instructions, linux kernel update has to be done manually by running the script update_efi_mirror.perl (provided by K.O.), follow instructions that it prints.&lt;br /&gt;
&lt;br /&gt;
=== zetup zfs mirror ===&lt;br /&gt;
&lt;br /&gt;
* see here: https://daq.triumf.ca/DaqWiki/index.php/ZFS#Convert_pool_from_single_to_mirror&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# ls -l /dev/disk/by-id/ata*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Feb 19 16:47 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801081-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Feb 19 16:47 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801101-part2 -&amp;gt; ../../sdb2&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: none requested&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                             STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                            ONLINE       0     0     0&lt;br /&gt;
          ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool attach rpool ata-WDC_WDS200T2B0A-00SM50_205007801101-part2 /dev/disk/by-id/ata-WDC_WDS200T2B0A-00SM50_205007801081-part2&lt;br /&gt;
&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
status: One or more devices is currently being resilvered.  The pool will&lt;br /&gt;
        continue to function, possibly in a degraded state.&lt;br /&gt;
action: Wait for the resilver to complete.&lt;br /&gt;
  scan: resilver in progress since Fri Feb 19 16:54:39 2021&lt;br /&gt;
        12.6G scanned at 3.16G/s, 1.02G issued at 262M/s, 12.6G total&lt;br /&gt;
        1.02G resilvered, 8.09% done, 0 days 00:00:45 to go&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                               STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                              ONLINE       0     0     0&lt;br /&gt;
          mirror-0                                         ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801081-part2  ONLINE       0     0     0  (resilvering)&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* wait&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@grsnis01:~# zpool status&lt;br /&gt;
  pool: rpool&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
  scan: resilvered 12.7G in 0 days 00:00:40 with 0 errors on Fri Feb 19 16:55:19 2021&lt;br /&gt;
config:&lt;br /&gt;
&lt;br /&gt;
        NAME                                               STATE     READ WRITE CKSUM&lt;br /&gt;
        rpool                                              ONLINE       0     0     0&lt;br /&gt;
          mirror-0                                         ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801101-part2  ONLINE       0     0     0&lt;br /&gt;
            ata-WDC_WDS200T2B0A-00SM50_205007801081-part2  ONLINE       0     0     0&lt;br /&gt;
&lt;br /&gt;
errors: No known data errors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== maintenance commands ==&lt;br /&gt;
&lt;br /&gt;
* update-initramfs -v -u&lt;br /&gt;
* grub-install /dev/sda&lt;br /&gt;
&lt;br /&gt;
= Disable NetworkManager =&lt;br /&gt;
&lt;br /&gt;
NetworkManager is useful for configuring dynamic&lt;br /&gt;
network interfaces, i.e. laptops that often move&lt;br /&gt;
between networks, or connect to multiple choice&lt;br /&gt;
of wifi networks, etc.&lt;br /&gt;
&lt;br /&gt;
For machines with statically configured network interfaces,&lt;br /&gt;
NetworkManager is not necessary.&lt;br /&gt;
&lt;br /&gt;
As it has been observed to become confused and observed&lt;br /&gt;
to malfunction when network links go up and down (it keeps&lt;br /&gt;
unnecessarily reconfiguring the ip address, etc), it can&lt;br /&gt;
be usefuil to disable it.&lt;br /&gt;
&lt;br /&gt;
* list all network interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /bin/ls -1 /sys/class/net/&lt;br /&gt;
enp0s31f6&lt;br /&gt;
lo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit /etc/network/interfaces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename enp0s31f6=eth0&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
   address 142.90.120.94/19&lt;br /&gt;
   gateway 142.90.100.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* statically configure systemd-resolved&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xemacs -nw /etc/systemd/resolved.conf ### to read this:&lt;br /&gt;
XXX&lt;br /&gt;
[Resolve] &lt;br /&gt;
DNS=142.90.100.19&lt;br /&gt;
Domains=triumf.ca&lt;br /&gt;
XXX&lt;br /&gt;
systemctl restart systemd-resolved&lt;br /&gt;
resolvectl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable NetworkManager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable NetworkManager&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
&lt;br /&gt;
= Configure ECC memory =&lt;br /&gt;
&lt;br /&gt;
== Configure EDAC ==&lt;br /&gt;
&lt;br /&gt;
* apt install edac-utils&lt;br /&gt;
&lt;br /&gt;
=== Intel E-2236 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SCM-F&lt;br /&gt;
root@daq00:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@daq00:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@daq00:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check edac sysfs files (Intel)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:10 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Jan 25 15:10 rank7&lt;br /&gt;
--w------- 1 root root 4096 Jan 25 15:10 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Jan 25 15:10 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 25 15:10 uevent&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1270 v6 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
root@wheel-SYS-5019S-M:~/git/scripts# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@grsnis01:~# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@grsnis01:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@grsnis01:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Feb 19 12:35 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Feb 19 12:35 rank7&lt;br /&gt;
--w------- 1 root root 4096 Feb 19 12:35 reset_counters&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 19 12:35 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 19 12:35 uevent&lt;br /&gt;
root@grsnis01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Intel E3-1245 v6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: Supermicro X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
[root@alphagdaq ~]# edac-util&lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
[root@alphagdaq ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------------------------------+&lt;br /&gt;
          |                      mc0                      |&lt;br /&gt;
          |  csrow0   |  csrow1   |  csrow2   |  csrow3   |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------------------------------+&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#3channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#1	0	0&lt;br /&gt;
mc#0csrow#3channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#2channel#0	0	0&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SSH-F&lt;br /&gt;
[root@alphagdaq ~]# ras-mc-ctl --summary&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: mc_event at /usr/sbin/ras-mc-ctl line 1129.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1130.&lt;br /&gt;
[root@alphagdaq ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 3700X ===&lt;br /&gt;
&lt;br /&gt;
(memory is non-ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq13:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# &lt;br /&gt;
root@daq13:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers not loaded.&lt;br /&gt;
root@daq13:~# edac-util &lt;br /&gt;
edac-util: Error: No memory controller data found.&lt;br /&gt;
root@daq13:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers loaded. No memory controllers found&lt;br /&gt;
root@daq13:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Jan 25 15:26 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Jan 21 16:16 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Jan 21 16:16 uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(memory is ECC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@trinatdaq:~# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. ROG STRIX B550-E GAMING&lt;br /&gt;
root@trinatdaq:~# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@trinatdaq:~# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@trinatdaq:~# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 7 root root    0 Dec 15 13:04 mc0&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
lrwxrwxrwx 1 root root    0 Dec 13 18:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 13 18:31 uevent&lt;br /&gt;
root@trinatdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dec 15 13:04 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dec 15 13:04 rank7&lt;br /&gt;
--w------- 1 root root 4096 Dec 15 13:04 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Dec 15 13:04 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Dec 15 13:04 uevent&lt;br /&gt;
root@trinatdaq:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AMD 5000G ===&lt;br /&gt;
&lt;br /&gt;
* no linux driver for AMD 5000-series &amp;quot;G&amp;quot; CPU&lt;br /&gt;
* no mention of ECC in the BIOS settings&lt;br /&gt;
* unclear status of ECC support in AMD documentation (sais only &amp;quot;pro&amp;quot; &amp;quot;G&amp;quot; CPUs have ECC)&lt;br /&gt;
* unclear status of ECC support in ASUS documentation (web page out of date)&lt;br /&gt;
&lt;br /&gt;
=== AMD 3955WX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --mainboard&lt;br /&gt;
edac-ctl: mainboard: ASUSTeK COMPUTER INC. Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# ls -l /sys/devices/system/edac/mc&lt;br /&gt;
total 0&lt;br /&gt;
drwxr-xr-x 19 root root    0 Dez 12 04:48 mc0&lt;br /&gt;
drwxr-xr-x  2 root root    0 Dez 12 04:48 power&lt;br /&gt;
lrwxrwxrwx  1 root root    0 Dez  9 05:31 subsystem -&amp;gt; ../../../../bus/edac&lt;br /&gt;
-rw-r--r--  1 root root 4096 Dez  9 05:31 uevent&lt;br /&gt;
root@alphasuperdaq:~/git/scripts/quotareport# &lt;br /&gt;
root@alphasuperdaq:~# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ce_noinfo_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 max_location&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 mc_name&lt;br /&gt;
drwxr-xr-x 2 root root    0 Dez 12 04:48 power&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank0&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank1&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank10&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank11&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank12&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank13&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank14&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank15&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank2&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank3&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank4&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank5&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank6&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank7&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank8&lt;br /&gt;
drwxr-xr-x 3 root root    0 Dez 12 04:48 rank9&lt;br /&gt;
--w------- 1 root root 4096 Feb 28 22:19 reset_counters&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 sdram_scrub_rate&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 seconds_since_reset&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 size_mb&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_count&lt;br /&gt;
-r--r--r-- 1 root root 4096 Feb 28 22:19 ue_noinfo_count&lt;br /&gt;
-rw-r--r-- 1 root root 4096 Feb 28 22:19 uevent&lt;br /&gt;
root@alphasuperdaq:~# &lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --layout&lt;br /&gt;
Use of uninitialized value $max_pos[3] in modulus (%) at /usr/sbin/ras-mc-ctl line 868.&lt;br /&gt;
Use of uninitialized value $d in numeric ge (&amp;gt;=) at /usr/sbin/ras-mc-ctl line 869.&lt;br /&gt;
Use of uninitialized value $d in sprintf at /usr/sbin/ras-mc-ctl line 872.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
Use of uninitialized value $pos[3] in join or string at /usr/sbin/ras-mc-ctl line 791.&lt;br /&gt;
    +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
    |                                                                                              mc0                                                                                              |&lt;br /&gt;
    |                                            csrow0                                             |                                            csrow1                                             |&lt;br /&gt;
    | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  | channel0  | channel1  | channel2  | channel3  | channel4  | channel5  | channel6  | channel7  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
0: |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |     0 MB  |&lt;br /&gt;
----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --error-count&lt;br /&gt;
Label               	CE	UE&lt;br /&gt;
mc#0csrow#0channel#2	0	0&lt;br /&gt;
mc#0csrow#1channel#7	0	0&lt;br /&gt;
mc#0csrow#0channel#3	0	0&lt;br /&gt;
mc#0csrow#1channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#2	0	0&lt;br /&gt;
mc#0csrow#0channel#7	0	0&lt;br /&gt;
mc#0csrow#1channel#3	0	0&lt;br /&gt;
mc#0csrow#0channel#4	0	0&lt;br /&gt;
mc#0csrow#1channel#1	0	0&lt;br /&gt;
mc#0csrow#1channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#6	0	0&lt;br /&gt;
mc#0csrow#0channel#1	0	0&lt;br /&gt;
mc#0csrow#0channel#5	0	0&lt;br /&gt;
mc#0csrow#0channel#0	0	0&lt;br /&gt;
mc#0csrow#1channel#6	0	0&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: ASUSTeK COMPUTER INC. model Pro WS WRX80E-SAGE SE WIFI&lt;br /&gt;
root@alphasuperdaq:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@alphasuperdaq:~#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure rasdaemon ==&lt;br /&gt;
&lt;br /&gt;
* apt install rasdaemon&lt;br /&gt;
* systemctl enable rasdaemon&lt;br /&gt;
* systemctl start rasdaemon&lt;br /&gt;
* systemctl status rasdaemon&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● rasdaemon.service - RAS daemon to log the RAS events&lt;br /&gt;
     Loaded: loaded (/lib/systemd/system/rasdaemon.service; enabled; vendor preset: enabled)&lt;br /&gt;
     Active: active (running) since Mon 2021-01-25 15:16:37 PST; 3min 5s ago&lt;br /&gt;
   Main PID: 2477175 (rasdaemon)&lt;br /&gt;
      Tasks: 1 (limit: 76958)&lt;br /&gt;
     Memory: 17.1M&lt;br /&gt;
     CGroup: /system.slice/rasdaemon.service&lt;br /&gt;
             └─2477175 /usr/sbin/rasdaemon -f -r&lt;br /&gt;
&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: ras:extlog_mem_event event enabled&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Listening to events for cpus 0 to 11&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: Enabled event ras:extlog_mem_event&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mc_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording aer_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording extlog_event events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording mce_record events&lt;br /&gt;
Jan 25 15:16:37 daq00.triumf.ca rasdaemon[2477175]: rasdaemon: Recording arm_event events&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Get reports ==&lt;br /&gt;
&lt;br /&gt;
* Intel 2x32GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-------------------------+&lt;br /&gt;
          |           mc0           |&lt;br /&gt;
          |   csrow0   |   csrow1   |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
channel1: |  16384 MB  |  16384 MB  |&lt;br /&gt;
channel0: |  16384 MB  |  16384 MB  |&lt;br /&gt;
----------+-------------------------+&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Intel 4x16GB ECC DIMMs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ras-mc-ctl --error-count&lt;br /&gt;
Label                   CE      UE&lt;br /&gt;
mc#0csrow#0channel#1    0       0&lt;br /&gt;
mc#0csrow#2channel#0    0       0&lt;br /&gt;
mc#0csrow#0channel#0    0       0&lt;br /&gt;
mc#0csrow#2channel#1    0       0&lt;br /&gt;
mc#0csrow#1channel#0    0       0&lt;br /&gt;
mc#0csrow#1channel#1    0       0&lt;br /&gt;
mc#0csrow#3channel#0    0       0&lt;br /&gt;
mc#0csrow#3channel#1    0       0&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --layout&lt;br /&gt;
          +-----------------------+&lt;br /&gt;
          |          mc0          |&lt;br /&gt;
          |  csrow0   |  csrow1   |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
channel1: |  8192 MB  |  8192 MB  |&lt;br /&gt;
channel0: |  8192 MB  |  8192 MB  |&lt;br /&gt;
----------+-----------------------+&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# &lt;br /&gt;
root@daq00:~# ras-mc-ctl --print-labels&lt;br /&gt;
ras-mc-ctl: Error: No dimm labels for Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --mainboard&lt;br /&gt;
ras-mc-ctl: mainboard: Supermicro model X11SCM-F&lt;br /&gt;
root@daq00:~# ras-mc-ctl --summary&lt;br /&gt;
No Memory errors.&lt;br /&gt;
&lt;br /&gt;
No PCIe AER errors.&lt;br /&gt;
&lt;br /&gt;
No Extlog errors.&lt;br /&gt;
&lt;br /&gt;
DBD::SQLite::db prepare failed: no such table: devlink_event at /usr/sbin/ras-mc-ctl line 1181.&lt;br /&gt;
Can&#039;t call method &amp;quot;execute&amp;quot; on an undefined value at /usr/sbin/ras-mc-ctl line 1182.&lt;br /&gt;
root@daq00:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= sensors =&lt;br /&gt;
&lt;br /&gt;
== ASUS P9X79 WS ==&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/supportonly/P9X79%20WS/HelpDesk_Manual/&lt;br /&gt;
* BIOS version 4802&lt;br /&gt;
* modprobe nct6775&lt;br /&gt;
* modprobe coretemp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq14:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +29.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +24.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +35.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +82.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
nouveau-pci-0200&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
GPU core:    900.00 mV (min =  +0.85 V, max =  +1.00 V)&lt;br /&gt;
temp1:        +39.0°C  (high = +95.0°C, hyst =  +3.0°C)&lt;br /&gt;
                       (crit = +105.0°C, hyst =  +5.0°C)&lt;br /&gt;
                       (emerg = +135.0°C, hyst =  +5.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6776-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Vcore:           1.04 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
AVCC:            3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
+3.3V:           3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:             1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:             2.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:           904.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
3VSB:            3.41 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
Vbat:            3.30 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:          1265 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:          1909 RPM  (min =    0 RPM)&lt;br /&gt;
fan3:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan4:             0 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:             0 RPM  (min =    0 RPM)&lt;br /&gt;
SYSTIN:         +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
CPUTIN:         +58.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermal diode&lt;br /&gt;
AUXTIN:         +31.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
PECI Agent 0:   +31.0°C  (high = +80.0°C, hyst = +75.0°C)&lt;br /&gt;
                         (crit = +96.0°C)&lt;br /&gt;
PCH_CHIP_TEMP:   +0.0°C  &lt;br /&gt;
PCH_CPU_TEMP:    +0.0°C  &lt;br /&gt;
PCH_MCH_TEMP:    +0.0°C  &lt;br /&gt;
intrusion0:    ALARM&lt;br /&gt;
intrusion1:    ALARM&lt;br /&gt;
beep_enable:   disabled&lt;br /&gt;
&lt;br /&gt;
root@daq14:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Enable CPU turbo mode =&lt;br /&gt;
&lt;br /&gt;
* Intel CPU has a nominal CPU frequency (i.e. 3.4GHz) and a turbo-boost CPU frequency (i.e. 4.0GHz). Here we will enable this turbo-boost mode.&lt;br /&gt;
* Find out CPU capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# lscpu | grep Hz&lt;br /&gt;
Model name:                      Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz&lt;br /&gt;
CPU MHz:                         3965.803&lt;br /&gt;
CPU max MHz:                     4000.0000&lt;br /&gt;
CPU min MHz:                     800.0000&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Look up this CPU in the Intel ARK database - google for the CPU model name, i.e.&lt;br /&gt;
https://ark.intel.com/content/www/us/en/ark/products/88196/intel-core-i7-6700-processor-8m-cache-up-to-4-00-ghz.html&lt;br /&gt;
* Find current frequency settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;powersave&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 2.72 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note the following:&lt;br /&gt;
** current governor is &amp;quot;powersave&amp;quot;&lt;br /&gt;
** &amp;quot;performance&amp;quot; governor is available&lt;br /&gt;
** &amp;quot;boost state support&amp;quot; is supported and active.&lt;br /&gt;
* Confirm CPU frequency governor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
powersave&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Change governor to &amp;quot;performance&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower frequency-set --governor performance&lt;br /&gt;
Setting cpu: 0&lt;br /&gt;
Setting cpu: 1&lt;br /&gt;
Setting cpu: 2&lt;br /&gt;
Setting cpu: 3&lt;br /&gt;
Setting cpu: 4&lt;br /&gt;
Setting cpu: 5&lt;br /&gt;
Setting cpu: 6&lt;br /&gt;
Setting cpu: 7&lt;br /&gt;
root@daq01:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
performance&lt;br /&gt;
root@daq01:~# cpupower frequency-info&lt;br /&gt;
analyzing CPU 0:&lt;br /&gt;
  driver: intel_pstate&lt;br /&gt;
  CPUs which run at the same hardware frequency: 0&lt;br /&gt;
  CPUs which need to have their frequency coordinated by software: 0&lt;br /&gt;
  maximum transition latency:  Cannot determine or is not supported.&lt;br /&gt;
  hardware limits: 800 MHz - 4.00 GHz&lt;br /&gt;
  available cpufreq governors: performance powersave&lt;br /&gt;
  current policy: frequency should be within 800 MHz and 4.00 GHz.&lt;br /&gt;
                  The governor &amp;quot;performance&amp;quot; may decide which speed to use&lt;br /&gt;
                  within this range.&lt;br /&gt;
  current CPU frequency: Unable to call hardware&lt;br /&gt;
  current CPU frequency: 3.93 GHz (asserted by call to kernel)&lt;br /&gt;
  boost state support:&lt;br /&gt;
    Supported: yes&lt;br /&gt;
    Active: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* monitor CPU frequency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# cpupower monitor&lt;br /&gt;
    | Nehalem                   || Mperf              || Idle_Stats                                     &lt;br /&gt;
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6   | C7s  | C8    &lt;br /&gt;
   0|  0.00|  0.00|  0.00|  0.00|| 88.80| 11.20|  3973||  0.00|  0.00|  0.01|  0.02|  0.31|  0.00|  4.25&lt;br /&gt;
   4|  0.00|  0.00|  0.00|  0.00||  4.70| 95.30|  3945||  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 95.03&lt;br /&gt;
   1|  0.73|  3.70|  0.00|  0.00||  4.52| 95.48|  3864||  0.00|  0.01|  1.19|  0.44|  2.82|  0.00| 90.23&lt;br /&gt;
   5|  0.73|  3.70|  0.00|  0.00||  0.37| 99.63|  3807||  0.00|  0.00|  0.03|  0.09|  1.70|  0.00| 97.64&lt;br /&gt;
   2|  2.28| 12.86|  0.00|  0.00||  1.41| 98.59|  3829||  0.00|  0.86|  3.17|  0.46|  7.70|  0.00| 85.87&lt;br /&gt;
   6|  2.28| 12.86|  0.00|  0.00||  2.88| 97.12|  3856||  0.00|  0.11|  4.56|  2.15| 10.31|  0.00| 78.99&lt;br /&gt;
   3|  1.33|  4.81|  0.00|  0.00||  0.99| 99.01|  3804||  0.00|  0.49|  0.79|  0.01|  1.03|  0.00| 96.12&lt;br /&gt;
   7|  1.34|  4.81|  0.00|  0.00||  1.26| 98.74|  3818||  0.00|  0.01|  2.32|  0.47|  5.02|  0.00| 90.06&lt;br /&gt;
root@daq01:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that the CPU is not overheating:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq01:~# sensors&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Package id 0:  +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:        +51.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:        +38.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 2:        +34.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
Core 3:        +32.0°C  (high = +84.0°C, crit = +100.0°C)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* congratulations, we are running at 4 GHz now!&lt;br /&gt;
&lt;br /&gt;
= Setup ubuntu as gateway to private network =&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* https://daq.triumf.ca/DaqWiki/index.php/VME-CPU#Setup_the_boot_host_computer_.28el7.29&lt;br /&gt;
* http://www.triumf.info/wiki/DAQwiki/index.php/Dhcpd_on_eth1&lt;br /&gt;
&lt;br /&gt;
== Steps to do ==&lt;br /&gt;
&lt;br /&gt;
* assign network numbers to the private network, i.e. 192.168.1.x, 192.168.2.x, etc&lt;br /&gt;
* (on the gateway machine, each private network interface has to have a different network number)&lt;br /&gt;
* (each network interface can have multiple networks attached, via VLANs or via eth0:0, eth0:1 constructs)&lt;br /&gt;
* assign IP addresses on the private network, save them in /etc/hosts i.e. &amp;quot;hvps 192.168.1.10&amp;quot;&lt;br /&gt;
* (for simplicity, assign 192.168.1.1 to the gateway machine itself)&lt;br /&gt;
* (IP addresses 192.168.1.0 and 192.168.1.255 are &amp;quot;special&amp;quot;, do not use them)&lt;br /&gt;
* setup DNS server (dnsmasq) to serve contents of /etc/hosts via DNS (otherwise, many programs will see inconsistent name to IP address mapping)&lt;br /&gt;
* setup DHCP server (ISC dhcpd or dnsmasq) to give out the IP addresses&lt;br /&gt;
* setup tftp, pxelinux and NFS for diskless booting&lt;br /&gt;
* setup time server (chronyd) to provide common time to all devices&lt;br /&gt;
* setup NAT so machines on private network can access the internet (to get OS updates, etc)&lt;br /&gt;
* setup NIS and NFS so machines on the private network can use common home directories&lt;br /&gt;
* setup rsync backup of machines on the private network&lt;br /&gt;
&lt;br /&gt;
== setup hosts ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.101 dsfe01&lt;br /&gt;
... and so forth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup dns and dhcp ==&lt;br /&gt;
&lt;br /&gt;
* apt-get install dnsmasq&lt;br /&gt;
* edit /etc/dnsmasq.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/dnsmasq.conf&lt;br /&gt;
# DNS settings&lt;br /&gt;
#port=0 # disable DNS function&lt;br /&gt;
port=53 # enable DNS function&lt;br /&gt;
domain-needed&lt;br /&gt;
bogus-priv&lt;br /&gt;
no-resolv&lt;br /&gt;
server=142.90.100.19&lt;br /&gt;
# DHCP settings&lt;br /&gt;
interface=enp1s0f0 # DHCP interface&lt;br /&gt;
#dhcp-range=192.168.1.50,192.168.1.150,infinite&lt;br /&gt;
dhcp-range=192.168.1.0,static&lt;br /&gt;
#log-dhcp&lt;br /&gt;
quiet-dhcp&lt;br /&gt;
#dhcp-ignore=tag:!known&lt;br /&gt;
dhcp-boot=pxelinux.0&lt;br /&gt;
#dhcp-host=ac:1f:6b:9e:7f:4a,192.168.1.100,10m&lt;br /&gt;
dhcp-host=ac:1f:6b:9e:7f:4a,dsfe01,infinite&lt;br /&gt;
# TFTP settings&lt;br /&gt;
enable-tftp&lt;br /&gt;
tftp-root=/tftpboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* #mkdir /zssd/tftpboot ### per tftp-root (if no ZFS)&lt;br /&gt;
* zfs create -o mountpoint=/tftpboot rpool/tftpboot ### (if root is ZFS)&lt;br /&gt;
* systemctl enable dnsmasq&lt;br /&gt;
* systemctl restart dnsmasq&lt;br /&gt;
&lt;br /&gt;
== setup chronyd ==&lt;br /&gt;
&lt;br /&gt;
* enable ntp server:&lt;br /&gt;
* configure and enable chronyd per instructions above&lt;br /&gt;
* emacs -nw /etc/chrony/chrony.conf&lt;br /&gt;
** add &amp;quot;allow 192.168.1.0/24&amp;quot; at the end&lt;br /&gt;
* systemctl restart chronyd&lt;br /&gt;
* chronyc tracking ### wait until time is synchronized (a few seconds)&lt;br /&gt;
&lt;br /&gt;
== setup diskless network booting ==&lt;br /&gt;
&lt;br /&gt;
=== setup pxelinux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2&lt;br /&gt;
tar xjvf syslinux-4.03.tar.bz2&lt;br /&gt;
cd syslinux-4.03&lt;br /&gt;
cp -pv ./core/pxelinux.0 ./com32/hdt/hdt.c32 ./memdisk/memdisk ./com32/menu/menu.c32 /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.iso.zip&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.iso.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.alias&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/modules.pcimap&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/pci.ids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir pxelinux.cfg&lt;br /&gt;
* emacs -nw pxelinux.cfg/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
&lt;br /&gt;
menu title Welcome to the DSVSLICE PXE boot menu&lt;br /&gt;
&lt;br /&gt;
timeout 50&lt;br /&gt;
&lt;br /&gt;
label hdt&lt;br /&gt;
  kernel hdt.c32&lt;br /&gt;
&lt;br /&gt;
label memtest86+-5.01 &lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-5.01.iso.gz &lt;br /&gt;
&lt;br /&gt;
label memtest86+-4.20&lt;br /&gt;
  kernel memdisk iso initrd=memtest86+-4.20.iso.zip&lt;br /&gt;
&lt;br /&gt;
label vmlinuz-5.3.0-26-generic&lt;br /&gt;
  menu default&lt;br /&gt;
  kernel vmlinuz-5.3.0-26-generic&lt;br /&gt;
  append initrd=initrd.img-5.3.0-26-generic boot=nfs root=/dev/nfs netboot=nfs nfsroot=192.168.1.1:/zssd/nfsroot/dsfe01 toram ip=dhcp panic=60 BOOTIF=enp1s0f0&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup linux kernel ===&lt;br /&gt;
&lt;br /&gt;
* copy the kernel files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
rsync -av config* initrd* System.map* vmlinuz* /zssd/tftpboot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /zssd/tftpboot&lt;br /&gt;
* chmod a+r *&lt;br /&gt;
&lt;br /&gt;
=== setup nfs ===&lt;br /&gt;
&lt;br /&gt;
* apt-get install nfs-kernel-server&lt;br /&gt;
* emacs -nw /etc/exports&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/nfsroot/dsfe01 dsfe01(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable services&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl enable nfs-mountd&lt;br /&gt;
systemctl enable nfs-idmapd&lt;br /&gt;
systemctl restart nfs-server&lt;br /&gt;
systemctl restart nfs-mountd&lt;br /&gt;
systemctl restart nfs-idmapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* after editing /etc/exports, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exportfs -av&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup userland ===&lt;br /&gt;
&lt;br /&gt;
* zfs create zssd/nfsroot&lt;br /&gt;
* zfs set dedup=verify zssd/nfsroot ### enable deduplication to save disk space because most linux images have mostly identical files&lt;br /&gt;
* clone ubuntu&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /zssd/nfsroot/dsfe01&lt;br /&gt;
cd /&lt;br /&gt;
rsync -avx . /zssd/nfsroot/dsfe01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* edit config files:&lt;br /&gt;
* cd /zssd/nfsroot/dsfe01&lt;br /&gt;
* emacs -nw etc/hostname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/mailname ### change to dsfe01&lt;br /&gt;
* emacs -nw etc/yp.conf ### change daq00.triumf.ca to musr00.triumf.ca&lt;br /&gt;
* emacs -nw etc/defaultdomain ### change to MUSR-NIS&lt;br /&gt;
* cp -pvf ../lxcpet-SL610/etc/ssh/*key* etc/ssh/ ### preserve the ssh keys&lt;br /&gt;
* emacs -nw opt/gonodeinfo/gonodeinfo.conf ### update information&lt;br /&gt;
* emacs -nw root/.ssh/authorized_keys ### update root ssh keys&lt;br /&gt;
* emacs -nw etc/fstab ### add this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/nfsroot/dsfe01 / nfs defaults,nolock 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw etc/chrony/chrony.conf&lt;br /&gt;
** comment-out all &amp;quot;pool&amp;quot; and &amp;quot;server&amp;quot; entries&lt;br /&gt;
** add entry &amp;quot;server 192.168.1.1 iburst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After dsfe01 is booted:&lt;br /&gt;
&lt;br /&gt;
* disable services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable apache2&lt;br /&gt;
systemctl disable dnsmasq&lt;br /&gt;
systemctl disable zfs-import-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To setup additional machines, clone dsfe01 instead of cloning the gateway machine&lt;br /&gt;
&lt;br /&gt;
=== Allow manpages to be viewed ===&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; is mounted over NFS, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will report a permission error. Fix it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/&lt;br /&gt;
apparmor_parser -R /etc/apparmor.d/usr.bin.man&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== setup shared home directory ==&lt;br /&gt;
&lt;br /&gt;
=== on the gateway machine ===&lt;br /&gt;
* define netgroups&lt;br /&gt;
* emacs -nw /etc/netgroup&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dsfe (dsfe01,,) (dsfe02,,)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/nsswitch.conf ### edit the netgroup line to read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
netgroup: files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* export the home directories:&lt;br /&gt;
* emacs -nw /etc/exports ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/zssd/home1 @dsfe(rw,no_root_squash,async,no_subtree_check)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* exportfs -rc&lt;br /&gt;
&lt;br /&gt;
=== on the frontend machine ===&lt;br /&gt;
&lt;br /&gt;
* mkdir /home&lt;br /&gt;
* emacs -nw /etc/fstab ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.1.1:/zssd/home1 /home nfs defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mount -a&lt;br /&gt;
&lt;br /&gt;
== setup NAT ==&lt;br /&gt;
&lt;br /&gt;
NAT allows machines on the private network to connect to the internet: https://en.wikipedia.org/wiki/Network_address_translation&lt;br /&gt;
&lt;br /&gt;
In these examples:&lt;br /&gt;
* replace &amp;quot;eno1&amp;quot; with name of the outgoing interface (the one connected to the TRIUMF network).&lt;br /&gt;
* replace &amp;quot;enp11s0&amp;quot; with name of the private network interface (192.168.1.x network)&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/rc.local ### add this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
# uncomment following lines if machine has prohibitive FORWARD rules:&lt;br /&gt;
#/sbin/iptables -I FORWARD -i eno1 -o enp11s0 -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
#/sbin/iptables -I FORWARD -i enp11s0 -o eno1 -j ACCEPT&lt;br /&gt;
#iptables -L -v&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
#sysctl -a | grep forward&lt;br /&gt;
&lt;br /&gt;
sh /etc/firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* emacs -nw /etc/firewall-rfc1918.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# firewall-rfc1918.sh&lt;br /&gt;
&lt;br /&gt;
# prevent RFC1918 private network IP addresses from&lt;br /&gt;
# going in and out from our uplink.&lt;br /&gt;
&lt;br /&gt;
ETH=eno1&lt;br /&gt;
&lt;br /&gt;
iptables -F in-rfc1918&lt;br /&gt;
iptables -N in-rfc1918&lt;br /&gt;
iptables -A in-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A in-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -D INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
iptables -I INPUT -j in-rfc1918 -i $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -F out-rfc1918&lt;br /&gt;
iptables -N out-rfc1918&lt;br /&gt;
iptables -A out-rfc1918 --dst 10.0.0.0/8      -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 172.16.0.0/12   -j REJECT&lt;br /&gt;
iptables -A out-rfc1918 --dst 192.168.0.0/16  -j REJECT&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -D OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
iptables -I OUTPUT -j out-rfc1918 -o $ETH&lt;br /&gt;
&lt;br /&gt;
iptables -L -v&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= KVM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install cpu-checker&lt;br /&gt;
&lt;br /&gt;
root@daq13:~# kvm-ok &lt;br /&gt;
INFO: /dev/kvm exists&lt;br /&gt;
KVM acceleration can be used&lt;br /&gt;
root@daq13:~# &lt;br /&gt;
&lt;br /&gt;
(if not, shutdown, go into BIOS settings, enable CPU virtualization)&lt;br /&gt;
&lt;br /&gt;
apt install virtinst ### will install many packages&lt;br /&gt;
apt install libvirt-clients libvirt-daemon-system-systemd libvirt-daemon qemu qemu-kvm libvirt-daemon-system virtinst bridge-utils&lt;br /&gt;
&lt;br /&gt;
root@daq13:/home1/wheel# virsh list --all&lt;br /&gt;
 Id   Name           State&lt;br /&gt;
------------------------------&lt;br /&gt;
 1    ubuntu-guest   running&lt;br /&gt;
&lt;br /&gt;
apt install virt-manager&lt;br /&gt;
&lt;br /&gt;
virt-install --name ubuntu-guest --os-variant ubuntu20.04 --vcpus 2 --ram 2048 --location /daq/daqstore/olchansk/linux/Ubuntu/ubuntu-20.04.3-desktop-amd64.iso --network bridge=virbr0,model=virtio --graphics none --extra-args=&#039;console=ttyS0,115200n8 serial&#039;&lt;br /&gt;
&lt;br /&gt;
virtual machine will start, boot, etc&lt;br /&gt;
to get out of it, CTRL + Shift followed by ]&lt;br /&gt;
&lt;br /&gt;
ssh wheel@daq13&lt;br /&gt;
virt-manager&lt;br /&gt;
&lt;br /&gt;
run virt-install again, omit &amp;quot;--graphics none&amp;quot;, open graphics console from virt-manager, it booted into ubuntu installer desktop&lt;br /&gt;
&lt;br /&gt;
virt-install --name test10 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --filesystem /kvm_ladd00,/ --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial&amp;quot; --graphics none&lt;br /&gt;
&lt;br /&gt;
virt-install --name test14 --os-variant centos6.10 --vcpus 2 --ram 2048 --import --disk /tmp/xxx/ladd00.img,bus=sata --network bridge=virbr0,model=virtio --boot kernel=/kvm_ladd00/boot/vmlinuz-2.6.32-754.35.1.el6.x86_64,initrd=/kvm_ladd00/boot/initramfs-2.6.32-754.35.1.el6.x86_64.img,kernel_args=&amp;quot;root=/dev/sda console=ttyS0,115200n8 serial rdshell&amp;quot; --graphics none --check path_in_use=off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
build image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dd if=/dev/zero of=/tmp/xxx/ladd00.img bs=1024M count=20&lt;br /&gt;
mkfs.ext3 /tmp/xxx/ladd00.img ### ext4 fails to mount by SL6 kernel, &amp;quot;unknown ext4 options&amp;quot;&lt;br /&gt;
cd /kvm_ladd00/&lt;br /&gt;
mount -o loop /tmp/xxx/ladd00.img /mnt/tmp&lt;br /&gt;
rsync -av . /mnt/tmp/ --delete&lt;br /&gt;
umount /mnt/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on the guest, configure network: /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script will be executed *after* all the other init scripts.&lt;br /&gt;
# You can put your own initialization stuff in here if you don&#039;t&lt;br /&gt;
# want to do the full Sys V style init stuff.&lt;br /&gt;
&lt;br /&gt;
touch /var/lock/subsys/local&lt;br /&gt;
&lt;br /&gt;
ifconfig eth2 192.168.122.2&lt;br /&gt;
route add -net 0.0.0.0 gw 192.168.122.1&lt;br /&gt;
ifconfig -a&lt;br /&gt;
netstat -rn&lt;br /&gt;
&lt;br /&gt;
# end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=TRB3_Centos-7_instructions&amp;diff=4641</id>
		<title>TRB3 Centos-7 instructions</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=TRB3_Centos-7_instructions&amp;diff=4641"/>
		<updated>2021-06-14T14:09:19Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* TRB3 MIDAS implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction == &lt;br /&gt;
&lt;br /&gt;
See [https://www.triumf.info/wiki/DAQwiki/index.php/GSI_TRB3  main TRB3 document] for introductory material.&lt;br /&gt;
&lt;br /&gt;
== Centos-7 network setup == &lt;br /&gt;
&lt;br /&gt;
Install a switch of second network port.  Do the following to configure DHCP on second network port, to assign IP to the TRB3.  This example uses 192.168.1.X addresses; the Centos-7 machine is 192.168.1.253, the TRB3 is meant to be assigned 192.1681.1.1.  This example uses TRB #171; adapt the instructions to your TRB number.&lt;br /&gt;
&lt;br /&gt;
1) Assign a static 192.168.1.253 IP to your second network interface, using nm-connection-editor.  This is what the configuration looks like afterwards for me&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# cat /etc/sysconfig/network-scripts/ifcfg-static_trb3 &lt;br /&gt;
HWADDR=30:85:A9:A9:17:83&lt;br /&gt;
TYPE=Ethernet&lt;br /&gt;
PROXY_METHOD=none&lt;br /&gt;
BROWSER_ONLY=no&lt;br /&gt;
BOOTPROTO=none&lt;br /&gt;
IPADDR=192.168.1.253&lt;br /&gt;
PREFIX=24&lt;br /&gt;
GATEWAY=192.168.1.253&lt;br /&gt;
DEFROUTE=yes&lt;br /&gt;
IPV4_FAILURE_FATAL=no&lt;br /&gt;
IPV6INIT=yes&lt;br /&gt;
IPV6_AUTOCONF=yes&lt;br /&gt;
IPV6_DEFROUTE=yes&lt;br /&gt;
IPV6_FAILURE_FATAL=no&lt;br /&gt;
IPV6_PRIVACY=no&lt;br /&gt;
IPV6_ADDR_GEN_MODE=stable-privacy&lt;br /&gt;
NAME=static_trb3&lt;br /&gt;
UUID=89793cba-7645-42cf-ac24-f7e48bd08948&lt;br /&gt;
ONBOOT=yes&lt;br /&gt;
&lt;br /&gt;
[root@daq11 tmp]# ifconfig  enp12s0&lt;br /&gt;
enp12s0: flags=4163&amp;lt;UP,BROADCAST,RUNNING,MULTICAST&amp;gt;  mtu 1500&lt;br /&gt;
        inet 192.168.1.253  netmask 255.255.255.0  broadcast 192.168.1.255&lt;br /&gt;
        inet6 fe80::f3e:f38e:d9ba:d654  prefixlen 64  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
        ether 30:85:a9:a9:17:83  txqueuelen 1000  (Ethernet)&lt;br /&gt;
        RX packets 52604116955  bytes 23147929921965 (21.0 TiB)&lt;br /&gt;
        RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
        TX packets 13999033  bytes 1196314909 (1.1 GiB)&lt;br /&gt;
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0&lt;br /&gt;
        device interrupt 19  memory 0xfb100000-fb120000  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Install dhcp &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dhcp &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Configure DHCP to look for the expected IP address for TRB3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# cat /etc/dhcp/dhcpd.conf&lt;br /&gt;
&lt;br /&gt;
allow booting;&lt;br /&gt;
allow bootp;&lt;br /&gt;
ignore unknown-clients;&lt;br /&gt;
#ddns-update-style ad-hoc;&lt;br /&gt;
&lt;br /&gt;
# set lease time to 3 days&lt;br /&gt;
default-lease-time 259200;&lt;br /&gt;
max-lease-time 259200;&lt;br /&gt;
&lt;br /&gt;
# Define the new subnet&lt;br /&gt;
subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    interface enp12s0;&lt;br /&gt;
    range  192.168.1.100 192.168.1.250; &lt;br /&gt;
    not authoritative;&lt;br /&gt;
    deny unknown-clients;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
# Define IP for TRB3&lt;br /&gt;
group {&lt;br /&gt;
      default-lease-time infinite;&lt;br /&gt;
      max-lease-time infinite;&lt;br /&gt;
      host trb171 { fixed-address 192.168.1.1; hardware ethernet da:7a:36:e9:37:ac; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Start DHCP and see if it assigns correct IP to TRB3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# systemctl enable dhcpd&lt;br /&gt;
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.&lt;br /&gt;
[root@daq11 tmp]#  systemctl restart dhcpd;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;power cycle TRB3&amp;gt;&lt;br /&gt;
&amp;lt;check ping works&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# ping 192.168.1.1&lt;br /&gt;
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.087 ms&lt;br /&gt;
64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=0.144 ms&lt;br /&gt;
&lt;br /&gt;
[root@daq11 tmp]# systemctl status dhcpd&lt;br /&gt;
● dhcpd.service - DHCPv4 Server Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Mon 2018-04-09 16:20:35 PDT; 18s ago&lt;br /&gt;
     Docs: man:dhcpd(8)&lt;br /&gt;
           man:dhcpd.conf(5)&lt;br /&gt;
 Main PID: 10650 (dhcpd)&lt;br /&gt;
   Status: &amp;quot;Dispatching packets...&amp;quot;&lt;br /&gt;
   CGroup: /system.slice/dhcpd.service&lt;br /&gt;
           └─10650 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid&lt;br /&gt;
&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Wrote 0 new dynamic host decls to leases file.&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Wrote 0 leases to leases file.&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Listening on LPF/enp12s0/30:85:a9:a9:17:83/192.168.1.0/24&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Sending on   LPF/enp12s0/30:85:a9:a9:17:83/192.168.1.0/24&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Sending on   Socket/fallback/fallback-net&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca systemd[1]: Started DHCPv4 Server Daemon.&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPDISCOVER from da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPOFFER on 192.168.1.1 to da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPREQUEST for 192.168.1.1 (192.168.1.253) from da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPACK on 192.168.1.1 to da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Assign hostname to this IP&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# more /etc/hosts&lt;br /&gt;
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4&lt;br /&gt;
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6&lt;br /&gt;
192.168.1.1     trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Open a hole in firewall to the TRB3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.1/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.1/32&amp;quot; port protocol=&amp;quot;udp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --add-port=5071/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Centos-7 Software Setup == &lt;br /&gt;
&lt;br /&gt;
The TRB3 software and associated analysis packages are developed on newer operating systems than Centos-7 (namely Opensuse).  So a certain amount of work is needed to get the software to work on Centos-7.  &lt;br /&gt;
&lt;br /&gt;
1) I started by copying over the software in trbsoft from an existing installation.&lt;br /&gt;
&lt;br /&gt;
scp trbsoft_backup.tar.gz trb3@ladd00:/data0/trb3/.&lt;br /&gt;
&lt;br /&gt;
2) The main problem is with the TRB3 code requiring a newer version of perl.  I used perlbrew to setup a newer version of perl than Centos-7 supports:&lt;br /&gt;
&lt;br /&gt;
Following the instructions on website:&lt;br /&gt;
&lt;br /&gt;
[https://perlbrew.pl/ https://perlbrew.pl/ ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source ~/perl5/perlbrew/etc/bashrc&lt;br /&gt;
perlbrew init&lt;br /&gt;
perlbrew install perl-5.24.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then add this line to login script&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -f /home/trb3/.perlbrew/init&lt;br /&gt;
source ~/perl5/perlbrew/etc/bashrc&lt;br /&gt;
perlbrew switch perl-5.24.0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Rebuild libtrbnet with different perl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/trbsoft/trbnettools/libtrbnet_perl&lt;br /&gt;
perl Makefile.PL&lt;br /&gt;
cd ..&lt;br /&gt;
make TRB3=1 clean&lt;br /&gt;
make TRB3=1&lt;br /&gt;
make TRB3=1 install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Modify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/trbsoft/daqtools/merge_serial_address.pl&lt;br /&gt;
and&lt;br /&gt;
~/trbsoft/daqtools/web/cts_gui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to use the perlbrew version of perl, rather than the system default.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Rebuild DABC (optional: this step is not necessary if we use the UDP version of the frontend, which is default now)&lt;br /&gt;
&lt;br /&gt;
Make sure you have ROOT (ie ROOTSYS) setup properly&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 svn co https://subversion.gsi.de/dabc/trb3 trb3&lt;br /&gt;
cd trb3&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This seems to build dabc and stream successfully.  go4 doesn&#039;t compile cleanly, but this doesn&#039;t matter for the MIDAS frontend readout.&lt;br /&gt;
&lt;br /&gt;
6) Modify the IP and MAC address in the file trbsoft/daqtools/users/triumf_trb171/db/register_configgbe_ip.db.  This should be the IP and MAC address of the private IP interface on the server computer; so the IP is 192.168.1.253 in our case; use ipconfig to check the MAC.&lt;br /&gt;
&lt;br /&gt;
7) Setup your login script (BASH in this case):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DAQ_TOOLS_PATH=~/trbsoft/daqtools&lt;br /&gt;
USER_DIR=~/trbsoft/daqtools/users/triumf_trb171&lt;br /&gt;
TRB_WEB_DIR=$DAQ_TOOLS_PATH/web&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$DAQ_TOOLS_PATH:$HOME/trbsoft/trbnettools/bin&lt;br /&gt;
export PATH=$PATH:$DAQ_TOOLS_PATH/tools&lt;br /&gt;
export PATH=$PATH:$USER_DIR&lt;br /&gt;
export PATH=$PATH:$HOME/trbsoft/trb3/dabc/bin/&lt;br /&gt;
export LD_LIBRARY_PATH=$HOME/trbsoft/trb3/dabc/lib/&lt;br /&gt;
&lt;br /&gt;
# Use perl 5.24&lt;br /&gt;
rm -f /home/trb3/.perlbrew/init&lt;br /&gt;
source ~/perl5/perlbrew/etc/bashrc&lt;br /&gt;
perlbrew switch perl-5.24.0 &lt;br /&gt;
&lt;br /&gt;
### TL&lt;br /&gt;
### This part restarts the trbnetd server;&lt;br /&gt;
### this server takes instructions from trbcmd executable and&lt;br /&gt;
### passes them actually to the TRB.&lt;br /&gt;
export TRB3_SERVER=trb171:26000&lt;br /&gt;
export TRBNETDPID=$(pgrep -f &amp;quot;trbnetd -i 171&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
export DAQOPSERVER=localhost:171&lt;br /&gt;
&lt;br /&gt;
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/trb3/trbsoft/trbnettools/libtrbnet&lt;br /&gt;
&lt;br /&gt;
test -s ~/.alias &amp;amp;&amp;amp; . ~/.alias || true&lt;br /&gt;
&lt;br /&gt;
# PATH=&amp;quot;/home/trb3/perl5/bin${PATH:+:${PATH}}&amp;quot;; export PATH;&lt;br /&gt;
PERL5LIB=&amp;quot;/home/trb3/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/:/home/trb3/trbsoft/daqtools/web/include:/home/trb3/trbsoft/trbnettools/libtrbnet_perl/blib/lib:/usr/share/perl5/vendor_perl&amp;quot;; export PERL5LIB;&lt;br /&gt;
#PERL_LOCAL_LIB_ROOT=&amp;quot;/home/trb3/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}&amp;quot;; export PERL_LOCAL_LIB_ROOT;&lt;br /&gt;
#PERL_MB_OPT=&amp;quot;--install_base \&amp;quot;/home/trb3/perl5\&amp;quot;&amp;quot;; export PERL_MB_OPT;&lt;br /&gt;
#PERL_MM_OPT=&amp;quot;INSTALL_BASE=/home/trb3/perl5&amp;quot;; export PERL_MM_OPT;&lt;br /&gt;
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/trb3/trbsoft/trbnettools/libtrbnet_perl/blib/arch/auto/HADES/TrbNet/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# setup ROOT &lt;br /&gt;
source ~/packages/root/bin/thisroot.sh &lt;br /&gt;
&lt;br /&gt;
# setup MIDAS&lt;br /&gt;
export MIDASSYS=${HOME}/packages/midas&lt;br /&gt;
export PATH=${PATH}:${MIDASSYS}/linux/bin&lt;br /&gt;
export MIDAS_EXPTAB=${HOME}/online/exptab&lt;br /&gt;
export ROOTANASYS=${HOME}/packages/rootana&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Now start the trb3 program and initialize the TRB3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/trbsoft/daqtools/users/triumf_trb171&lt;br /&gt;
source startup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) If this is a new TRB3, need to modify the following files, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trbcmd i 0xffff  &lt;br /&gt;
# check open to figure out the serial number of new TRB3 FPGAs&lt;br /&gt;
# use this info to modify following files:&lt;br /&gt;
vi db/addresses_trb3.db&lt;br /&gt;
vi $DAQ_TOOLS_PATH/base/serials_trb3.db&lt;br /&gt;
vi db/register_configtdc.db&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TRB3 MIDAS implementation == &lt;br /&gt;
&lt;br /&gt;
We have a working MIDAS readout of the TRB3 TDC data.  Currently this readout uses a lot of the original GSI tools for setting up the TRB3 before the readout can start.   At this time you need to do steps 1 and 2 described in &amp;quot;Start up instructions&amp;quot;  in order to setup the TRB3 before starting the MIDAS frontend. Eventually we will try to remove as many as possible of the original GSI tools. &lt;br /&gt;
&lt;br /&gt;
MIDAS frontend code is available here:&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/ttriumfdaq/trb3_frontend&lt;br /&gt;
&lt;br /&gt;
The MIDAS frontend is setup to read events directly from the UDP buffer.  You can see a running MIDAS TRB3 frontend here:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setting up for MIDAS data taking === &lt;br /&gt;
&lt;br /&gt;
We are using the account trb3@daq11.triumf.ca for running this DAQ.  If you need to restart the DAQ system, do the following&lt;br /&gt;
&lt;br /&gt;
* Run the setup program that will initialize the TRB3 and set the 10kHz software trigger&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
cd /home/trb3/trbsoft/daqtools/users/triumf_trb171&lt;br /&gt;
source startup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* (Optional) We can also start a webgui that allows us to check/configure the TRB3 separate from MIDAS; this is sometimes useful for monitoring.  To do this, do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/trb3/trbsoft/daqtools/web&lt;br /&gt;
export PERL5LIB=/home/trb3/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/:/home/trb3/trbsoft/daqtools/web/include:/home/trb3/trbsoft/trbnettools/libtrbnet_perl/bli b/lib:/usr/share/perl5/vendor_perl&lt;br /&gt;
./cts_gui --noopenxterm --port=1234 --endpoint=0xc001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows access to GSI [http://daq11:1234/ web GUI].&lt;br /&gt;
&lt;br /&gt;
* Start the MIDAS TRB3 readout frontend, if not running:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/trb3/online/trb3_frontend/fetrb3UDP.exe -D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actually, the default fetrb3UDP program does not create all the ODB settings that it should.  It misses one setting, which specifies the name of the bank for a particular address.  Create this variable after running the program the first time, using odbedit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[local:trb3:R]Settings&amp;gt; cd /Equipment/TRB3_UDP/Settings&lt;br /&gt;
[local:trb3:S]Settings&amp;gt;create STRING trb765          &lt;br /&gt;
String length [32]:&lt;br /&gt;
[local:trb3:S]Settings&amp;gt;move trb765 1&lt;br /&gt;
[local:trb3:S]Settings&amp;gt;set trb765 TRBA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As noted, we currently (April 9) we have the TRB3 setup with a 10kHz software trigger.&lt;br /&gt;
&lt;br /&gt;
== Running the analyzer == &lt;br /&gt;
&lt;br /&gt;
I added simple decoder and histograming classes to rootana.  Currently I have only implemented the crude TDC calibration into the TRB3 bank decoders.  In the long run we may want to integrate the fine TDC calibration directly into the frontend.  &lt;br /&gt;
&lt;br /&gt;
To look at the analyzer display, run the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/trb3/online/trb3_frontend/analyzer/anaDisplay.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display shows different histograms, arranged by FPGA and channel number.  Histograms are&lt;br /&gt;
&lt;br /&gt;
# The TDC times for each channel, with crude calibration applied&lt;br /&gt;
# The TDC raw fine times; ie, the raw counts for the sub-5ns part of the TDCs&lt;br /&gt;
# TDC time difference histograms; for this canvas you can set the reference FPGA and channel&lt;br /&gt;
&lt;br /&gt;
Analyzer notes:&lt;br /&gt;
* On the physical TRB3 board the FPGAs are numbered as being 1-4, but the analyzer converts these to the more normal 0-3 indexing.&lt;br /&gt;
* Channel 0 is also the TDC associated with the actual trigger; in our case, the time of the software trigger&lt;br /&gt;
* For FPGA 0 and 1 the firmware is configured so we are reading both leading and falling TDC edges; so for these FPGAs channel 1 is the leading edge of the first input and channel 2 is the trailing edge of the first input, and so on.  For FPGAs 2 and 3 we are only reading the leading edge of the TDCs.&lt;br /&gt;
&lt;br /&gt;
To dump data from MIDAS file, do following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/trb3/online/trb3_frontend/analyzer&lt;br /&gt;
./ana.exe /home/trb3/online/run00026.mid.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modify ana.cxx to analyze the TDC data and type &#039;make&#039; to recompile ana.exe.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=4640</id>
		<title>VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=4640"/>
		<updated>2021-06-11T23:34:00Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups. Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=4639</id>
		<title>VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=4639"/>
		<updated>2021-06-11T23:33:46Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups. Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VM machine name	Other names	Group	VLAN	Purpose	Status&lt;br /&gt;
midastestdaq		DAQ	1	Has example MIDAS installation (part of documentation)	Currently broken&lt;br /&gt;
trdata05		DAQ	1	Provides ~10TB of storage for the DAQ dcache instance.	&lt;br /&gt;
ucmsrv0-vm.triumf.ca	ucnelog	UCN	1	Providing UCN elog	&lt;br /&gt;
ucnbackup.triumf.ca		UCN	68	Provides 2TB of storage for raw data backup	&lt;br /&gt;
ktmserver.triumf.ca		UCN	1	Provides readout and online display for the 1VM4 notch monitor (beamline 1V)	&lt;br /&gt;
exoelog.triumf.ca		EXO	1	Provides elog for EXO tests	not really used&lt;br /&gt;
scdms-srv0.triumf.ca		SuperCDMS	1	Testbed for CDMS development on Centos-7; also provides elog.	&lt;br /&gt;
mpmtelog.triumf.ca		T2K	1	Provides elog for mPMT development	&lt;br /&gt;
m11elog.triumf.ca		M11	1	Provides elog for M11 beamline	&lt;br /&gt;
nd280elog-vm		T2K	1	Provides elog for ND280	&lt;br /&gt;
nd280webservice-vm		T2K	1	Provides various elog services	&lt;br /&gt;
neut00-vm.triumf.ca		T2K	1	Provides T2KGSC mirror, web &amp;amp; db server	&lt;br /&gt;
trbsddb-vm.triumf.ca		T2K	1	Provides BSD MySQL Database server	&lt;br /&gt;
t2kcaldb.triumf.ca		T2K	1	Provides MySQL database for ND280 calibration	&lt;br /&gt;
t2kcaldb-backup.triumf.ca		T2K	1	Provides MySQL endpoint for calibration database	&lt;br /&gt;
nd280gsc-backup.triumf.ca		T2K	1	Provides MySQL endpoint for GSC database		&lt;br /&gt;
t2k-fdg-hwdb.triumf.ca		T2K	1	Hosts the FGD hardware database and webserver&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=4638</id>
		<title>VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=4638"/>
		<updated>2021-06-11T23:31:54Z</updated>

		<summary type="html">&lt;p&gt;Lindner: Created page with &amp;quot;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups. Many of them are for elog i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups. Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
VM machine name	Other names	Group	VLAN	Purpose	Status&lt;br /&gt;
midastestdaq		DAQ	1	Has example MIDAS installation (part of documentation)	Currently broken&lt;br /&gt;
trdata05		DAQ	1	Provides ~10TB of storage for the DAQ dcache instance.	&lt;br /&gt;
ucmsrv0-vm.triumf.ca	ucnelog	UCN	1	Providing UCN elog	&lt;br /&gt;
ucnbackup.triumf.ca		UCN	68	Provides 2TB of storage for raw data backup	&lt;br /&gt;
ktmserver.triumf.ca		UCN	1	Provides readout and online display for the 1VM4 notch monitor (beamline 1V)	&lt;br /&gt;
exoelog.triumf.ca		EXO	1	Provides elog for EXO tests	not really used&lt;br /&gt;
scdms-srv0.triumf.ca		SuperCDMS	1	Testbed for CDMS development on Centos-7; also provides elog.	&lt;br /&gt;
mpmtelog.triumf.ca		T2K	1	Provides elog for mPMT development	&lt;br /&gt;
m11elog.triumf.ca		M11	1	Provides elog for M11 beamline	&lt;br /&gt;
nd280elog-vm		T2K	1	Provides elog for ND280	&lt;br /&gt;
nd280webservice-vm		T2K	1	Provides various elog services	&lt;br /&gt;
neut00-vm.triumf.ca		T2K	1	Provides T2KGSC mirror, web &amp;amp; db server	&lt;br /&gt;
trbsddb-vm.triumf.ca		T2K	1	Provides BSD MySQL Database server	&lt;br /&gt;
t2kcaldb.triumf.ca		T2K	1	Provides MySQL database for ND280 calibration	&lt;br /&gt;
t2kcaldb-backup.triumf.ca		T2K	1	Provides MySQL endpoint for calibration database	&lt;br /&gt;
nd280gsc-backup.triumf.ca		T2K	1	Provides MySQL endpoint for GSC database		&lt;br /&gt;
t2k-fdg-hwdb.triumf.ca		T2K	1	Hosts the FGD hardware database and webserver&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=4637</id>
		<title>Sysman</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=4637"/>
		<updated>2021-06-11T23:31:16Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* System management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System management ==&lt;br /&gt;
&lt;br /&gt;
* [http://daq-plone.triumf.ca/SM/docs/local Misc documentation on the daq-plone site]&lt;br /&gt;
* [[Daqinv]] DAQ inventory database&lt;br /&gt;
* [[Amanda]] AMANDA backups&lt;br /&gt;
* [[DAQ_Cluster]] http://www.triumf.info/wiki/DAQwiki/index.php/ISAC_Cluster http://www.triumf.info/wiki/DAQwiki/index.php/MUSR_Cluster http://www.triumf.info/wiki/DAQwiki/index.php/TITAN&lt;br /&gt;
* DAQ cluster management links: [https://ladd00.triumf.ca/gonodeinfo Nodeinfo] [http://ladd00.triumf.ca/triumf_nodeinfo/config.html Nodeinfo] [http://ladd00.triumf.ca/ganglia Ganglia] [http://ladd00.triumf.ca/diskusers/disks.html Diskusers] [http://ladd00.triumf.ca/~olchansk/pingmon/triumf.html network ping monitor] [http://ladd00.triumf.ca/~daqweb/daqbackup/ daqbackup]&lt;br /&gt;
* [http://trdata00.triumf.ca:2288 TRDATA dcache status]&lt;br /&gt;
* TRIUMF resources: [http://andrew.triumf.ca/domain-cgi/get-node.pl Network database] [http://trweb.triumf.ca/hostmonitor/main_form.php Network monitor] [https://helpdesk.triumf.ca Helpdesk]&lt;br /&gt;
* [http://trshare.triumf.ca/~olchansk/triumf_nodeinfo Documentation for nodeinfo]&lt;br /&gt;
* [https://daq.triumf.ca/DaqWiki/index.php/DiskScrub Documentation for diskscrub]&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/disk_benchmarks&lt;br /&gt;
* [http://trshare.triumf.ca/~olchansk/diskusers Documentation for diskusers]&lt;br /&gt;
* [[VMs]] DAQ VMs&lt;br /&gt;
&lt;br /&gt;
== Linux documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[SLinstall]] SL5/SL6/CentOS7/CentOS8 install instructions&lt;br /&gt;
* [[Ubuntu]] Ubuntu install instructions&lt;br /&gt;
* [[Raspbian]] Raspbian OS for ARM processors (Raspberry Pi, Cyclone5 SoC, etc)&lt;br /&gt;
* [[ZFS]] ZFS instructions&lt;br /&gt;
&lt;br /&gt;
== Misc documentation ==&lt;br /&gt;
&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/DaqVlanConfig VLANs for DAQ and experiments&lt;br /&gt;
* [[PcHardware]] DAQ PC Configurations&lt;br /&gt;
* [[PcRackmount]] DAQ Rackmounted Configurations&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/DaqSvn DAQ SVN repositories and instructions (obsolete)&lt;br /&gt;
* [[Quartus]] Altera Quartus&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/HADOOP (obsolete)&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/EPICS&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/VNC&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/Cloning_raid1_boot_disks&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/Setup_MIDAS_experiment&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/IEEE_MAC_TRIUMF IEEE MAC addresses assigned to TRIUMF&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/DaqWikiManagement DAQWiki management&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/ROOT&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/MIDAS&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/ROOTANA ROOTANA : ROOT Analyzer for MIDAS&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/ROODY&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/ser2net ser2net USB-Serial-RS232 interface&lt;br /&gt;
* [[GIT]]&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/TrdataDcache tradata dcache system for experimental data storage&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/dhcpd_on_eth1 Enabling dhcpd on secondary ethernet port&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/nextcloud&lt;br /&gt;
* https://www.triumf.info/wiki/DAQwiki/index.php/DAQ_VMs DAQ and experimental group VMs&lt;br /&gt;
* obsolete data acquisition software: [https://daq.triumf.ca/~daqweb/doc/susiq/ SUSIQ] [https://daq.triumf.ca/~daqweb/doc/nova/ NOVA]&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3928</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3928"/>
		<updated>2021-05-01T15:26:03Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Configure HTTPS server (CentOS7) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes ==&lt;br /&gt;
&lt;br /&gt;
* these instructions are periodically updated to include items needed for older/newer versions of Linux. They are marked like this: (SL4.2+) means Scientific Linux 4.2 and newer; (SL4 is equivalent to FC3). (FC5 only) means Fedora Core 5; etc.&lt;br /&gt;
* obsolete items are marked by the &amp;quot;#&amp;quot; sign at the beginning of the line and sometimes have a comment about the reason for removal.&lt;br /&gt;
* typically, we do not &amp;quot;upgrade&amp;quot; machines using the Red Hat &amp;quot;upgrade&amp;quot; function. Instead, we save critical files from the old installation and do a &amp;quot;fresh install&amp;quot; from scratch&lt;br /&gt;
* starting with RHEL7, the recommended OS is CentOS7 (instead of SL7).&lt;br /&gt;
&lt;br /&gt;
== Disk configurations ==&lt;br /&gt;
&lt;br /&gt;
The year is 2019 and SSDs are used exclusively, except for bulk data storage, where one used 6-8-10-12 TB HDDs&lt;br /&gt;
&lt;br /&gt;
For reliability, home directories and data disks must use redundant storage - mdadm raid1 or ZFS raid1/raid6.&lt;br /&gt;
&lt;br /&gt;
For non-critical machines, a single SSD seems to be reliable enough to use as a boot and OS disk. But since any&lt;br /&gt;
storage device can fail at any time without warning, home directories and data disks should use redundant storage.&lt;br /&gt;
&lt;br /&gt;
Note: for data disks bigger than 4-6TB, mdadm raid1/raid6 is no longer recommended because raid rebuild,&lt;br /&gt;
verification and repair time has become unreasonably long. Instead, use ZFS raid1/raid6 which implements online verification,&lt;br /&gt;
repair and disk replacement without requiring machine shutdown or OS down time.&lt;br /&gt;
&lt;br /&gt;
* single SSD - 120GB min - single partition for &amp;quot;/&amp;quot;, no swap partition (create a swap file if swap is needed) - for non-critical machine with no local data storage (OS only)&lt;br /&gt;
* dual SSD - 2x240GB min - all partitions mirrored (RAID1), 30GB &amp;quot;/&amp;quot;, rest for /home1 - for daq station with local user home directories and no bulk data storage&lt;br /&gt;
* single SSD + 2x6-8-10-12TB HDD - SSD partition: all &amp;quot;/&amp;quot;, HDD partition as ZFS raid1 (mirrored) - for daq station with small local bulk data storage&lt;br /&gt;
* single SSD + 6-8x6-8-10-12TB HDD - for small storage server machines - for daq station with local home directories and large bulk data storage.&lt;br /&gt;
&lt;br /&gt;
For VME processors:&lt;br /&gt;
&lt;br /&gt;
* network boot - [[VME-CPU#Network_boot]] - only option for V7648/V7750, do not use for V7805 (no netboot from GigE), optional for V7865/XVB-602&lt;br /&gt;
* USB boot - 8GB USB for V7805, 16GB USB for V7865/XVB-602&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
* save /etc, /var, /root, /opt, (if needed: /usr/local, /tftpboot) by rsync to some data disk (/ladd/data0/root)&lt;br /&gt;
* check that &amp;quot;/&amp;quot; partition (it will be overwritten) is different from /home1 and /data partitions&lt;br /&gt;
* note the MAC addresses of all network interfaces, add them to ladd00 dhcpd.conf to enable PXE boot into the SL &amp;quot;network installer&amp;quot;&lt;br /&gt;
* shutdown&lt;br /&gt;
&lt;br /&gt;
== Running installer (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 can be installed from vanilla CentOS7 installation media or from&lt;br /&gt;
a custom USB key build per there instructions:&lt;br /&gt;
https://daqshare.triumf.ca/~olchansk/linux/CentOS7/&lt;br /&gt;
&lt;br /&gt;
The custom installer makes it easy to use a custom kickstart file (ks.cfg).&lt;br /&gt;
&lt;br /&gt;
Instructions for using the usb-installer:&lt;br /&gt;
&lt;br /&gt;
* disconnect machine from network&lt;br /&gt;
* plug the usb-installer into a usb3 port (blue colour)&lt;br /&gt;
* reboot machine, select booting from usb (press F8 on ASUS motherboards)&lt;br /&gt;
* usb-installer boot menu offers to install CentOS7, go there&lt;br /&gt;
* CentOS7 should boot (many messages scroll on screen)&lt;br /&gt;
* into graphical mode&lt;br /&gt;
* into installer main menu&lt;br /&gt;
* all installer options should &amp;quot;happy&amp;quot; except for the &amp;quot;installation destination&amp;quot;&lt;br /&gt;
* go to the &amp;quot;installation destination&amp;quot; menu&lt;br /&gt;
** unselect all disks except for the SSD where the OS will be installed&lt;br /&gt;
** (MOST IMPORTANT: unselect the USB installer disk!)&lt;br /&gt;
** select &amp;quot;I will configure...&amp;quot;&lt;br /&gt;
** say &amp;quot;done&amp;quot;&lt;br /&gt;
** the &amp;quot;manual partitionning&amp;quot; menu will open&lt;br /&gt;
*** use the &amp;quot;-&amp;quot; button to delete all existing partitions&lt;br /&gt;
*** select &amp;quot;standard partition&amp;quot;&lt;br /&gt;
*** click on the &amp;quot;+&amp;quot; button&lt;br /&gt;
*** in the &amp;quot;Add new partition&amp;quot; dialog, set mount point &amp;quot;/&amp;quot;, capacity blank, click &amp;quot;add mount point&amp;quot;&lt;br /&gt;
*** check capacity (should be full size of SSD), check filesystem type (should be XFS)&lt;br /&gt;
*** say &amp;quot;done&amp;quot;, there will be a warning about absent swap partition, say &amp;quot;done&amp;quot; again.&lt;br /&gt;
*** in the big useless dialog, say &amp;quot;accept changes&amp;quot;&lt;br /&gt;
*** should be back to the &amp;quot;installation summary&amp;quot; screen, &amp;quot;installation destination&amp;quot; should be happy now&lt;br /&gt;
* after everything is happy, say &amp;quot;begin installation&amp;quot;&lt;br /&gt;
* as the installation proceeds, set the password for the root user&lt;br /&gt;
* after installation is complete, reboot the machine&lt;br /&gt;
* unplug the usb-installer, CentOS7 should boot from SSD into the login screen&lt;br /&gt;
* click on &amp;quot;not listed?&amp;quot;, login as root&lt;br /&gt;
* setup network connection:&lt;br /&gt;
** open a terminal&lt;br /&gt;
** start &amp;quot;nm-connection-editor&amp;quot;&lt;br /&gt;
** click on &amp;quot;+&amp;quot; to create a new connection profile&lt;br /&gt;
** select &amp;quot;wired ethernet&amp;quot;&lt;br /&gt;
** select &amp;quot;add profile...&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, set &amp;quot;name&amp;quot; to &amp;quot;static&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, check that &amp;quot;Connect automatically&amp;quot; and &amp;quot;Make available...&amp;quot; is enabled&lt;br /&gt;
** in &amp;quot;IPv4&amp;quot;, set &amp;quot;Addresses&amp;quot; to &amp;quot;manual&amp;quot; instead of &amp;quot;dhcp&amp;quot;&lt;br /&gt;
** enter IP address, netmask 255.255.224.0, gateway 142.90.100.18, dns 142.90.100.19, search triumf.ca&lt;br /&gt;
** say &amp;quot;Add&amp;quot;, then close/quit the network settings&lt;br /&gt;
* connect network cable&lt;br /&gt;
* network should be up, ping ladd00 should work&lt;br /&gt;
* run: yum update -y&lt;br /&gt;
* check new kernel is installed: ls -l /boot&lt;br /&gt;
* logout and restart (good luck finding these buttons in the gui!)&lt;br /&gt;
* confirm correct linux kernel is selected during boot (-229.20, not the original installer kernel)&lt;br /&gt;
* login as root, confirm network is up, proceed with the rest of these instructions&lt;br /&gt;
&lt;br /&gt;
== Configure SSH ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* Login from the console&lt;br /&gt;
* restore the SSH keys from backup (/etc/ssh/*key*)&lt;br /&gt;
* service sshd restart&lt;br /&gt;
* ssh into the new machine as root&lt;br /&gt;
* ssh root@localhost, ctrl-C&lt;br /&gt;
* ### this is done later from Konstantin&#039;s git repository - scp root@ladd00:/root/authorized_keys ~root/.ssh/&lt;br /&gt;
* (not needed for SL5.5 kickstart) check that /etc/ssh/ssh_config contains &amp;quot;ForwardX11 yes&amp;quot; and &amp;quot;ForwardX11Trusted yes&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;  ForwardX11 yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
echo &amp;quot;  ForwardX11Trusted yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post installation CentOS7 ==&lt;br /&gt;
&lt;br /&gt;
Set hostname: (use full name, i.e. daq11.triumf.ca)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;olchansk@triumf.ca amaudruz@triumf.ca lindner@triumf.ca bsmith@triumf.ca&amp;quot; &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
chmod a+r /var/log/messages&lt;br /&gt;
chmod a+r /var/log/yum.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activate rc.local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+x /etc/rc.local&lt;br /&gt;
chmod a+x /etc/rc.d/rc.local  # TL edit&lt;br /&gt;
systemctl enable rc-local&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable &amp;quot;persistent network names&amp;quot; (DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/touch /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
/bin/rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
#shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypbind authconfig&lt;br /&gt;
echo &amp;quot;NISTIMEOUT=5&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
echo &amp;quot;NETWORKWAIT=yes&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
authconfig --enablenis --enablepreferdns --nisdomain LADD-NIS --nisserver ladd00.triumf.ca --update&lt;br /&gt;
ypwhich&lt;br /&gt;
ypcat -k passwd&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On the master NIS node (ladd00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
* Use &amp;quot;system-config-users&amp;quot; to add local user accounts&lt;br /&gt;
* enable selinux ssh key login to nfs mounted home directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P use_nfs_home_dirs 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* all the same as for CentOS7&lt;br /&gt;
* ensure correct boot order for ypbind (in CentOS 8.1 ypbind is started before network is ready, service file uses &amp;quot;Wants&amp;quot; instead of &amp;quot;After&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ypbind.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ypbind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ypbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS secondary server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Enable local NIS server, make local machine use it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypserv&lt;br /&gt;
/usr/lib64/yp/ypinit -s ladd00 ### (/usr/lib/yp/ypinit on 32-bit machines)&lt;br /&gt;
### ypinit will give lots of errors about &amp;quot;rpc.ypxfrd failed: RPC: Can&#039;t decode result&amp;quot;; can be ignored&lt;br /&gt;
systemctl enable rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
systemctl start rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
emacs -nw /etc/yp.conf # change &amp;quot;domain XXX server YYY.triumf.ca&amp;quot; to read &amp;quot;domain XXX server localhost&amp;quot;&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich # should say &amp;quot;localhost&amp;quot;&lt;br /&gt;
ypcat -k auto.master # should work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punch hole in the firewall: (or &amp;quot;make&amp;quot; on NIS master will complain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo YPSERV_ARGS=\&amp;quot;-p 800\&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --add-service rpc-bind --permanent&lt;br /&gt;
firewall-cmd --add-port=800/tcp --add-port=800/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on the NIS master:&lt;br /&gt;
** add the new machine to /var/yp/ypservers, run &amp;quot;make -C /var/yp&amp;quot; and also &amp;quot;cd /var/yp; yppush -h newmachine ypservers&amp;quot;&lt;br /&gt;
*** TL (2020-09): we not doing this anymore?  I guess it doesn&#039;t work anyway...&lt;br /&gt;
** if using /var/yp/securenets, copy it from NIS master to new NIS secondary server&lt;br /&gt;
&lt;br /&gt;
Enable hourly NIS update cron job (DO THIS AFTER git pull scripts, see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd etc&lt;br /&gt;
cd ~/git/scripts/etc; ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure AUTOFS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl start autofs&lt;br /&gt;
ls -l /daq/daqshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Label Selinux labels ==&lt;br /&gt;
&lt;br /&gt;
When upgrading non-selinux machines (el6) to el7 (selinux enforcing) the existing&lt;br /&gt;
user home directories will not have the correct selinux labels and many things&lt;br /&gt;
will not work, including ssh logins (sshd cannot access ~user/.ssh files).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
semanage fcontext -a -e /home /home1 ### selinux has special rules for /home, assign them to /home1&lt;br /&gt;
restorecon -R -v /home1 ### apply the new rules to files in /home1&lt;br /&gt;
ls -Zd /home1/alpha/.ssh&lt;br /&gt;
# should say: drwx------. alpha users system_u:object_r:ssh_home_t:s0  /home1/alpha/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure time (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Time server ntpd was replaced by chronyd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install chrony&lt;br /&gt;
echo server time1 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time2 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time3 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
systemctl enable chronyd&lt;br /&gt;
systemctl restart chronyd&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if desired, edit /etc/chrony.conf, remove non-triumf time servers&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Disable yum-cron:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --erase yum-cron&lt;br /&gt;
/bin/rm -v /var/lock/subsys/yum-cron&lt;br /&gt;
/bin/rm -v /etc/cron.daily/0yum-daily.cron&lt;br /&gt;
/bin/rm -v /etc/cron.hourly/0yum-hourly.cron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable yum-autoupdate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y epel-release&lt;br /&gt;
yum install -y yum-changelog yum-protectbase yum-tsflags yum-versionlock&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm&lt;br /&gt;
#rpm -vh --install https://daqshare.triumf.ca/~olchansk/linux/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm https://daqshare.triumf.ca/~olchansk/linux/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
systemctl enable yum-autoupdate&lt;br /&gt;
systemctl start yum-autoupdate&lt;br /&gt;
systemctl status yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase yum-autoupdate&lt;br /&gt;
/bin/rm -f /etc/sysconfig/yum-autoupdate.rpmsave&lt;br /&gt;
/bin/rm -f /var/lock/subsys/yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dnf-automatic&lt;br /&gt;
systemctl enable --now dnf-automatic.timer&lt;br /&gt;
systemctl list-timers *dnf-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/dnf/automatic.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apply_updates = yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure system services (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* systemctl list-unit-files | grep enabled | sort ### (to see enabled services)&lt;br /&gt;
* disable unwanted services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable bluetooth&lt;br /&gt;
systemctl disable dm-event&lt;br /&gt;
systemctl disable dmraid-activation&lt;br /&gt;
systemctl disable iscsid&lt;br /&gt;
systemctl disable iscsi&lt;br /&gt;
systemctl disable iscsiuio&lt;br /&gt;
systemctl disable libvirtd&lt;br /&gt;
systemctl disable lvm2-lmetad&lt;br /&gt;
systemctl disable lvm2-monitor&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl disable multipathd&lt;br /&gt;
systemctl disable netcf-transaction&lt;br /&gt;
systemctl disable lvm2-lvmetad.socket&lt;br /&gt;
systemctl disable lvm2-lvmpolld.socket&lt;br /&gt;
systemctl disable iscsid.socket&lt;br /&gt;
systemctl disable iscsiuio.socket&lt;br /&gt;
#systemctl disable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erase unwanted packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* PackageKit # bugs users about security updates, hogs yum lock&lt;br /&gt;
* perl-homedir # creates unwanted $HOME/perl5&lt;br /&gt;
* ModemManager # thinks that all USB-attached devices are modems&lt;br /&gt;
* pcp # sends error email to itself, does not work&lt;br /&gt;
* abrt # sends email to root about useless crashes, i.e. crash of X when machine is rebooted&lt;br /&gt;
* rear # some kind of backup and recovery tool, not clear what it does, but it sends email complaining how it is broken&lt;br /&gt;
* bash-completion # &amp;quot;echo $HOME/&amp;lt;TAB&amp;gt;&amp;quot; becomes &amp;quot;echo \$HOME&amp;quot; (notice &amp;quot;\&amp;quot; added before &amp;quot;$&amp;quot;) preventing tab-completion from doing anything useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase PackageKit perl-homedir ModemManager pcp abrt abrt-libs abrt-gui-libs rear bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable unwanted package &amp;quot;tracker&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tracker&amp;quot; package is part of the GNOME desktop, it scans the content of all files&lt;br /&gt;
into a database for quick searching.&lt;br /&gt;
&lt;br /&gt;
When it malfunctions, bad things happen, i.e. read through&lt;br /&gt;
https://bugzilla.redhat.com/show_bug.cgi?id=747689&lt;br /&gt;
&lt;br /&gt;
Specific problem I see is that it floods the system log with error messages. Also &lt;br /&gt;
consumes network and filesystem bandwidth for NFS mounted home directories.&lt;br /&gt;
&lt;br /&gt;
This package cannot be removed by &amp;quot;yum erase tracker&amp;quot; dues to dependencies&lt;br /&gt;
from core GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
Instead, do this to deactivate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod -x /usr/libexec/tracker-*&lt;br /&gt;
chmod -x /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/libexec/tracker-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure external package repositories (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
EPEL: (addtional packages)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel modules and drivers) (CentOS8)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install elrepo-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel drivers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;br /&gt;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm&lt;br /&gt;
yum -y install yum-plugin-fastestmirror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed to continue with installation ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
(these packages are sometimes missing, they are needed to follow following instructions instructions)&lt;br /&gt;
&lt;br /&gt;
(SL6.5: libotf is a dependancy of emacs - SL6.5 installer fails to install it)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install ed patch wget git libotf gdisk emacs perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Konstantin&#039;s scripts ==&lt;br /&gt;
&lt;br /&gt;
(+Centos7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go back to the NIS slave server and install the hourly NIS update cron job.&lt;br /&gt;
&lt;br /&gt;
== Enable yum version lock ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install yum-plugin-versionlock&lt;br /&gt;
#yum versionlock packagename # yum versionlock rpcbind&lt;br /&gt;
#yum versionlock list # list locked packages&lt;br /&gt;
#yum versionlock delete packagename # unlock given package&lt;br /&gt;
#yum versionlock clear # delete all locks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure trusted ssh keys ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
interrupt by Ctrl-C&lt;br /&gt;
/bin/cp ~/git/scripts/etc/authorized_keys ~/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure hardware sensors ==&lt;br /&gt;
&lt;br /&gt;
* yum -y install lm_sensors&lt;br /&gt;
* sensors-detect (accept default answer to all questions - press ENTER)&lt;br /&gt;
* systemctl restart lm_sensors&lt;br /&gt;
* sensors (to see available sensors)&lt;br /&gt;
&lt;br /&gt;
If no sensors are detected by standard drivers, follow motherboard-specific instructions at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Configure IPMI sensors ==&lt;br /&gt;
&lt;br /&gt;
Some machines support the IPMI interface for monitoring the hardware: fan speeds, temperatures, voltages.&lt;br /&gt;
&lt;br /&gt;
* find out if IPMI is supported. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dmidecode | grep -i ipmi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
if output is not blank, IPMI is maybe supported.&lt;br /&gt;
* install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
service ipmi start&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
chkconfig ipmi on&lt;br /&gt;
chkconfig ipmievd on&lt;br /&gt;
service ipmi restart&lt;br /&gt;
service ipmievd restart&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (CentOS7) install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
systemctl start ipmi&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
systemctl list-unit-files | grep -i ipmi&lt;br /&gt;
systemctl enable ipmi&lt;br /&gt;
systemctl restart ipmi&lt;br /&gt;
systemctl status ipmi&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
systemctl status ipmievd&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if ipmievd complains about SEL buffer overflow, clear it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipmitool sel list ### show ipmi messages in raw format&lt;br /&gt;
ipmitool sel elist ### show ipmi messages in useful format&lt;br /&gt;
ipmitool sel elist &amp;gt; file ### save ipmi messages into a file&lt;br /&gt;
ipmitool sel clear  ### clear all accumulated ipmi messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* useful ipmi commands:&lt;br /&gt;
** ipmitool sensor -- read hardware sensors&lt;br /&gt;
** ipmitool sel elist -- report all accumulated messages&lt;br /&gt;
&lt;br /&gt;
== Configure ECC memory ==&lt;br /&gt;
&lt;br /&gt;
* check that machine has ECC memory: dmidecode --type memory | grep -i ecc&lt;br /&gt;
&lt;br /&gt;
Configure mcelog (machine check exception)&lt;br /&gt;
&lt;br /&gt;
* yum install mcelog&lt;br /&gt;
* check that mcelog is running: ps -efw | grep mcelog&lt;br /&gt;
* (el6) chkconfig mcelogd on; service mcelogd restart&lt;br /&gt;
* (el7) systemctl status mcelog.service; systemctl enable mcelog.service; systemctl restart mcelog.service&lt;br /&gt;
&lt;br /&gt;
Check for MCE (machine check exception) messages:&lt;br /&gt;
&lt;br /&gt;
* mcelog --client&lt;br /&gt;
* grep -i mce /var/log/messages*&lt;br /&gt;
* grep -i ecc /var/log/messages*&lt;br /&gt;
&lt;br /&gt;
Configure EDAC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install edac-utils&lt;br /&gt;
edac-ctl --mainboard&lt;br /&gt;
edac-ctl --status&lt;br /&gt;
lsmod | grep edac&lt;br /&gt;
modprobe ie31200_edac ### driver for Intel E3-1200 series ECC memory&lt;br /&gt;
&lt;br /&gt;
[root@grsmid00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
... empty&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
drwxr-xr-x. 15 root root    0 Oct 25 16:40 mc0&lt;br /&gt;
...&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_noinfo_count&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow3&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 max_location&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 mc_name&lt;br /&gt;
drwxr-xr-x. 2 root root    0 Oct 25 16:40 power&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank3&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank4&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank5&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank6&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank7&lt;br /&gt;
--w-------. 1 root root 4096 Oct 25 16:40 reset_counters&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 seconds_since_reset&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 size_mb&lt;br /&gt;
lrwxrwxrwx. 1 root root    0 Oct  2 12:02 subsystem -&amp;gt; ../../../../../bus/mc0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_noinfo_count&lt;br /&gt;
-rw-r--r--. 1 root root 4096 Oct 25 16:40 uevent&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure SMARTD (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 smartd config files send deficient email notices about disk failures. Overwrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd.conf /etc/smartmontools/&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd_warning.sh /etc/smartmontools/&lt;br /&gt;
systemctl enable smartd&lt;br /&gt;
systemctl restart smartd&lt;br /&gt;
systemctl status smartd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable User Disk Quotas (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* read http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html&lt;br /&gt;
* emacs -nw /etc/fstab, add &amp;quot;grpquota,usrquota&amp;quot; to filesystem options, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@isdaq00 home1]# grep quota /etc/fstab&lt;br /&gt;
UUID=5a2aefbd-45db-475e-841e-12ec89220fbd /home1 ext4 defaults,grpquota,usrquota 1 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /; umount /home1; mount /home1&lt;br /&gt;
* quotacheck -cug /home1&lt;br /&gt;
* quotacheck -avug&lt;br /&gt;
* quotaon -av&lt;br /&gt;
* quota system is now active&lt;br /&gt;
* increase the soft quota time limit from default 7days to 30 or 60 days: edquota -t&lt;br /&gt;
* set quotas for all users (see below)&lt;br /&gt;
* setup warnquota:&lt;br /&gt;
** create warnquota config file: emacs -nw /etc/warnquota.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# values can be quoted:&lt;br /&gt;
MAIL_CMD        = &amp;quot;/usr/sbin/sendmail -t&amp;quot;&lt;br /&gt;
FROM            = root&lt;br /&gt;
SUBJECT         = User %i@%h exceeded allocated disk quota&lt;br /&gt;
CC_TO           = &amp;quot;root&amp;quot;&lt;br /&gt;
# If you set this variable CC will be used only when user has less than&lt;br /&gt;
# specified grace time left (examples of possible times: 5 seconds, 1 minute,&lt;br /&gt;
# 12 hours, 5 days)&lt;br /&gt;
# CC_BEFORE = 2 days&lt;br /&gt;
SUPPORT         = &amp;quot;root&amp;quot;&lt;br /&gt;
# Text in the beginning of the mail (if not specified, default text is used)&lt;br /&gt;
# This way text can be split to more lines&lt;br /&gt;
# Line breaks are done by &#039;|&#039; character&lt;br /&gt;
# The expressions %i, %h, %d, and %% are substituted for user/group name,&lt;br /&gt;
# host name, domain name, and &#039;%&#039; respectively. For backward compatibility&lt;br /&gt;
# %s behaves as %i but is deprecated.&lt;br /&gt;
MESSAGE         = User &amp;quot;%i&amp;quot; on &amp;quot;%h&amp;quot; has exceeded the allocated disk quota.||Please delete any unnecessary files on following filesystems or|contact the system administrato&lt;br /&gt;
r to increase your quota allocation:|&lt;br /&gt;
SIGNATURE       = --|automated email from warnquota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** note that %i@%h in the SUBJECT line do not seem to work&lt;br /&gt;
** create cron job: emacs -nw /etc/cron.daily/warnquota&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
warnquota&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** chmod a+x /etc/cron.daily/warnquota&lt;br /&gt;
** touch /etc/crontab&lt;br /&gt;
&lt;br /&gt;
Useful commands for managing quotas:&lt;br /&gt;
* repquota -a | sort -n -k3 ### show quota of all users sorted by disk usage&lt;br /&gt;
* edquota -u username ### open &amp;quot;vi&amp;quot; editor to change user quotas&lt;br /&gt;
* repquote -a | grep username ### report quota for given user&lt;br /&gt;
* setquota -u username 0 0 0 0 /home1 ### disable quotas for given user&lt;br /&gt;
* setquota -u username 50000000 100000000 0 0 /home1 ### set quotas for 50GB soft and 100GB hard&lt;br /&gt;
* edquota -t ### change user quota time limits&lt;br /&gt;
* edquote -tg ### change group quota time limits&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* create /etc/exports. example: (fsid numbers should be unique and increase 1,2,3,...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async,fsid=1)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async,fsid=2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* enable things, start them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=nfs&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl start nfs-server&lt;br /&gt;
systemctl status nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -efw | grep rpc.mountd # should be running!&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=mountd&lt;br /&gt;
firewall-cmd --permanent --add-service=rpc-bind&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts.allow, add or uncomment &amp;quot;mountd: 142.90.0.0/255.255.0.0&amp;quot;&lt;br /&gt;
* create /etc/exports. example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* chkconfig nfs on&lt;br /&gt;
* chkconfig nfslock on&lt;br /&gt;
* service nfs restart&lt;br /&gt;
&lt;br /&gt;
Then on ladd00 need to do&lt;br /&gt;
* ssh to root@ladd00&lt;br /&gt;
* edit /etc/auto.daq to add new machine...&lt;br /&gt;
* make -C /var/yp&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 SERVER (SL6) ==&lt;br /&gt;
&lt;br /&gt;
* if used with NIS, same as NFSv3&lt;br /&gt;
* if used as standalone, need to edit idmapd.conf - set the &amp;quot;Domain&amp;quot; name to the same value on NFS server and NFS slave (default automagically determined value does not always work). More TBW.&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups ==&lt;br /&gt;
&lt;br /&gt;
AMANDA backups are already enabled by TRIUMF kickstart installs. For non-kickstart installation, follow instructions at [[http://amanda/~amanda http://amanda/~amanda]], or look at &amp;quot;/triumfcs/trshare/olchansk/linux/amanda/amanda-enable.perl&amp;quot;. As final step, use [[https://helpdesk.triumf.ca https://helpdesk.triumf.ca]] to contact TRIUMF CS to add this new machine to the amanda backup list.&lt;br /&gt;
&lt;br /&gt;
* yum install triumf-amanda&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install amanda-client&lt;br /&gt;
systemctl list-unit-files | grep -i amanda&lt;br /&gt;
#systemctl enable amanda&lt;br /&gt;
systemctl enable amanda.socket&lt;br /&gt;
systemctl enable amanda-udp.socket&lt;br /&gt;
systemctl restart amanda.socket&lt;br /&gt;
systemctl restart amanda-udp.socket&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=amanda-client&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
echo amanda.triumf.ca amanda amdump &amp;gt;&amp;gt; /var/lib/amanda/.amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On amanda server, add new machine to the disklist, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amcheck -c daily titan00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable DCACHE ==&lt;br /&gt;
&lt;br /&gt;
DAQ dcache server is mounted as&lt;br /&gt;
&lt;br /&gt;
/daq/pnfs/triumf.ca/data/&lt;br /&gt;
&lt;br /&gt;
For Centos-7 machines, you need to adjust the firewall rules in order to be able to communicate with the trdata machines; this is only necessary if you are copying data to trdata.  The firewall changes are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.212/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.107.156/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.219/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructions are unnecessary &lt;br /&gt;
* # mkdir -p /pnfs&lt;br /&gt;
* # edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs &amp;amp;&amp;quot;&lt;br /&gt;
* # . /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
For more information on, see [[TrdataDcache]] dcache page.&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 Ganglia instructions (EPEL7 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/multicpu.conf   # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/netstats.pyconf # spews errors into syslog&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/diskstat.pyconf # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/procstat.pyconf # do not create /tmp/gmond.conf&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos8) ==&lt;br /&gt;
&lt;br /&gt;
CentOS8 Ganglia instructions (EPEL8 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
cd ~/git/scripts/ganglia&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF DAQ packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
wget http://daq.triumf.ca/~daqweb/yum/triumf-daq.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Konstantin&#039;s packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install diskscrub emailonreboot monitor_nfs &amp;quot;ganglia-*&amp;quot; triumf_nodeinfo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install memtest and PXE boot ==&lt;br /&gt;
&lt;br /&gt;
!!!DO NOT DO THIS!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.10&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&lt;br /&gt;
emacs -nw /boot/grub/grub.conf&lt;br /&gt;
title memtest86+-5.01&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-5.01.bin.gz&lt;br /&gt;
title memtest86+-4.20&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.20.bin.gz&lt;br /&gt;
title memtest86+-4.10&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.10&lt;br /&gt;
title pxeboot&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install triumf_nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl --config ladd00.triumf.ca:8600&lt;br /&gt;
emacs -nw /etc/nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl ladd00.triumf.ca:8600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install gonodeinfo node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+Ubuntu, +CentOS7, +CentOS8)&lt;br /&gt;
&lt;br /&gt;
go to https://bitbucket.org/dd1/gonodeinfo&lt;br /&gt;
follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
# or git clone https://daq.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: ladd00.triumf.ca:8601&lt;br /&gt;
* run gonodeinfo -e&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run gonodereceive -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== Install latest system updates ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum update -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF Printers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable syslog spam (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 config is spamming the syslog with useless messages &amp;quot;systemd: Starting Session&amp;quot;, etc. Disable this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo auditctl -e 0 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo /usr/bin/systemd-analyze set-log-level notice &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install basic system packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
(if starting from minimal system, basic system packages required:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y which psmisc redhat-lsb-core xorg-x11-xauth xterm emacs-nox rsync tcpdump strace nfs-utils sysstat iftop tcsh&lt;br /&gt;
yum install -y gcc gcc-c++ gdb glibc-static libstdc++-static zlib zlib-devel openssl-devel httpd-tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed for QUARTUS, ROOT, EPICS and MIDAS DAQ ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.x86_64 sysstat &amp;quot;libusb-devel*&amp;quot; unixODBC-devel postgresql-devel libxml2-devel libXpm-devel libgfortran git compat-readline43 &amp;quot;graphviz*&amp;quot; dcap &amp;quot;tigervnc*&amp;quot; telnet glibc&amp;quot;*&amp;quot; strace &amp;quot;fftw*&amp;quot; libpng &amp;quot;freetype*&amp;quot; xpdf &amp;quot;xemacs*&amp;quot; tkcvs xterm mutt &amp;quot;*-g77*&amp;quot; joe &amp;quot;libXmu*&amp;quot; dcap-devel gsl-devel pcre-devel h5py gd-devel xorg-x11-fonts&amp;quot;*&amp;quot; minicom xfig&amp;quot;*&amp;quot; perl-BSD-Resource &amp;quot;net-snmp-*&amp;quot; readline-static git-all nasm imake tcl-devel gv xorg-x11-twm expat-devel screen compat-readline5 ImageMagick ImageMagick-devel wget alacarte scipy numpy sympy nedit gnuplot php-cli php-domxml-php4-php5 php-gd php-fpdf php-cli kdebase cmake tcpdump sqlite sqlite-devel kdegraphics gdisk lsof gconf-editor iftop tk-devel mcelog kdm blt itcl lz4 bzip2 pbzip2 apr-devel apr-util-devel net-tools golang&amp;quot;*&amp;quot; --exclude golang-cover&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang-pkg&amp;quot;*&amp;quot; --exclude golang-github&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;git&amp;quot;*&amp;quot; mesa&amp;quot;*&amp;quot; xerces-c&amp;quot;*&amp;quot; diffuse clang i2c-tools  texlive-revtex texlive-revtex4 kile kbibtex xrdp glibc.i686 gimp gimp-data-extras perl-GD&amp;quot;*&amp;quot; perl-Math&amp;quot;*&amp;quot; perl-Statistics-Basic cmake3 cmake3-gui extra-cmake-modules python2-pip x2go&amp;quot;*&amp;quot; mariadb-devel glibc-devel.i686 libzstd&lt;br /&gt;
&lt;br /&gt;
== Install optional packages ==&lt;br /&gt;
&lt;br /&gt;
!! DO NOT DO THIS !!&lt;br /&gt;
&lt;br /&gt;
(do not install boost on 32-bit machines)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken &amp;quot;boost-*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(packages for 32-bit software compilation on 64-bit machines. this is optional)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.i386 giflib.i686 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel.i686 openssl-devel.i686 unixODBC-devel.i686 libstdc++-devel.i386 libstdc++-devel.i686 &amp;quot;zlib-*.i686&amp;quot; &amp;quot;libXext-*.i686&amp;quot; &amp;quot;libXtst-*.i686&amp;quot; glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel.i686 gsl-devel.i686 pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 gd-devel.i686 readline-devel.i686 ncurses-devel.i686 libXdmcp.i686 readline-static.i686 compat-readline5.i686&lt;br /&gt;
&lt;br /&gt;
yum install boost-devel.i686&lt;br /&gt;
&lt;br /&gt;
(separately install these packages - they collide with the big bunch above)&lt;br /&gt;
&lt;br /&gt;
yum install rdesktop&lt;br /&gt;
&lt;br /&gt;
yum reinstall urw-fonts&lt;br /&gt;
&lt;br /&gt;
== Install libraries for PHYSICA (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To run physica built on el6 from git sources on el7, do this:&lt;br /&gt;
&lt;br /&gt;
(building physica on el7 is nort supported at this time)&lt;br /&gt;
&lt;br /&gt;
(see more http://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install libX11.i686 gd.i686 libpng12.i686 readline.i686 compat-libf2c-34.i686&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install additional desktop environements (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# LXQT (from EPEL)&lt;br /&gt;
# NOT COMPATIBLE WITH el7.7 # yum -y install &amp;quot;lxqt*&amp;quot;&lt;br /&gt;
# Cinnamon desktop (from EPEL)&lt;br /&gt;
yum -y install cinnamon&lt;br /&gt;
# KDE5 not available yet&lt;br /&gt;
# MATE (from epel)&lt;br /&gt;
yum -y groupinstall &amp;quot;MATE Desktop&amp;quot;&lt;br /&gt;
yum -y install mate-common mate-icon-theme-faenza mate-netspeed mate-sensors-applet mate-themes-extras mate-utils&lt;br /&gt;
yum -y erase ModemManager abrt abrt-libs abrt-gui-libs&lt;br /&gt;
# XFCE4 (from EPEL)&lt;br /&gt;
yum -y groupinstall xfce&lt;br /&gt;
yum -y install &amp;quot;xfce*plugin&amp;quot; xfce4-about --exclude xfce4-hamster-plugin&lt;br /&gt;
yum -y erase bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lighdm login manager (from EPEL)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install lightdm lightdm-kde lightdm-qt lightdm-qt5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* and switch from gdm to lighdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable gdm.service&lt;br /&gt;
systemctl enable lightdm.service&lt;br /&gt;
(systemctl stop gdm; systemctl restart lightdm) &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SMART scripts ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -sf ~/git/scripts/smart-status/smart-status.perl ~/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install NTFS drivers ==&lt;br /&gt;
&lt;br /&gt;
yum install ntfs-3g ntfsprogs (from EPEL)&lt;br /&gt;
&lt;br /&gt;
== Install HFS and HFS+ drivers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
yum --disablerepo=\* --enablerepo=elrepo install kmod-hfs kmod-hfsplus&lt;br /&gt;
&lt;br /&gt;
== Install Google Chrome web browser (64-bit CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/google-chrome-64.repo /etc/yum.repos.d/&lt;br /&gt;
yum install google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable monitoring of HTTPS certificates ==&lt;br /&gt;
&lt;br /&gt;
On SL6, CentOS7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install crypto-utils&lt;br /&gt;
/etc/cron.daily/certwatch&lt;br /&gt;
strace -f /etc/cron.daily/certwatch  |&amp;amp; grep open  | grep crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable 100dpi fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/share/X11/fonts/100dpi /etc/X11/fontpath.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable crontab @reboot for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
el7 has a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory&lt;br /&gt;
is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be&lt;br /&gt;
started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/crond.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/crond.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat crond.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependacy tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 configuration prevents all access to servers running on the local machine, including access to MIDAS mhttpd (tcp port 8443) and mserver (all tcp ports).&lt;br /&gt;
&lt;br /&gt;
To enable access to mhttpd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=8443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access to the mserver from a specific host: (replace 142.90.111.175 with the IP address of the permitted host)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.111.175/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access from the private network (replace &amp;quot;192.168.1.0&amp;quot; with your private network number):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.0/24&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for EPICS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To enable access to TRIUMF EPICS servers, do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.132.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For UCN the controls people seem to have EPICS setup on a different server; this might be true for CMMS as well.  In this case the firewall rule change should be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.139.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable gdm and X11 (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initctl stop prefdm&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/prefdm.override&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/splash-manager.override&lt;br /&gt;
initctl reload-configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then enable login on default console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;plymouth quit&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo &amp;quot;X_TTY=xxx/dev/tty1&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install JAVAWS (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
* to run Java &amp;quot;web start&amp;quot; jnlp files (EVO, SEEVOGH, etc): javaws Downloads/spider.jnlp&lt;br /&gt;
* install javaws:&lt;br /&gt;
* yum install icedtea-web icedtea-web-javadoc&lt;br /&gt;
&lt;br /&gt;
== Install firefox java plugin (OPTIONAL, DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
This installs the Oracle Java plugin:&lt;br /&gt;
&lt;br /&gt;
* rpm -vh --install ~deap/jdk-7u15-linux-x64.rpm&lt;br /&gt;
* ls -l /usr/lib64/mozilla/plugins/&lt;br /&gt;
* ln -s /usr/java/jdk1.7.0_15/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/&lt;br /&gt;
* start firefox, go edit-&amp;gt;preferences-&amp;gt;general-&amp;gt;manage add-ons-&amp;gt;plugins&lt;br /&gt;
* &amp;quot;java plugin 1.7.0_15&amp;quot; should be listed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure USB device permissions ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
&lt;br /&gt;
== Disable modem-manager ==&lt;br /&gt;
&lt;br /&gt;
The modem-manager will try to talk to any serial devices attached to USB serial ports. It assumes that those devices are modems and will send out modem-specific commands. if the devices are not modems and do not understand or do not like modem commands, well that&#039;s too bad. modem-manager is installed by the ModemManager package required by the NetworkManager package, and there is no configuration setting to turn modem-manager off.&lt;br /&gt;
&lt;br /&gt;
One way to disable it is: chmod a= /usr/sbin/modem-manager&lt;br /&gt;
&lt;br /&gt;
Another way to disable it is by forced uninstall: rpm --erase --nodeps ModemManager&lt;br /&gt;
&lt;br /&gt;
Remember to kill the running copy: killall -KILL modem-manager&lt;br /&gt;
&lt;br /&gt;
Caveat: it is not clear if modem-manager would not be resurrected by an update to the NetworkManager or ModemManager packages.&lt;br /&gt;
&lt;br /&gt;
== Configure Altera jtagd ==&lt;br /&gt;
&lt;br /&gt;
(if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/jtagd&lt;br /&gt;
echo &#039;Password = &amp;quot;123&amp;quot;;&#039; &amp;gt; /etc/jtagd/jtagd.conf&lt;br /&gt;
cp -pv  /daq/daqshare/olchansk/altera/11.0/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start local jtagd: /daq/daqshare/olchansk/altera/11.0/quartus/bin/jtagd&lt;br /&gt;
* test local connection: /daq/daqshare/olchansk/altera/11.0/quartus/bin/jtagconfig&lt;br /&gt;
* test remote connection (add this machine to your .jtag.conf, run jtagconfig&lt;br /&gt;
&lt;br /&gt;
For more information, go to [[Quartus]]&lt;br /&gt;
&lt;br /&gt;
== Install EOS ==&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
http://eos-docs.web.cern.ch/eos-docs/quickstart/setup_repo.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -vh --install https://dss-ci-repo.web.cern.ch/dss-ci-repo/eos/citrine/tag/el-7/x86_64/eos-repo-el7-generic-1.noarch.rpm&lt;br /&gt;
yum-config-manager --disable eos-citrine # disable auto-update because all packages are not signed&lt;br /&gt;
yum-config-manager --disable eos-dep # disable auto-update because all packages are not signed.&lt;br /&gt;
yum install eos-client eos-fuse --enablerepo=eos-citrine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install fix for the el7 systemd dbus boot hang ==&lt;br /&gt;
&lt;br /&gt;
Around early Summer 2018 el7 started showing a boot problem. In the nutshell,&lt;br /&gt;
there is a problem with the dbus connection between dbus and systemd that&lt;br /&gt;
prevents polkit, firewalld, etc from starting. The system eventually boots&lt;br /&gt;
enough that one can ssh into it, but most things do not work. Notably,&lt;br /&gt;
polkit is not running, firewalld is not running, ssh login takes about 15-30 second.&lt;br /&gt;
&lt;br /&gt;
Solution is to add a special systemd service to check that dbus started correctly.&lt;br /&gt;
It that runs after dbus is started, but before it is used, and it restarts dbus in a loop&lt;br /&gt;
with a delay until dbus starts correctly. In testing, dbus always starts correctly after&lt;br /&gt;
the first retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.perl /usr/bin/&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable systemd-check-dbus&lt;br /&gt;
systemctl start systemd-check-dbus&lt;br /&gt;
systemctl status systemd-check-dbus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After linux boots, if everything was okey, the script will report this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iris01 ~]# systemctl status systemd-check-dbus&lt;br /&gt;
...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca systemd[1]: Starting Check that systemd is registered with dbus...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca sh[4283]: Starting check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.DBus&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.systemd1&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: systemd1 dbus service exists, success!&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: Finished check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca systemd[1]: Started Check that systemd is registered with dbus.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the boot problem happened, the script will report about restarting dbus.&lt;br /&gt;
&lt;br /&gt;
Note: the systemd service file adjusts the start order of other services, this adjustment seems to reduce the probability of the problem.&lt;br /&gt;
&lt;br /&gt;
== Configure GRUB boot loader (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub, remove &amp;quot;rhgb&amp;quot; and &amp;quot;quiet&amp;quot; from GRUB_CMDLINE_LINUX&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg&lt;br /&gt;
* grub2-editenv list # show contents of boot environement file&lt;br /&gt;
* /bin/rm /boot/grub2/grubenv # remove stale settings, make grub2 boot from first entry in config file&lt;br /&gt;
&lt;br /&gt;
== Install memtest86+ (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install memtest86+&lt;br /&gt;
/bin/cp -vf /usr/share/memtest86+/20_memtest86+ /etc/grub.d/&lt;br /&gt;
/bin/chmod a+x /etc/grub.d/20_memtest86+ &lt;br /&gt;
grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable ELREPO ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo_triumf.repo&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reduce install size (optional) ==&lt;br /&gt;
&lt;br /&gt;
This is optional. Only do this if reducing the size of the OS image is very important.&lt;br /&gt;
&lt;br /&gt;
Do this for VME processors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum erase &amp;quot;texlive*&amp;quot; &amp;quot;java*&amp;quot; &amp;quot;boost*&amp;quot; libreoffice&amp;quot;*&amp;quot;&lt;br /&gt;
#yum erase &amp;quot;xemacs*&amp;quot;&lt;br /&gt;
yum erase &amp;quot;libstdc++-docs&amp;quot;&lt;br /&gt;
yum erase firefox google-chrome&amp;quot;*&amp;quot;&lt;br /&gt;
yum clean all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm -rf /usr/share/help&lt;br /&gt;
/bin/rm -rf /usr/share/doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update from el7.6 to el7.7 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum versionlock delete zfs&lt;br /&gt;
yum versionlock delete kernel&lt;br /&gt;
yum -y update &amp;quot;yum*&amp;quot; &amp;quot;rpm*&amp;quot;&lt;br /&gt;
yum -y erase libqtxdg lxqt-qtplugin ### LXQT is not compatible&lt;br /&gt;
yum update&lt;br /&gt;
after rebooting into el7.7, follow instructions for updating ZFS from version 0.7 to 0.8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
== Special hardware settings ==&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 1207 or newer&lt;br /&gt;
* (before CentOS7) sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
* CentOS7: installs correct drivers automatically&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair-II mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2607 or newer&lt;br /&gt;
* for the onboard IDE to work, add &amp;quot;all-generic-ide&amp;quot; to kernel boot options in grub.conf&lt;br /&gt;
* sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
&lt;br /&gt;
=== ASUS P7P55D EVO mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2004 or newer&lt;br /&gt;
* SL6 - install special driver for on board PCIe GigE network port and disable on board PCI GigE network port:&lt;br /&gt;
** yum --enablerepo elrepo install kmod-r8168 kmod-r8169&lt;br /&gt;
** # do not do this: sed &#039;s/^blacklist/#blacklist/&#039; -i /etc/modprobe.d/blacklist-r8169.conf&lt;br /&gt;
** reboot&lt;br /&gt;
** verify that correct drivers are loaded: ethtool -i eth0; ethtool -i eth1&lt;br /&gt;
** note: there will be no eth1 - r8169 driver is disabled.&lt;br /&gt;
&lt;br /&gt;
=== ASUS P6X58-E-WS mobo ===&lt;br /&gt;
&lt;br /&gt;
* BIOS settings&lt;br /&gt;
** F1 or DEL to enter BIOS setup, F8 boot menu&lt;br /&gt;
** go to POWER-&amp;gt;HW mon, confirm CPU temperature is around 30C. (heatsink is installed correctly. Bad heatsink temperature quickly goes up to 50-70C).&lt;br /&gt;
** Main menu: Storage config - SATA change IDE-&amp;gt;AHCI&lt;br /&gt;
** System information: confirm BIOS version 301, CPU type, memory size&lt;br /&gt;
** AI Tweak: set DRAM frequency - AUTO-&amp;gt;DDR3-1333&lt;br /&gt;
** Advanced-&amp;gt;Onboard devices: LAN BOOT: enabled&lt;br /&gt;
** Power-&amp;gt;HW monitor: CPU Q-FAN: enabled&lt;br /&gt;
** Boot-&amp;gt;Settings: Quick boot: enabled; Full screen logo: disabled; Wait for F1: disabled&lt;br /&gt;
** Save and exit&lt;br /&gt;
&lt;br /&gt;
=== ASUS E35M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboards/E35M1M_PRO/#specifications&lt;br /&gt;
* use BIOS version 1002 or newer&lt;br /&gt;
* for CPU temperature: install kmod-k10temp from ELREPO (kmod-k10temp-0.0-4.el6.elrepo.x86_64.rpm)&lt;br /&gt;
* for Sensors: yum --enablerepo elrepo install kmod-w83627ehf; modprobe w83627ehf; sensors&lt;br /&gt;
* for Graphics: yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* to enable booting from USB3, edit /etc/dracut.conf, change line &amp;quot;add_drivers&amp;quot; to read: add_drivers+=&amp;quot;xhci-hcd&amp;quot;&lt;br /&gt;
* to use multiple monitors, run &amp;quot;aticonfig --initial --heads=2 --adapter=1 --xinerama=on&amp;quot;, to change screen layout, edit /etc/X11/xorg.conf. Only dual monitors DVI+HDMI seem to work. Tripple monitors does not seem to work.&lt;br /&gt;
&lt;br /&gt;
Sensors instructions below are obolete (use driver from ELREPO)&lt;br /&gt;
* for Sensors, install driver for NCT6776F chip from https://github.com/groeck/w83627ehf/archives/master (in the Makefile, change the line &amp;quot;KERNEL_BUILD=&amp;quot; to read: &amp;quot;KERNEL_BUILD:=/usr/src/kernels/$(TARGET)&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/groeck-w83627ehf-dd3e543/w83627ehf.ko&lt;br /&gt;
echo &amp;quot;modprobe hwmon; modprobe hwmon-vid; modprobe k10temp; rmmod w83627ehf; insmod /root/w83627ehf.ko&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS E45M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/Motherboards/E45M1M_PRO/#specifications&lt;br /&gt;
* use BIOS 1202 or newer&lt;br /&gt;
* follow the E35M1-M PRO instructions above&lt;br /&gt;
&lt;br /&gt;
=== ASUS P9X79 WS ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboard/P9X79_WS/&lt;br /&gt;
* use BIOS version 4802. Older versions seem to be ok: 3101, 3401, 4701 or newer. If BIOS is 1305 or older, install P9X79-WS-CAP-Converter.ROM (BIOS 2902/3101), then the new BIOS.&lt;br /&gt;
* (not needed for CentOS7) for CPU temperature, install coretemp&lt;br /&gt;
* (not needed for CentOS7) for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
* BIOS Settings:&lt;br /&gt;
** enter &amp;quot;Advanced mode&amp;quot;&lt;br /&gt;
** Ai Tweaker -&amp;gt; Ai Overclock Tuner -&amp;gt; Set to &amp;quot;XMP&amp;quot; - this enables DDR3-1600 RAM speed vs DDR3-1333 by default&lt;br /&gt;
** ### NOT THIS: Monitor -&amp;gt; CPU fan speed low limit -&amp;gt; Set to &amp;quot;200 RPM&amp;quot; - we are using high efficiency slow turning CPU coolers and the default 600 RPM is right on the edge of firing false warnings&lt;br /&gt;
** Monitor -&amp;gt; disable Q-fan on for all fans - let all fans always run at maximum RPMs&lt;br /&gt;
** Boot -&amp;gt; Full screen logo -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
** Wait for F1 -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ASUS P8B-M ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 6103 or newer&lt;br /&gt;
* for CPU temperature, install coretemp&lt;br /&gt;
* for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
&lt;br /&gt;
=== SUPERMICRO X9SCL ===&lt;br /&gt;
&lt;br /&gt;
* yum install kmod-w83627ehf.x86_64 coretemp&lt;br /&gt;
* xemacs -nw /etc/rc.local, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe w83627ehf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z87-WS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z97-WS ===&lt;br /&gt;
&lt;br /&gt;
the nct6775 driver does not work because of conflict with ACPI.&lt;br /&gt;
&lt;br /&gt;
=== ASUS AM1M-A ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 602 or later&lt;br /&gt;
* SL6.5 installer cannot use USB2 ports and the network. Use USB3 ports (blue colour) to boot USB installer (memtest, rescue, etc)&lt;br /&gt;
* SL6.5 kernels require boot option &amp;quot;iommu=soft&amp;quot; or USB2 and network do not work. (USB3 - blue ports - seems okey)&lt;br /&gt;
* install ATI/AMD video drivers from ELREPO (see below)&lt;br /&gt;
* sensors chip is ITE IT8623E, for SL6, use standalone driver from lm_sensors. (2 fans rpm, 2 temperatures):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* for el7 use it87.ko driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget https://daqshare.triumf.ca/~olchansk/linux/CentOS7/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@midemma02 ~]# sensors&lt;br /&gt;
radeon-pci-0008&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.0°C  (crit = +120.0°C, hyst = +90.0°C)&lt;br /&gt;
&lt;br /&gt;
fam15h_power-pci-00c4&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
power1:           N/A  (crit =  25.00 W)&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.2°C  (high = +70.0°C)&lt;br /&gt;
                       (crit = +70.0°C, hyst = +69.0°C)&lt;br /&gt;
&lt;br /&gt;
it8603-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:          +0.96 V  (min =  +2.50 V, max =  +2.95 V)  ALARM&lt;br /&gt;
in1:          +2.23 V  (min =  +0.94 V, max =  +1.22 V)  ALARM&lt;br /&gt;
in2:          +2.03 V  (min =  +0.74 V, max =  +0.77 V)  ALARM&lt;br /&gt;
in3:          +2.00 V  (min =  +1.26 V, max =  +0.13 V)  ALARM&lt;br /&gt;
in4:          +2.23 V  (min =  +2.95 V, max =  +2.15 V)  ALARM&lt;br /&gt;
3VSB:         +3.36 V  (min =  +6.00 V, max =  +2.50 V)  ALARM&lt;br /&gt;
Vbat:         +3.22 V  &lt;br /&gt;
+3.3V:        +3.36 V  &lt;br /&gt;
fan1:         611 RPM  (min =  200 RPM)&lt;br /&gt;
fan2:         707 RPM  (min =  600 RPM)  ALARM&lt;br /&gt;
temp1:        +38.0°C  (low  = +122.0°C, high = +122.0°C)  sensor = thermistor&lt;br /&gt;
temp2:        +22.0°C  (low  = +119.0°C, high = -35.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
temp3:       -128.0°C  (low  = +16.0°C, high = +93.0°C)  sensor = thermistor&lt;br /&gt;
intrusion0:  ALARM&lt;br /&gt;
&lt;br /&gt;
[root@midemma02 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* AMD &amp;quot;Athlon(tm) 5350 APU&amp;quot; graphics supports 2 monitors maximum (mobo has 3 video outputs, only 2 can be used together)&lt;br /&gt;
&lt;br /&gt;
=== Intel SE7230NH1 ===&lt;br /&gt;
&lt;br /&gt;
* front panel header connector pinout is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PWR LED | 1  2|&lt;br /&gt;
        | 3  4|&lt;br /&gt;
PWR LED | 5  6|&lt;br /&gt;
HDD LED | 7  8|&lt;br /&gt;
HDD LED | 9 10|&lt;br /&gt;
PWR SW  |11 12| NIC1 LED&lt;br /&gt;
PWR SW  |13 14| NIC1 LED&lt;br /&gt;
RST SW  |15 16|&lt;br /&gt;
RST SW  |17 18|&lt;br /&gt;
        |19 20|&lt;br /&gt;
NMI SW  |21 22| NIC2 LED&lt;br /&gt;
NMI SW  |23 24| NIC2 LED&lt;br /&gt;
...     |...  |&lt;br /&gt;
        |33 34|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS H110M-A/M.2 ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 2003 or later&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT5539D&lt;br /&gt;
* sensors chip is &amp;quot;NCT6793D or compatible chip&amp;quot;, for el7, use this driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq03 ~]# sensors&lt;br /&gt;
acpitz-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                       +0.34 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                       +0.15 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                       +0.97 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                       +3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                       +3.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                       +1.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                      +0.13 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1020 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM&lt;br /&gt;
SYSTIN:                   +119.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +27.5°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +111.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +28.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Physical id 0:  +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:         +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:         +28.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
[root@daq03 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supermicro X11SSH-F ===&lt;br /&gt;
&lt;br /&gt;
* blacklist the mei and mei_me drivers per http://www.supermicro.com/support/faqs/faq.cfm?faq=14537&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# more /etc/modprobe.d/blacklist.conf&lt;br /&gt;
blacklist mei&lt;br /&gt;
blacklist mei_me&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mobo requires M.2 PCIe SSD (M.2 SATA SSD would not work. SATA SATA SSD ok)&lt;br /&gt;
* boot from M.2 PCIe SSD requires UEFI boot (from an MSDOS partition on the SSD)&lt;br /&gt;
&lt;br /&gt;
=== ASUS TUF Z390M-PRO GAMING (WI-FI) ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 2417 is okey, upgrade to this if older&lt;br /&gt;
* do not set XMP memory mode&lt;br /&gt;
* in the BIOS, enable the boot compatibility support module mode: BIOS (press DEL) -&amp;gt; Advanced mode -&amp;gt; BOOT -&amp;gt; CSM Module -&amp;gt; Enable CSM &amp;quot;yes&amp;quot;.&lt;br /&gt;
* for SL6, install e1000e driver from ELREPO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install --enablerepo=elrepo kmod-e1000e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors chip appears to be &amp;quot;Nuvoton NCT6798D&amp;quot; not clear what driver to use&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT6798D&lt;br /&gt;
* kmod-nct6775-0.0-5.el7_7.elrepo.x86_64.rpm from ELrepo finds the chip but bombs because of conflict with ACPI&lt;br /&gt;
&lt;br /&gt;
=== ASUS PRIME X399-A ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 1002&lt;br /&gt;
* for reading temperatures and fan rotations, install driver: https://github.com/electrified/asus-wmi-sensors/issues/29&lt;br /&gt;
&lt;br /&gt;
== Configure X11 graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Special settings for DAQ ===&lt;br /&gt;
&lt;br /&gt;
* add the following at the end of /etc/X11/xorg.conf. The enables Ctrl-Alt-KP-/ and Ctrl-Alt-KP-* to unlock the keyboard after Altera Quartus crash:&lt;br /&gt;
&amp;lt;pre&amp;gt;Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowDeactivateGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowClosedownGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo=elrepo install nvidia-detect&lt;br /&gt;
* run: nvidia-detect&lt;br /&gt;
* as instructed by nvidia-detect, install correct driver:&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-304xx&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-173xx&lt;br /&gt;
* (before SL6.x:  if it fails due to conflict with module-init-tools, run &amp;quot;yum --disablerepo \* --enablerepo elrepo update module-init-tools&amp;quot;)&lt;br /&gt;
* yum erase xorg-x11-glamor ### see http://elrepo.org/tiki/kmod-nvidia (search for glamor)&lt;br /&gt;
* mv /etc/X11/xorg.conf /etc/X11/xorg.conf-xxx&lt;br /&gt;
* nvidia-xconfig&lt;br /&gt;
* (SL6) reboot&lt;br /&gt;
* (SL5) /dev/MAKEDEV nvidia&lt;br /&gt;
* (SL5) restart the X11 server (Ctrl-Alt-Backspace or &amp;quot;killall Xorg gdm-binary&amp;quot;)&lt;br /&gt;
* observe that X11 server restarts using the NVIDIA driver (big NVIDIA logo on startup)&lt;br /&gt;
* if needed, login as root and run &amp;quot;nvidia-settings&amp;quot; to setup dual-screen configuration, etc&lt;br /&gt;
&lt;br /&gt;
=== Install legacy NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
For old NVIDIA cards:&lt;br /&gt;
* GeForce FX 5500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.31/NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
sh ./NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GeForce 6200 - NVIDIA Corporation NV44A [GeForce 6200]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install nvidia-x11-drv-304xx-304.121 --enablerepo=elrepo&lt;br /&gt;
nvidia-xconfig&lt;br /&gt;
rmmod nvidia&lt;br /&gt;
killall gdm-binary&lt;br /&gt;
login as root&lt;br /&gt;
nvidia-settings to setup multiple displays&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* check that /etc/X11/xorg.conf section &amp;quot;Device&amp;quot; entry &amp;quot;Driver&amp;quot; says &amp;quot;fglrx&amp;quot;&lt;br /&gt;
* run &amp;quot;aticonfig --initial&amp;quot; to create xorg.conf if existing one is not good&lt;br /&gt;
* run &amp;quot;amdcccle&amp;quot; as root to configure dual-screens, etc&lt;br /&gt;
  Note: &#039;amdcccle&#039; is a GUI, so you must run this command from within a running X session&lt;br /&gt;
* killall Xorg&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers (CentOS7) ===&lt;br /&gt;
&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* yum install acpid&lt;br /&gt;
* rpm -vh --install kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* amdconfig -f --initial&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* reboot&lt;br /&gt;
* login as root&lt;br /&gt;
* amdcccle&lt;br /&gt;
&lt;br /&gt;
NOTE: if both drivers - radeon and fglrx are loaded, boot will hang. the radeon driver is supposed to be blacklisted through grub rdblacklist=radeon entry which is installed by running grub2-mkconfig.&lt;br /&gt;
&lt;br /&gt;
=== Install Intel drivers for HD4600/Z87 ===&lt;br /&gt;
&lt;br /&gt;
SL6.5 has the required drivers for the socket 1150 machines with Intel HD4600 graphics and Z87 chipset.&lt;br /&gt;
&lt;br /&gt;
ASUS Z87 WS motherboard has these video connections with corresponding Intel video port assignements, as reported by &amp;quot;xrandr&amp;quot;:&lt;br /&gt;
* DisplayPort - DP1/HDMI1&lt;br /&gt;
* MiniDisplayPort - DP2/HDMI2&lt;br /&gt;
* HDMI - HDMI3&lt;br /&gt;
&lt;br /&gt;
Due to hardware limitations, 3 HDMI monitors using 2 passive DP-HDMI adapters (and 1 straight HDMI) cannot be used.&lt;br /&gt;
&lt;br /&gt;
To use 3 monitors do this:&lt;br /&gt;
* 1st monitor: DisplayPort - DP-to-HDMI-passive-adapter - HDMI monitor (not tried: DP-to-DP-cable - DisplayPort monitor).&lt;br /&gt;
* 2nd monitor: MiniDisplayPort - MiniDP-to-DP-cable - DisplayPort monitor&lt;br /&gt;
* 3rd monitor: HDMI - HDMI-cable - HDMI monitor&lt;br /&gt;
&lt;br /&gt;
With the monitors I have (Dell 1920x1200 VGA-HDMI-DP), the software thinks that there are 4 monitors: somehow both DP2 and HDMI2 see 1 minitor each, but the hardware cannot drive 4 monitors, so everything goes blank. To fix, disable HDMI2 (xrandr -display :0 --output HDMI2 --off) and enable DP2 (xrandr -display :0 --output DP2 --auto).&lt;br /&gt;
&lt;br /&gt;
How to make this configuration permanent and how to assign monitor locations (left-right, etc), you figure it out.&lt;br /&gt;
&lt;br /&gt;
=== Manual selection of monitor, video mode and resolution ===&lt;br /&gt;
&lt;br /&gt;
Automatic selection of monitor and video mode usually works. When it does not, configure it manualls:&lt;br /&gt;
&lt;br /&gt;
* physically go to the computer&lt;br /&gt;
* login as root&lt;br /&gt;
* run &amp;quot;nvidia-settings&amp;quot; on machines using the NVIDIA driver&lt;br /&gt;
* run &amp;quot;aticonfig&amp;quot; on machines with the ATI/AMD driver (use &amp;quot;aticonfig --initial&amp;quot; for initial setup, and good luck with anything more complicated)&lt;br /&gt;
* run &amp;quot;system-config-display&amp;quot;.&lt;br /&gt;
** In the &amp;quot;hardware&amp;quot; tab, select monitor type: &amp;quot;generic LCD 1280x1024&amp;quot; or &amp;quot;generic LCD 1600x1200&amp;quot;.&lt;br /&gt;
** In the &amp;quot;settings&amp;quot; tab, select &amp;quot;1280x1024&amp;quot; or &amp;quot;1600x1200&amp;quot; and &amp;quot;Thousands of colors&amp;quot;.&lt;br /&gt;
** Press &amp;quot;ok&amp;quot;, the display settings application should close.&lt;br /&gt;
* Logout, the new login window should use the new settings.&lt;br /&gt;
&lt;br /&gt;
=== Disable screen saver ===&lt;br /&gt;
&lt;br /&gt;
If machine is booted without any monitor connected, current video cards to not enable any video outputs. If a monitor is connected later, there is no video image and there is no easy way to get a video image.&lt;br /&gt;
&lt;br /&gt;
This can be solved by configuring X11 to always enable some video output. Because the monitor type is not known when X11 starts, one has to select some standard video mode (i.e. VESA 1280x1024) on some video output (VGA, DVI or HDMI).&lt;br /&gt;
&lt;br /&gt;
Only NVIDIA cards with the NVIDIA driver (from EPEL) is supported by these instructions.&lt;br /&gt;
&lt;br /&gt;
* create default xorg.conf: nvidia-xconfig&lt;br /&gt;
* edit /etc/X11/xorg.conf&lt;br /&gt;
* add monitor section for the fake monitor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    HorizSync       31.0 - 83.0&lt;br /&gt;
    VertRefresh     59.0 - 61.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    ModeLine &amp;quot;1280x1024&amp;quot;   108.00   1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add output selection in the &amp;quot;Device&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 210&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT&amp;quot;&lt;br /&gt;
    Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-1&amp;quot;&lt;br /&gt;
    Option &amp;quot;UseEDID&amp;quot; &amp;quot;no&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add fake video mode to the &amp;quot;Screen&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Modes       &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable screen saver and DPMS power off in the &amp;quot;ServerLayout&amp;quot; or &amp;quot;ServerFlags&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Layout0&amp;quot;&lt;br /&gt;
    Screen      0  &amp;quot;Screen0&amp;quot; 0 0&lt;br /&gt;
    InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;&lt;br /&gt;
    InputDevice    &amp;quot;Mouse0&amp;quot; &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot; &lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
EndSection &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
* logout and reboot the computer to have all the changes to take effect&lt;br /&gt;
&lt;br /&gt;
== Configure HTTPS server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache httpd.&lt;br /&gt;
&lt;br /&gt;
First, configure apache httpd:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y mod_ssl certwatch crypto-utils&lt;br /&gt;
cd /etc/httpd/conf.d/&lt;br /&gt;
mv ssl.conf ssl.conf-not-used ### remove the stock ssl.conf which refers to the localhost certificate that will expire in 1 year&lt;br /&gt;
touch ssl.conf ### create a blank file to prevent automatic updates from installing a stock ssl.conf file&lt;br /&gt;
# this is done later: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file ssl-daq12.conf # use actual hostname instead of daq12&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443 https&lt;br /&gt;
#SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
ServerName daq12.triumf.ca&lt;br /&gt;
DocumentRoot /var/www/html&lt;br /&gt;
ErrorLog /var/log/httpd/daq12.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
# note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
# new SSL settings: K.O. Jan 2020, SSLlabs rating &amp;quot;A+&amp;quot;&lt;br /&gt;
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!RSA&lt;br /&gt;
SSLHonorCipherOrder on&lt;br /&gt;
# pervious SSL settings:&lt;br /&gt;
#SSLProtocol all -SSLv2 -SSLv3&lt;br /&gt;
#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
#ProxyPass /elog/ http://localhost:8082/ retry=1&lt;br /&gt;
#ProxyPass /      http://localhost:8080/ retry=1&lt;br /&gt;
Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
Require valid-user&lt;br /&gt;
# create password file: touch /etc/httpd/htpasswd&lt;br /&gt;
# to add new user or change password: htpasswd /etc/httpd/htpasswd username&lt;br /&gt;
AuthUserFile /etc/httpd/htpasswd&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop httpd from listening on port 80: edit /etc/httpd/conf/httpd.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable and start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to access https://daq12.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, then try again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that httpd is listening on port 80, follow the httpd instructions above (remove &amp;quot;listen 80&amp;quot; from httpd.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot and open tcp port 80 in the firewall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y certbot python2-certbot-apache # (from EPEL)&lt;br /&gt;
firewall-cmd --add-port=80/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* certbot certonly --standalone --installer apache # then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq12.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;please choose...&amp;quot; - say &amp;quot;easy&amp;quot; (http access is disabled (a) by firewall, (b) by local configuration&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
* certbot install --apache --cert-name daq12.triumf.ca # then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside ssl-daq12.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in /etc/letsencrypt/live/daq12.triumf.ca/&lt;br /&gt;
* remove self-signed localhost certificate, it will expire in 1 year and cause warnings and complaints: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
* enable automatic renewal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable certbot-renew.timer&lt;br /&gt;
systemctl start certbot-renew.timer&lt;br /&gt;
systemctl list-timers --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to check corrent renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work starting with certbot-0.12.0-4.el7.noarch.&lt;br /&gt;
Certificate expiration should be automatically detected by &amp;quot;certwatch&amp;quot; and email&lt;br /&gt;
will be sent to local root user, to be forwarded to an actual person by ~root/.forward.&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/httpd/htpasswd&lt;br /&gt;
htpasswd /etc/httpd/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Final test:&lt;br /&gt;
* access https://daq12.triumf.ca - https status should be &amp;quot;green&amp;quot;&lt;br /&gt;
* login with password should work&lt;br /&gt;
* the apache httpd test page should load&lt;br /&gt;
* check site security using the SSLlabs https tester. (I get grade &amp;quot;A-&amp;quot;): https://www.ssllabs.com/ssltest/&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* Configure selinux to allow proxying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 setsebool -P httpd_can_network_connect 1&lt;br /&gt;
 systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== Configure large RAID6 arrays ==&lt;br /&gt;
&lt;br /&gt;
* connect the disks&lt;br /&gt;
* check the disks health&lt;br /&gt;
** run smart-status.perl&lt;br /&gt;
* partition the disks&lt;br /&gt;
** yum install gdisk&lt;br /&gt;
** gdisk /dev/sdX&lt;br /&gt;
** delete all partitions: o&lt;br /&gt;
** create new partition: n, enter, enter, enter, fd00 (default sizes, partition type fd00)&lt;br /&gt;
** write and exit: w&lt;br /&gt;
* check presence of all partitions:&lt;br /&gt;
** /bin/ls -l /dev/sd*1&lt;br /&gt;
* prepare to use an external bitmap file&lt;br /&gt;
** touch /md6bitmap&lt;br /&gt;
** edit /etc/fstab, change entry for root filesystem from: &amp;quot;defaults 1 1&amp;quot; to &amp;quot;defaults 0 0&amp;quot;&lt;br /&gt;
** edit /boot/grub/grub.conf, change entry &amp;quot;kernel ... ro ...&amp;quot; to &amp;quot;kernel ... rw ...&amp;quot;&lt;br /&gt;
* create raid array:&lt;br /&gt;
** mdadm --create /dev/md6 --level=6 --bitmap=/md6bitmap --raid-devices=10 /dev/sd[b-k]1&lt;br /&gt;
** mdadm -Ds &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
** cleanup /etc/mdadm.conf&lt;br /&gt;
** echo &amp;quot;echo 16384 &amp;gt; /sys/block/md6/md/stripe_cache_size&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** echo &amp;quot;echo 1     &amp;gt; /sys/block/md6/md/sync_speed_min&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** source /etc/rc.local&lt;br /&gt;
* observe raid array rebuild:&lt;br /&gt;
** watch -d -n1 &amp;quot;cat /proc/mdstat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure ZFS ==&lt;br /&gt;
&lt;br /&gt;
=== Install ZFS ===&lt;br /&gt;
&lt;br /&gt;
(from here: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for &amp;quot;kABI-tracking kmod&amp;quot; - dkms modules seem to always mess up the system when upgrading to next release of zfs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rpm -vh --install http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_9.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum --enablerepo=zfs-kmod clean all&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
#sed &#039;s/^SELINUX=.*/SELINUX=disabled/&#039; -i /etc/selinux/config&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
#systemctl enable zfs-import-cache&lt;br /&gt;
#systemctl enable zfs-mount&lt;br /&gt;
#systemctl enable zfs-share&lt;br /&gt;
#systemctl enable zfs-zed&lt;br /&gt;
#shutdown -r now # required to load the zfs kernel modules and to disable selinux&lt;br /&gt;
modprobe zfs # should work&lt;br /&gt;
zpool status # should report no pools available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Note: zfs and selinux and not compatible: with selinux enabled, files on zfs cannot be deleted (files are gone, but &amp;quot;df&amp;quot; does not go down, zfs-0.6.5.7-1.el7.centos.x86_64), see #https://github.com/zfsonlinux/zfs/issues/4845&lt;br /&gt;
&lt;br /&gt;
* http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs-quickstart.html)&lt;br /&gt;
* http://www.freebsd.org/cgi/man.cgi?query=zpool&amp;amp;sektion=8&lt;br /&gt;
&lt;br /&gt;
If ZFS kernel module does not load automatically at boot time, add this to load it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /etc/sysconfig/modules/&lt;br /&gt;
cat &amp;gt; /etc/sysconfig/modules/zfs.modules &amp;lt;&amp;lt;EOF&lt;br /&gt;
if [ ! -e /sys/module/zfs ] ; then&lt;br /&gt;
  modprobe zfs;&lt;br /&gt;
fi&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x /etc/sysconfig/modules/zfs.modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS (CentOS-7.9) ===&lt;br /&gt;
&lt;br /&gt;
* update CentOS-7.x to latest point release&lt;br /&gt;
* reboot to latest kernel&lt;br /&gt;
* check that currently installed ZFS is 0.8.x (not 0.7 or older)&lt;br /&gt;
* then update ZFS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq16 ~]# zfs version&lt;br /&gt;
zfs-0.8.4-1&lt;br /&gt;
zfs-kmod-0.8.4-1&lt;br /&gt;
[root@daq16 ~]# yum --enablerepo=kmod-zfs update&lt;br /&gt;
...&lt;br /&gt;
[root@daq16 ~]# zfs version ### observe mismatched version numbers: 0.8.5 userspace vs 0.8.4 kernel module&lt;br /&gt;
zfs-0.8.5-1&lt;br /&gt;
zfs-kmod-0.8.4-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot to activate the updated kernel module&lt;br /&gt;
* zfs version again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq16 ~]# zpool version&lt;br /&gt;
zfs-0.8.5-1&lt;br /&gt;
zfs-kmod-0.8.5-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zpool status in case some ZFS volume needs to be updated&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq16 ~]# zpool status&lt;br /&gt;
  pool: z12tb&lt;br /&gt;
 state: ONLINE&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS 0.7 to 0.8 ===&lt;br /&gt;
&lt;br /&gt;
How to identify zfs 0.7: &amp;quot;zfs version&amp;quot; does not work, also &amp;quot;rpm -q zfs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
zfs 0.7 is obsolete.&lt;br /&gt;
&lt;br /&gt;
To opdate to zfs 0.8 or newer, remove 0.7, then install&lt;br /&gt;
new version per instructions above.&lt;br /&gt;
&lt;br /&gt;
* remove zfs 0.7&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock delete zfs ### versionlock not needed anymore&lt;br /&gt;
yum versionlock delete kernel ### versionlock not needed anymore&lt;br /&gt;
rm /etc/yum.repos.d/zfs.repo* ### delete old repo files&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* reboot&lt;br /&gt;
* install new zfs per instructions above&lt;br /&gt;
* zpool import -as&lt;br /&gt;
* zpool status ### check if any pool needs to be upgraded&lt;br /&gt;
* zpool upgrade zssd ### upgrade zfs pool features&lt;br /&gt;
&lt;br /&gt;
=== Lock kernel and zfs packages ===&lt;br /&gt;
&lt;br /&gt;
!!! THIS IS NOT NEEDED ANYMORE !!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock kernel&lt;br /&gt;
yum versionlock zfs&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Follow generic ZFS instructions ===&lt;br /&gt;
&lt;br /&gt;
Here: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
== performance notes ==&lt;br /&gt;
&lt;br /&gt;
Go here: [[disk_benchmarks]]&lt;br /&gt;
&lt;br /&gt;
== Configure UEFI boot ==&lt;br /&gt;
&lt;br /&gt;
Some mobo can boot from NVME (PCIe) SSDs only via UEFI boot. Do this:&lt;br /&gt;
&lt;br /&gt;
* partition the NVME SSD using gdisk (must be GPT partition table, must have MSDOS EFI partition size 512MiB)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# gdisk -l /dev/nvme0n1&lt;br /&gt;
GPT fdisk (gdisk) version 0.8.6 ...&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB&lt;br /&gt;
Logical sector size: 512 bytes&lt;br /&gt;
Disk identifier (GUID): 1A82CC87-2757-44ED-980F-C78E3681D9D3&lt;br /&gt;
Partition table holds up to 128 entries&lt;br /&gt;
First usable sector is 34, last usable sector is 500118158&lt;br /&gt;
Partitions will be aligned on 2048-sector boundaries&lt;br /&gt;
Total free space is 2014 sectors (1007.0 KiB)&lt;br /&gt;
&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System&lt;br /&gt;
   2         1050624       500118158   238.0 GiB   8300  Linux filesystem&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create filesystems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.xfs /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare EFI partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/efi&lt;br /&gt;
mount /dev/nvme0n1p1 /mnt/efi&lt;br /&gt;
mkdir -p /mnt/efi/efi/boot&lt;br /&gt;
cd /mnt/efi/efi/boot&lt;br /&gt;
# with Ubuntu LTS 20.04&lt;br /&gt;
cp /boot/vmlinuz vmlinuz # copy the desired linux kernel&lt;br /&gt;
#cp /boot/initramfs initramfs.img # copy the matching initramfs file&lt;br /&gt;
cp /boot/initrd.img initrd.img # copy the matching initrd file&lt;br /&gt;
#from /home/olchansk/sysadm/syslinux/syslinux-6.03 copy&lt;br /&gt;
cp /home/olchansk/sysadm/syslinux/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp /home/olchansk/sysadm/syslinux/syslinux-6.03/efi64/com32/elflink/ldlinux/ldlinux.e64 .&lt;br /&gt;
cp syslinux.efi bootx64.efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux config file: syslinux.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro root=/dev/nvme0n1p2 nomodeset initrd=initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare system partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/tmp&lt;br /&gt;
mount /dev/nvme0n1p2 /mnt/tmp&lt;br /&gt;
rsync -avx / /mnt/tmp&lt;br /&gt;
cd /mnt/tmp&lt;br /&gt;
#edit etc/fstab&lt;br /&gt;
#edit etc/syslinux/selinux # set selinux to permissive mode because rsync did not copy the selinux labels&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* unmount and reboot&lt;br /&gt;
* restore selinux labels after first boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#login as root&lt;br /&gt;
cd /&lt;br /&gt;
restorecon -R / # can also add &amp;quot;-v&amp;quot; to see progress, but runs much slower&lt;br /&gt;
#edit /etc/sysconfig/selinux # enable selinux&lt;br /&gt;
#shutdown -r now # reboot with selinux enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure UEFI secure  boot =&lt;br /&gt;
&lt;br /&gt;
The above instructions do not quite work if &amp;quot;secure boot&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
These modifications are needed:&lt;br /&gt;
&lt;br /&gt;
* ls -l /boot/efi/EFI/bootko/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
total 140116&lt;br /&gt;
-rwxr-xr-x 1 root root      108 Feb 24 15:47 BOOTX64.CSV&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 bootx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root   217495 Feb 24 16:16 config-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root      105 Feb 24 15:47 grub.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 grubx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initramfs.img&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initrd.img-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root   139968 Feb 24 16:16 ldlinux.e64&lt;br /&gt;
-rwxr-xr-x 1 root root  1269496 Feb 24 15:47 mmx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 shimx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root      171 Feb 24 16:16 syslinux.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root      102 Feb 24 16:16 syslinux.cfg~&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 syslinux.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  4068355 Feb 24 16:16 System.map-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz-4.15.0-74-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** shmix64.efi is a copy from /boot/efi/EFI/ubuntu&lt;br /&gt;
** bootx64.efi is a copy of shimx64.efi (maybe not needed?)&lt;br /&gt;
** grubx64.efi is a copy of syslinux.efi&lt;br /&gt;
* efibootmgr -c -d /dev/nvme0n1 -p 2 -w -L bootko -l &#039;\EFI\bootko\shimx64.efi&#039;&lt;br /&gt;
* efibootmgr -v&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# efibootmgr -v&lt;br /&gt;
BootCurrent: 0000&lt;br /&gt;
Timeout: 1 seconds&lt;br /&gt;
BootOrder: 0000,0001,0002&lt;br /&gt;
Boot0000* bootko        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\BOOTKO\SHIMX64.EFI)&lt;br /&gt;
Boot0001* Hard Drive    BBS(HD,,0x0)..GO..NO........y.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7....................A.......................................&amp;lt;..Gd-.;.A..MQ..L.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7........BO&lt;br /&gt;
Boot0002* ubuntu        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* NOTE: if, after running &amp;quot;efibootmgr -c&amp;quot;, the UUID is zero, then it probably did not take and the entry will vanish after reboot. In my case the mistake was to use &amp;quot;-p 1&amp;quot; instead of &amp;quot;-p 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Boot sequence is this:&lt;br /&gt;
* shmix64.efi - Microsoft-signed boot loader is accepted by secure boot, loads and runs&lt;br /&gt;
* shimx64.efi loads and runs grubx64.efi, this file name is hardwired into the signed shim, cannot be changed&lt;br /&gt;
* grubx64.efi is syslinux.efi (could be anything)&lt;br /&gt;
* syslinux.efi runs, loads syslinux.cfg, loads the linux kernel, loads the initrd, runs the linux kernel with specified flags (ro root=...).&lt;br /&gt;
&lt;br /&gt;
= UEFI syslinux kernel update =&lt;br /&gt;
&lt;br /&gt;
To update the linux kernel booted by UEFI syslinux, use this script:&lt;br /&gt;
* ~root/git/scripts/etc/update_efi.perl&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3028</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3028"/>
		<updated>2020-09-12T18:49:28Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Configure Altera jtagd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes ==&lt;br /&gt;
&lt;br /&gt;
* these instructions are periodically updated to include items needed for older/newer versions of Linux. They are marked like this: (SL4.2+) means Scientific Linux 4.2 and newer; (SL4 is equivalent to FC3). (FC5 only) means Fedora Core 5; etc.&lt;br /&gt;
* obsolete items are marked by the &amp;quot;#&amp;quot; sign at the beginning of the line and sometimes have a comment about the reason for removal.&lt;br /&gt;
* typically, we do not &amp;quot;upgrade&amp;quot; machines using the Red Hat &amp;quot;upgrade&amp;quot; function. Instead, we save critical files from the old installation and do a &amp;quot;fresh install&amp;quot; from scratch&lt;br /&gt;
* starting with RHEL7, the recommended OS is CentOS7 (instead of SL7).&lt;br /&gt;
&lt;br /&gt;
== Disk configurations ==&lt;br /&gt;
&lt;br /&gt;
The year is 2019 and SSDs are used exclusively, except for bulk data storage, where one used 6-8-10-12 TB HDDs&lt;br /&gt;
&lt;br /&gt;
For reliability, home directories and data disks must use redundant storage - mdadm raid1 or ZFS raid1/raid6.&lt;br /&gt;
&lt;br /&gt;
For non-critical machines, a single SSD seems to be reliable enough to use as a boot and OS disk. But since any&lt;br /&gt;
storage device can fail at any time without warning, home directories and data disks should use redundant storage.&lt;br /&gt;
&lt;br /&gt;
Note: for data disks bigger than 4-6TB, mdadm raid1/raid6 is no longer recommended because raid rebuild,&lt;br /&gt;
verification and repair time has become unreasonably long. Instead, use ZFS raid1/raid6 which implements online verification,&lt;br /&gt;
repair and disk replacement without requiring machine shutdown or OS down time.&lt;br /&gt;
&lt;br /&gt;
* single SSD - 120GB min - single partition for &amp;quot;/&amp;quot;, no swap partition (create a swap file if swap is needed) - for non-critical machine with no local data storage (OS only)&lt;br /&gt;
* dual SSD - 2x240GB min - all partitions mirrored (RAID1), 30GB &amp;quot;/&amp;quot;, rest for /home1 - for daq station with local user home directories and no bulk data storage&lt;br /&gt;
* single SSD + 2x6-8-10-12TB HDD - SSD partition: all &amp;quot;/&amp;quot;, HDD partition as ZFS raid1 (mirrored) - for daq station with small local bulk data storage&lt;br /&gt;
* single SSD + 6-8x6-8-10-12TB HDD - for small storage server machines - for daq station with local home directories and large bulk data storage.&lt;br /&gt;
&lt;br /&gt;
For VME processors:&lt;br /&gt;
&lt;br /&gt;
* network boot - [[VME-CPU#Network_boot]] - only option for V7648/V7750, do not use for V7805 (no netboot from GigE), optional for V7865/XVB-602&lt;br /&gt;
* USB boot - 8GB USB for V7805, 16GB USB for V7865/XVB-602&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
* save /etc, /var, /root, /opt, (if needed: /usr/local, /tftpboot) by rsync to some data disk (/ladd/data0/root)&lt;br /&gt;
* check that &amp;quot;/&amp;quot; partition (it will be overwritten) is different from /home1 and /data partitions&lt;br /&gt;
* note the MAC addresses of all network interfaces, add them to ladd00 dhcpd.conf to enable PXE boot into the SL &amp;quot;network installer&amp;quot;&lt;br /&gt;
* shutdown&lt;br /&gt;
&lt;br /&gt;
== Running installer (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 can be installed from vanilla CentOS7 installation media or from&lt;br /&gt;
a custom USB key build per there instructions:&lt;br /&gt;
https://daqshare.triumf.ca/~olchansk/linux/CentOS7/&lt;br /&gt;
&lt;br /&gt;
The custom installer makes it easy to use a custom kickstart file (ks.cfg).&lt;br /&gt;
&lt;br /&gt;
Instructions for using the usb-installer:&lt;br /&gt;
&lt;br /&gt;
* disconnect machine from network&lt;br /&gt;
* plug the usb-installer into a usb3 port (blue colour)&lt;br /&gt;
* reboot machine, select booting from usb (press F8 on ASUS motherboards)&lt;br /&gt;
* usb-installer boot menu offers to install CentOS7, go there&lt;br /&gt;
* CentOS7 should boot (many messages scroll on screen)&lt;br /&gt;
* into graphical mode&lt;br /&gt;
* into installer main menu&lt;br /&gt;
* all installer options should &amp;quot;happy&amp;quot; except for the &amp;quot;installation destination&amp;quot;&lt;br /&gt;
* go to the &amp;quot;installation destination&amp;quot; menu&lt;br /&gt;
** unselect all disks except for the SSD where the OS will be installed&lt;br /&gt;
** (MOST IMPORTANT: unselect the USB installer disk!)&lt;br /&gt;
** select &amp;quot;I will configure...&amp;quot;&lt;br /&gt;
** say &amp;quot;done&amp;quot;&lt;br /&gt;
** the &amp;quot;manual partitionning&amp;quot; menu will open&lt;br /&gt;
*** use the &amp;quot;-&amp;quot; button to delete all existing partitions&lt;br /&gt;
*** select &amp;quot;standard partition&amp;quot;&lt;br /&gt;
*** click on the &amp;quot;+&amp;quot; button&lt;br /&gt;
*** in the &amp;quot;Add new partition&amp;quot; dialog, set mount point &amp;quot;/&amp;quot;, capacity blank, click &amp;quot;add mount point&amp;quot;&lt;br /&gt;
*** check capacity (should be full size of SSD), check filesystem type (should be XFS)&lt;br /&gt;
*** say &amp;quot;done&amp;quot;, there will be a warning about absent swap partition, say &amp;quot;done&amp;quot; again.&lt;br /&gt;
*** in the big useless dialog, say &amp;quot;accept changes&amp;quot;&lt;br /&gt;
*** should be back to the &amp;quot;installation summary&amp;quot; screen, &amp;quot;installation destination&amp;quot; should be happy now&lt;br /&gt;
* after everything is happy, say &amp;quot;begin installation&amp;quot;&lt;br /&gt;
* as the installation proceeds, set the password for the root user&lt;br /&gt;
* after installation is complete, reboot the machine&lt;br /&gt;
* unplug the usb-installer, CentOS7 should boot from SSD into the login screen&lt;br /&gt;
* click on &amp;quot;not listed?&amp;quot;, login as root&lt;br /&gt;
* setup network connection:&lt;br /&gt;
** open a terminal&lt;br /&gt;
** start &amp;quot;nm-connection-editor&amp;quot;&lt;br /&gt;
** click on &amp;quot;+&amp;quot; to create a new connection profile&lt;br /&gt;
** select &amp;quot;wired ethernet&amp;quot;&lt;br /&gt;
** select &amp;quot;add profile...&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, set &amp;quot;name&amp;quot; to &amp;quot;static&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, check that &amp;quot;Connect automatically&amp;quot; and &amp;quot;Make available...&amp;quot; is enabled&lt;br /&gt;
** in &amp;quot;IPv4&amp;quot;, set &amp;quot;Addresses&amp;quot; to &amp;quot;manual&amp;quot; instead of &amp;quot;dhcp&amp;quot;&lt;br /&gt;
** enter IP address, netmask 255.255.224.0, gateway 142.90.100.18, dns 142.90.100.19, search triumf.ca&lt;br /&gt;
** say &amp;quot;Add&amp;quot;, then close/quit the network settings&lt;br /&gt;
* connect network cable&lt;br /&gt;
* network should be up, ping ladd00 should work&lt;br /&gt;
* run: yum update -y&lt;br /&gt;
* check new kernel is installed: ls -l /boot&lt;br /&gt;
* logout and restart (good luck finding these buttons in the gui!)&lt;br /&gt;
* confirm correct linux kernel is selected during boot (-229.20, not the original installer kernel)&lt;br /&gt;
* login as root, confirm network is up, proceed with the rest of these instructions&lt;br /&gt;
&lt;br /&gt;
== Configure SSH ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* Login from the console&lt;br /&gt;
* restore the SSH keys from backup (/etc/ssh/*key*)&lt;br /&gt;
* service sshd restart&lt;br /&gt;
* ssh into the new machine as root&lt;br /&gt;
* ssh root@localhost, ctrl-C&lt;br /&gt;
* ### this is done later from Konstantin&#039;s git repository - scp root@ladd00:/root/authorized_keys ~root/.ssh/&lt;br /&gt;
* (not needed for SL5.5 kickstart) check that /etc/ssh/ssh_config contains &amp;quot;ForwardX11 yes&amp;quot; and &amp;quot;ForwardX11Trusted yes&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;  ForwardX11 yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
echo &amp;quot;  ForwardX11Trusted yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post installation CentOS7 ==&lt;br /&gt;
&lt;br /&gt;
Set hostname: (use full name, i.e. daq11.triumf.ca)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;olchansk@triumf.ca amaudruz@triumf.ca lindner@triumf.ca bsmith@triumf.ca&amp;quot; &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
chmod a+r /var/log/messages&lt;br /&gt;
chmod a+r /var/log/yum.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activate rc.local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+x /etc/rc.local&lt;br /&gt;
chmod a+x /etc/rc.d/rc.local  # TL edit&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable &amp;quot;persistent network names&amp;quot; (DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/touch /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
/bin/rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
#shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypbind authconfig&lt;br /&gt;
echo &amp;quot;NISTIMEOUT=5&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
echo &amp;quot;NETWORKWAIT=yes&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
authconfig --enablenis --enablepreferdns --nisdomain LADD-NIS --nisserver ladd00.triumf.ca --update&lt;br /&gt;
ypwhich&lt;br /&gt;
ypcat -k passwd&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On the master NIS node (ladd00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
* Use &amp;quot;system-config-users&amp;quot; to add local user accounts&lt;br /&gt;
* enable selinux ssh key login to nfs mounted home directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P use_nfs_home_dirs 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* all the same as for CentOS7&lt;br /&gt;
* ensure correct boot order for ypbind (in CentOS 8.1 ypbind is started before network is ready, service file uses &amp;quot;Wants&amp;quot; instead of &amp;quot;After&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ypbind.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ypbind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ypbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS secondary server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Enable local NIS server, make local machine use it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypserv&lt;br /&gt;
/usr/lib64/yp/ypinit -s ladd00 ### (/usr/lib/yp/ypinit on 32-bit machines)&lt;br /&gt;
### ypinit will give lots of errors about &amp;quot;rpc.ypxfrd failed: RPC: Can&#039;t decode result&amp;quot;; can be ignored&lt;br /&gt;
systemctl enable rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
systemctl start rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
emacs -nw /etc/yp.conf # change &amp;quot;domain XXX server YYY.triumf.ca&amp;quot; to read &amp;quot;domain XXX server localhost&amp;quot;&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich # should say &amp;quot;localhost&amp;quot;&lt;br /&gt;
ypcat -k auto.master # should work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punch hole in the firewall: (or &amp;quot;make&amp;quot; on NIS master will complain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo YPSERV_ARGS=\&amp;quot;-p 800\&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --add-service rpc-bind --permanent&lt;br /&gt;
firewall-cmd --add-port=800/tcp --add-port=800/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on the NIS master:&lt;br /&gt;
** add the new machine to /var/yp/ypservers, run &amp;quot;make -C /var/yp&amp;quot; and also &amp;quot;cd /var/yp; yppush -h newmachine ypservers&amp;quot;&lt;br /&gt;
*** TL (2020-09): we not doing this anymore?  I guess it doesn&#039;t work anyway...&lt;br /&gt;
** if using /var/yp/securenets, copy it from NIS master to new NIS secondary server&lt;br /&gt;
&lt;br /&gt;
Enable hourly NIS update cron job (DO THIS AFTER git pull scripts, see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd etc&lt;br /&gt;
cd ~/git/scripts/etc; ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure AUTOFS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl start autofs&lt;br /&gt;
ls -l /daq/daqshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Label Selinux labels ==&lt;br /&gt;
&lt;br /&gt;
When upgrading non-selinux machines (el6) to el7 (selinux enforcing) the existing&lt;br /&gt;
user home directories will not have the correct selinux labels and many things&lt;br /&gt;
will not work, including ssh logins (sshd cannot access ~user/.ssh files).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
semanage fcontext -a -e /home /home1 ### selinux has special rules for /home, assign them to /home1&lt;br /&gt;
restorecon -R -v /home1 ### apply the new rules to files in /home1&lt;br /&gt;
ls -Zd /home1/alpha/.ssh&lt;br /&gt;
# should say: drwx------. alpha users system_u:object_r:ssh_home_t:s0  /home1/alpha/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure time (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Time server ntpd was replaced by chronyd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install chrony&lt;br /&gt;
echo server time1 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time2 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time3 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
systemctl enable chronyd&lt;br /&gt;
systemctl restart chronyd&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if desired, edit /etc/chrony.conf, remove non-triumf time servers&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Disable yum-cron:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --erase yum-cron&lt;br /&gt;
/bin/rm -v /var/lock/subsys/yum-cron&lt;br /&gt;
/bin/rm -v /etc/cron.daily/0yum-daily.cron&lt;br /&gt;
/bin/rm -v /etc/cron.hourly/0yum-hourly.cron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable yum-autoupdate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y epel-release&lt;br /&gt;
yum install -y yum-changelog yum-protectbase yum-tsflags yum-versionlock&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm&lt;br /&gt;
#rpm -vh --install https://daqshare.triumf.ca/~olchansk/linux/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm https://daqshare.triumf.ca/~olchansk/linux/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
systemctl enable yum-autoupdate&lt;br /&gt;
systemctl start yum-autoupdate&lt;br /&gt;
systemctl status yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase yum-autoupdate&lt;br /&gt;
/bin/rm -f /etc/sysconfig/yum-autoupdate.rpmsave&lt;br /&gt;
/bin/rm -f /var/lock/subsys/yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dnf-automatic&lt;br /&gt;
systemctl enable --now dnf-automatic.timer&lt;br /&gt;
systemctl list-timers *dnf-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/dnf/automatic.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apply_updates = yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure system services (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* systemctl list-unit-files | grep enabled | sort ### (to see enabled services)&lt;br /&gt;
* disable unwanted services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable bluetooth&lt;br /&gt;
systemctl disable dm-event&lt;br /&gt;
systemctl disable dmraid-activation&lt;br /&gt;
systemctl disable iscsid&lt;br /&gt;
systemctl disable iscsi&lt;br /&gt;
systemctl disable iscsiuio&lt;br /&gt;
systemctl disable libvirtd&lt;br /&gt;
systemctl disable lvm2-lmetad&lt;br /&gt;
systemctl disable lvm2-monitor&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl disable multipathd&lt;br /&gt;
systemctl disable netcf-transaction&lt;br /&gt;
systemctl disable lvm2-lvmetad.socket&lt;br /&gt;
systemctl disable lvm2-lvmpolld.socket&lt;br /&gt;
systemctl disable iscsid.socket&lt;br /&gt;
systemctl disable iscsiuio.socket&lt;br /&gt;
#systemctl disable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erase unwanted packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* PackageKit # bugs users about security updates, hogs yum lock&lt;br /&gt;
* perl-homedir # creates unwanted $HOME/perl5&lt;br /&gt;
* ModemManager # thinks that all USB-attached devices are modems&lt;br /&gt;
* pcp # sends error email to itself, does not work&lt;br /&gt;
* abrt # sends email to root about useless crashes, i.e. crash of X when machine is rebooted&lt;br /&gt;
* rear # some kind of backup and recovery tool, not clear what it does, but it sends email complaining how it is broken&lt;br /&gt;
* bash-completion # &amp;quot;echo $HOME/&amp;lt;TAB&amp;gt;&amp;quot; becomes &amp;quot;echo \$HOME&amp;quot; (notice &amp;quot;\&amp;quot; added before &amp;quot;$&amp;quot;) preventing tab-completion from doing anything useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase PackageKit perl-homedir ModemManager pcp abrt abrt-libs abrt-gui-libs rear bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable unwanted package &amp;quot;tracker&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tracker&amp;quot; package is part of the GNOME desktop, it scans the content of all files&lt;br /&gt;
into a database for quick searching.&lt;br /&gt;
&lt;br /&gt;
When it malfunctions, bad things happen, i.e. read through&lt;br /&gt;
https://bugzilla.redhat.com/show_bug.cgi?id=747689&lt;br /&gt;
&lt;br /&gt;
Specific problem I see is that it floods the system log with error messages. Also &lt;br /&gt;
consumes network and filesystem bandwidth for NFS mounted home directories.&lt;br /&gt;
&lt;br /&gt;
This package cannot be removed by &amp;quot;yum erase tracker&amp;quot; dues to dependencies&lt;br /&gt;
from core GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
Instead, do this to deactivate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod -x /usr/libexec/tracker-*&lt;br /&gt;
chmod -x /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/libexec/tracker-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure external package repositories (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
EPEL: (addtional packages)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel modules and drivers) (CentOS8)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install elrepo-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel drivers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;br /&gt;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm&lt;br /&gt;
yum -y install yum-plugin-fastestmirror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed to continue with installation ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
(these packages are sometimes missing, they are needed to follow following instructions instructions)&lt;br /&gt;
&lt;br /&gt;
(SL6.5: libotf is a dependancy of emacs - SL6.5 installer fails to install it)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install ed patch wget git libotf gdisk emacs perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Konstantin&#039;s scripts ==&lt;br /&gt;
&lt;br /&gt;
(+Centos7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go back to the NIS slave server and install the hourly NIS update cron job.&lt;br /&gt;
&lt;br /&gt;
== Enable yum version lock ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install yum-plugin-versionlock&lt;br /&gt;
#yum versionlock packagename # yum versionlock rpcbind&lt;br /&gt;
#yum versionlock list # list locked packages&lt;br /&gt;
#yum versionlock delete packagename # unlock given package&lt;br /&gt;
#yum versionlock clear # delete all locks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure trusted ssh keys ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
interrupt by Ctrl-C&lt;br /&gt;
/bin/cp ~/git/scripts/etc/authorized_keys ~/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure hardware sensors ==&lt;br /&gt;
&lt;br /&gt;
* yum -y install lm_sensors&lt;br /&gt;
* sensors-detect (accept default answer to all questions - press ENTER)&lt;br /&gt;
* systemctl restart lm_sensors&lt;br /&gt;
* sensors (to see available sensors)&lt;br /&gt;
&lt;br /&gt;
If no sensors are detected by standard drivers, follow motherboard-specific instructions at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Configure IPMI sensors ==&lt;br /&gt;
&lt;br /&gt;
Some machines support the IPMI interface for monitoring the hardware: fan speeds, temperatures, voltages.&lt;br /&gt;
&lt;br /&gt;
* find out if IPMI is supported. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dmidecode | grep -i ipmi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
if output is not blank, IPMI is maybe supported.&lt;br /&gt;
* install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
service ipmi start&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
chkconfig ipmi on&lt;br /&gt;
chkconfig ipmievd on&lt;br /&gt;
service ipmi restart&lt;br /&gt;
service ipmievd restart&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (CentOS7) install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
systemctl start ipmi&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
systemctl list-unit-files | grep -i ipmi&lt;br /&gt;
systemctl enable ipmi&lt;br /&gt;
systemctl restart ipmi&lt;br /&gt;
systemctl status ipmi&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
systemctl status ipmievd&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if ipmievd complains about SEL buffer overflow, clear it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipmitool sel list ### show ipmi messages in raw format&lt;br /&gt;
ipmitool sel elist ### show ipmi messages in useful format&lt;br /&gt;
ipmitool sel elist &amp;gt; file ### save ipmi messages into a file&lt;br /&gt;
ipmitool sel clear  ### clear all accumulated ipmi messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* useful ipmi commands:&lt;br /&gt;
** ipmitool sensor -- read hardware sensors&lt;br /&gt;
** ipmitool sel elist -- report all accumulated messages&lt;br /&gt;
&lt;br /&gt;
== Configure ECC memory ==&lt;br /&gt;
&lt;br /&gt;
* check that machine has ECC memory: dmidecode --type memory | grep -i ecc&lt;br /&gt;
&lt;br /&gt;
Configure mcelog (machine check exception)&lt;br /&gt;
&lt;br /&gt;
* yum install mcelog&lt;br /&gt;
* check that mcelog is running: ps -efw | grep mcelog&lt;br /&gt;
* (el6) chkconfig mcelogd on; service mcelogd restart&lt;br /&gt;
* (el7) systemctl status mcelog.service; systemctl enable mcelog.service; systemctl restart mcelog.service&lt;br /&gt;
&lt;br /&gt;
Check for MCE (machine check exception) messages:&lt;br /&gt;
&lt;br /&gt;
* mcelog --client&lt;br /&gt;
* grep -i mce /var/log/messages*&lt;br /&gt;
* grep -i ecc /var/log/messages*&lt;br /&gt;
&lt;br /&gt;
Configure EDAC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install edac-utils&lt;br /&gt;
edac-ctl --mainboard&lt;br /&gt;
edac-ctl --status&lt;br /&gt;
lsmod | grep edac&lt;br /&gt;
modprobe ie31200_edac ### driver for Intel E3-1200 series ECC memory&lt;br /&gt;
&lt;br /&gt;
[root@grsmid00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
... empty&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
drwxr-xr-x. 15 root root    0 Oct 25 16:40 mc0&lt;br /&gt;
...&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_noinfo_count&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow3&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 max_location&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 mc_name&lt;br /&gt;
drwxr-xr-x. 2 root root    0 Oct 25 16:40 power&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank3&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank4&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank5&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank6&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank7&lt;br /&gt;
--w-------. 1 root root 4096 Oct 25 16:40 reset_counters&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 seconds_since_reset&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 size_mb&lt;br /&gt;
lrwxrwxrwx. 1 root root    0 Oct  2 12:02 subsystem -&amp;gt; ../../../../../bus/mc0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_noinfo_count&lt;br /&gt;
-rw-r--r--. 1 root root 4096 Oct 25 16:40 uevent&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure SMARTD (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 smartd config files send deficient email notices about disk failures. Overwrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd.conf /etc/smartmontools/&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd_warning.sh /etc/smartmontools/&lt;br /&gt;
systemctl enable smartd&lt;br /&gt;
systemctl restart smartd&lt;br /&gt;
systemctl status smartd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable User Disk Quotas (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* read http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html&lt;br /&gt;
* emacs -nw /etc/fstab, add &amp;quot;grpquota,usrquota&amp;quot; to filesystem options, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@isdaq00 home1]# grep quota /etc/fstab&lt;br /&gt;
UUID=5a2aefbd-45db-475e-841e-12ec89220fbd /home1 ext4 defaults,grpquota,usrquota 1 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /; umount /home1; mount /home1&lt;br /&gt;
* quotacheck -cug /home1&lt;br /&gt;
* quotacheck -avug&lt;br /&gt;
* quotaon -av&lt;br /&gt;
* quota system is now active&lt;br /&gt;
* increase the soft quota time limit from default 7days to 30 or 60 days: edquota -t&lt;br /&gt;
* set quotas for all users (see below)&lt;br /&gt;
* setup warnquota:&lt;br /&gt;
** create warnquota config file: emacs -nw /etc/warnquota.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# values can be quoted:&lt;br /&gt;
MAIL_CMD        = &amp;quot;/usr/sbin/sendmail -t&amp;quot;&lt;br /&gt;
FROM            = root&lt;br /&gt;
SUBJECT         = User %i@%h exceeded allocated disk quota&lt;br /&gt;
CC_TO           = &amp;quot;root&amp;quot;&lt;br /&gt;
# If you set this variable CC will be used only when user has less than&lt;br /&gt;
# specified grace time left (examples of possible times: 5 seconds, 1 minute,&lt;br /&gt;
# 12 hours, 5 days)&lt;br /&gt;
# CC_BEFORE = 2 days&lt;br /&gt;
SUPPORT         = &amp;quot;root&amp;quot;&lt;br /&gt;
# Text in the beginning of the mail (if not specified, default text is used)&lt;br /&gt;
# This way text can be split to more lines&lt;br /&gt;
# Line breaks are done by &#039;|&#039; character&lt;br /&gt;
# The expressions %i, %h, %d, and %% are substituted for user/group name,&lt;br /&gt;
# host name, domain name, and &#039;%&#039; respectively. For backward compatibility&lt;br /&gt;
# %s behaves as %i but is deprecated.&lt;br /&gt;
MESSAGE         = User &amp;quot;%i&amp;quot; on &amp;quot;%h&amp;quot; has exceeded the allocated disk quota.||Please delete any unnecessary files on following filesystems or|contact the system administrato&lt;br /&gt;
r to increase your quota allocation:|&lt;br /&gt;
SIGNATURE       = --|automated email from warnquota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** note that %i@%h in the SUBJECT line do not seem to work&lt;br /&gt;
** create cron job: emacs -nw /etc/cron.daily/warnquota&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
warnquota&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** chmod a+x /etc/cron.daily/warnquota&lt;br /&gt;
** touch /etc/crontab&lt;br /&gt;
&lt;br /&gt;
Useful commands for managing quotas:&lt;br /&gt;
* repquota -a | sort -n -k3 ### show quota of all users sorted by disk usage&lt;br /&gt;
* edquota -u username ### open &amp;quot;vi&amp;quot; editor to change user quotas&lt;br /&gt;
* repquote -a | grep username ### report quota for given user&lt;br /&gt;
* setquota -u username 0 0 0 0 /home1 ### disable quotas for given user&lt;br /&gt;
* setquota -u username 50000000 100000000 0 0 /home1 ### set quotas for 50GB soft and 100GB hard&lt;br /&gt;
* edquota -t ### change user quota time limits&lt;br /&gt;
* edquote -tg ### change group quota time limits&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* create /etc/exports. example: (fsid numbers should be unique and increase 1,2,3,...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async,fsid=1)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async,fsid=2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* enable things, start them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=nfs&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl start nfs-server&lt;br /&gt;
systemctl status nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -efw | grep rpc.mountd # should be running!&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=mountd&lt;br /&gt;
firewall-cmd --permanent --add-service=rpc-bind&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts.allow, add or uncomment &amp;quot;mountd: 142.90.0.0/255.255.0.0&amp;quot;&lt;br /&gt;
* create /etc/exports. example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* chkconfig nfs on&lt;br /&gt;
* chkconfig nfslock on&lt;br /&gt;
* service nfs restart&lt;br /&gt;
&lt;br /&gt;
Then on ladd00 need to do&lt;br /&gt;
* ssh to root@ladd00&lt;br /&gt;
* edit /etc/auto.daq to add new machine...&lt;br /&gt;
* make -C /var/yp&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 SERVER (SL6) ==&lt;br /&gt;
&lt;br /&gt;
* if used with NIS, same as NFSv3&lt;br /&gt;
* if used as standalone, need to edit idmapd.conf - set the &amp;quot;Domain&amp;quot; name to the same value on NFS server and NFS slave (default automagically determined value does not always work). More TBW.&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups ==&lt;br /&gt;
&lt;br /&gt;
AMANDA backups are already enabled by TRIUMF kickstart installs. For non-kickstart installation, follow instructions at [[http://amanda/~amanda http://amanda/~amanda]], or look at &amp;quot;/triumfcs/trshare/olchansk/linux/amanda/amanda-enable.perl&amp;quot;. As final step, use [[https://helpdesk.triumf.ca https://helpdesk.triumf.ca]] to contact TRIUMF CS to add this new machine to the amanda backup list.&lt;br /&gt;
&lt;br /&gt;
* yum install triumf-amanda&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install amanda-client&lt;br /&gt;
systemctl list-unit-files | grep -i amanda&lt;br /&gt;
#systemctl enable amanda&lt;br /&gt;
systemctl enable amanda.socket&lt;br /&gt;
systemctl enable amanda-udp.socket&lt;br /&gt;
systemctl restart amanda.socket&lt;br /&gt;
systemctl restart amanda-udp.socket&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=amanda-client&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
echo amanda.triumf.ca amanda amdump &amp;gt;&amp;gt; /var/lib/amanda/.amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On amanda server, add new machine to the disklist, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amcheck -c daily titan00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable DCACHE ==&lt;br /&gt;
&lt;br /&gt;
DAQ dcache server is mounted as&lt;br /&gt;
&lt;br /&gt;
/daq/pnfs/triumf.ca/data/&lt;br /&gt;
&lt;br /&gt;
For Centos-7 machines, you need to adjust the firewall rules in order to be able to communicate with the trdata machines; this is only necessary if you are copying data to trdata.  The firewall changes are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.212/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.107.156/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.219/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructions are unnecessary &lt;br /&gt;
* # mkdir -p /pnfs&lt;br /&gt;
* # edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs &amp;amp;&amp;quot;&lt;br /&gt;
* # . /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
For more information on, see [[TrdataDcache]] dcache page.&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 Ganglia instructions (EPEL7 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/multicpu.conf   # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/netstats.pyconf # spews errors into syslog&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/diskstat.pyconf # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/procstat.pyconf # do not create /tmp/gmond.conf&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF DAQ packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
wget http://daq.triumf.ca/~daqweb/yum/triumf-daq.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Konstantin&#039;s packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install diskscrub emailonreboot monitor_nfs &amp;quot;ganglia-*&amp;quot; triumf_nodeinfo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install memtest and PXE boot ==&lt;br /&gt;
&lt;br /&gt;
!!!DO NOT DO THIS!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.10&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&lt;br /&gt;
emacs -nw /boot/grub/grub.conf&lt;br /&gt;
title memtest86+-5.01&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-5.01.bin.gz&lt;br /&gt;
title memtest86+-4.20&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.20.bin.gz&lt;br /&gt;
title memtest86+-4.10&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.10&lt;br /&gt;
title pxeboot&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install triumf_nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl --config ladd00.triumf.ca:8600&lt;br /&gt;
emacs -nw /etc/nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl ladd00.triumf.ca:8600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install gonodeinfo node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+Ubuntu, +CentOS7, +CentOS8)&lt;br /&gt;
&lt;br /&gt;
go to https://bitbucket.org/dd1/gonodeinfo&lt;br /&gt;
follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
# or git clone https://daq.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: ladd00.triumf.ca:8601&lt;br /&gt;
* run gonodeinfo -e&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run gonodereceive -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== Install latest system updates ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum update -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF Printers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable syslog spam (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 config is spamming the syslog with useless messages &amp;quot;systemd: Starting Session&amp;quot;, etc. Disable this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo auditctl -e 0 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo /usr/bin/systemd-analyze set-log-level notice &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install basic system packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
(if starting from minimal system, basic system packages required:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y which psmisc redhat-lsb-core xorg-x11-xauth xterm emacs-nox rsync tcpdump strace nfs-utils sysstat iftop tcsh&lt;br /&gt;
yum install -y gcc gcc-c++ gdb glibc-static libstdc++-static zlib zlib-devel openssl-devel httpd-tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed for QUARTUS, ROOT, EPICS and MIDAS DAQ ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.x86_64 sysstat &amp;quot;libusb-devel*&amp;quot; unixODBC-devel postgresql-devel libxml2-devel libXpm-devel libgfortran git compat-readline43 &amp;quot;graphviz*&amp;quot; dcap &amp;quot;tigervnc*&amp;quot; telnet glibc&amp;quot;*&amp;quot; strace &amp;quot;fftw*&amp;quot; libpng &amp;quot;freetype*&amp;quot; xpdf &amp;quot;xemacs*&amp;quot; tkcvs xterm mutt &amp;quot;*-g77*&amp;quot; joe &amp;quot;libXmu*&amp;quot; dcap-devel gsl-devel pcre-devel h5py gd-devel xorg-x11-fonts&amp;quot;*&amp;quot; minicom xfig&amp;quot;*&amp;quot; perl-BSD-Resource &amp;quot;net-snmp-*&amp;quot; readline-static git-all nasm imake tcl-devel gv xorg-x11-twm expat-devel screen compat-readline5 ImageMagick ImageMagick-devel wget alacarte scipy numpy sympy nedit gnuplot php-cli php-domxml-php4-php5 php-gd php-fpdf php-cli kdebase cmake tcpdump sqlite sqlite-devel kdegraphics gdisk lsof gconf-editor iftop tk-devel mcelog kdm blt itcl lz4 bzip2 pbzip2 apr-devel apr-util-devel net-tools golang&amp;quot;*&amp;quot; --exclude golang-cover&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang-pkg&amp;quot;*&amp;quot; --exclude golang-github&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;git&amp;quot;*&amp;quot; mesa&amp;quot;*&amp;quot; xerces-c&amp;quot;*&amp;quot; diffuse clang i2c-tools  texlive-revtex texlive-revtex4 kile kbibtex xrdp glibc.i686 gimp gimp-data-extras perl-GD&amp;quot;*&amp;quot; perl-Math&amp;quot;*&amp;quot; perl-Statistics-Basic cmake3 cmake3-gui extra-cmake-modules python2-pip x2go&amp;quot;*&amp;quot; mariadb-devel glibc-devel.i686 libzstd&lt;br /&gt;
&lt;br /&gt;
== Install optional packages ==&lt;br /&gt;
&lt;br /&gt;
!! DO NOT DO THIS !!&lt;br /&gt;
&lt;br /&gt;
(do not install boost on 32-bit machines)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken &amp;quot;boost-*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(packages for 32-bit software compilation on 64-bit machines. this is optional)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.i386 giflib.i686 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel.i686 openssl-devel.i686 unixODBC-devel.i686 libstdc++-devel.i386 libstdc++-devel.i686 &amp;quot;zlib-*.i686&amp;quot; &amp;quot;libXext-*.i686&amp;quot; &amp;quot;libXtst-*.i686&amp;quot; glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel.i686 gsl-devel.i686 pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 gd-devel.i686 readline-devel.i686 ncurses-devel.i686 libXdmcp.i686 readline-static.i686 compat-readline5.i686&lt;br /&gt;
&lt;br /&gt;
yum install boost-devel.i686&lt;br /&gt;
&lt;br /&gt;
(separately install these packages - they collide with the big bunch above)&lt;br /&gt;
&lt;br /&gt;
yum install rdesktop&lt;br /&gt;
&lt;br /&gt;
yum reinstall urw-fonts&lt;br /&gt;
&lt;br /&gt;
== Install libraries for PHYSICA (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To run physica built on el6 from git sources on el7, do this:&lt;br /&gt;
&lt;br /&gt;
(building physica on el7 is nort supported at this time)&lt;br /&gt;
&lt;br /&gt;
(see more http://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install libX11.i686 gd.i686 libpng12.i686 readline.i686 compat-libf2c-34.i686&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install additional desktop environements (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# LXQT (from EPEL)&lt;br /&gt;
# NOT COMPATIBLE WITH el7.7 # yum -y install &amp;quot;lxqt*&amp;quot;&lt;br /&gt;
# Cinnamon desktop (from EPEL)&lt;br /&gt;
yum -y install cinnamon&lt;br /&gt;
# KDE5 not available yet&lt;br /&gt;
# MATE (from epel)&lt;br /&gt;
yum -y groupinstall &amp;quot;MATE Desktop&amp;quot;&lt;br /&gt;
yum -y install mate-common mate-icon-theme-faenza mate-netspeed mate-sensors-applet mate-themes-extras mate-utils&lt;br /&gt;
yum -y erase ModemManager abrt abrt-libs abrt-gui-libs&lt;br /&gt;
# XFCE4 (from EPEL)&lt;br /&gt;
yum -y groupinstall xfce&lt;br /&gt;
yum -y install &amp;quot;xfce*plugin&amp;quot; xfce4-about --exclude xfce4-hamster-plugin&lt;br /&gt;
yum -y erase bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lighdm login manager (from EPEL)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install lightdm lightdm-kde lightdm-qt lightdm-qt5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* and switch from gdm to lighdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable gdm.service&lt;br /&gt;
systemctl enable lightdm.service&lt;br /&gt;
(systemctl stop gdm; systemctl restart lightdm) &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SMART scripts ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -sf ~/git/scripts/smart-status/smart-status.perl ~/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install NTFS drivers ==&lt;br /&gt;
&lt;br /&gt;
yum install ntfs-3g ntfsprogs (from EPEL)&lt;br /&gt;
&lt;br /&gt;
== Install HFS and HFS+ drivers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
yum --disablerepo=\* --enablerepo=elrepo install kmod-hfs kmod-hfsplus&lt;br /&gt;
&lt;br /&gt;
== Install Google Chrome web browser (64-bit CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/google-chrome-64.repo /etc/yum.repos.d/&lt;br /&gt;
yum install google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable monitoring of HTTPS certificates ==&lt;br /&gt;
&lt;br /&gt;
On SL6, CentOS7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install crypto-utils&lt;br /&gt;
/etc/cron.daily/certwatch&lt;br /&gt;
strace -f /etc/cron.daily/certwatch  |&amp;amp; grep open  | grep crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable 100dpi fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/share/X11/fonts/100dpi /etc/X11/fontpath.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable crontab @reboot for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
el7 has a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory&lt;br /&gt;
is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be&lt;br /&gt;
started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/crond.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/crond.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat crond.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependacy tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 configuration prevents all access to servers running on the local machine, including access to MIDAS mhttpd (tcp port 8443) and mserver (all tcp ports).&lt;br /&gt;
&lt;br /&gt;
To enable access to mhttpd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=8443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access to the mserver from a specific host: (replace 142.90.111.175 with the IP address of the permitted host)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.111.175/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access from the private network (replace &amp;quot;192.168.1.0&amp;quot; with your private network number):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.0/24&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for EPICS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To enable access to TRIUMF EPICS servers, do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.132.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For UCN the controls people seem to have EPICS setup on a different server; this might be true for CMMS as well.  In this case the firewall rule change should be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.139.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable gdm and X11 (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initctl stop prefdm&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/prefdm.override&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/splash-manager.override&lt;br /&gt;
initctl reload-configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then enable login on default console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;plymouth quit&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo &amp;quot;X_TTY=xxx/dev/tty1&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install JAVAWS (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
* to run Java &amp;quot;web start&amp;quot; jnlp files (EVO, SEEVOGH, etc): javaws Downloads/spider.jnlp&lt;br /&gt;
* install javaws:&lt;br /&gt;
* yum install icedtea-web icedtea-web-javadoc&lt;br /&gt;
&lt;br /&gt;
== Install firefox java plugin (OPTIONAL, DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
This installs the Oracle Java plugin:&lt;br /&gt;
&lt;br /&gt;
* rpm -vh --install ~deap/jdk-7u15-linux-x64.rpm&lt;br /&gt;
* ls -l /usr/lib64/mozilla/plugins/&lt;br /&gt;
* ln -s /usr/java/jdk1.7.0_15/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/&lt;br /&gt;
* start firefox, go edit-&amp;gt;preferences-&amp;gt;general-&amp;gt;manage add-ons-&amp;gt;plugins&lt;br /&gt;
* &amp;quot;java plugin 1.7.0_15&amp;quot; should be listed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure USB device permissions ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
&lt;br /&gt;
== Disable modem-manager ==&lt;br /&gt;
&lt;br /&gt;
The modem-manager will try to talk to any serial devices attached to USB serial ports. It assumes that those devices are modems and will send out modem-specific commands. if the devices are not modems and do not understand or do not like modem commands, well that&#039;s too bad. modem-manager is installed by the ModemManager package required by the NetworkManager package, and there is no configuration setting to turn modem-manager off.&lt;br /&gt;
&lt;br /&gt;
One way to disable it is: chmod a= /usr/sbin/modem-manager&lt;br /&gt;
&lt;br /&gt;
Another way to disable it is by forced uninstall: rpm --erase --nodeps ModemManager&lt;br /&gt;
&lt;br /&gt;
Remember to kill the running copy: killall -KILL modem-manager&lt;br /&gt;
&lt;br /&gt;
Caveat: it is not clear if modem-manager would not be resurrected by an update to the NetworkManager or ModemManager packages.&lt;br /&gt;
&lt;br /&gt;
== Configure Altera jtagd ==&lt;br /&gt;
&lt;br /&gt;
(if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/jtagd&lt;br /&gt;
echo &#039;Password = &amp;quot;123&amp;quot;;&#039; &amp;gt; /etc/jtagd/jtagd.conf&lt;br /&gt;
cp -pv  /daq/daqshare/olchansk/altera/11.0/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start local jtagd: /daq/daqshare/olchansk/altera/11.0/quartus/bin/jtagd&lt;br /&gt;
* test local connection: /daq/daqshare/olchansk/altera/11.0/quartus/bin/jtagconfig&lt;br /&gt;
* test remote connection (add this machine to your .jtag.conf, run jtagconfig&lt;br /&gt;
&lt;br /&gt;
For more information, go to [[Quartus]]&lt;br /&gt;
&lt;br /&gt;
== Install EOS ==&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
http://eos-docs.web.cern.ch/eos-docs/quickstart/setup_repo.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -vh --install https://dss-ci-repo.web.cern.ch/dss-ci-repo/eos/citrine/tag/el-7/x86_64/eos-repo-el7-generic-1.noarch.rpm&lt;br /&gt;
yum-config-manager --disable eos-citrine # disable auto-update because all packages are not signed&lt;br /&gt;
yum-config-manager --disable eos-dep # disable auto-update because all packages are not signed.&lt;br /&gt;
yum install eos-client eos-fuse --enablerepo=eos-citrine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install fix for the el7 systemd dbus boot hang ==&lt;br /&gt;
&lt;br /&gt;
Around early Summer 2018 el7 started showing a boot problem. In the nutshell,&lt;br /&gt;
there is a problem with the dbus connection between dbus and systemd that&lt;br /&gt;
prevents polkit, firewalld, etc from starting. The system eventually boots&lt;br /&gt;
enough that one can ssh into it, but most things do not work. Notably,&lt;br /&gt;
polkit is not running, firewalld is not running, ssh login takes about 15-30 second.&lt;br /&gt;
&lt;br /&gt;
Solution is to add a special systemd service to check that dbus started correctly.&lt;br /&gt;
It that runs after dbus is started, but before it is used, and it restarts dbus in a loop&lt;br /&gt;
with a delay until dbus starts correctly. In testing, dbus always starts correctly after&lt;br /&gt;
the first retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.perl /usr/bin/&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable systemd-check-dbus&lt;br /&gt;
systemctl start systemd-check-dbus&lt;br /&gt;
systemctl status systemd-check-dbus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After linux boots, if everything was okey, the script will report this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iris01 ~]# systemctl status systemd-check-dbus&lt;br /&gt;
...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca systemd[1]: Starting Check that systemd is registered with dbus...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca sh[4283]: Starting check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.DBus&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.systemd1&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: systemd1 dbus service exists, success!&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: Finished check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca systemd[1]: Started Check that systemd is registered with dbus.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the boot problem happened, the script will report about restarting dbus.&lt;br /&gt;
&lt;br /&gt;
Note: the systemd service file adjusts the start order of other services, this adjustment seems to reduce the probability of the problem.&lt;br /&gt;
&lt;br /&gt;
== Configure GRUB boot loader (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub, remove &amp;quot;rhgb&amp;quot; and &amp;quot;quiet&amp;quot; from GRUB_CMDLINE_LINUX&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg&lt;br /&gt;
* grub2-editenv list # show contents of boot environement file&lt;br /&gt;
* /bin/rm /boot/grub2/grubenv # remove stale settings, make grub2 boot from first entry in config file&lt;br /&gt;
&lt;br /&gt;
== Install memtest86+ (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install memtest86+&lt;br /&gt;
/bin/cp -vf /usr/share/memtest86+/20_memtest86+ /etc/grub.d/&lt;br /&gt;
/bin/chmod a+x /etc/grub.d/20_memtest86+ &lt;br /&gt;
grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable ELREPO ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo_triumf.repo&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reduce install size (optional) ==&lt;br /&gt;
&lt;br /&gt;
This is optional. Only do this if reducing the size of the OS image is very important.&lt;br /&gt;
&lt;br /&gt;
Do this for VME processors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum erase &amp;quot;texlive*&amp;quot; &amp;quot;java*&amp;quot; &amp;quot;boost*&amp;quot; libreoffice&amp;quot;*&amp;quot;&lt;br /&gt;
#yum erase &amp;quot;xemacs*&amp;quot;&lt;br /&gt;
yum erase &amp;quot;libstdc++-docs&amp;quot;&lt;br /&gt;
yum erase firefox google-chrome&amp;quot;*&amp;quot;&lt;br /&gt;
yum clean all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm -rf /usr/share/help&lt;br /&gt;
/bin/rm -rf /usr/share/doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update from el7.6 to el7.7 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum versionlock delete zfs&lt;br /&gt;
yum versionlock delete kernel&lt;br /&gt;
yum -y update &amp;quot;yum*&amp;quot; &amp;quot;rpm*&amp;quot;&lt;br /&gt;
yum -y erase libqtxdg lxqt-qtplugin ### LXQT is not compatible&lt;br /&gt;
yum update&lt;br /&gt;
after rebooting into el7.7, follow instructions for updating ZFS from version 0.7 to 0.8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
== Special hardware settings ==&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 1207 or newer&lt;br /&gt;
* (before CentOS7) sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
* CentOS7: installs correct drivers automatically&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair-II mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2607 or newer&lt;br /&gt;
* for the onboard IDE to work, add &amp;quot;all-generic-ide&amp;quot; to kernel boot options in grub.conf&lt;br /&gt;
* sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
&lt;br /&gt;
=== ASUS P7P55D EVO mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2004 or newer&lt;br /&gt;
* SL6 - install special driver for on board PCIe GigE network port and disable on board PCI GigE network port:&lt;br /&gt;
** yum --enablerepo elrepo install kmod-r8168 kmod-r8169&lt;br /&gt;
** # do not do this: sed &#039;s/^blacklist/#blacklist/&#039; -i /etc/modprobe.d/blacklist-r8169.conf&lt;br /&gt;
** reboot&lt;br /&gt;
** verify that correct drivers are loaded: ethtool -i eth0; ethtool -i eth1&lt;br /&gt;
** note: there will be no eth1 - r8169 driver is disabled.&lt;br /&gt;
&lt;br /&gt;
=== ASUS P6X58-E-WS mobo ===&lt;br /&gt;
&lt;br /&gt;
* BIOS settings&lt;br /&gt;
** F1 or DEL to enter BIOS setup, F8 boot menu&lt;br /&gt;
** go to POWER-&amp;gt;HW mon, confirm CPU temperature is around 30C. (heatsink is installed correctly. Bad heatsink temperature quickly goes up to 50-70C).&lt;br /&gt;
** Main menu: Storage config - SATA change IDE-&amp;gt;AHCI&lt;br /&gt;
** System information: confirm BIOS version 301, CPU type, memory size&lt;br /&gt;
** AI Tweak: set DRAM frequency - AUTO-&amp;gt;DDR3-1333&lt;br /&gt;
** Advanced-&amp;gt;Onboard devices: LAN BOOT: enabled&lt;br /&gt;
** Power-&amp;gt;HW monitor: CPU Q-FAN: enabled&lt;br /&gt;
** Boot-&amp;gt;Settings: Quick boot: enabled; Full screen logo: disabled; Wait for F1: disabled&lt;br /&gt;
** Save and exit&lt;br /&gt;
&lt;br /&gt;
=== ASUS E35M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboards/E35M1M_PRO/#specifications&lt;br /&gt;
* use BIOS version 1002 or newer&lt;br /&gt;
* for CPU temperature: install kmod-k10temp from ELREPO (kmod-k10temp-0.0-4.el6.elrepo.x86_64.rpm)&lt;br /&gt;
* for Sensors: yum --enablerepo elrepo install kmod-w83627ehf; modprobe w83627ehf; sensors&lt;br /&gt;
* for Graphics: yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* to enable booting from USB3, edit /etc/dracut.conf, change line &amp;quot;add_drivers&amp;quot; to read: add_drivers+=&amp;quot;xhci-hcd&amp;quot;&lt;br /&gt;
* to use multiple monitors, run &amp;quot;aticonfig --initial --heads=2 --adapter=1 --xinerama=on&amp;quot;, to change screen layout, edit /etc/X11/xorg.conf. Only dual monitors DVI+HDMI seem to work. Tripple monitors does not seem to work.&lt;br /&gt;
&lt;br /&gt;
Sensors instructions below are obolete (use driver from ELREPO)&lt;br /&gt;
* for Sensors, install driver for NCT6776F chip from https://github.com/groeck/w83627ehf/archives/master (in the Makefile, change the line &amp;quot;KERNEL_BUILD=&amp;quot; to read: &amp;quot;KERNEL_BUILD:=/usr/src/kernels/$(TARGET)&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/groeck-w83627ehf-dd3e543/w83627ehf.ko&lt;br /&gt;
echo &amp;quot;modprobe hwmon; modprobe hwmon-vid; modprobe k10temp; rmmod w83627ehf; insmod /root/w83627ehf.ko&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS E45M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/Motherboards/E45M1M_PRO/#specifications&lt;br /&gt;
* use BIOS 1202 or newer&lt;br /&gt;
* follow the E35M1-M PRO instructions above&lt;br /&gt;
&lt;br /&gt;
=== ASUS P9X79 WS ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboard/P9X79_WS/&lt;br /&gt;
* use BIOS version 3101, 3401, 4701 or newer. If BIOS is 1305 or older, install P9X79-WS-CAP-Converter.ROM (BIOS 2902/3101), then the new BIOS.&lt;br /&gt;
* (not needed for CentOS7) for CPU temperature, install coretemp&lt;br /&gt;
* (not needed for CentOS7) for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
* BIOS Settings:&lt;br /&gt;
** enter &amp;quot;Advanced mode&amp;quot;&lt;br /&gt;
** Ai Tweaker -&amp;gt; Ai Overclock Tuner -&amp;gt; Set to &amp;quot;XMP&amp;quot; - this enables DDR3-1600 RAM speed vs DDR3-1333 by default&lt;br /&gt;
** Monitor -&amp;gt; CPU fan speed low limit -&amp;gt; Set to &amp;quot;200 RPM&amp;quot; - we are using high efficiency slow turning CPU coolers and the default 600 RPM is right on the edge of firing false warnings&lt;br /&gt;
** Boot -&amp;gt; Full screen logo -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
** Wait for F1 -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ASUS P8B-M ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 6103 or newer&lt;br /&gt;
* for CPU temperature, install coretemp&lt;br /&gt;
* for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
&lt;br /&gt;
=== SUPERMICRO X9SCL ===&lt;br /&gt;
&lt;br /&gt;
* yum install kmod-w83627ehf.x86_64 coretemp&lt;br /&gt;
* xemacs -nw /etc/rc.local, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe w83627ehf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z87-WS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z97-WS ===&lt;br /&gt;
&lt;br /&gt;
the nct6775 driver does not work because of conflict with ACPI.&lt;br /&gt;
&lt;br /&gt;
=== ASUS AM1M-A ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 602 or later&lt;br /&gt;
* SL6.5 installer cannot use USB2 ports and the network. Use USB3 ports (blue colour) to boot USB installer (memtest, rescue, etc)&lt;br /&gt;
* SL6.5 kernels require boot option &amp;quot;iommu=soft&amp;quot; or USB2 and network do not work. (USB3 - blue ports - seems okey)&lt;br /&gt;
* install ATI/AMD video drivers from ELREPO (see below)&lt;br /&gt;
* sensors chip is ITE IT8623E, for SL6, use standalone driver from lm_sensors. (2 fans rpm, 2 temperatures):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* for el7 use it87.ko driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget https://daqshare.triumf.ca/~olchansk/linux/CentOS7/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@midemma02 ~]# sensors&lt;br /&gt;
radeon-pci-0008&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.0°C  (crit = +120.0°C, hyst = +90.0°C)&lt;br /&gt;
&lt;br /&gt;
fam15h_power-pci-00c4&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
power1:           N/A  (crit =  25.00 W)&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.2°C  (high = +70.0°C)&lt;br /&gt;
                       (crit = +70.0°C, hyst = +69.0°C)&lt;br /&gt;
&lt;br /&gt;
it8603-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:          +0.96 V  (min =  +2.50 V, max =  +2.95 V)  ALARM&lt;br /&gt;
in1:          +2.23 V  (min =  +0.94 V, max =  +1.22 V)  ALARM&lt;br /&gt;
in2:          +2.03 V  (min =  +0.74 V, max =  +0.77 V)  ALARM&lt;br /&gt;
in3:          +2.00 V  (min =  +1.26 V, max =  +0.13 V)  ALARM&lt;br /&gt;
in4:          +2.23 V  (min =  +2.95 V, max =  +2.15 V)  ALARM&lt;br /&gt;
3VSB:         +3.36 V  (min =  +6.00 V, max =  +2.50 V)  ALARM&lt;br /&gt;
Vbat:         +3.22 V  &lt;br /&gt;
+3.3V:        +3.36 V  &lt;br /&gt;
fan1:         611 RPM  (min =  200 RPM)&lt;br /&gt;
fan2:         707 RPM  (min =  600 RPM)  ALARM&lt;br /&gt;
temp1:        +38.0°C  (low  = +122.0°C, high = +122.0°C)  sensor = thermistor&lt;br /&gt;
temp2:        +22.0°C  (low  = +119.0°C, high = -35.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
temp3:       -128.0°C  (low  = +16.0°C, high = +93.0°C)  sensor = thermistor&lt;br /&gt;
intrusion0:  ALARM&lt;br /&gt;
&lt;br /&gt;
[root@midemma02 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* AMD &amp;quot;Athlon(tm) 5350 APU&amp;quot; graphics supports 2 monitors maximum (mobo has 3 video outputs, only 2 can be used together)&lt;br /&gt;
&lt;br /&gt;
=== Intel SE7230NH1 ===&lt;br /&gt;
&lt;br /&gt;
* front panel header connector pinout is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PWR LED | 1  2|&lt;br /&gt;
        | 3  4|&lt;br /&gt;
PWR LED | 5  6|&lt;br /&gt;
HDD LED | 7  8|&lt;br /&gt;
HDD LED | 9 10|&lt;br /&gt;
PWR SW  |11 12| NIC1 LED&lt;br /&gt;
PWR SW  |13 14| NIC1 LED&lt;br /&gt;
RST SW  |15 16|&lt;br /&gt;
RST SW  |17 18|&lt;br /&gt;
        |19 20|&lt;br /&gt;
NMI SW  |21 22| NIC2 LED&lt;br /&gt;
NMI SW  |23 24| NIC2 LED&lt;br /&gt;
...     |...  |&lt;br /&gt;
        |33 34|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS H110M-A/M.2 ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 2003 or later&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT5539D&lt;br /&gt;
* sensors chip is &amp;quot;NCT6793D or compatible chip&amp;quot;, for el7, use this driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq03 ~]# sensors&lt;br /&gt;
acpitz-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                       +0.34 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                       +0.15 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                       +0.97 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                       +3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                       +3.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                       +1.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                      +0.13 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1020 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM&lt;br /&gt;
SYSTIN:                   +119.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +27.5°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +111.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +28.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Physical id 0:  +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:         +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:         +28.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
[root@daq03 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supermicro X11SSH-F ===&lt;br /&gt;
&lt;br /&gt;
* blacklist the mei and mei_me drivers per http://www.supermicro.com/support/faqs/faq.cfm?faq=14537&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# more /etc/modprobe.d/blacklist.conf&lt;br /&gt;
blacklist mei&lt;br /&gt;
blacklist mei_me&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mobo requires M.2 PCIe SSD (M.2 SATA SSD would not work. SATA SATA SSD ok)&lt;br /&gt;
* boot from M.2 PCIe SSD requires UEFI boot (from an MSDOS partition on the SSD)&lt;br /&gt;
&lt;br /&gt;
=== ASUS TUF Z390M-PRO GAMING (WI-FI) ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 2417 is okey, upgrade to this if older&lt;br /&gt;
* do not set XMP memory mode&lt;br /&gt;
* in the BIOS, enable the boot compatibility support module mode: BIOS (press DEL) -&amp;gt; Advanced mode -&amp;gt; BOOT -&amp;gt; CSM Module -&amp;gt; Enable CSM &amp;quot;yes&amp;quot;.&lt;br /&gt;
* for SL6, install e1000e driver from ELREPO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install --enablerepo=elrepo kmod-e1000e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors chip appears to be &amp;quot;Nuvoton NCT6798D&amp;quot; not clear what driver to use&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT6798D&lt;br /&gt;
* kmod-nct6775-0.0-5.el7_7.elrepo.x86_64.rpm from ELrepo finds the chip but bombs because of conflict with ACPI&lt;br /&gt;
&lt;br /&gt;
=== ASUS PRIME X399-A ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 1002&lt;br /&gt;
* for reading temperatures and fan rotations, install driver: https://github.com/electrified/asus-wmi-sensors/issues/29&lt;br /&gt;
&lt;br /&gt;
== Configure X11 graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Special settings for DAQ ===&lt;br /&gt;
&lt;br /&gt;
* add the following at the end of /etc/X11/xorg.conf. The enables Ctrl-Alt-KP-/ and Ctrl-Alt-KP-* to unlock the keyboard after Altera Quartus crash:&lt;br /&gt;
&amp;lt;pre&amp;gt;Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowDeactivateGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowClosedownGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo=elrepo install nvidia-detect&lt;br /&gt;
* run: nvidia-detect&lt;br /&gt;
* as instructed by nvidia-detect, install correct driver:&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-304xx&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-173xx&lt;br /&gt;
* (before SL6.x:  if it fails due to conflict with module-init-tools, run &amp;quot;yum --disablerepo \* --enablerepo elrepo update module-init-tools&amp;quot;)&lt;br /&gt;
* yum erase xorg-x11-glamor ### see http://elrepo.org/tiki/kmod-nvidia (search for glamor)&lt;br /&gt;
* mv /etc/X11/xorg.conf /etc/X11/xorg.conf-xxx&lt;br /&gt;
* nvidia-xconfig&lt;br /&gt;
* (SL6) reboot&lt;br /&gt;
* (SL5) /dev/MAKEDEV nvidia&lt;br /&gt;
* (SL5) restart the X11 server (Ctrl-Alt-Backspace or &amp;quot;killall Xorg gdm-binary&amp;quot;)&lt;br /&gt;
* observe that X11 server restarts using the NVIDIA driver (big NVIDIA logo on startup)&lt;br /&gt;
* if needed, login as root and run &amp;quot;nvidia-settings&amp;quot; to setup dual-screen configuration, etc&lt;br /&gt;
&lt;br /&gt;
=== Install legacy NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
For old NVIDIA cards:&lt;br /&gt;
* GeForce FX 5500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.31/NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
sh ./NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GeForce 6200 - NVIDIA Corporation NV44A [GeForce 6200]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install nvidia-x11-drv-304xx-304.121 --enablerepo=elrepo&lt;br /&gt;
nvidia-xconfig&lt;br /&gt;
rmmod nvidia&lt;br /&gt;
killall gdm-binary&lt;br /&gt;
login as root&lt;br /&gt;
nvidia-settings to setup multiple displays&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* check that /etc/X11/xorg.conf section &amp;quot;Device&amp;quot; entry &amp;quot;Driver&amp;quot; says &amp;quot;fglrx&amp;quot;&lt;br /&gt;
* run &amp;quot;aticonfig --initial&amp;quot; to create xorg.conf if existing one is not good&lt;br /&gt;
* run &amp;quot;amdcccle&amp;quot; as root to configure dual-screens, etc&lt;br /&gt;
  Note: &#039;amdcccle&#039; is a GUI, so you must run this command from within a running X session&lt;br /&gt;
* killall Xorg&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers (CentOS7) ===&lt;br /&gt;
&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* yum install acpid&lt;br /&gt;
* rpm -vh --install kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* amdconfig -f --initial&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* reboot&lt;br /&gt;
* login as root&lt;br /&gt;
* amdcccle&lt;br /&gt;
&lt;br /&gt;
NOTE: if both drivers - radeon and fglrx are loaded, boot will hang. the radeon driver is supposed to be blacklisted through grub rdblacklist=radeon entry which is installed by running grub2-mkconfig.&lt;br /&gt;
&lt;br /&gt;
=== Install Intel drivers for HD4600/Z87 ===&lt;br /&gt;
&lt;br /&gt;
SL6.5 has the required drivers for the socket 1150 machines with Intel HD4600 graphics and Z87 chipset.&lt;br /&gt;
&lt;br /&gt;
ASUS Z87 WS motherboard has these video connections with corresponding Intel video port assignements, as reported by &amp;quot;xrandr&amp;quot;:&lt;br /&gt;
* DisplayPort - DP1/HDMI1&lt;br /&gt;
* MiniDisplayPort - DP2/HDMI2&lt;br /&gt;
* HDMI - HDMI3&lt;br /&gt;
&lt;br /&gt;
Due to hardware limitations, 3 HDMI monitors using 2 passive DP-HDMI adapters (and 1 straight HDMI) cannot be used.&lt;br /&gt;
&lt;br /&gt;
To use 3 monitors do this:&lt;br /&gt;
* 1st monitor: DisplayPort - DP-to-HDMI-passive-adapter - HDMI monitor (not tried: DP-to-DP-cable - DisplayPort monitor).&lt;br /&gt;
* 2nd monitor: MiniDisplayPort - MiniDP-to-DP-cable - DisplayPort monitor&lt;br /&gt;
* 3rd monitor: HDMI - HDMI-cable - HDMI monitor&lt;br /&gt;
&lt;br /&gt;
With the monitors I have (Dell 1920x1200 VGA-HDMI-DP), the software thinks that there are 4 monitors: somehow both DP2 and HDMI2 see 1 minitor each, but the hardware cannot drive 4 monitors, so everything goes blank. To fix, disable HDMI2 (xrandr -display :0 --output HDMI2 --off) and enable DP2 (xrandr -display :0 --output DP2 --auto).&lt;br /&gt;
&lt;br /&gt;
How to make this configuration permanent and how to assign monitor locations (left-right, etc), you figure it out.&lt;br /&gt;
&lt;br /&gt;
=== Manual selection of monitor, video mode and resolution ===&lt;br /&gt;
&lt;br /&gt;
Automatic selection of monitor and video mode usually works. When it does not, configure it manualls:&lt;br /&gt;
&lt;br /&gt;
* physically go to the computer&lt;br /&gt;
* login as root&lt;br /&gt;
* run &amp;quot;nvidia-settings&amp;quot; on machines using the NVIDIA driver&lt;br /&gt;
* run &amp;quot;aticonfig&amp;quot; on machines with the ATI/AMD driver (use &amp;quot;aticonfig --initial&amp;quot; for initial setup, and good luck with anything more complicated)&lt;br /&gt;
* run &amp;quot;system-config-display&amp;quot;.&lt;br /&gt;
** In the &amp;quot;hardware&amp;quot; tab, select monitor type: &amp;quot;generic LCD 1280x1024&amp;quot; or &amp;quot;generic LCD 1600x1200&amp;quot;.&lt;br /&gt;
** In the &amp;quot;settings&amp;quot; tab, select &amp;quot;1280x1024&amp;quot; or &amp;quot;1600x1200&amp;quot; and &amp;quot;Thousands of colors&amp;quot;.&lt;br /&gt;
** Press &amp;quot;ok&amp;quot;, the display settings application should close.&lt;br /&gt;
* Logout, the new login window should use the new settings.&lt;br /&gt;
&lt;br /&gt;
=== Disable screen saver ===&lt;br /&gt;
&lt;br /&gt;
If machine is booted without any monitor connected, current video cards to not enable any video outputs. If a monitor is connected later, there is no video image and there is no easy way to get a video image.&lt;br /&gt;
&lt;br /&gt;
This can be solved by configuring X11 to always enable some video output. Because the monitor type is not known when X11 starts, one has to select some standard video mode (i.e. VESA 1280x1024) on some video output (VGA, DVI or HDMI).&lt;br /&gt;
&lt;br /&gt;
Only NVIDIA cards with the NVIDIA driver (from EPEL) is supported by these instructions.&lt;br /&gt;
&lt;br /&gt;
* create default xorg.conf: nvidia-xconfig&lt;br /&gt;
* edit /etc/X11/xorg.conf&lt;br /&gt;
* add monitor section for the fake monitor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    HorizSync       31.0 - 83.0&lt;br /&gt;
    VertRefresh     59.0 - 61.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    ModeLine &amp;quot;1280x1024&amp;quot;   108.00   1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add output selection in the &amp;quot;Device&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 210&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT&amp;quot;&lt;br /&gt;
    Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-1&amp;quot;&lt;br /&gt;
    Option &amp;quot;UseEDID&amp;quot; &amp;quot;no&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add fake video mode to the &amp;quot;Screen&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Modes       &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable screen saver and DPMS power off in the &amp;quot;ServerLayout&amp;quot; or &amp;quot;ServerFlags&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Layout0&amp;quot;&lt;br /&gt;
    Screen      0  &amp;quot;Screen0&amp;quot; 0 0&lt;br /&gt;
    InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;&lt;br /&gt;
    InputDevice    &amp;quot;Mouse0&amp;quot; &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot; &lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
EndSection &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
* logout and reboot the computer to have all the changes to take effect&lt;br /&gt;
&lt;br /&gt;
== Configure HTTPS server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache httpd.&lt;br /&gt;
&lt;br /&gt;
First, configure apache httpd:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y mod_ssl certwatch crypto-utils&lt;br /&gt;
cd /etc/httpd/conf.d/&lt;br /&gt;
mv ssl.conf ssl.conf-not-used ### remove the stock ssl.conf which refers to the localhost certificate that will expire in 1 year&lt;br /&gt;
touch ssl.conf ### create a blank file to prevent automatic updates from installing a stock ssl.conf file&lt;br /&gt;
# this is done later: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file ssl-daq12.conf # use actual hostname instead of daq12&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443 https&lt;br /&gt;
#SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
ServerName daq12.triumf.ca&lt;br /&gt;
DocumentRoot /var/www/html&lt;br /&gt;
ErrorLog /var/log/httpd/daq12.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
# note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
# new SSL settings: K.O. Jan 2020, SSLlabs rating &amp;quot;A+&amp;quot;&lt;br /&gt;
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!RSA&lt;br /&gt;
SSLHonorCipherOrder on&lt;br /&gt;
# pervious SSL settings:&lt;br /&gt;
#SSLProtocol all -SSLv2 -SSLv3&lt;br /&gt;
#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
#ProxyPass /elog/ http://localhost:8082/ retry=1&lt;br /&gt;
#ProxyPass /      http://localhost:8080/ retry=1&lt;br /&gt;
Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
Require valid-user&lt;br /&gt;
# create password file: touch /etc/httpd/htpasswd&lt;br /&gt;
# to add new user or change password: htpasswd /etc/httpd/htpasswd username&lt;br /&gt;
AuthUserFile /etc/httpd/htpasswd&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop httpd from listening on port 80: edit /etc/httpd/conf/httpd.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable and start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to access https://daq12.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, then try again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that httpd is listening on port 80, follow the httpd instructions above (remove &amp;quot;listen 80&amp;quot; from httpd.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot and open tcp port 80 in the firewall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y certbot python2-certbot-apache # (from EPEL)&lt;br /&gt;
firewall-cmd --add-port=80/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* certbot certonly --standalone --installer apache # then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq12.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;please choose...&amp;quot; - say &amp;quot;easy&amp;quot; (http access is disabled (a) by firewall, (b) by local configuration&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
* certbot install --apache --cert-name daq12.triumf.ca # then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside ssl-daq12.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in /etc/letsencrypt/live/daq12.triumf.ca/&lt;br /&gt;
* remove self-signed localhost certificate, it will expire in 1 year and cause warnings and complaints: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
* enable automatic renewal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable certbot-renew.timer&lt;br /&gt;
systemctl start certbot-renew.timer&lt;br /&gt;
systemctl list-timers --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to check corrent renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work starting with certbot-0.12.0-4.el7.noarch.&lt;br /&gt;
Certificate expiration should be automatically detected by &amp;quot;certwatch&amp;quot; and email&lt;br /&gt;
will be sent to local root user, to be forwarded to an actual person by ~root/.forward.&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/httpd/htpasswd&lt;br /&gt;
htpasswd /etc/httpd/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Final test:&lt;br /&gt;
* access https://daq12.triumf.ca - https status should be &amp;quot;green&amp;quot;&lt;br /&gt;
* login with password should work&lt;br /&gt;
* the apache httpd test page should load&lt;br /&gt;
* check site security using the SSLlabs https tester. (I get grade &amp;quot;A-&amp;quot;): https://www.ssllabs.com/ssltest/&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
* setsebool -P httpd_can_network_connect 1&lt;br /&gt;
* systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== Configure large RAID6 arrays ==&lt;br /&gt;
&lt;br /&gt;
* connect the disks&lt;br /&gt;
* check the disks health&lt;br /&gt;
** run smart-status.perl&lt;br /&gt;
* partition the disks&lt;br /&gt;
** yum install gdisk&lt;br /&gt;
** gdisk /dev/sdX&lt;br /&gt;
** delete all partitions: o&lt;br /&gt;
** create new partition: n, enter, enter, enter, fd00 (default sizes, partition type fd00)&lt;br /&gt;
** write and exit: w&lt;br /&gt;
* check presence of all partitions:&lt;br /&gt;
** /bin/ls -l /dev/sd*1&lt;br /&gt;
* prepare to use an external bitmap file&lt;br /&gt;
** touch /md6bitmap&lt;br /&gt;
** edit /etc/fstab, change entry for root filesystem from: &amp;quot;defaults 1 1&amp;quot; to &amp;quot;defaults 0 0&amp;quot;&lt;br /&gt;
** edit /boot/grub/grub.conf, change entry &amp;quot;kernel ... ro ...&amp;quot; to &amp;quot;kernel ... rw ...&amp;quot;&lt;br /&gt;
* create raid array:&lt;br /&gt;
** mdadm --create /dev/md6 --level=6 --bitmap=/md6bitmap --raid-devices=10 /dev/sd[b-k]1&lt;br /&gt;
** mdadm -Ds &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
** cleanup /etc/mdadm.conf&lt;br /&gt;
** echo &amp;quot;echo 16384 &amp;gt; /sys/block/md6/md/stripe_cache_size&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** echo &amp;quot;echo 1     &amp;gt; /sys/block/md6/md/sync_speed_min&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** source /etc/rc.local&lt;br /&gt;
* observe raid array rebuild:&lt;br /&gt;
** watch -d -n1 &amp;quot;cat /proc/mdstat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure ZFS ==&lt;br /&gt;
&lt;br /&gt;
=== Install ZFS ===&lt;br /&gt;
&lt;br /&gt;
(from here: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for &amp;quot;kABI-tracking kmod&amp;quot; - dkms modules seem to always mess up the system when upgrading to next release of zfs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rpm -vh --install http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm&lt;br /&gt;
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
#sed &#039;s/^SELINUX=.*/SELINUX=disabled/&#039; -i /etc/selinux/config&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
#shutdown -r now # required to load the zfs kernel modules and to disable selinux&lt;br /&gt;
modprobe zfs # should work&lt;br /&gt;
zpool status # should report no pools available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Note: zfs and selinux and not compatible: with selinux enabled, files on zfs cannot be deleted (files are gone, but &amp;quot;df&amp;quot; does not go down, zfs-0.6.5.7-1.el7.centos.x86_64), see #https://github.com/zfsonlinux/zfs/issues/4845&lt;br /&gt;
&lt;br /&gt;
* http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs-quickstart.html)&lt;br /&gt;
* http://www.freebsd.org/cgi/man.cgi?query=zpool&amp;amp;sektion=8&lt;br /&gt;
&lt;br /&gt;
If ZFS kernel module does not load automatically at boot time, add this to load it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /etc/sysconfig/modules/&lt;br /&gt;
cat &amp;gt; /etc/sysconfig/modules/zfs.modules &amp;lt;&amp;lt;EOF&lt;br /&gt;
if [ ! -e /sys/module/zfs ] ; then&lt;br /&gt;
  modprobe zfs;&lt;br /&gt;
fi&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x /etc/sysconfig/modules/zfs.modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS 0.7 to 0.8 ===&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates list zfs # list all available versions in &amp;quot;zfs-testing-kmod&amp;quot;&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates install zfs # maybe specify specific version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /etc/yum.repos.d/zfs.repo* ### delete old repo files&lt;br /&gt;
yum upgrade http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if you see yum offering to install &amp;quot;dkms&amp;quot; and &amp;quot;zfs-dkms&amp;quot;, the yum config is wrong (we use the kmod-zfs package), check that &amp;quot;zfs&amp;quot; repo is disabled, &amp;quot;zfs-kmod&amp;quot; repo is enabled - see the yum-config-manager commands above.&lt;br /&gt;
&lt;br /&gt;
=== Lock kernel and zfs packages ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock kernel&lt;br /&gt;
yum versionlock zfs&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Follow generic ZFS instructions ===&lt;br /&gt;
&lt;br /&gt;
Here: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
== performance notes ==&lt;br /&gt;
&lt;br /&gt;
Go here: [[disk_benchmarks]]&lt;br /&gt;
&lt;br /&gt;
== Configure UEFI boot ==&lt;br /&gt;
&lt;br /&gt;
Some mobo can boot from NVME (PCIe) SSDs only via UEFI boot. Do this:&lt;br /&gt;
&lt;br /&gt;
* partition the NVME SSD using gdisk (must be GPT partition table, must have MSDOS EFI partition size 512MiB)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# gdisk -l /dev/nvme0n1&lt;br /&gt;
GPT fdisk (gdisk) version 0.8.6 ...&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB&lt;br /&gt;
Logical sector size: 512 bytes&lt;br /&gt;
Disk identifier (GUID): 1A82CC87-2757-44ED-980F-C78E3681D9D3&lt;br /&gt;
Partition table holds up to 128 entries&lt;br /&gt;
First usable sector is 34, last usable sector is 500118158&lt;br /&gt;
Partitions will be aligned on 2048-sector boundaries&lt;br /&gt;
Total free space is 2014 sectors (1007.0 KiB)&lt;br /&gt;
&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System&lt;br /&gt;
   2         1050624       500118158   238.0 GiB   8300  Linux filesystem&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create filesystems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.xfs /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare EFI partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/efi&lt;br /&gt;
mount /dev/nvme0n1p1 /mnt/efi&lt;br /&gt;
mkdir -p /mnt/efi/efi/boot&lt;br /&gt;
cp /boot/vmlinuz... vmlinuz # copy the desired linux kernel&lt;br /&gt;
cp /boot/initramfs... initramfs.img # copy the matching initramfs file&lt;br /&gt;
#from /home/olchansk/sysadm/syslinux/syslinux-6.03 copy&lt;br /&gt;
cp .../efi64/efi/syslinux.efi .&lt;br /&gt;
cp .../efi64/com32/elflink/ldlinux/ldlinux.e64 .&lt;br /&gt;
cp syslinux.efi bootx64.efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux config file: syslinux.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro root=/dev/nvme0n1p2 nomodeset initrd=initramfs.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare system partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/tmp&lt;br /&gt;
mount /dev/nvme0n1p2 /mnt/tmp&lt;br /&gt;
rsync -avx / /mnt/tmp&lt;br /&gt;
cd /mnt/tmp&lt;br /&gt;
#edit etc/fstab&lt;br /&gt;
#edit etc/syslinux/selinux # set selinux to permissive mode because rsync did not copy the selinux labels&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* unmount and reboot&lt;br /&gt;
* restore selinux labels after first boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#login as root&lt;br /&gt;
cd /&lt;br /&gt;
restorecon -R / # can also add &amp;quot;-v&amp;quot; to see progress, but runs much slower&lt;br /&gt;
#edit /etc/sysconfig/selinux # enable selinux&lt;br /&gt;
#shutdown -r now # reboot with selinux enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure UEFI secure  boot =&lt;br /&gt;
&lt;br /&gt;
The above instructions do not quite work if &amp;quot;secure boot&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
These modifications are needed:&lt;br /&gt;
&lt;br /&gt;
* ls -l /boot/efi/EFI/bootko/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
total 140116&lt;br /&gt;
-rwxr-xr-x 1 root root      108 Feb 24 15:47 BOOTX64.CSV&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 bootx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root   217495 Feb 24 16:16 config-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root      105 Feb 24 15:47 grub.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 grubx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initramfs.img&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initrd.img-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root   139968 Feb 24 16:16 ldlinux.e64&lt;br /&gt;
-rwxr-xr-x 1 root root  1269496 Feb 24 15:47 mmx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 shimx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root      171 Feb 24 16:16 syslinux.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root      102 Feb 24 16:16 syslinux.cfg~&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 syslinux.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  4068355 Feb 24 16:16 System.map-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz-4.15.0-74-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** shmix64.efi is a copy from /boot/efi/EFI/ubuntu&lt;br /&gt;
** bootx64.efi is a copy of shimx64.efi (maybe not needed?)&lt;br /&gt;
** grubx64.efi is a copy of syslinux.efi&lt;br /&gt;
* efibootmgr -c -d /dev/nvme0n1 -p 2 -w -L bootko -l &#039;\EFI\bootko\shimx64.efi&#039;&lt;br /&gt;
* efibootmgr -v&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# efibootmgr -v&lt;br /&gt;
BootCurrent: 0000&lt;br /&gt;
Timeout: 1 seconds&lt;br /&gt;
BootOrder: 0000,0001,0002&lt;br /&gt;
Boot0000* bootko        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\BOOTKO\SHIMX64.EFI)&lt;br /&gt;
Boot0001* Hard Drive    BBS(HD,,0x0)..GO..NO........y.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7....................A.......................................&amp;lt;..Gd-.;.A..MQ..L.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7........BO&lt;br /&gt;
Boot0002* ubuntu        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* NOTE: if, after running &amp;quot;efibootmgr -c&amp;quot;, the UUID is zero, then it probably did not take and the entry will vanish after reboot. In my case the mistake was to use &amp;quot;-p 1&amp;quot; instead of &amp;quot;-p 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Boot sequence is this:&lt;br /&gt;
* shmix64.efi - Microsoft-signed boot loader is accepted by secure boot, loads and runs&lt;br /&gt;
* shimx64.efi loads and runs grubx64.efi, this file name is hardwired into the signed shim, cannot be changed&lt;br /&gt;
* grubx64.efi is syslinux.efi (could be anything)&lt;br /&gt;
* syslinux.efi runs, loads syslinux.cfg, loads the linux kernel, loads the initrd, runs the linux kernel with specified flags (ro root=...).&lt;br /&gt;
&lt;br /&gt;
= UEFI syslinux kernel update =&lt;br /&gt;
&lt;br /&gt;
To update the linux kernel booted by UEFI syslinux, use this script:&lt;br /&gt;
* ~root/git/scripts/etc/update_efi.perl&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3027</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3027"/>
		<updated>2020-09-12T18:48:42Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Configure Altera jtagd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes ==&lt;br /&gt;
&lt;br /&gt;
* these instructions are periodically updated to include items needed for older/newer versions of Linux. They are marked like this: (SL4.2+) means Scientific Linux 4.2 and newer; (SL4 is equivalent to FC3). (FC5 only) means Fedora Core 5; etc.&lt;br /&gt;
* obsolete items are marked by the &amp;quot;#&amp;quot; sign at the beginning of the line and sometimes have a comment about the reason for removal.&lt;br /&gt;
* typically, we do not &amp;quot;upgrade&amp;quot; machines using the Red Hat &amp;quot;upgrade&amp;quot; function. Instead, we save critical files from the old installation and do a &amp;quot;fresh install&amp;quot; from scratch&lt;br /&gt;
* starting with RHEL7, the recommended OS is CentOS7 (instead of SL7).&lt;br /&gt;
&lt;br /&gt;
== Disk configurations ==&lt;br /&gt;
&lt;br /&gt;
The year is 2019 and SSDs are used exclusively, except for bulk data storage, where one used 6-8-10-12 TB HDDs&lt;br /&gt;
&lt;br /&gt;
For reliability, home directories and data disks must use redundant storage - mdadm raid1 or ZFS raid1/raid6.&lt;br /&gt;
&lt;br /&gt;
For non-critical machines, a single SSD seems to be reliable enough to use as a boot and OS disk. But since any&lt;br /&gt;
storage device can fail at any time without warning, home directories and data disks should use redundant storage.&lt;br /&gt;
&lt;br /&gt;
Note: for data disks bigger than 4-6TB, mdadm raid1/raid6 is no longer recommended because raid rebuild,&lt;br /&gt;
verification and repair time has become unreasonably long. Instead, use ZFS raid1/raid6 which implements online verification,&lt;br /&gt;
repair and disk replacement without requiring machine shutdown or OS down time.&lt;br /&gt;
&lt;br /&gt;
* single SSD - 120GB min - single partition for &amp;quot;/&amp;quot;, no swap partition (create a swap file if swap is needed) - for non-critical machine with no local data storage (OS only)&lt;br /&gt;
* dual SSD - 2x240GB min - all partitions mirrored (RAID1), 30GB &amp;quot;/&amp;quot;, rest for /home1 - for daq station with local user home directories and no bulk data storage&lt;br /&gt;
* single SSD + 2x6-8-10-12TB HDD - SSD partition: all &amp;quot;/&amp;quot;, HDD partition as ZFS raid1 (mirrored) - for daq station with small local bulk data storage&lt;br /&gt;
* single SSD + 6-8x6-8-10-12TB HDD - for small storage server machines - for daq station with local home directories and large bulk data storage.&lt;br /&gt;
&lt;br /&gt;
For VME processors:&lt;br /&gt;
&lt;br /&gt;
* network boot - [[VME-CPU#Network_boot]] - only option for V7648/V7750, do not use for V7805 (no netboot from GigE), optional for V7865/XVB-602&lt;br /&gt;
* USB boot - 8GB USB for V7805, 16GB USB for V7865/XVB-602&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
* save /etc, /var, /root, /opt, (if needed: /usr/local, /tftpboot) by rsync to some data disk (/ladd/data0/root)&lt;br /&gt;
* check that &amp;quot;/&amp;quot; partition (it will be overwritten) is different from /home1 and /data partitions&lt;br /&gt;
* note the MAC addresses of all network interfaces, add them to ladd00 dhcpd.conf to enable PXE boot into the SL &amp;quot;network installer&amp;quot;&lt;br /&gt;
* shutdown&lt;br /&gt;
&lt;br /&gt;
== Running installer (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 can be installed from vanilla CentOS7 installation media or from&lt;br /&gt;
a custom USB key build per there instructions:&lt;br /&gt;
https://daqshare.triumf.ca/~olchansk/linux/CentOS7/&lt;br /&gt;
&lt;br /&gt;
The custom installer makes it easy to use a custom kickstart file (ks.cfg).&lt;br /&gt;
&lt;br /&gt;
Instructions for using the usb-installer:&lt;br /&gt;
&lt;br /&gt;
* disconnect machine from network&lt;br /&gt;
* plug the usb-installer into a usb3 port (blue colour)&lt;br /&gt;
* reboot machine, select booting from usb (press F8 on ASUS motherboards)&lt;br /&gt;
* usb-installer boot menu offers to install CentOS7, go there&lt;br /&gt;
* CentOS7 should boot (many messages scroll on screen)&lt;br /&gt;
* into graphical mode&lt;br /&gt;
* into installer main menu&lt;br /&gt;
* all installer options should &amp;quot;happy&amp;quot; except for the &amp;quot;installation destination&amp;quot;&lt;br /&gt;
* go to the &amp;quot;installation destination&amp;quot; menu&lt;br /&gt;
** unselect all disks except for the SSD where the OS will be installed&lt;br /&gt;
** (MOST IMPORTANT: unselect the USB installer disk!)&lt;br /&gt;
** select &amp;quot;I will configure...&amp;quot;&lt;br /&gt;
** say &amp;quot;done&amp;quot;&lt;br /&gt;
** the &amp;quot;manual partitionning&amp;quot; menu will open&lt;br /&gt;
*** use the &amp;quot;-&amp;quot; button to delete all existing partitions&lt;br /&gt;
*** select &amp;quot;standard partition&amp;quot;&lt;br /&gt;
*** click on the &amp;quot;+&amp;quot; button&lt;br /&gt;
*** in the &amp;quot;Add new partition&amp;quot; dialog, set mount point &amp;quot;/&amp;quot;, capacity blank, click &amp;quot;add mount point&amp;quot;&lt;br /&gt;
*** check capacity (should be full size of SSD), check filesystem type (should be XFS)&lt;br /&gt;
*** say &amp;quot;done&amp;quot;, there will be a warning about absent swap partition, say &amp;quot;done&amp;quot; again.&lt;br /&gt;
*** in the big useless dialog, say &amp;quot;accept changes&amp;quot;&lt;br /&gt;
*** should be back to the &amp;quot;installation summary&amp;quot; screen, &amp;quot;installation destination&amp;quot; should be happy now&lt;br /&gt;
* after everything is happy, say &amp;quot;begin installation&amp;quot;&lt;br /&gt;
* as the installation proceeds, set the password for the root user&lt;br /&gt;
* after installation is complete, reboot the machine&lt;br /&gt;
* unplug the usb-installer, CentOS7 should boot from SSD into the login screen&lt;br /&gt;
* click on &amp;quot;not listed?&amp;quot;, login as root&lt;br /&gt;
* setup network connection:&lt;br /&gt;
** open a terminal&lt;br /&gt;
** start &amp;quot;nm-connection-editor&amp;quot;&lt;br /&gt;
** click on &amp;quot;+&amp;quot; to create a new connection profile&lt;br /&gt;
** select &amp;quot;wired ethernet&amp;quot;&lt;br /&gt;
** select &amp;quot;add profile...&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, set &amp;quot;name&amp;quot; to &amp;quot;static&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, check that &amp;quot;Connect automatically&amp;quot; and &amp;quot;Make available...&amp;quot; is enabled&lt;br /&gt;
** in &amp;quot;IPv4&amp;quot;, set &amp;quot;Addresses&amp;quot; to &amp;quot;manual&amp;quot; instead of &amp;quot;dhcp&amp;quot;&lt;br /&gt;
** enter IP address, netmask 255.255.224.0, gateway 142.90.100.18, dns 142.90.100.19, search triumf.ca&lt;br /&gt;
** say &amp;quot;Add&amp;quot;, then close/quit the network settings&lt;br /&gt;
* connect network cable&lt;br /&gt;
* network should be up, ping ladd00 should work&lt;br /&gt;
* run: yum update -y&lt;br /&gt;
* check new kernel is installed: ls -l /boot&lt;br /&gt;
* logout and restart (good luck finding these buttons in the gui!)&lt;br /&gt;
* confirm correct linux kernel is selected during boot (-229.20, not the original installer kernel)&lt;br /&gt;
* login as root, confirm network is up, proceed with the rest of these instructions&lt;br /&gt;
&lt;br /&gt;
== Configure SSH ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* Login from the console&lt;br /&gt;
* restore the SSH keys from backup (/etc/ssh/*key*)&lt;br /&gt;
* service sshd restart&lt;br /&gt;
* ssh into the new machine as root&lt;br /&gt;
* ssh root@localhost, ctrl-C&lt;br /&gt;
* ### this is done later from Konstantin&#039;s git repository - scp root@ladd00:/root/authorized_keys ~root/.ssh/&lt;br /&gt;
* (not needed for SL5.5 kickstart) check that /etc/ssh/ssh_config contains &amp;quot;ForwardX11 yes&amp;quot; and &amp;quot;ForwardX11Trusted yes&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;  ForwardX11 yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
echo &amp;quot;  ForwardX11Trusted yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post installation CentOS7 ==&lt;br /&gt;
&lt;br /&gt;
Set hostname: (use full name, i.e. daq11.triumf.ca)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;olchansk@triumf.ca amaudruz@triumf.ca lindner@triumf.ca bsmith@triumf.ca&amp;quot; &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
chmod a+r /var/log/messages&lt;br /&gt;
chmod a+r /var/log/yum.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activate rc.local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+x /etc/rc.local&lt;br /&gt;
chmod a+x /etc/rc.d/rc.local  # TL edit&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable &amp;quot;persistent network names&amp;quot; (DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/touch /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
/bin/rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
#shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypbind authconfig&lt;br /&gt;
echo &amp;quot;NISTIMEOUT=5&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
echo &amp;quot;NETWORKWAIT=yes&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
authconfig --enablenis --enablepreferdns --nisdomain LADD-NIS --nisserver ladd00.triumf.ca --update&lt;br /&gt;
ypwhich&lt;br /&gt;
ypcat -k passwd&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On the master NIS node (ladd00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
* Use &amp;quot;system-config-users&amp;quot; to add local user accounts&lt;br /&gt;
* enable selinux ssh key login to nfs mounted home directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P use_nfs_home_dirs 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* all the same as for CentOS7&lt;br /&gt;
* ensure correct boot order for ypbind (in CentOS 8.1 ypbind is started before network is ready, service file uses &amp;quot;Wants&amp;quot; instead of &amp;quot;After&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ypbind.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ypbind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ypbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS secondary server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Enable local NIS server, make local machine use it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypserv&lt;br /&gt;
/usr/lib64/yp/ypinit -s ladd00 ### (/usr/lib/yp/ypinit on 32-bit machines)&lt;br /&gt;
### ypinit will give lots of errors about &amp;quot;rpc.ypxfrd failed: RPC: Can&#039;t decode result&amp;quot;; can be ignored&lt;br /&gt;
systemctl enable rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
systemctl start rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
emacs -nw /etc/yp.conf # change &amp;quot;domain XXX server YYY.triumf.ca&amp;quot; to read &amp;quot;domain XXX server localhost&amp;quot;&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich # should say &amp;quot;localhost&amp;quot;&lt;br /&gt;
ypcat -k auto.master # should work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punch hole in the firewall: (or &amp;quot;make&amp;quot; on NIS master will complain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo YPSERV_ARGS=\&amp;quot;-p 800\&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --add-service rpc-bind --permanent&lt;br /&gt;
firewall-cmd --add-port=800/tcp --add-port=800/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on the NIS master:&lt;br /&gt;
** add the new machine to /var/yp/ypservers, run &amp;quot;make -C /var/yp&amp;quot; and also &amp;quot;cd /var/yp; yppush -h newmachine ypservers&amp;quot;&lt;br /&gt;
*** TL (2020-09): we not doing this anymore?  I guess it doesn&#039;t work anyway...&lt;br /&gt;
** if using /var/yp/securenets, copy it from NIS master to new NIS secondary server&lt;br /&gt;
&lt;br /&gt;
Enable hourly NIS update cron job (DO THIS AFTER git pull scripts, see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd etc&lt;br /&gt;
cd ~/git/scripts/etc; ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure AUTOFS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl start autofs&lt;br /&gt;
ls -l /daq/daqshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Label Selinux labels ==&lt;br /&gt;
&lt;br /&gt;
When upgrading non-selinux machines (el6) to el7 (selinux enforcing) the existing&lt;br /&gt;
user home directories will not have the correct selinux labels and many things&lt;br /&gt;
will not work, including ssh logins (sshd cannot access ~user/.ssh files).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
semanage fcontext -a -e /home /home1 ### selinux has special rules for /home, assign them to /home1&lt;br /&gt;
restorecon -R -v /home1 ### apply the new rules to files in /home1&lt;br /&gt;
ls -Zd /home1/alpha/.ssh&lt;br /&gt;
# should say: drwx------. alpha users system_u:object_r:ssh_home_t:s0  /home1/alpha/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure time (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Time server ntpd was replaced by chronyd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install chrony&lt;br /&gt;
echo server time1 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time2 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time3 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
systemctl enable chronyd&lt;br /&gt;
systemctl restart chronyd&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if desired, edit /etc/chrony.conf, remove non-triumf time servers&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Disable yum-cron:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --erase yum-cron&lt;br /&gt;
/bin/rm -v /var/lock/subsys/yum-cron&lt;br /&gt;
/bin/rm -v /etc/cron.daily/0yum-daily.cron&lt;br /&gt;
/bin/rm -v /etc/cron.hourly/0yum-hourly.cron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable yum-autoupdate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y epel-release&lt;br /&gt;
yum install -y yum-changelog yum-protectbase yum-tsflags yum-versionlock&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm&lt;br /&gt;
#rpm -vh --install https://daqshare.triumf.ca/~olchansk/linux/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm https://daqshare.triumf.ca/~olchansk/linux/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
systemctl enable yum-autoupdate&lt;br /&gt;
systemctl start yum-autoupdate&lt;br /&gt;
systemctl status yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase yum-autoupdate&lt;br /&gt;
/bin/rm -f /etc/sysconfig/yum-autoupdate.rpmsave&lt;br /&gt;
/bin/rm -f /var/lock/subsys/yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dnf-automatic&lt;br /&gt;
systemctl enable --now dnf-automatic.timer&lt;br /&gt;
systemctl list-timers *dnf-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/dnf/automatic.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apply_updates = yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure system services (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* systemctl list-unit-files | grep enabled | sort ### (to see enabled services)&lt;br /&gt;
* disable unwanted services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable bluetooth&lt;br /&gt;
systemctl disable dm-event&lt;br /&gt;
systemctl disable dmraid-activation&lt;br /&gt;
systemctl disable iscsid&lt;br /&gt;
systemctl disable iscsi&lt;br /&gt;
systemctl disable iscsiuio&lt;br /&gt;
systemctl disable libvirtd&lt;br /&gt;
systemctl disable lvm2-lmetad&lt;br /&gt;
systemctl disable lvm2-monitor&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl disable multipathd&lt;br /&gt;
systemctl disable netcf-transaction&lt;br /&gt;
systemctl disable lvm2-lvmetad.socket&lt;br /&gt;
systemctl disable lvm2-lvmpolld.socket&lt;br /&gt;
systemctl disable iscsid.socket&lt;br /&gt;
systemctl disable iscsiuio.socket&lt;br /&gt;
#systemctl disable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erase unwanted packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* PackageKit # bugs users about security updates, hogs yum lock&lt;br /&gt;
* perl-homedir # creates unwanted $HOME/perl5&lt;br /&gt;
* ModemManager # thinks that all USB-attached devices are modems&lt;br /&gt;
* pcp # sends error email to itself, does not work&lt;br /&gt;
* abrt # sends email to root about useless crashes, i.e. crash of X when machine is rebooted&lt;br /&gt;
* rear # some kind of backup and recovery tool, not clear what it does, but it sends email complaining how it is broken&lt;br /&gt;
* bash-completion # &amp;quot;echo $HOME/&amp;lt;TAB&amp;gt;&amp;quot; becomes &amp;quot;echo \$HOME&amp;quot; (notice &amp;quot;\&amp;quot; added before &amp;quot;$&amp;quot;) preventing tab-completion from doing anything useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase PackageKit perl-homedir ModemManager pcp abrt abrt-libs abrt-gui-libs rear bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable unwanted package &amp;quot;tracker&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tracker&amp;quot; package is part of the GNOME desktop, it scans the content of all files&lt;br /&gt;
into a database for quick searching.&lt;br /&gt;
&lt;br /&gt;
When it malfunctions, bad things happen, i.e. read through&lt;br /&gt;
https://bugzilla.redhat.com/show_bug.cgi?id=747689&lt;br /&gt;
&lt;br /&gt;
Specific problem I see is that it floods the system log with error messages. Also &lt;br /&gt;
consumes network and filesystem bandwidth for NFS mounted home directories.&lt;br /&gt;
&lt;br /&gt;
This package cannot be removed by &amp;quot;yum erase tracker&amp;quot; dues to dependencies&lt;br /&gt;
from core GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
Instead, do this to deactivate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod -x /usr/libexec/tracker-*&lt;br /&gt;
chmod -x /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/libexec/tracker-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure external package repositories (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
EPEL: (addtional packages)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel modules and drivers) (CentOS8)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install elrepo-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel drivers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;br /&gt;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm&lt;br /&gt;
yum -y install yum-plugin-fastestmirror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed to continue with installation ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
(these packages are sometimes missing, they are needed to follow following instructions instructions)&lt;br /&gt;
&lt;br /&gt;
(SL6.5: libotf is a dependancy of emacs - SL6.5 installer fails to install it)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install ed patch wget git libotf gdisk emacs perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Konstantin&#039;s scripts ==&lt;br /&gt;
&lt;br /&gt;
(+Centos7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go back to the NIS slave server and install the hourly NIS update cron job.&lt;br /&gt;
&lt;br /&gt;
== Enable yum version lock ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install yum-plugin-versionlock&lt;br /&gt;
#yum versionlock packagename # yum versionlock rpcbind&lt;br /&gt;
#yum versionlock list # list locked packages&lt;br /&gt;
#yum versionlock delete packagename # unlock given package&lt;br /&gt;
#yum versionlock clear # delete all locks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure trusted ssh keys ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
interrupt by Ctrl-C&lt;br /&gt;
/bin/cp ~/git/scripts/etc/authorized_keys ~/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure hardware sensors ==&lt;br /&gt;
&lt;br /&gt;
* yum -y install lm_sensors&lt;br /&gt;
* sensors-detect (accept default answer to all questions - press ENTER)&lt;br /&gt;
* systemctl restart lm_sensors&lt;br /&gt;
* sensors (to see available sensors)&lt;br /&gt;
&lt;br /&gt;
If no sensors are detected by standard drivers, follow motherboard-specific instructions at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Configure IPMI sensors ==&lt;br /&gt;
&lt;br /&gt;
Some machines support the IPMI interface for monitoring the hardware: fan speeds, temperatures, voltages.&lt;br /&gt;
&lt;br /&gt;
* find out if IPMI is supported. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dmidecode | grep -i ipmi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
if output is not blank, IPMI is maybe supported.&lt;br /&gt;
* install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
service ipmi start&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
chkconfig ipmi on&lt;br /&gt;
chkconfig ipmievd on&lt;br /&gt;
service ipmi restart&lt;br /&gt;
service ipmievd restart&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (CentOS7) install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
systemctl start ipmi&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
systemctl list-unit-files | grep -i ipmi&lt;br /&gt;
systemctl enable ipmi&lt;br /&gt;
systemctl restart ipmi&lt;br /&gt;
systemctl status ipmi&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
systemctl status ipmievd&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if ipmievd complains about SEL buffer overflow, clear it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipmitool sel list ### show ipmi messages in raw format&lt;br /&gt;
ipmitool sel elist ### show ipmi messages in useful format&lt;br /&gt;
ipmitool sel elist &amp;gt; file ### save ipmi messages into a file&lt;br /&gt;
ipmitool sel clear  ### clear all accumulated ipmi messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* useful ipmi commands:&lt;br /&gt;
** ipmitool sensor -- read hardware sensors&lt;br /&gt;
** ipmitool sel elist -- report all accumulated messages&lt;br /&gt;
&lt;br /&gt;
== Configure ECC memory ==&lt;br /&gt;
&lt;br /&gt;
* check that machine has ECC memory: dmidecode --type memory | grep -i ecc&lt;br /&gt;
&lt;br /&gt;
Configure mcelog (machine check exception)&lt;br /&gt;
&lt;br /&gt;
* yum install mcelog&lt;br /&gt;
* check that mcelog is running: ps -efw | grep mcelog&lt;br /&gt;
* (el6) chkconfig mcelogd on; service mcelogd restart&lt;br /&gt;
* (el7) systemctl status mcelog.service; systemctl enable mcelog.service; systemctl restart mcelog.service&lt;br /&gt;
&lt;br /&gt;
Check for MCE (machine check exception) messages:&lt;br /&gt;
&lt;br /&gt;
* mcelog --client&lt;br /&gt;
* grep -i mce /var/log/messages*&lt;br /&gt;
* grep -i ecc /var/log/messages*&lt;br /&gt;
&lt;br /&gt;
Configure EDAC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install edac-utils&lt;br /&gt;
edac-ctl --mainboard&lt;br /&gt;
edac-ctl --status&lt;br /&gt;
lsmod | grep edac&lt;br /&gt;
modprobe ie31200_edac ### driver for Intel E3-1200 series ECC memory&lt;br /&gt;
&lt;br /&gt;
[root@grsmid00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
... empty&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
drwxr-xr-x. 15 root root    0 Oct 25 16:40 mc0&lt;br /&gt;
...&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_noinfo_count&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow3&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 max_location&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 mc_name&lt;br /&gt;
drwxr-xr-x. 2 root root    0 Oct 25 16:40 power&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank3&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank4&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank5&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank6&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank7&lt;br /&gt;
--w-------. 1 root root 4096 Oct 25 16:40 reset_counters&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 seconds_since_reset&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 size_mb&lt;br /&gt;
lrwxrwxrwx. 1 root root    0 Oct  2 12:02 subsystem -&amp;gt; ../../../../../bus/mc0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_noinfo_count&lt;br /&gt;
-rw-r--r--. 1 root root 4096 Oct 25 16:40 uevent&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure SMARTD (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 smartd config files send deficient email notices about disk failures. Overwrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd.conf /etc/smartmontools/&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd_warning.sh /etc/smartmontools/&lt;br /&gt;
systemctl enable smartd&lt;br /&gt;
systemctl restart smartd&lt;br /&gt;
systemctl status smartd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable User Disk Quotas (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* read http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html&lt;br /&gt;
* emacs -nw /etc/fstab, add &amp;quot;grpquota,usrquota&amp;quot; to filesystem options, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@isdaq00 home1]# grep quota /etc/fstab&lt;br /&gt;
UUID=5a2aefbd-45db-475e-841e-12ec89220fbd /home1 ext4 defaults,grpquota,usrquota 1 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /; umount /home1; mount /home1&lt;br /&gt;
* quotacheck -cug /home1&lt;br /&gt;
* quotacheck -avug&lt;br /&gt;
* quotaon -av&lt;br /&gt;
* quota system is now active&lt;br /&gt;
* increase the soft quota time limit from default 7days to 30 or 60 days: edquota -t&lt;br /&gt;
* set quotas for all users (see below)&lt;br /&gt;
* setup warnquota:&lt;br /&gt;
** create warnquota config file: emacs -nw /etc/warnquota.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# values can be quoted:&lt;br /&gt;
MAIL_CMD        = &amp;quot;/usr/sbin/sendmail -t&amp;quot;&lt;br /&gt;
FROM            = root&lt;br /&gt;
SUBJECT         = User %i@%h exceeded allocated disk quota&lt;br /&gt;
CC_TO           = &amp;quot;root&amp;quot;&lt;br /&gt;
# If you set this variable CC will be used only when user has less than&lt;br /&gt;
# specified grace time left (examples of possible times: 5 seconds, 1 minute,&lt;br /&gt;
# 12 hours, 5 days)&lt;br /&gt;
# CC_BEFORE = 2 days&lt;br /&gt;
SUPPORT         = &amp;quot;root&amp;quot;&lt;br /&gt;
# Text in the beginning of the mail (if not specified, default text is used)&lt;br /&gt;
# This way text can be split to more lines&lt;br /&gt;
# Line breaks are done by &#039;|&#039; character&lt;br /&gt;
# The expressions %i, %h, %d, and %% are substituted for user/group name,&lt;br /&gt;
# host name, domain name, and &#039;%&#039; respectively. For backward compatibility&lt;br /&gt;
# %s behaves as %i but is deprecated.&lt;br /&gt;
MESSAGE         = User &amp;quot;%i&amp;quot; on &amp;quot;%h&amp;quot; has exceeded the allocated disk quota.||Please delete any unnecessary files on following filesystems or|contact the system administrato&lt;br /&gt;
r to increase your quota allocation:|&lt;br /&gt;
SIGNATURE       = --|automated email from warnquota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** note that %i@%h in the SUBJECT line do not seem to work&lt;br /&gt;
** create cron job: emacs -nw /etc/cron.daily/warnquota&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
warnquota&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** chmod a+x /etc/cron.daily/warnquota&lt;br /&gt;
** touch /etc/crontab&lt;br /&gt;
&lt;br /&gt;
Useful commands for managing quotas:&lt;br /&gt;
* repquota -a | sort -n -k3 ### show quota of all users sorted by disk usage&lt;br /&gt;
* edquota -u username ### open &amp;quot;vi&amp;quot; editor to change user quotas&lt;br /&gt;
* repquote -a | grep username ### report quota for given user&lt;br /&gt;
* setquota -u username 0 0 0 0 /home1 ### disable quotas for given user&lt;br /&gt;
* setquota -u username 50000000 100000000 0 0 /home1 ### set quotas for 50GB soft and 100GB hard&lt;br /&gt;
* edquota -t ### change user quota time limits&lt;br /&gt;
* edquote -tg ### change group quota time limits&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* create /etc/exports. example: (fsid numbers should be unique and increase 1,2,3,...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async,fsid=1)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async,fsid=2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* enable things, start them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=nfs&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl start nfs-server&lt;br /&gt;
systemctl status nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -efw | grep rpc.mountd # should be running!&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=mountd&lt;br /&gt;
firewall-cmd --permanent --add-service=rpc-bind&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts.allow, add or uncomment &amp;quot;mountd: 142.90.0.0/255.255.0.0&amp;quot;&lt;br /&gt;
* create /etc/exports. example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* chkconfig nfs on&lt;br /&gt;
* chkconfig nfslock on&lt;br /&gt;
* service nfs restart&lt;br /&gt;
&lt;br /&gt;
Then on ladd00 need to do&lt;br /&gt;
* ssh to root@ladd00&lt;br /&gt;
* edit /etc/auto.daq to add new machine...&lt;br /&gt;
* make -C /var/yp&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 SERVER (SL6) ==&lt;br /&gt;
&lt;br /&gt;
* if used with NIS, same as NFSv3&lt;br /&gt;
* if used as standalone, need to edit idmapd.conf - set the &amp;quot;Domain&amp;quot; name to the same value on NFS server and NFS slave (default automagically determined value does not always work). More TBW.&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups ==&lt;br /&gt;
&lt;br /&gt;
AMANDA backups are already enabled by TRIUMF kickstart installs. For non-kickstart installation, follow instructions at [[http://amanda/~amanda http://amanda/~amanda]], or look at &amp;quot;/triumfcs/trshare/olchansk/linux/amanda/amanda-enable.perl&amp;quot;. As final step, use [[https://helpdesk.triumf.ca https://helpdesk.triumf.ca]] to contact TRIUMF CS to add this new machine to the amanda backup list.&lt;br /&gt;
&lt;br /&gt;
* yum install triumf-amanda&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install amanda-client&lt;br /&gt;
systemctl list-unit-files | grep -i amanda&lt;br /&gt;
#systemctl enable amanda&lt;br /&gt;
systemctl enable amanda.socket&lt;br /&gt;
systemctl enable amanda-udp.socket&lt;br /&gt;
systemctl restart amanda.socket&lt;br /&gt;
systemctl restart amanda-udp.socket&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=amanda-client&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
echo amanda.triumf.ca amanda amdump &amp;gt;&amp;gt; /var/lib/amanda/.amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On amanda server, add new machine to the disklist, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amcheck -c daily titan00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable DCACHE ==&lt;br /&gt;
&lt;br /&gt;
DAQ dcache server is mounted as&lt;br /&gt;
&lt;br /&gt;
/daq/pnfs/triumf.ca/data/&lt;br /&gt;
&lt;br /&gt;
For Centos-7 machines, you need to adjust the firewall rules in order to be able to communicate with the trdata machines; this is only necessary if you are copying data to trdata.  The firewall changes are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.212/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.107.156/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.219/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructions are unnecessary &lt;br /&gt;
* # mkdir -p /pnfs&lt;br /&gt;
* # edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs &amp;amp;&amp;quot;&lt;br /&gt;
* # . /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
For more information on, see [[TrdataDcache]] dcache page.&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 Ganglia instructions (EPEL7 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/multicpu.conf   # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/netstats.pyconf # spews errors into syslog&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/diskstat.pyconf # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/procstat.pyconf # do not create /tmp/gmond.conf&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF DAQ packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
wget http://daq.triumf.ca/~daqweb/yum/triumf-daq.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Konstantin&#039;s packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install diskscrub emailonreboot monitor_nfs &amp;quot;ganglia-*&amp;quot; triumf_nodeinfo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install memtest and PXE boot ==&lt;br /&gt;
&lt;br /&gt;
!!!DO NOT DO THIS!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.10&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&lt;br /&gt;
emacs -nw /boot/grub/grub.conf&lt;br /&gt;
title memtest86+-5.01&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-5.01.bin.gz&lt;br /&gt;
title memtest86+-4.20&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.20.bin.gz&lt;br /&gt;
title memtest86+-4.10&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.10&lt;br /&gt;
title pxeboot&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install triumf_nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl --config ladd00.triumf.ca:8600&lt;br /&gt;
emacs -nw /etc/nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl ladd00.triumf.ca:8600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install gonodeinfo node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+Ubuntu, +CentOS7, +CentOS8)&lt;br /&gt;
&lt;br /&gt;
go to https://bitbucket.org/dd1/gonodeinfo&lt;br /&gt;
follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
# or git clone https://daq.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: ladd00.triumf.ca:8601&lt;br /&gt;
* run gonodeinfo -e&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run gonodereceive -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== Install latest system updates ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum update -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF Printers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable syslog spam (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 config is spamming the syslog with useless messages &amp;quot;systemd: Starting Session&amp;quot;, etc. Disable this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo auditctl -e 0 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo /usr/bin/systemd-analyze set-log-level notice &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install basic system packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
(if starting from minimal system, basic system packages required:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y which psmisc redhat-lsb-core xorg-x11-xauth xterm emacs-nox rsync tcpdump strace nfs-utils sysstat iftop tcsh&lt;br /&gt;
yum install -y gcc gcc-c++ gdb glibc-static libstdc++-static zlib zlib-devel openssl-devel httpd-tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed for QUARTUS, ROOT, EPICS and MIDAS DAQ ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.x86_64 sysstat &amp;quot;libusb-devel*&amp;quot; unixODBC-devel postgresql-devel libxml2-devel libXpm-devel libgfortran git compat-readline43 &amp;quot;graphviz*&amp;quot; dcap &amp;quot;tigervnc*&amp;quot; telnet glibc&amp;quot;*&amp;quot; strace &amp;quot;fftw*&amp;quot; libpng &amp;quot;freetype*&amp;quot; xpdf &amp;quot;xemacs*&amp;quot; tkcvs xterm mutt &amp;quot;*-g77*&amp;quot; joe &amp;quot;libXmu*&amp;quot; dcap-devel gsl-devel pcre-devel h5py gd-devel xorg-x11-fonts&amp;quot;*&amp;quot; minicom xfig&amp;quot;*&amp;quot; perl-BSD-Resource &amp;quot;net-snmp-*&amp;quot; readline-static git-all nasm imake tcl-devel gv xorg-x11-twm expat-devel screen compat-readline5 ImageMagick ImageMagick-devel wget alacarte scipy numpy sympy nedit gnuplot php-cli php-domxml-php4-php5 php-gd php-fpdf php-cli kdebase cmake tcpdump sqlite sqlite-devel kdegraphics gdisk lsof gconf-editor iftop tk-devel mcelog kdm blt itcl lz4 bzip2 pbzip2 apr-devel apr-util-devel net-tools golang&amp;quot;*&amp;quot; --exclude golang-cover&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang-pkg&amp;quot;*&amp;quot; --exclude golang-github&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;git&amp;quot;*&amp;quot; mesa&amp;quot;*&amp;quot; xerces-c&amp;quot;*&amp;quot; diffuse clang i2c-tools  texlive-revtex texlive-revtex4 kile kbibtex xrdp glibc.i686 gimp gimp-data-extras perl-GD&amp;quot;*&amp;quot; perl-Math&amp;quot;*&amp;quot; perl-Statistics-Basic cmake3 cmake3-gui extra-cmake-modules python2-pip x2go&amp;quot;*&amp;quot; mariadb-devel glibc-devel.i686 libzstd&lt;br /&gt;
&lt;br /&gt;
== Install optional packages ==&lt;br /&gt;
&lt;br /&gt;
!! DO NOT DO THIS !!&lt;br /&gt;
&lt;br /&gt;
(do not install boost on 32-bit machines)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken &amp;quot;boost-*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(packages for 32-bit software compilation on 64-bit machines. this is optional)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.i386 giflib.i686 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel.i686 openssl-devel.i686 unixODBC-devel.i686 libstdc++-devel.i386 libstdc++-devel.i686 &amp;quot;zlib-*.i686&amp;quot; &amp;quot;libXext-*.i686&amp;quot; &amp;quot;libXtst-*.i686&amp;quot; glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel.i686 gsl-devel.i686 pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 gd-devel.i686 readline-devel.i686 ncurses-devel.i686 libXdmcp.i686 readline-static.i686 compat-readline5.i686&lt;br /&gt;
&lt;br /&gt;
yum install boost-devel.i686&lt;br /&gt;
&lt;br /&gt;
(separately install these packages - they collide with the big bunch above)&lt;br /&gt;
&lt;br /&gt;
yum install rdesktop&lt;br /&gt;
&lt;br /&gt;
yum reinstall urw-fonts&lt;br /&gt;
&lt;br /&gt;
== Install libraries for PHYSICA (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To run physica built on el6 from git sources on el7, do this:&lt;br /&gt;
&lt;br /&gt;
(building physica on el7 is nort supported at this time)&lt;br /&gt;
&lt;br /&gt;
(see more http://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install libX11.i686 gd.i686 libpng12.i686 readline.i686 compat-libf2c-34.i686&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install additional desktop environements (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# LXQT (from EPEL)&lt;br /&gt;
# NOT COMPATIBLE WITH el7.7 # yum -y install &amp;quot;lxqt*&amp;quot;&lt;br /&gt;
# Cinnamon desktop (from EPEL)&lt;br /&gt;
yum -y install cinnamon&lt;br /&gt;
# KDE5 not available yet&lt;br /&gt;
# MATE (from epel)&lt;br /&gt;
yum -y groupinstall &amp;quot;MATE Desktop&amp;quot;&lt;br /&gt;
yum -y install mate-common mate-icon-theme-faenza mate-netspeed mate-sensors-applet mate-themes-extras mate-utils&lt;br /&gt;
yum -y erase ModemManager abrt abrt-libs abrt-gui-libs&lt;br /&gt;
# XFCE4 (from EPEL)&lt;br /&gt;
yum -y groupinstall xfce&lt;br /&gt;
yum -y install &amp;quot;xfce*plugin&amp;quot; xfce4-about --exclude xfce4-hamster-plugin&lt;br /&gt;
yum -y erase bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lighdm login manager (from EPEL)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install lightdm lightdm-kde lightdm-qt lightdm-qt5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* and switch from gdm to lighdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable gdm.service&lt;br /&gt;
systemctl enable lightdm.service&lt;br /&gt;
(systemctl stop gdm; systemctl restart lightdm) &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SMART scripts ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -sf ~/git/scripts/smart-status/smart-status.perl ~/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install NTFS drivers ==&lt;br /&gt;
&lt;br /&gt;
yum install ntfs-3g ntfsprogs (from EPEL)&lt;br /&gt;
&lt;br /&gt;
== Install HFS and HFS+ drivers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
yum --disablerepo=\* --enablerepo=elrepo install kmod-hfs kmod-hfsplus&lt;br /&gt;
&lt;br /&gt;
== Install Google Chrome web browser (64-bit CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/google-chrome-64.repo /etc/yum.repos.d/&lt;br /&gt;
yum install google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable monitoring of HTTPS certificates ==&lt;br /&gt;
&lt;br /&gt;
On SL6, CentOS7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install crypto-utils&lt;br /&gt;
/etc/cron.daily/certwatch&lt;br /&gt;
strace -f /etc/cron.daily/certwatch  |&amp;amp; grep open  | grep crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable 100dpi fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/share/X11/fonts/100dpi /etc/X11/fontpath.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable crontab @reboot for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
el7 has a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory&lt;br /&gt;
is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be&lt;br /&gt;
started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/crond.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/crond.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat crond.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependacy tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 configuration prevents all access to servers running on the local machine, including access to MIDAS mhttpd (tcp port 8443) and mserver (all tcp ports).&lt;br /&gt;
&lt;br /&gt;
To enable access to mhttpd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=8443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access to the mserver from a specific host: (replace 142.90.111.175 with the IP address of the permitted host)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.111.175/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access from the private network (replace &amp;quot;192.168.1.0&amp;quot; with your private network number):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.0/24&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for EPICS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To enable access to TRIUMF EPICS servers, do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.132.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For UCN the controls people seem to have EPICS setup on a different server; this might be true for CMMS as well.  In this case the firewall rule change should be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.139.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable gdm and X11 (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initctl stop prefdm&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/prefdm.override&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/splash-manager.override&lt;br /&gt;
initctl reload-configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then enable login on default console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;plymouth quit&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo &amp;quot;X_TTY=xxx/dev/tty1&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install JAVAWS (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
* to run Java &amp;quot;web start&amp;quot; jnlp files (EVO, SEEVOGH, etc): javaws Downloads/spider.jnlp&lt;br /&gt;
* install javaws:&lt;br /&gt;
* yum install icedtea-web icedtea-web-javadoc&lt;br /&gt;
&lt;br /&gt;
== Install firefox java plugin (OPTIONAL, DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
This installs the Oracle Java plugin:&lt;br /&gt;
&lt;br /&gt;
* rpm -vh --install ~deap/jdk-7u15-linux-x64.rpm&lt;br /&gt;
* ls -l /usr/lib64/mozilla/plugins/&lt;br /&gt;
* ln -s /usr/java/jdk1.7.0_15/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/&lt;br /&gt;
* start firefox, go edit-&amp;gt;preferences-&amp;gt;general-&amp;gt;manage add-ons-&amp;gt;plugins&lt;br /&gt;
* &amp;quot;java plugin 1.7.0_15&amp;quot; should be listed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure USB device permissions ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
&lt;br /&gt;
== Disable modem-manager ==&lt;br /&gt;
&lt;br /&gt;
The modem-manager will try to talk to any serial devices attached to USB serial ports. It assumes that those devices are modems and will send out modem-specific commands. if the devices are not modems and do not understand or do not like modem commands, well that&#039;s too bad. modem-manager is installed by the ModemManager package required by the NetworkManager package, and there is no configuration setting to turn modem-manager off.&lt;br /&gt;
&lt;br /&gt;
One way to disable it is: chmod a= /usr/sbin/modem-manager&lt;br /&gt;
&lt;br /&gt;
Another way to disable it is by forced uninstall: rpm --erase --nodeps ModemManager&lt;br /&gt;
&lt;br /&gt;
Remember to kill the running copy: killall -KILL modem-manager&lt;br /&gt;
&lt;br /&gt;
Caveat: it is not clear if modem-manager would not be resurrected by an update to the NetworkManager or ModemManager packages.&lt;br /&gt;
&lt;br /&gt;
== Configure Altera jtagd ==&lt;br /&gt;
&lt;br /&gt;
(if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/jtagd&lt;br /&gt;
echo &#039;Password = &amp;quot;123&amp;quot;;&#039; &amp;gt; /etc/jtagd/jtagd.conf&lt;br /&gt;
cp -pv  /daq/daqshare/olchansk/altera/11.0/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start local jtagd: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagd&lt;br /&gt;
* test local connection: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagconfig&lt;br /&gt;
* test remote connection (add this machine to your .jtag.conf, run jtagconfig&lt;br /&gt;
&lt;br /&gt;
For more information, go to [[Quartus]]&lt;br /&gt;
&lt;br /&gt;
== Install EOS ==&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
http://eos-docs.web.cern.ch/eos-docs/quickstart/setup_repo.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -vh --install https://dss-ci-repo.web.cern.ch/dss-ci-repo/eos/citrine/tag/el-7/x86_64/eos-repo-el7-generic-1.noarch.rpm&lt;br /&gt;
yum-config-manager --disable eos-citrine # disable auto-update because all packages are not signed&lt;br /&gt;
yum-config-manager --disable eos-dep # disable auto-update because all packages are not signed.&lt;br /&gt;
yum install eos-client eos-fuse --enablerepo=eos-citrine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install fix for the el7 systemd dbus boot hang ==&lt;br /&gt;
&lt;br /&gt;
Around early Summer 2018 el7 started showing a boot problem. In the nutshell,&lt;br /&gt;
there is a problem with the dbus connection between dbus and systemd that&lt;br /&gt;
prevents polkit, firewalld, etc from starting. The system eventually boots&lt;br /&gt;
enough that one can ssh into it, but most things do not work. Notably,&lt;br /&gt;
polkit is not running, firewalld is not running, ssh login takes about 15-30 second.&lt;br /&gt;
&lt;br /&gt;
Solution is to add a special systemd service to check that dbus started correctly.&lt;br /&gt;
It that runs after dbus is started, but before it is used, and it restarts dbus in a loop&lt;br /&gt;
with a delay until dbus starts correctly. In testing, dbus always starts correctly after&lt;br /&gt;
the first retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.perl /usr/bin/&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable systemd-check-dbus&lt;br /&gt;
systemctl start systemd-check-dbus&lt;br /&gt;
systemctl status systemd-check-dbus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After linux boots, if everything was okey, the script will report this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iris01 ~]# systemctl status systemd-check-dbus&lt;br /&gt;
...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca systemd[1]: Starting Check that systemd is registered with dbus...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca sh[4283]: Starting check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.DBus&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.systemd1&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: systemd1 dbus service exists, success!&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: Finished check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca systemd[1]: Started Check that systemd is registered with dbus.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the boot problem happened, the script will report about restarting dbus.&lt;br /&gt;
&lt;br /&gt;
Note: the systemd service file adjusts the start order of other services, this adjustment seems to reduce the probability of the problem.&lt;br /&gt;
&lt;br /&gt;
== Configure GRUB boot loader (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub, remove &amp;quot;rhgb&amp;quot; and &amp;quot;quiet&amp;quot; from GRUB_CMDLINE_LINUX&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg&lt;br /&gt;
* grub2-editenv list # show contents of boot environement file&lt;br /&gt;
* /bin/rm /boot/grub2/grubenv # remove stale settings, make grub2 boot from first entry in config file&lt;br /&gt;
&lt;br /&gt;
== Install memtest86+ (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install memtest86+&lt;br /&gt;
/bin/cp -vf /usr/share/memtest86+/20_memtest86+ /etc/grub.d/&lt;br /&gt;
/bin/chmod a+x /etc/grub.d/20_memtest86+ &lt;br /&gt;
grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable ELREPO ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo_triumf.repo&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reduce install size (optional) ==&lt;br /&gt;
&lt;br /&gt;
This is optional. Only do this if reducing the size of the OS image is very important.&lt;br /&gt;
&lt;br /&gt;
Do this for VME processors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum erase &amp;quot;texlive*&amp;quot; &amp;quot;java*&amp;quot; &amp;quot;boost*&amp;quot; libreoffice&amp;quot;*&amp;quot;&lt;br /&gt;
#yum erase &amp;quot;xemacs*&amp;quot;&lt;br /&gt;
yum erase &amp;quot;libstdc++-docs&amp;quot;&lt;br /&gt;
yum erase firefox google-chrome&amp;quot;*&amp;quot;&lt;br /&gt;
yum clean all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm -rf /usr/share/help&lt;br /&gt;
/bin/rm -rf /usr/share/doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update from el7.6 to el7.7 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum versionlock delete zfs&lt;br /&gt;
yum versionlock delete kernel&lt;br /&gt;
yum -y update &amp;quot;yum*&amp;quot; &amp;quot;rpm*&amp;quot;&lt;br /&gt;
yum -y erase libqtxdg lxqt-qtplugin ### LXQT is not compatible&lt;br /&gt;
yum update&lt;br /&gt;
after rebooting into el7.7, follow instructions for updating ZFS from version 0.7 to 0.8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
== Special hardware settings ==&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 1207 or newer&lt;br /&gt;
* (before CentOS7) sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
* CentOS7: installs correct drivers automatically&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair-II mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2607 or newer&lt;br /&gt;
* for the onboard IDE to work, add &amp;quot;all-generic-ide&amp;quot; to kernel boot options in grub.conf&lt;br /&gt;
* sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
&lt;br /&gt;
=== ASUS P7P55D EVO mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2004 or newer&lt;br /&gt;
* SL6 - install special driver for on board PCIe GigE network port and disable on board PCI GigE network port:&lt;br /&gt;
** yum --enablerepo elrepo install kmod-r8168 kmod-r8169&lt;br /&gt;
** # do not do this: sed &#039;s/^blacklist/#blacklist/&#039; -i /etc/modprobe.d/blacklist-r8169.conf&lt;br /&gt;
** reboot&lt;br /&gt;
** verify that correct drivers are loaded: ethtool -i eth0; ethtool -i eth1&lt;br /&gt;
** note: there will be no eth1 - r8169 driver is disabled.&lt;br /&gt;
&lt;br /&gt;
=== ASUS P6X58-E-WS mobo ===&lt;br /&gt;
&lt;br /&gt;
* BIOS settings&lt;br /&gt;
** F1 or DEL to enter BIOS setup, F8 boot menu&lt;br /&gt;
** go to POWER-&amp;gt;HW mon, confirm CPU temperature is around 30C. (heatsink is installed correctly. Bad heatsink temperature quickly goes up to 50-70C).&lt;br /&gt;
** Main menu: Storage config - SATA change IDE-&amp;gt;AHCI&lt;br /&gt;
** System information: confirm BIOS version 301, CPU type, memory size&lt;br /&gt;
** AI Tweak: set DRAM frequency - AUTO-&amp;gt;DDR3-1333&lt;br /&gt;
** Advanced-&amp;gt;Onboard devices: LAN BOOT: enabled&lt;br /&gt;
** Power-&amp;gt;HW monitor: CPU Q-FAN: enabled&lt;br /&gt;
** Boot-&amp;gt;Settings: Quick boot: enabled; Full screen logo: disabled; Wait for F1: disabled&lt;br /&gt;
** Save and exit&lt;br /&gt;
&lt;br /&gt;
=== ASUS E35M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboards/E35M1M_PRO/#specifications&lt;br /&gt;
* use BIOS version 1002 or newer&lt;br /&gt;
* for CPU temperature: install kmod-k10temp from ELREPO (kmod-k10temp-0.0-4.el6.elrepo.x86_64.rpm)&lt;br /&gt;
* for Sensors: yum --enablerepo elrepo install kmod-w83627ehf; modprobe w83627ehf; sensors&lt;br /&gt;
* for Graphics: yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* to enable booting from USB3, edit /etc/dracut.conf, change line &amp;quot;add_drivers&amp;quot; to read: add_drivers+=&amp;quot;xhci-hcd&amp;quot;&lt;br /&gt;
* to use multiple monitors, run &amp;quot;aticonfig --initial --heads=2 --adapter=1 --xinerama=on&amp;quot;, to change screen layout, edit /etc/X11/xorg.conf. Only dual monitors DVI+HDMI seem to work. Tripple monitors does not seem to work.&lt;br /&gt;
&lt;br /&gt;
Sensors instructions below are obolete (use driver from ELREPO)&lt;br /&gt;
* for Sensors, install driver for NCT6776F chip from https://github.com/groeck/w83627ehf/archives/master (in the Makefile, change the line &amp;quot;KERNEL_BUILD=&amp;quot; to read: &amp;quot;KERNEL_BUILD:=/usr/src/kernels/$(TARGET)&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/groeck-w83627ehf-dd3e543/w83627ehf.ko&lt;br /&gt;
echo &amp;quot;modprobe hwmon; modprobe hwmon-vid; modprobe k10temp; rmmod w83627ehf; insmod /root/w83627ehf.ko&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS E45M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/Motherboards/E45M1M_PRO/#specifications&lt;br /&gt;
* use BIOS 1202 or newer&lt;br /&gt;
* follow the E35M1-M PRO instructions above&lt;br /&gt;
&lt;br /&gt;
=== ASUS P9X79 WS ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboard/P9X79_WS/&lt;br /&gt;
* use BIOS version 3101, 3401, 4701 or newer. If BIOS is 1305 or older, install P9X79-WS-CAP-Converter.ROM (BIOS 2902/3101), then the new BIOS.&lt;br /&gt;
* (not needed for CentOS7) for CPU temperature, install coretemp&lt;br /&gt;
* (not needed for CentOS7) for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
* BIOS Settings:&lt;br /&gt;
** enter &amp;quot;Advanced mode&amp;quot;&lt;br /&gt;
** Ai Tweaker -&amp;gt; Ai Overclock Tuner -&amp;gt; Set to &amp;quot;XMP&amp;quot; - this enables DDR3-1600 RAM speed vs DDR3-1333 by default&lt;br /&gt;
** Monitor -&amp;gt; CPU fan speed low limit -&amp;gt; Set to &amp;quot;200 RPM&amp;quot; - we are using high efficiency slow turning CPU coolers and the default 600 RPM is right on the edge of firing false warnings&lt;br /&gt;
** Boot -&amp;gt; Full screen logo -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
** Wait for F1 -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ASUS P8B-M ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 6103 or newer&lt;br /&gt;
* for CPU temperature, install coretemp&lt;br /&gt;
* for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
&lt;br /&gt;
=== SUPERMICRO X9SCL ===&lt;br /&gt;
&lt;br /&gt;
* yum install kmod-w83627ehf.x86_64 coretemp&lt;br /&gt;
* xemacs -nw /etc/rc.local, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe w83627ehf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z87-WS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z97-WS ===&lt;br /&gt;
&lt;br /&gt;
the nct6775 driver does not work because of conflict with ACPI.&lt;br /&gt;
&lt;br /&gt;
=== ASUS AM1M-A ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 602 or later&lt;br /&gt;
* SL6.5 installer cannot use USB2 ports and the network. Use USB3 ports (blue colour) to boot USB installer (memtest, rescue, etc)&lt;br /&gt;
* SL6.5 kernels require boot option &amp;quot;iommu=soft&amp;quot; or USB2 and network do not work. (USB3 - blue ports - seems okey)&lt;br /&gt;
* install ATI/AMD video drivers from ELREPO (see below)&lt;br /&gt;
* sensors chip is ITE IT8623E, for SL6, use standalone driver from lm_sensors. (2 fans rpm, 2 temperatures):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* for el7 use it87.ko driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget https://daqshare.triumf.ca/~olchansk/linux/CentOS7/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@midemma02 ~]# sensors&lt;br /&gt;
radeon-pci-0008&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.0°C  (crit = +120.0°C, hyst = +90.0°C)&lt;br /&gt;
&lt;br /&gt;
fam15h_power-pci-00c4&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
power1:           N/A  (crit =  25.00 W)&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.2°C  (high = +70.0°C)&lt;br /&gt;
                       (crit = +70.0°C, hyst = +69.0°C)&lt;br /&gt;
&lt;br /&gt;
it8603-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:          +0.96 V  (min =  +2.50 V, max =  +2.95 V)  ALARM&lt;br /&gt;
in1:          +2.23 V  (min =  +0.94 V, max =  +1.22 V)  ALARM&lt;br /&gt;
in2:          +2.03 V  (min =  +0.74 V, max =  +0.77 V)  ALARM&lt;br /&gt;
in3:          +2.00 V  (min =  +1.26 V, max =  +0.13 V)  ALARM&lt;br /&gt;
in4:          +2.23 V  (min =  +2.95 V, max =  +2.15 V)  ALARM&lt;br /&gt;
3VSB:         +3.36 V  (min =  +6.00 V, max =  +2.50 V)  ALARM&lt;br /&gt;
Vbat:         +3.22 V  &lt;br /&gt;
+3.3V:        +3.36 V  &lt;br /&gt;
fan1:         611 RPM  (min =  200 RPM)&lt;br /&gt;
fan2:         707 RPM  (min =  600 RPM)  ALARM&lt;br /&gt;
temp1:        +38.0°C  (low  = +122.0°C, high = +122.0°C)  sensor = thermistor&lt;br /&gt;
temp2:        +22.0°C  (low  = +119.0°C, high = -35.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
temp3:       -128.0°C  (low  = +16.0°C, high = +93.0°C)  sensor = thermistor&lt;br /&gt;
intrusion0:  ALARM&lt;br /&gt;
&lt;br /&gt;
[root@midemma02 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* AMD &amp;quot;Athlon(tm) 5350 APU&amp;quot; graphics supports 2 monitors maximum (mobo has 3 video outputs, only 2 can be used together)&lt;br /&gt;
&lt;br /&gt;
=== Intel SE7230NH1 ===&lt;br /&gt;
&lt;br /&gt;
* front panel header connector pinout is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PWR LED | 1  2|&lt;br /&gt;
        | 3  4|&lt;br /&gt;
PWR LED | 5  6|&lt;br /&gt;
HDD LED | 7  8|&lt;br /&gt;
HDD LED | 9 10|&lt;br /&gt;
PWR SW  |11 12| NIC1 LED&lt;br /&gt;
PWR SW  |13 14| NIC1 LED&lt;br /&gt;
RST SW  |15 16|&lt;br /&gt;
RST SW  |17 18|&lt;br /&gt;
        |19 20|&lt;br /&gt;
NMI SW  |21 22| NIC2 LED&lt;br /&gt;
NMI SW  |23 24| NIC2 LED&lt;br /&gt;
...     |...  |&lt;br /&gt;
        |33 34|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS H110M-A/M.2 ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 2003 or later&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT5539D&lt;br /&gt;
* sensors chip is &amp;quot;NCT6793D or compatible chip&amp;quot;, for el7, use this driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq03 ~]# sensors&lt;br /&gt;
acpitz-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                       +0.34 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                       +0.15 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                       +0.97 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                       +3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                       +3.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                       +1.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                      +0.13 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1020 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM&lt;br /&gt;
SYSTIN:                   +119.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +27.5°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +111.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +28.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Physical id 0:  +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:         +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:         +28.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
[root@daq03 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supermicro X11SSH-F ===&lt;br /&gt;
&lt;br /&gt;
* blacklist the mei and mei_me drivers per http://www.supermicro.com/support/faqs/faq.cfm?faq=14537&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# more /etc/modprobe.d/blacklist.conf&lt;br /&gt;
blacklist mei&lt;br /&gt;
blacklist mei_me&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mobo requires M.2 PCIe SSD (M.2 SATA SSD would not work. SATA SATA SSD ok)&lt;br /&gt;
* boot from M.2 PCIe SSD requires UEFI boot (from an MSDOS partition on the SSD)&lt;br /&gt;
&lt;br /&gt;
=== ASUS TUF Z390M-PRO GAMING (WI-FI) ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 2417 is okey, upgrade to this if older&lt;br /&gt;
* do not set XMP memory mode&lt;br /&gt;
* in the BIOS, enable the boot compatibility support module mode: BIOS (press DEL) -&amp;gt; Advanced mode -&amp;gt; BOOT -&amp;gt; CSM Module -&amp;gt; Enable CSM &amp;quot;yes&amp;quot;.&lt;br /&gt;
* for SL6, install e1000e driver from ELREPO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install --enablerepo=elrepo kmod-e1000e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors chip appears to be &amp;quot;Nuvoton NCT6798D&amp;quot; not clear what driver to use&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT6798D&lt;br /&gt;
* kmod-nct6775-0.0-5.el7_7.elrepo.x86_64.rpm from ELrepo finds the chip but bombs because of conflict with ACPI&lt;br /&gt;
&lt;br /&gt;
=== ASUS PRIME X399-A ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 1002&lt;br /&gt;
* for reading temperatures and fan rotations, install driver: https://github.com/electrified/asus-wmi-sensors/issues/29&lt;br /&gt;
&lt;br /&gt;
== Configure X11 graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Special settings for DAQ ===&lt;br /&gt;
&lt;br /&gt;
* add the following at the end of /etc/X11/xorg.conf. The enables Ctrl-Alt-KP-/ and Ctrl-Alt-KP-* to unlock the keyboard after Altera Quartus crash:&lt;br /&gt;
&amp;lt;pre&amp;gt;Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowDeactivateGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowClosedownGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo=elrepo install nvidia-detect&lt;br /&gt;
* run: nvidia-detect&lt;br /&gt;
* as instructed by nvidia-detect, install correct driver:&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-304xx&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-173xx&lt;br /&gt;
* (before SL6.x:  if it fails due to conflict with module-init-tools, run &amp;quot;yum --disablerepo \* --enablerepo elrepo update module-init-tools&amp;quot;)&lt;br /&gt;
* yum erase xorg-x11-glamor ### see http://elrepo.org/tiki/kmod-nvidia (search for glamor)&lt;br /&gt;
* mv /etc/X11/xorg.conf /etc/X11/xorg.conf-xxx&lt;br /&gt;
* nvidia-xconfig&lt;br /&gt;
* (SL6) reboot&lt;br /&gt;
* (SL5) /dev/MAKEDEV nvidia&lt;br /&gt;
* (SL5) restart the X11 server (Ctrl-Alt-Backspace or &amp;quot;killall Xorg gdm-binary&amp;quot;)&lt;br /&gt;
* observe that X11 server restarts using the NVIDIA driver (big NVIDIA logo on startup)&lt;br /&gt;
* if needed, login as root and run &amp;quot;nvidia-settings&amp;quot; to setup dual-screen configuration, etc&lt;br /&gt;
&lt;br /&gt;
=== Install legacy NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
For old NVIDIA cards:&lt;br /&gt;
* GeForce FX 5500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.31/NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
sh ./NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GeForce 6200 - NVIDIA Corporation NV44A [GeForce 6200]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install nvidia-x11-drv-304xx-304.121 --enablerepo=elrepo&lt;br /&gt;
nvidia-xconfig&lt;br /&gt;
rmmod nvidia&lt;br /&gt;
killall gdm-binary&lt;br /&gt;
login as root&lt;br /&gt;
nvidia-settings to setup multiple displays&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* check that /etc/X11/xorg.conf section &amp;quot;Device&amp;quot; entry &amp;quot;Driver&amp;quot; says &amp;quot;fglrx&amp;quot;&lt;br /&gt;
* run &amp;quot;aticonfig --initial&amp;quot; to create xorg.conf if existing one is not good&lt;br /&gt;
* run &amp;quot;amdcccle&amp;quot; as root to configure dual-screens, etc&lt;br /&gt;
  Note: &#039;amdcccle&#039; is a GUI, so you must run this command from within a running X session&lt;br /&gt;
* killall Xorg&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers (CentOS7) ===&lt;br /&gt;
&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* yum install acpid&lt;br /&gt;
* rpm -vh --install kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* amdconfig -f --initial&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* reboot&lt;br /&gt;
* login as root&lt;br /&gt;
* amdcccle&lt;br /&gt;
&lt;br /&gt;
NOTE: if both drivers - radeon and fglrx are loaded, boot will hang. the radeon driver is supposed to be blacklisted through grub rdblacklist=radeon entry which is installed by running grub2-mkconfig.&lt;br /&gt;
&lt;br /&gt;
=== Install Intel drivers for HD4600/Z87 ===&lt;br /&gt;
&lt;br /&gt;
SL6.5 has the required drivers for the socket 1150 machines with Intel HD4600 graphics and Z87 chipset.&lt;br /&gt;
&lt;br /&gt;
ASUS Z87 WS motherboard has these video connections with corresponding Intel video port assignements, as reported by &amp;quot;xrandr&amp;quot;:&lt;br /&gt;
* DisplayPort - DP1/HDMI1&lt;br /&gt;
* MiniDisplayPort - DP2/HDMI2&lt;br /&gt;
* HDMI - HDMI3&lt;br /&gt;
&lt;br /&gt;
Due to hardware limitations, 3 HDMI monitors using 2 passive DP-HDMI adapters (and 1 straight HDMI) cannot be used.&lt;br /&gt;
&lt;br /&gt;
To use 3 monitors do this:&lt;br /&gt;
* 1st monitor: DisplayPort - DP-to-HDMI-passive-adapter - HDMI monitor (not tried: DP-to-DP-cable - DisplayPort monitor).&lt;br /&gt;
* 2nd monitor: MiniDisplayPort - MiniDP-to-DP-cable - DisplayPort monitor&lt;br /&gt;
* 3rd monitor: HDMI - HDMI-cable - HDMI monitor&lt;br /&gt;
&lt;br /&gt;
With the monitors I have (Dell 1920x1200 VGA-HDMI-DP), the software thinks that there are 4 monitors: somehow both DP2 and HDMI2 see 1 minitor each, but the hardware cannot drive 4 monitors, so everything goes blank. To fix, disable HDMI2 (xrandr -display :0 --output HDMI2 --off) and enable DP2 (xrandr -display :0 --output DP2 --auto).&lt;br /&gt;
&lt;br /&gt;
How to make this configuration permanent and how to assign monitor locations (left-right, etc), you figure it out.&lt;br /&gt;
&lt;br /&gt;
=== Manual selection of monitor, video mode and resolution ===&lt;br /&gt;
&lt;br /&gt;
Automatic selection of monitor and video mode usually works. When it does not, configure it manualls:&lt;br /&gt;
&lt;br /&gt;
* physically go to the computer&lt;br /&gt;
* login as root&lt;br /&gt;
* run &amp;quot;nvidia-settings&amp;quot; on machines using the NVIDIA driver&lt;br /&gt;
* run &amp;quot;aticonfig&amp;quot; on machines with the ATI/AMD driver (use &amp;quot;aticonfig --initial&amp;quot; for initial setup, and good luck with anything more complicated)&lt;br /&gt;
* run &amp;quot;system-config-display&amp;quot;.&lt;br /&gt;
** In the &amp;quot;hardware&amp;quot; tab, select monitor type: &amp;quot;generic LCD 1280x1024&amp;quot; or &amp;quot;generic LCD 1600x1200&amp;quot;.&lt;br /&gt;
** In the &amp;quot;settings&amp;quot; tab, select &amp;quot;1280x1024&amp;quot; or &amp;quot;1600x1200&amp;quot; and &amp;quot;Thousands of colors&amp;quot;.&lt;br /&gt;
** Press &amp;quot;ok&amp;quot;, the display settings application should close.&lt;br /&gt;
* Logout, the new login window should use the new settings.&lt;br /&gt;
&lt;br /&gt;
=== Disable screen saver ===&lt;br /&gt;
&lt;br /&gt;
If machine is booted without any monitor connected, current video cards to not enable any video outputs. If a monitor is connected later, there is no video image and there is no easy way to get a video image.&lt;br /&gt;
&lt;br /&gt;
This can be solved by configuring X11 to always enable some video output. Because the monitor type is not known when X11 starts, one has to select some standard video mode (i.e. VESA 1280x1024) on some video output (VGA, DVI or HDMI).&lt;br /&gt;
&lt;br /&gt;
Only NVIDIA cards with the NVIDIA driver (from EPEL) is supported by these instructions.&lt;br /&gt;
&lt;br /&gt;
* create default xorg.conf: nvidia-xconfig&lt;br /&gt;
* edit /etc/X11/xorg.conf&lt;br /&gt;
* add monitor section for the fake monitor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    HorizSync       31.0 - 83.0&lt;br /&gt;
    VertRefresh     59.0 - 61.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    ModeLine &amp;quot;1280x1024&amp;quot;   108.00   1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add output selection in the &amp;quot;Device&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 210&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT&amp;quot;&lt;br /&gt;
    Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-1&amp;quot;&lt;br /&gt;
    Option &amp;quot;UseEDID&amp;quot; &amp;quot;no&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add fake video mode to the &amp;quot;Screen&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Modes       &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable screen saver and DPMS power off in the &amp;quot;ServerLayout&amp;quot; or &amp;quot;ServerFlags&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Layout0&amp;quot;&lt;br /&gt;
    Screen      0  &amp;quot;Screen0&amp;quot; 0 0&lt;br /&gt;
    InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;&lt;br /&gt;
    InputDevice    &amp;quot;Mouse0&amp;quot; &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot; &lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
EndSection &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
* logout and reboot the computer to have all the changes to take effect&lt;br /&gt;
&lt;br /&gt;
== Configure HTTPS server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache httpd.&lt;br /&gt;
&lt;br /&gt;
First, configure apache httpd:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y mod_ssl certwatch crypto-utils&lt;br /&gt;
cd /etc/httpd/conf.d/&lt;br /&gt;
mv ssl.conf ssl.conf-not-used ### remove the stock ssl.conf which refers to the localhost certificate that will expire in 1 year&lt;br /&gt;
touch ssl.conf ### create a blank file to prevent automatic updates from installing a stock ssl.conf file&lt;br /&gt;
# this is done later: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file ssl-daq12.conf # use actual hostname instead of daq12&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443 https&lt;br /&gt;
#SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
ServerName daq12.triumf.ca&lt;br /&gt;
DocumentRoot /var/www/html&lt;br /&gt;
ErrorLog /var/log/httpd/daq12.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
# note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
# new SSL settings: K.O. Jan 2020, SSLlabs rating &amp;quot;A+&amp;quot;&lt;br /&gt;
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!RSA&lt;br /&gt;
SSLHonorCipherOrder on&lt;br /&gt;
# pervious SSL settings:&lt;br /&gt;
#SSLProtocol all -SSLv2 -SSLv3&lt;br /&gt;
#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
#ProxyPass /elog/ http://localhost:8082/ retry=1&lt;br /&gt;
#ProxyPass /      http://localhost:8080/ retry=1&lt;br /&gt;
Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
Require valid-user&lt;br /&gt;
# create password file: touch /etc/httpd/htpasswd&lt;br /&gt;
# to add new user or change password: htpasswd /etc/httpd/htpasswd username&lt;br /&gt;
AuthUserFile /etc/httpd/htpasswd&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop httpd from listening on port 80: edit /etc/httpd/conf/httpd.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable and start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to access https://daq12.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, then try again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that httpd is listening on port 80, follow the httpd instructions above (remove &amp;quot;listen 80&amp;quot; from httpd.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot and open tcp port 80 in the firewall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y certbot python2-certbot-apache # (from EPEL)&lt;br /&gt;
firewall-cmd --add-port=80/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* certbot certonly --standalone --installer apache # then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq12.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;please choose...&amp;quot; - say &amp;quot;easy&amp;quot; (http access is disabled (a) by firewall, (b) by local configuration&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
* certbot install --apache --cert-name daq12.triumf.ca # then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside ssl-daq12.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in /etc/letsencrypt/live/daq12.triumf.ca/&lt;br /&gt;
* remove self-signed localhost certificate, it will expire in 1 year and cause warnings and complaints: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
* enable automatic renewal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable certbot-renew.timer&lt;br /&gt;
systemctl start certbot-renew.timer&lt;br /&gt;
systemctl list-timers --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to check corrent renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work starting with certbot-0.12.0-4.el7.noarch.&lt;br /&gt;
Certificate expiration should be automatically detected by &amp;quot;certwatch&amp;quot; and email&lt;br /&gt;
will be sent to local root user, to be forwarded to an actual person by ~root/.forward.&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/httpd/htpasswd&lt;br /&gt;
htpasswd /etc/httpd/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Final test:&lt;br /&gt;
* access https://daq12.triumf.ca - https status should be &amp;quot;green&amp;quot;&lt;br /&gt;
* login with password should work&lt;br /&gt;
* the apache httpd test page should load&lt;br /&gt;
* check site security using the SSLlabs https tester. (I get grade &amp;quot;A-&amp;quot;): https://www.ssllabs.com/ssltest/&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
* setsebool -P httpd_can_network_connect 1&lt;br /&gt;
* systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== Configure large RAID6 arrays ==&lt;br /&gt;
&lt;br /&gt;
* connect the disks&lt;br /&gt;
* check the disks health&lt;br /&gt;
** run smart-status.perl&lt;br /&gt;
* partition the disks&lt;br /&gt;
** yum install gdisk&lt;br /&gt;
** gdisk /dev/sdX&lt;br /&gt;
** delete all partitions: o&lt;br /&gt;
** create new partition: n, enter, enter, enter, fd00 (default sizes, partition type fd00)&lt;br /&gt;
** write and exit: w&lt;br /&gt;
* check presence of all partitions:&lt;br /&gt;
** /bin/ls -l /dev/sd*1&lt;br /&gt;
* prepare to use an external bitmap file&lt;br /&gt;
** touch /md6bitmap&lt;br /&gt;
** edit /etc/fstab, change entry for root filesystem from: &amp;quot;defaults 1 1&amp;quot; to &amp;quot;defaults 0 0&amp;quot;&lt;br /&gt;
** edit /boot/grub/grub.conf, change entry &amp;quot;kernel ... ro ...&amp;quot; to &amp;quot;kernel ... rw ...&amp;quot;&lt;br /&gt;
* create raid array:&lt;br /&gt;
** mdadm --create /dev/md6 --level=6 --bitmap=/md6bitmap --raid-devices=10 /dev/sd[b-k]1&lt;br /&gt;
** mdadm -Ds &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
** cleanup /etc/mdadm.conf&lt;br /&gt;
** echo &amp;quot;echo 16384 &amp;gt; /sys/block/md6/md/stripe_cache_size&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** echo &amp;quot;echo 1     &amp;gt; /sys/block/md6/md/sync_speed_min&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** source /etc/rc.local&lt;br /&gt;
* observe raid array rebuild:&lt;br /&gt;
** watch -d -n1 &amp;quot;cat /proc/mdstat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure ZFS ==&lt;br /&gt;
&lt;br /&gt;
=== Install ZFS ===&lt;br /&gt;
&lt;br /&gt;
(from here: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for &amp;quot;kABI-tracking kmod&amp;quot; - dkms modules seem to always mess up the system when upgrading to next release of zfs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rpm -vh --install http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm&lt;br /&gt;
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
#sed &#039;s/^SELINUX=.*/SELINUX=disabled/&#039; -i /etc/selinux/config&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
#shutdown -r now # required to load the zfs kernel modules and to disable selinux&lt;br /&gt;
modprobe zfs # should work&lt;br /&gt;
zpool status # should report no pools available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Note: zfs and selinux and not compatible: with selinux enabled, files on zfs cannot be deleted (files are gone, but &amp;quot;df&amp;quot; does not go down, zfs-0.6.5.7-1.el7.centos.x86_64), see #https://github.com/zfsonlinux/zfs/issues/4845&lt;br /&gt;
&lt;br /&gt;
* http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs-quickstart.html)&lt;br /&gt;
* http://www.freebsd.org/cgi/man.cgi?query=zpool&amp;amp;sektion=8&lt;br /&gt;
&lt;br /&gt;
If ZFS kernel module does not load automatically at boot time, add this to load it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /etc/sysconfig/modules/&lt;br /&gt;
cat &amp;gt; /etc/sysconfig/modules/zfs.modules &amp;lt;&amp;lt;EOF&lt;br /&gt;
if [ ! -e /sys/module/zfs ] ; then&lt;br /&gt;
  modprobe zfs;&lt;br /&gt;
fi&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x /etc/sysconfig/modules/zfs.modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS 0.7 to 0.8 ===&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates list zfs # list all available versions in &amp;quot;zfs-testing-kmod&amp;quot;&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates install zfs # maybe specify specific version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /etc/yum.repos.d/zfs.repo* ### delete old repo files&lt;br /&gt;
yum upgrade http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if you see yum offering to install &amp;quot;dkms&amp;quot; and &amp;quot;zfs-dkms&amp;quot;, the yum config is wrong (we use the kmod-zfs package), check that &amp;quot;zfs&amp;quot; repo is disabled, &amp;quot;zfs-kmod&amp;quot; repo is enabled - see the yum-config-manager commands above.&lt;br /&gt;
&lt;br /&gt;
=== Lock kernel and zfs packages ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock kernel&lt;br /&gt;
yum versionlock zfs&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Follow generic ZFS instructions ===&lt;br /&gt;
&lt;br /&gt;
Here: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
== performance notes ==&lt;br /&gt;
&lt;br /&gt;
Go here: [[disk_benchmarks]]&lt;br /&gt;
&lt;br /&gt;
== Configure UEFI boot ==&lt;br /&gt;
&lt;br /&gt;
Some mobo can boot from NVME (PCIe) SSDs only via UEFI boot. Do this:&lt;br /&gt;
&lt;br /&gt;
* partition the NVME SSD using gdisk (must be GPT partition table, must have MSDOS EFI partition size 512MiB)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# gdisk -l /dev/nvme0n1&lt;br /&gt;
GPT fdisk (gdisk) version 0.8.6 ...&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB&lt;br /&gt;
Logical sector size: 512 bytes&lt;br /&gt;
Disk identifier (GUID): 1A82CC87-2757-44ED-980F-C78E3681D9D3&lt;br /&gt;
Partition table holds up to 128 entries&lt;br /&gt;
First usable sector is 34, last usable sector is 500118158&lt;br /&gt;
Partitions will be aligned on 2048-sector boundaries&lt;br /&gt;
Total free space is 2014 sectors (1007.0 KiB)&lt;br /&gt;
&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System&lt;br /&gt;
   2         1050624       500118158   238.0 GiB   8300  Linux filesystem&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create filesystems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.xfs /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare EFI partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/efi&lt;br /&gt;
mount /dev/nvme0n1p1 /mnt/efi&lt;br /&gt;
mkdir -p /mnt/efi/efi/boot&lt;br /&gt;
cp /boot/vmlinuz... vmlinuz # copy the desired linux kernel&lt;br /&gt;
cp /boot/initramfs... initramfs.img # copy the matching initramfs file&lt;br /&gt;
#from /home/olchansk/sysadm/syslinux/syslinux-6.03 copy&lt;br /&gt;
cp .../efi64/efi/syslinux.efi .&lt;br /&gt;
cp .../efi64/com32/elflink/ldlinux/ldlinux.e64 .&lt;br /&gt;
cp syslinux.efi bootx64.efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux config file: syslinux.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro root=/dev/nvme0n1p2 nomodeset initrd=initramfs.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare system partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/tmp&lt;br /&gt;
mount /dev/nvme0n1p2 /mnt/tmp&lt;br /&gt;
rsync -avx / /mnt/tmp&lt;br /&gt;
cd /mnt/tmp&lt;br /&gt;
#edit etc/fstab&lt;br /&gt;
#edit etc/syslinux/selinux # set selinux to permissive mode because rsync did not copy the selinux labels&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* unmount and reboot&lt;br /&gt;
* restore selinux labels after first boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#login as root&lt;br /&gt;
cd /&lt;br /&gt;
restorecon -R / # can also add &amp;quot;-v&amp;quot; to see progress, but runs much slower&lt;br /&gt;
#edit /etc/sysconfig/selinux # enable selinux&lt;br /&gt;
#shutdown -r now # reboot with selinux enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure UEFI secure  boot =&lt;br /&gt;
&lt;br /&gt;
The above instructions do not quite work if &amp;quot;secure boot&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
These modifications are needed:&lt;br /&gt;
&lt;br /&gt;
* ls -l /boot/efi/EFI/bootko/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
total 140116&lt;br /&gt;
-rwxr-xr-x 1 root root      108 Feb 24 15:47 BOOTX64.CSV&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 bootx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root   217495 Feb 24 16:16 config-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root      105 Feb 24 15:47 grub.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 grubx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initramfs.img&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initrd.img-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root   139968 Feb 24 16:16 ldlinux.e64&lt;br /&gt;
-rwxr-xr-x 1 root root  1269496 Feb 24 15:47 mmx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 shimx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root      171 Feb 24 16:16 syslinux.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root      102 Feb 24 16:16 syslinux.cfg~&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 syslinux.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  4068355 Feb 24 16:16 System.map-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz-4.15.0-74-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** shmix64.efi is a copy from /boot/efi/EFI/ubuntu&lt;br /&gt;
** bootx64.efi is a copy of shimx64.efi (maybe not needed?)&lt;br /&gt;
** grubx64.efi is a copy of syslinux.efi&lt;br /&gt;
* efibootmgr -c -d /dev/nvme0n1 -p 2 -w -L bootko -l &#039;\EFI\bootko\shimx64.efi&#039;&lt;br /&gt;
* efibootmgr -v&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# efibootmgr -v&lt;br /&gt;
BootCurrent: 0000&lt;br /&gt;
Timeout: 1 seconds&lt;br /&gt;
BootOrder: 0000,0001,0002&lt;br /&gt;
Boot0000* bootko        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\BOOTKO\SHIMX64.EFI)&lt;br /&gt;
Boot0001* Hard Drive    BBS(HD,,0x0)..GO..NO........y.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7....................A.......................................&amp;lt;..Gd-.;.A..MQ..L.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7........BO&lt;br /&gt;
Boot0002* ubuntu        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* NOTE: if, after running &amp;quot;efibootmgr -c&amp;quot;, the UUID is zero, then it probably did not take and the entry will vanish after reboot. In my case the mistake was to use &amp;quot;-p 1&amp;quot; instead of &amp;quot;-p 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Boot sequence is this:&lt;br /&gt;
* shmix64.efi - Microsoft-signed boot loader is accepted by secure boot, loads and runs&lt;br /&gt;
* shimx64.efi loads and runs grubx64.efi, this file name is hardwired into the signed shim, cannot be changed&lt;br /&gt;
* grubx64.efi is syslinux.efi (could be anything)&lt;br /&gt;
* syslinux.efi runs, loads syslinux.cfg, loads the linux kernel, loads the initrd, runs the linux kernel with specified flags (ro root=...).&lt;br /&gt;
&lt;br /&gt;
= UEFI syslinux kernel update =&lt;br /&gt;
&lt;br /&gt;
To update the linux kernel booted by UEFI syslinux, use this script:&lt;br /&gt;
* ~root/git/scripts/etc/update_efi.perl&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3026</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3026"/>
		<updated>2020-09-12T14:31:44Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Configure NIS secondary server (CentOS7) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes ==&lt;br /&gt;
&lt;br /&gt;
* these instructions are periodically updated to include items needed for older/newer versions of Linux. They are marked like this: (SL4.2+) means Scientific Linux 4.2 and newer; (SL4 is equivalent to FC3). (FC5 only) means Fedora Core 5; etc.&lt;br /&gt;
* obsolete items are marked by the &amp;quot;#&amp;quot; sign at the beginning of the line and sometimes have a comment about the reason for removal.&lt;br /&gt;
* typically, we do not &amp;quot;upgrade&amp;quot; machines using the Red Hat &amp;quot;upgrade&amp;quot; function. Instead, we save critical files from the old installation and do a &amp;quot;fresh install&amp;quot; from scratch&lt;br /&gt;
* starting with RHEL7, the recommended OS is CentOS7 (instead of SL7).&lt;br /&gt;
&lt;br /&gt;
== Disk configurations ==&lt;br /&gt;
&lt;br /&gt;
The year is 2019 and SSDs are used exclusively, except for bulk data storage, where one used 6-8-10-12 TB HDDs&lt;br /&gt;
&lt;br /&gt;
For reliability, home directories and data disks must use redundant storage - mdadm raid1 or ZFS raid1/raid6.&lt;br /&gt;
&lt;br /&gt;
For non-critical machines, a single SSD seems to be reliable enough to use as a boot and OS disk. But since any&lt;br /&gt;
storage device can fail at any time without warning, home directories and data disks should use redundant storage.&lt;br /&gt;
&lt;br /&gt;
Note: for data disks bigger than 4-6TB, mdadm raid1/raid6 is no longer recommended because raid rebuild,&lt;br /&gt;
verification and repair time has become unreasonably long. Instead, use ZFS raid1/raid6 which implements online verification,&lt;br /&gt;
repair and disk replacement without requiring machine shutdown or OS down time.&lt;br /&gt;
&lt;br /&gt;
* single SSD - 120GB min - single partition for &amp;quot;/&amp;quot;, no swap partition (create a swap file if swap is needed) - for non-critical machine with no local data storage (OS only)&lt;br /&gt;
* dual SSD - 2x240GB min - all partitions mirrored (RAID1), 30GB &amp;quot;/&amp;quot;, rest for /home1 - for daq station with local user home directories and no bulk data storage&lt;br /&gt;
* single SSD + 2x6-8-10-12TB HDD - SSD partition: all &amp;quot;/&amp;quot;, HDD partition as ZFS raid1 (mirrored) - for daq station with small local bulk data storage&lt;br /&gt;
* single SSD + 6-8x6-8-10-12TB HDD - for small storage server machines - for daq station with local home directories and large bulk data storage.&lt;br /&gt;
&lt;br /&gt;
For VME processors:&lt;br /&gt;
&lt;br /&gt;
* network boot - [[VME-CPU#Network_boot]] - only option for V7648/V7750, do not use for V7805 (no netboot from GigE), optional for V7865/XVB-602&lt;br /&gt;
* USB boot - 8GB USB for V7805, 16GB USB for V7865/XVB-602&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
* save /etc, /var, /root, /opt, (if needed: /usr/local, /tftpboot) by rsync to some data disk (/ladd/data0/root)&lt;br /&gt;
* check that &amp;quot;/&amp;quot; partition (it will be overwritten) is different from /home1 and /data partitions&lt;br /&gt;
* note the MAC addresses of all network interfaces, add them to ladd00 dhcpd.conf to enable PXE boot into the SL &amp;quot;network installer&amp;quot;&lt;br /&gt;
* shutdown&lt;br /&gt;
&lt;br /&gt;
== Running installer (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 can be installed from vanilla CentOS7 installation media or from&lt;br /&gt;
a custom USB key build per there instructions:&lt;br /&gt;
https://daqshare.triumf.ca/~olchansk/linux/CentOS7/&lt;br /&gt;
&lt;br /&gt;
The custom installer makes it easy to use a custom kickstart file (ks.cfg).&lt;br /&gt;
&lt;br /&gt;
Instructions for using the usb-installer:&lt;br /&gt;
&lt;br /&gt;
* disconnect machine from network&lt;br /&gt;
* plug the usb-installer into a usb3 port (blue colour)&lt;br /&gt;
* reboot machine, select booting from usb (press F8 on ASUS motherboards)&lt;br /&gt;
* usb-installer boot menu offers to install CentOS7, go there&lt;br /&gt;
* CentOS7 should boot (many messages scroll on screen)&lt;br /&gt;
* into graphical mode&lt;br /&gt;
* into installer main menu&lt;br /&gt;
* all installer options should &amp;quot;happy&amp;quot; except for the &amp;quot;installation destination&amp;quot;&lt;br /&gt;
* go to the &amp;quot;installation destination&amp;quot; menu&lt;br /&gt;
** unselect all disks except for the SSD where the OS will be installed&lt;br /&gt;
** (MOST IMPORTANT: unselect the USB installer disk!)&lt;br /&gt;
** select &amp;quot;I will configure...&amp;quot;&lt;br /&gt;
** say &amp;quot;done&amp;quot;&lt;br /&gt;
** the &amp;quot;manual partitionning&amp;quot; menu will open&lt;br /&gt;
*** use the &amp;quot;-&amp;quot; button to delete all existing partitions&lt;br /&gt;
*** select &amp;quot;standard partition&amp;quot;&lt;br /&gt;
*** click on the &amp;quot;+&amp;quot; button&lt;br /&gt;
*** in the &amp;quot;Add new partition&amp;quot; dialog, set mount point &amp;quot;/&amp;quot;, capacity blank, click &amp;quot;add mount point&amp;quot;&lt;br /&gt;
*** check capacity (should be full size of SSD), check filesystem type (should be XFS)&lt;br /&gt;
*** say &amp;quot;done&amp;quot;, there will be a warning about absent swap partition, say &amp;quot;done&amp;quot; again.&lt;br /&gt;
*** in the big useless dialog, say &amp;quot;accept changes&amp;quot;&lt;br /&gt;
*** should be back to the &amp;quot;installation summary&amp;quot; screen, &amp;quot;installation destination&amp;quot; should be happy now&lt;br /&gt;
* after everything is happy, say &amp;quot;begin installation&amp;quot;&lt;br /&gt;
* as the installation proceeds, set the password for the root user&lt;br /&gt;
* after installation is complete, reboot the machine&lt;br /&gt;
* unplug the usb-installer, CentOS7 should boot from SSD into the login screen&lt;br /&gt;
* click on &amp;quot;not listed?&amp;quot;, login as root&lt;br /&gt;
* setup network connection:&lt;br /&gt;
** open a terminal&lt;br /&gt;
** start &amp;quot;nm-connection-editor&amp;quot;&lt;br /&gt;
** click on &amp;quot;+&amp;quot; to create a new connection profile&lt;br /&gt;
** select &amp;quot;wired ethernet&amp;quot;&lt;br /&gt;
** select &amp;quot;add profile...&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, set &amp;quot;name&amp;quot; to &amp;quot;static&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, check that &amp;quot;Connect automatically&amp;quot; and &amp;quot;Make available...&amp;quot; is enabled&lt;br /&gt;
** in &amp;quot;IPv4&amp;quot;, set &amp;quot;Addresses&amp;quot; to &amp;quot;manual&amp;quot; instead of &amp;quot;dhcp&amp;quot;&lt;br /&gt;
** enter IP address, netmask 255.255.224.0, gateway 142.90.100.18, dns 142.90.100.19, search triumf.ca&lt;br /&gt;
** say &amp;quot;Add&amp;quot;, then close/quit the network settings&lt;br /&gt;
* connect network cable&lt;br /&gt;
* network should be up, ping ladd00 should work&lt;br /&gt;
* run: yum update -y&lt;br /&gt;
* check new kernel is installed: ls -l /boot&lt;br /&gt;
* logout and restart (good luck finding these buttons in the gui!)&lt;br /&gt;
* confirm correct linux kernel is selected during boot (-229.20, not the original installer kernel)&lt;br /&gt;
* login as root, confirm network is up, proceed with the rest of these instructions&lt;br /&gt;
&lt;br /&gt;
== Configure SSH ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* Login from the console&lt;br /&gt;
* restore the SSH keys from backup (/etc/ssh/*key*)&lt;br /&gt;
* service sshd restart&lt;br /&gt;
* ssh into the new machine as root&lt;br /&gt;
* ssh root@localhost, ctrl-C&lt;br /&gt;
* ### this is done later from Konstantin&#039;s git repository - scp root@ladd00:/root/authorized_keys ~root/.ssh/&lt;br /&gt;
* (not needed for SL5.5 kickstart) check that /etc/ssh/ssh_config contains &amp;quot;ForwardX11 yes&amp;quot; and &amp;quot;ForwardX11Trusted yes&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;  ForwardX11 yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
echo &amp;quot;  ForwardX11Trusted yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post installation CentOS7 ==&lt;br /&gt;
&lt;br /&gt;
Set hostname: (use full name, i.e. daq11.triumf.ca)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;olchansk@triumf.ca amaudruz@triumf.ca lindner@triumf.ca bsmith@triumf.ca&amp;quot; &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
chmod a+r /var/log/messages&lt;br /&gt;
chmod a+r /var/log/yum.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activate rc.local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+x /etc/rc.local&lt;br /&gt;
chmod a+x /etc/rc.d/rc.local  # TL edit&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable &amp;quot;persistent network names&amp;quot; (DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/touch /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
/bin/rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
#shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypbind authconfig&lt;br /&gt;
echo &amp;quot;NISTIMEOUT=5&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
echo &amp;quot;NETWORKWAIT=yes&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
authconfig --enablenis --enablepreferdns --nisdomain LADD-NIS --nisserver ladd00.triumf.ca --update&lt;br /&gt;
ypwhich&lt;br /&gt;
ypcat -k passwd&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On the master NIS node (ladd00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
* Use &amp;quot;system-config-users&amp;quot; to add local user accounts&lt;br /&gt;
* enable selinux ssh key login to nfs mounted home directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P use_nfs_home_dirs 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* all the same as for CentOS7&lt;br /&gt;
* ensure correct boot order for ypbind (in CentOS 8.1 ypbind is started before network is ready, service file uses &amp;quot;Wants&amp;quot; instead of &amp;quot;After&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ypbind.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ypbind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ypbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS secondary server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Enable local NIS server, make local machine use it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypserv&lt;br /&gt;
/usr/lib64/yp/ypinit -s ladd00 ### (/usr/lib/yp/ypinit on 32-bit machines)&lt;br /&gt;
### ypinit will give lots of errors about &amp;quot;rpc.ypxfrd failed: RPC: Can&#039;t decode result&amp;quot;; can be ignored&lt;br /&gt;
systemctl enable rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
systemctl start rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
emacs -nw /etc/yp.conf # change &amp;quot;domain XXX server YYY.triumf.ca&amp;quot; to read &amp;quot;domain XXX server localhost&amp;quot;&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich # should say &amp;quot;localhost&amp;quot;&lt;br /&gt;
ypcat -k auto.master # should work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punch hole in the firewall: (or &amp;quot;make&amp;quot; on NIS master will complain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo YPSERV_ARGS=\&amp;quot;-p 800\&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --add-service rpc-bind --permanent&lt;br /&gt;
firewall-cmd --add-port=800/tcp --add-port=800/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on the NIS master:&lt;br /&gt;
** add the new machine to /var/yp/ypservers, run &amp;quot;make -C /var/yp&amp;quot; and also &amp;quot;cd /var/yp; yppush -h newmachine ypservers&amp;quot;&lt;br /&gt;
*** TL (2020-09): we not doing this anymore?  I guess it doesn&#039;t work anyway...&lt;br /&gt;
** if using /var/yp/securenets, copy it from NIS master to new NIS secondary server&lt;br /&gt;
&lt;br /&gt;
Enable hourly NIS update cron job (DO THIS AFTER git pull scripts, see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd etc&lt;br /&gt;
cd ~/git/scripts/etc; ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure AUTOFS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl start autofs&lt;br /&gt;
ls -l /daq/daqshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Label Selinux labels ==&lt;br /&gt;
&lt;br /&gt;
When upgrading non-selinux machines (el6) to el7 (selinux enforcing) the existing&lt;br /&gt;
user home directories will not have the correct selinux labels and many things&lt;br /&gt;
will not work, including ssh logins (sshd cannot access ~user/.ssh files).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
semanage fcontext -a -e /home /home1 ### selinux has special rules for /home, assign them to /home1&lt;br /&gt;
restorecon -R -v /home1 ### apply the new rules to files in /home1&lt;br /&gt;
ls -Zd /home1/alpha/.ssh&lt;br /&gt;
# should say: drwx------. alpha users system_u:object_r:ssh_home_t:s0  /home1/alpha/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure time (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Time server ntpd was replaced by chronyd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install chrony&lt;br /&gt;
echo server time1 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time2 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time3 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
systemctl enable chronyd&lt;br /&gt;
systemctl restart chronyd&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if desired, edit /etc/chrony.conf, remove non-triumf time servers&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Disable yum-cron:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --erase yum-cron&lt;br /&gt;
/bin/rm -v /var/lock/subsys/yum-cron&lt;br /&gt;
/bin/rm -v /etc/cron.daily/0yum-daily.cron&lt;br /&gt;
/bin/rm -v /etc/cron.hourly/0yum-hourly.cron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable yum-autoupdate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y epel-release&lt;br /&gt;
yum install -y yum-changelog yum-protectbase yum-tsflags yum-versionlock&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm&lt;br /&gt;
#rpm -vh --install https://daqshare.triumf.ca/~olchansk/linux/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm https://daqshare.triumf.ca/~olchansk/linux/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
systemctl enable yum-autoupdate&lt;br /&gt;
systemctl start yum-autoupdate&lt;br /&gt;
systemctl status yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase yum-autoupdate&lt;br /&gt;
/bin/rm -f /etc/sysconfig/yum-autoupdate.rpmsave&lt;br /&gt;
/bin/rm -f /var/lock/subsys/yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dnf-automatic&lt;br /&gt;
systemctl enable --now dnf-automatic.timer&lt;br /&gt;
systemctl list-timers *dnf-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/dnf/automatic.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apply_updates = yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure system services (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* systemctl list-unit-files | grep enabled | sort ### (to see enabled services)&lt;br /&gt;
* disable unwanted services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable bluetooth&lt;br /&gt;
systemctl disable dm-event&lt;br /&gt;
systemctl disable dmraid-activation&lt;br /&gt;
systemctl disable iscsid&lt;br /&gt;
systemctl disable iscsi&lt;br /&gt;
systemctl disable iscsiuio&lt;br /&gt;
systemctl disable libvirtd&lt;br /&gt;
systemctl disable lvm2-lmetad&lt;br /&gt;
systemctl disable lvm2-monitor&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl disable multipathd&lt;br /&gt;
systemctl disable netcf-transaction&lt;br /&gt;
systemctl disable lvm2-lvmetad.socket&lt;br /&gt;
systemctl disable lvm2-lvmpolld.socket&lt;br /&gt;
systemctl disable iscsid.socket&lt;br /&gt;
systemctl disable iscsiuio.socket&lt;br /&gt;
#systemctl disable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erase unwanted packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* PackageKit # bugs users about security updates, hogs yum lock&lt;br /&gt;
* perl-homedir # creates unwanted $HOME/perl5&lt;br /&gt;
* ModemManager # thinks that all USB-attached devices are modems&lt;br /&gt;
* pcp # sends error email to itself, does not work&lt;br /&gt;
* abrt # sends email to root about useless crashes, i.e. crash of X when machine is rebooted&lt;br /&gt;
* rear # some kind of backup and recovery tool, not clear what it does, but it sends email complaining how it is broken&lt;br /&gt;
* bash-completion # &amp;quot;echo $HOME/&amp;lt;TAB&amp;gt;&amp;quot; becomes &amp;quot;echo \$HOME&amp;quot; (notice &amp;quot;\&amp;quot; added before &amp;quot;$&amp;quot;) preventing tab-completion from doing anything useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase PackageKit perl-homedir ModemManager pcp abrt abrt-libs abrt-gui-libs rear bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable unwanted package &amp;quot;tracker&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tracker&amp;quot; package is part of the GNOME desktop, it scans the content of all files&lt;br /&gt;
into a database for quick searching.&lt;br /&gt;
&lt;br /&gt;
When it malfunctions, bad things happen, i.e. read through&lt;br /&gt;
https://bugzilla.redhat.com/show_bug.cgi?id=747689&lt;br /&gt;
&lt;br /&gt;
Specific problem I see is that it floods the system log with error messages. Also &lt;br /&gt;
consumes network and filesystem bandwidth for NFS mounted home directories.&lt;br /&gt;
&lt;br /&gt;
This package cannot be removed by &amp;quot;yum erase tracker&amp;quot; dues to dependencies&lt;br /&gt;
from core GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
Instead, do this to deactivate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod -x /usr/libexec/tracker-*&lt;br /&gt;
chmod -x /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/libexec/tracker-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure external package repositories (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
EPEL: (addtional packages)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel modules and drivers) (CentOS8)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install elrepo-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel drivers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;br /&gt;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm&lt;br /&gt;
yum -y install yum-plugin-fastestmirror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed to continue with installation ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
(these packages are sometimes missing, they are needed to follow following instructions instructions)&lt;br /&gt;
&lt;br /&gt;
(SL6.5: libotf is a dependancy of emacs - SL6.5 installer fails to install it)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install ed patch wget git libotf gdisk emacs perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Konstantin&#039;s scripts ==&lt;br /&gt;
&lt;br /&gt;
(+Centos7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go back to the NIS slave server and install the hourly NIS update cron job.&lt;br /&gt;
&lt;br /&gt;
== Enable yum version lock ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install yum-plugin-versionlock&lt;br /&gt;
#yum versionlock packagename # yum versionlock rpcbind&lt;br /&gt;
#yum versionlock list # list locked packages&lt;br /&gt;
#yum versionlock delete packagename # unlock given package&lt;br /&gt;
#yum versionlock clear # delete all locks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure trusted ssh keys ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
interrupt by Ctrl-C&lt;br /&gt;
/bin/cp ~/git/scripts/etc/authorized_keys ~/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure hardware sensors ==&lt;br /&gt;
&lt;br /&gt;
* yum -y install lm_sensors&lt;br /&gt;
* sensors-detect (accept default answer to all questions - press ENTER)&lt;br /&gt;
* systemctl restart lm_sensors&lt;br /&gt;
* sensors (to see available sensors)&lt;br /&gt;
&lt;br /&gt;
If no sensors are detected by standard drivers, follow motherboard-specific instructions at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Configure IPMI sensors ==&lt;br /&gt;
&lt;br /&gt;
Some machines support the IPMI interface for monitoring the hardware: fan speeds, temperatures, voltages.&lt;br /&gt;
&lt;br /&gt;
* find out if IPMI is supported. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dmidecode | grep -i ipmi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
if output is not blank, IPMI is maybe supported.&lt;br /&gt;
* install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
service ipmi start&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
chkconfig ipmi on&lt;br /&gt;
chkconfig ipmievd on&lt;br /&gt;
service ipmi restart&lt;br /&gt;
service ipmievd restart&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (CentOS7) install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
systemctl start ipmi&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
systemctl list-unit-files | grep -i ipmi&lt;br /&gt;
systemctl enable ipmi&lt;br /&gt;
systemctl restart ipmi&lt;br /&gt;
systemctl status ipmi&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
systemctl status ipmievd&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if ipmievd complains about SEL buffer overflow, clear it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipmitool sel list ### show ipmi messages in raw format&lt;br /&gt;
ipmitool sel elist ### show ipmi messages in useful format&lt;br /&gt;
ipmitool sel elist &amp;gt; file ### save ipmi messages into a file&lt;br /&gt;
ipmitool sel clear  ### clear all accumulated ipmi messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* useful ipmi commands:&lt;br /&gt;
** ipmitool sensor -- read hardware sensors&lt;br /&gt;
** ipmitool sel elist -- report all accumulated messages&lt;br /&gt;
&lt;br /&gt;
== Configure ECC memory ==&lt;br /&gt;
&lt;br /&gt;
* check that machine has ECC memory: dmidecode --type memory | grep -i ecc&lt;br /&gt;
&lt;br /&gt;
Configure mcelog (machine check exception)&lt;br /&gt;
&lt;br /&gt;
* yum install mcelog&lt;br /&gt;
* check that mcelog is running: ps -efw | grep mcelog&lt;br /&gt;
* (el6) chkconfig mcelogd on; service mcelogd restart&lt;br /&gt;
* (el7) systemctl status mcelog.service; systemctl enable mcelog.service; systemctl restart mcelog.service&lt;br /&gt;
&lt;br /&gt;
Check for MCE (machine check exception) messages:&lt;br /&gt;
&lt;br /&gt;
* mcelog --client&lt;br /&gt;
* grep -i mce /var/log/messages*&lt;br /&gt;
* grep -i ecc /var/log/messages*&lt;br /&gt;
&lt;br /&gt;
Configure EDAC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install edac-utils&lt;br /&gt;
edac-ctl --mainboard&lt;br /&gt;
edac-ctl --status&lt;br /&gt;
lsmod | grep edac&lt;br /&gt;
modprobe ie31200_edac ### driver for Intel E3-1200 series ECC memory&lt;br /&gt;
&lt;br /&gt;
[root@grsmid00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
... empty&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
drwxr-xr-x. 15 root root    0 Oct 25 16:40 mc0&lt;br /&gt;
...&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_noinfo_count&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow3&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 max_location&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 mc_name&lt;br /&gt;
drwxr-xr-x. 2 root root    0 Oct 25 16:40 power&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank3&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank4&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank5&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank6&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank7&lt;br /&gt;
--w-------. 1 root root 4096 Oct 25 16:40 reset_counters&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 seconds_since_reset&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 size_mb&lt;br /&gt;
lrwxrwxrwx. 1 root root    0 Oct  2 12:02 subsystem -&amp;gt; ../../../../../bus/mc0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_noinfo_count&lt;br /&gt;
-rw-r--r--. 1 root root 4096 Oct 25 16:40 uevent&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure SMARTD (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 smartd config files send deficient email notices about disk failures. Overwrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd.conf /etc/smartmontools/&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd_warning.sh /etc/smartmontools/&lt;br /&gt;
systemctl enable smartd&lt;br /&gt;
systemctl restart smartd&lt;br /&gt;
systemctl status smartd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable User Disk Quotas (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* read http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html&lt;br /&gt;
* emacs -nw /etc/fstab, add &amp;quot;grpquota,usrquota&amp;quot; to filesystem options, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@isdaq00 home1]# grep quota /etc/fstab&lt;br /&gt;
UUID=5a2aefbd-45db-475e-841e-12ec89220fbd /home1 ext4 defaults,grpquota,usrquota 1 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /; umount /home1; mount /home1&lt;br /&gt;
* quotacheck -cug /home1&lt;br /&gt;
* quotacheck -avug&lt;br /&gt;
* quotaon -av&lt;br /&gt;
* quota system is now active&lt;br /&gt;
* increase the soft quota time limit from default 7days to 30 or 60 days: edquota -t&lt;br /&gt;
* set quotas for all users (see below)&lt;br /&gt;
* setup warnquota:&lt;br /&gt;
** create warnquota config file: emacs -nw /etc/warnquota.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# values can be quoted:&lt;br /&gt;
MAIL_CMD        = &amp;quot;/usr/sbin/sendmail -t&amp;quot;&lt;br /&gt;
FROM            = root&lt;br /&gt;
SUBJECT         = User %i@%h exceeded allocated disk quota&lt;br /&gt;
CC_TO           = &amp;quot;root&amp;quot;&lt;br /&gt;
# If you set this variable CC will be used only when user has less than&lt;br /&gt;
# specified grace time left (examples of possible times: 5 seconds, 1 minute,&lt;br /&gt;
# 12 hours, 5 days)&lt;br /&gt;
# CC_BEFORE = 2 days&lt;br /&gt;
SUPPORT         = &amp;quot;root&amp;quot;&lt;br /&gt;
# Text in the beginning of the mail (if not specified, default text is used)&lt;br /&gt;
# This way text can be split to more lines&lt;br /&gt;
# Line breaks are done by &#039;|&#039; character&lt;br /&gt;
# The expressions %i, %h, %d, and %% are substituted for user/group name,&lt;br /&gt;
# host name, domain name, and &#039;%&#039; respectively. For backward compatibility&lt;br /&gt;
# %s behaves as %i but is deprecated.&lt;br /&gt;
MESSAGE         = User &amp;quot;%i&amp;quot; on &amp;quot;%h&amp;quot; has exceeded the allocated disk quota.||Please delete any unnecessary files on following filesystems or|contact the system administrato&lt;br /&gt;
r to increase your quota allocation:|&lt;br /&gt;
SIGNATURE       = --|automated email from warnquota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** note that %i@%h in the SUBJECT line do not seem to work&lt;br /&gt;
** create cron job: emacs -nw /etc/cron.daily/warnquota&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
warnquota&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** chmod a+x /etc/cron.daily/warnquota&lt;br /&gt;
** touch /etc/crontab&lt;br /&gt;
&lt;br /&gt;
Useful commands for managing quotas:&lt;br /&gt;
* repquota -a | sort -n -k3 ### show quota of all users sorted by disk usage&lt;br /&gt;
* edquota -u username ### open &amp;quot;vi&amp;quot; editor to change user quotas&lt;br /&gt;
* repquote -a | grep username ### report quota for given user&lt;br /&gt;
* setquota -u username 0 0 0 0 /home1 ### disable quotas for given user&lt;br /&gt;
* setquota -u username 50000000 100000000 0 0 /home1 ### set quotas for 50GB soft and 100GB hard&lt;br /&gt;
* edquota -t ### change user quota time limits&lt;br /&gt;
* edquote -tg ### change group quota time limits&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* create /etc/exports. example: (fsid numbers should be unique and increase 1,2,3,...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async,fsid=1)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async,fsid=2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* enable things, start them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=nfs&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl start nfs-server&lt;br /&gt;
systemctl status nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -efw | grep rpc.mountd # should be running!&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=mountd&lt;br /&gt;
firewall-cmd --permanent --add-service=rpc-bind&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts.allow, add or uncomment &amp;quot;mountd: 142.90.0.0/255.255.0.0&amp;quot;&lt;br /&gt;
* create /etc/exports. example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* chkconfig nfs on&lt;br /&gt;
* chkconfig nfslock on&lt;br /&gt;
* service nfs restart&lt;br /&gt;
&lt;br /&gt;
Then on ladd00 need to do&lt;br /&gt;
* ssh to root@ladd00&lt;br /&gt;
* edit /etc/auto.daq to add new machine...&lt;br /&gt;
* make -C /var/yp&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 SERVER (SL6) ==&lt;br /&gt;
&lt;br /&gt;
* if used with NIS, same as NFSv3&lt;br /&gt;
* if used as standalone, need to edit idmapd.conf - set the &amp;quot;Domain&amp;quot; name to the same value on NFS server and NFS slave (default automagically determined value does not always work). More TBW.&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups ==&lt;br /&gt;
&lt;br /&gt;
AMANDA backups are already enabled by TRIUMF kickstart installs. For non-kickstart installation, follow instructions at [[http://amanda/~amanda http://amanda/~amanda]], or look at &amp;quot;/triumfcs/trshare/olchansk/linux/amanda/amanda-enable.perl&amp;quot;. As final step, use [[https://helpdesk.triumf.ca https://helpdesk.triumf.ca]] to contact TRIUMF CS to add this new machine to the amanda backup list.&lt;br /&gt;
&lt;br /&gt;
* yum install triumf-amanda&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install amanda-client&lt;br /&gt;
systemctl list-unit-files | grep -i amanda&lt;br /&gt;
#systemctl enable amanda&lt;br /&gt;
systemctl enable amanda.socket&lt;br /&gt;
systemctl enable amanda-udp.socket&lt;br /&gt;
systemctl restart amanda.socket&lt;br /&gt;
systemctl restart amanda-udp.socket&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=amanda-client&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
echo amanda.triumf.ca amanda amdump &amp;gt;&amp;gt; /var/lib/amanda/.amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On amanda server, add new machine to the disklist, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amcheck -c daily titan00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable DCACHE ==&lt;br /&gt;
&lt;br /&gt;
DAQ dcache server is mounted as&lt;br /&gt;
&lt;br /&gt;
/daq/pnfs/triumf.ca/data/&lt;br /&gt;
&lt;br /&gt;
For Centos-7 machines, you need to adjust the firewall rules in order to be able to communicate with the trdata machines; this is only necessary if you are copying data to trdata.  The firewall changes are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.212/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.107.156/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.219/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructions are unnecessary &lt;br /&gt;
* # mkdir -p /pnfs&lt;br /&gt;
* # edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs &amp;amp;&amp;quot;&lt;br /&gt;
* # . /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
For more information on, see [[TrdataDcache]] dcache page.&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 Ganglia instructions (EPEL7 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/multicpu.conf   # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/netstats.pyconf # spews errors into syslog&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/diskstat.pyconf # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/procstat.pyconf # do not create /tmp/gmond.conf&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF DAQ packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
wget http://daq.triumf.ca/~daqweb/yum/triumf-daq.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Konstantin&#039;s packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install diskscrub emailonreboot monitor_nfs &amp;quot;ganglia-*&amp;quot; triumf_nodeinfo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install memtest and PXE boot ==&lt;br /&gt;
&lt;br /&gt;
!!!DO NOT DO THIS!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.10&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&lt;br /&gt;
emacs -nw /boot/grub/grub.conf&lt;br /&gt;
title memtest86+-5.01&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-5.01.bin.gz&lt;br /&gt;
title memtest86+-4.20&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.20.bin.gz&lt;br /&gt;
title memtest86+-4.10&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.10&lt;br /&gt;
title pxeboot&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install triumf_nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl --config ladd00.triumf.ca:8600&lt;br /&gt;
emacs -nw /etc/nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl ladd00.triumf.ca:8600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install gonodeinfo node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+Ubuntu, +CentOS7, +CentOS8)&lt;br /&gt;
&lt;br /&gt;
go to https://bitbucket.org/dd1/gonodeinfo&lt;br /&gt;
follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
# or git clone https://daq.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: ladd00.triumf.ca:8601&lt;br /&gt;
* run gonodeinfo -e&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run gonodereceive -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== Install latest system updates ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum update -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF Printers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable syslog spam (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 config is spamming the syslog with useless messages &amp;quot;systemd: Starting Session&amp;quot;, etc. Disable this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo auditctl -e 0 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo /usr/bin/systemd-analyze set-log-level notice &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install basic system packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
(if starting from minimal system, basic system packages required:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y which psmisc redhat-lsb-core xorg-x11-xauth xterm emacs-nox rsync tcpdump strace nfs-utils sysstat iftop tcsh&lt;br /&gt;
yum install -y gcc gcc-c++ gdb glibc-static libstdc++-static zlib zlib-devel openssl-devel httpd-tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed for QUARTUS, ROOT, EPICS and MIDAS DAQ ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.x86_64 sysstat &amp;quot;libusb-devel*&amp;quot; unixODBC-devel postgresql-devel libxml2-devel libXpm-devel libgfortran git compat-readline43 &amp;quot;graphviz*&amp;quot; dcap &amp;quot;tigervnc*&amp;quot; telnet glibc&amp;quot;*&amp;quot; strace &amp;quot;fftw*&amp;quot; libpng &amp;quot;freetype*&amp;quot; xpdf &amp;quot;xemacs*&amp;quot; tkcvs xterm mutt &amp;quot;*-g77*&amp;quot; joe &amp;quot;libXmu*&amp;quot; dcap-devel gsl-devel pcre-devel h5py gd-devel xorg-x11-fonts&amp;quot;*&amp;quot; minicom xfig&amp;quot;*&amp;quot; perl-BSD-Resource &amp;quot;net-snmp-*&amp;quot; readline-static git-all nasm imake tcl-devel gv xorg-x11-twm expat-devel screen compat-readline5 ImageMagick ImageMagick-devel wget alacarte scipy numpy sympy nedit gnuplot php-cli php-domxml-php4-php5 php-gd php-fpdf php-cli kdebase cmake tcpdump sqlite sqlite-devel kdegraphics gdisk lsof gconf-editor iftop tk-devel mcelog kdm blt itcl lz4 bzip2 pbzip2 apr-devel apr-util-devel net-tools golang&amp;quot;*&amp;quot; --exclude golang-cover&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang-pkg&amp;quot;*&amp;quot; --exclude golang-github&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;git&amp;quot;*&amp;quot; mesa&amp;quot;*&amp;quot; xerces-c&amp;quot;*&amp;quot; diffuse clang i2c-tools  texlive-revtex texlive-revtex4 kile kbibtex xrdp glibc.i686 gimp gimp-data-extras perl-GD&amp;quot;*&amp;quot; perl-Math&amp;quot;*&amp;quot; perl-Statistics-Basic cmake3 cmake3-gui extra-cmake-modules python2-pip x2go&amp;quot;*&amp;quot; mariadb-devel glibc-devel.i686 libzstd&lt;br /&gt;
&lt;br /&gt;
== Install optional packages ==&lt;br /&gt;
&lt;br /&gt;
!! DO NOT DO THIS !!&lt;br /&gt;
&lt;br /&gt;
(do not install boost on 32-bit machines)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken &amp;quot;boost-*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(packages for 32-bit software compilation on 64-bit machines. this is optional)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.i386 giflib.i686 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel.i686 openssl-devel.i686 unixODBC-devel.i686 libstdc++-devel.i386 libstdc++-devel.i686 &amp;quot;zlib-*.i686&amp;quot; &amp;quot;libXext-*.i686&amp;quot; &amp;quot;libXtst-*.i686&amp;quot; glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel.i686 gsl-devel.i686 pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 gd-devel.i686 readline-devel.i686 ncurses-devel.i686 libXdmcp.i686 readline-static.i686 compat-readline5.i686&lt;br /&gt;
&lt;br /&gt;
yum install boost-devel.i686&lt;br /&gt;
&lt;br /&gt;
(separately install these packages - they collide with the big bunch above)&lt;br /&gt;
&lt;br /&gt;
yum install rdesktop&lt;br /&gt;
&lt;br /&gt;
yum reinstall urw-fonts&lt;br /&gt;
&lt;br /&gt;
== Install libraries for PHYSICA (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To run physica built on el6 from git sources on el7, do this:&lt;br /&gt;
&lt;br /&gt;
(building physica on el7 is nort supported at this time)&lt;br /&gt;
&lt;br /&gt;
(see more http://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install libX11.i686 gd.i686 libpng12.i686 readline.i686 compat-libf2c-34.i686&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install additional desktop environements (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# LXQT (from EPEL)&lt;br /&gt;
# NOT COMPATIBLE WITH el7.7 # yum -y install &amp;quot;lxqt*&amp;quot;&lt;br /&gt;
# Cinnamon desktop (from EPEL)&lt;br /&gt;
yum -y install cinnamon&lt;br /&gt;
# KDE5 not available yet&lt;br /&gt;
# MATE (from epel)&lt;br /&gt;
yum -y groupinstall &amp;quot;MATE Desktop&amp;quot;&lt;br /&gt;
yum -y install mate-common mate-icon-theme-faenza mate-netspeed mate-sensors-applet mate-themes-extras mate-utils&lt;br /&gt;
yum -y erase ModemManager abrt abrt-libs abrt-gui-libs&lt;br /&gt;
# XFCE4 (from EPEL)&lt;br /&gt;
yum -y groupinstall xfce&lt;br /&gt;
yum -y install &amp;quot;xfce*plugin&amp;quot; xfce4-about --exclude xfce4-hamster-plugin&lt;br /&gt;
yum -y erase bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lighdm login manager (from EPEL)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install lightdm lightdm-kde lightdm-qt lightdm-qt5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* and switch from gdm to lighdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable gdm.service&lt;br /&gt;
systemctl enable lightdm.service&lt;br /&gt;
(systemctl stop gdm; systemctl restart lightdm) &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SMART scripts ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -sf ~/git/scripts/smart-status/smart-status.perl ~/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install NTFS drivers ==&lt;br /&gt;
&lt;br /&gt;
yum install ntfs-3g ntfsprogs (from EPEL)&lt;br /&gt;
&lt;br /&gt;
== Install HFS and HFS+ drivers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
yum --disablerepo=\* --enablerepo=elrepo install kmod-hfs kmod-hfsplus&lt;br /&gt;
&lt;br /&gt;
== Install Google Chrome web browser (64-bit CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/google-chrome-64.repo /etc/yum.repos.d/&lt;br /&gt;
yum install google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable monitoring of HTTPS certificates ==&lt;br /&gt;
&lt;br /&gt;
On SL6, CentOS7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install crypto-utils&lt;br /&gt;
/etc/cron.daily/certwatch&lt;br /&gt;
strace -f /etc/cron.daily/certwatch  |&amp;amp; grep open  | grep crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable 100dpi fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/share/X11/fonts/100dpi /etc/X11/fontpath.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable crontab @reboot for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
el7 has a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory&lt;br /&gt;
is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be&lt;br /&gt;
started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/crond.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/crond.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat crond.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependacy tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 configuration prevents all access to servers running on the local machine, including access to MIDAS mhttpd (tcp port 8443) and mserver (all tcp ports).&lt;br /&gt;
&lt;br /&gt;
To enable access to mhttpd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=8443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access to the mserver from a specific host: (replace 142.90.111.175 with the IP address of the permitted host)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.111.175/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access from the private network (replace &amp;quot;192.168.1.0&amp;quot; with your private network number):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.0/24&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for EPICS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To enable access to TRIUMF EPICS servers, do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.132.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For UCN the controls people seem to have EPICS setup on a different server; this might be true for CMMS as well.  In this case the firewall rule change should be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.139.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable gdm and X11 (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initctl stop prefdm&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/prefdm.override&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/splash-manager.override&lt;br /&gt;
initctl reload-configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then enable login on default console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;plymouth quit&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo &amp;quot;X_TTY=xxx/dev/tty1&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install JAVAWS (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
* to run Java &amp;quot;web start&amp;quot; jnlp files (EVO, SEEVOGH, etc): javaws Downloads/spider.jnlp&lt;br /&gt;
* install javaws:&lt;br /&gt;
* yum install icedtea-web icedtea-web-javadoc&lt;br /&gt;
&lt;br /&gt;
== Install firefox java plugin (OPTIONAL, DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
This installs the Oracle Java plugin:&lt;br /&gt;
&lt;br /&gt;
* rpm -vh --install ~deap/jdk-7u15-linux-x64.rpm&lt;br /&gt;
* ls -l /usr/lib64/mozilla/plugins/&lt;br /&gt;
* ln -s /usr/java/jdk1.7.0_15/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/&lt;br /&gt;
* start firefox, go edit-&amp;gt;preferences-&amp;gt;general-&amp;gt;manage add-ons-&amp;gt;plugins&lt;br /&gt;
* &amp;quot;java plugin 1.7.0_15&amp;quot; should be listed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure USB device permissions ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
&lt;br /&gt;
== Disable modem-manager ==&lt;br /&gt;
&lt;br /&gt;
The modem-manager will try to talk to any serial devices attached to USB serial ports. It assumes that those devices are modems and will send out modem-specific commands. if the devices are not modems and do not understand or do not like modem commands, well that&#039;s too bad. modem-manager is installed by the ModemManager package required by the NetworkManager package, and there is no configuration setting to turn modem-manager off.&lt;br /&gt;
&lt;br /&gt;
One way to disable it is: chmod a= /usr/sbin/modem-manager&lt;br /&gt;
&lt;br /&gt;
Another way to disable it is by forced uninstall: rpm --erase --nodeps ModemManager&lt;br /&gt;
&lt;br /&gt;
Remember to kill the running copy: killall -KILL modem-manager&lt;br /&gt;
&lt;br /&gt;
Caveat: it is not clear if modem-manager would not be resurrected by an update to the NetworkManager or ModemManager packages.&lt;br /&gt;
&lt;br /&gt;
== Configure Altera jtagd ==&lt;br /&gt;
&lt;br /&gt;
(if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/jtagd&lt;br /&gt;
echo &#039;Password = &amp;quot;123&amp;quot;;&#039; &amp;gt; /etc/jtagd/jtagd.conf&lt;br /&gt;
cp -pv /triumfcs/trshare/olchansk/altera/11.0/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start local jtagd: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagd&lt;br /&gt;
* test local connection: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagconfig&lt;br /&gt;
* test remote connection (add this machine to your .jtag.conf, run jtagconfig&lt;br /&gt;
&lt;br /&gt;
For more information, go to [[Quartus]]&lt;br /&gt;
&lt;br /&gt;
== Install EOS ==&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
http://eos-docs.web.cern.ch/eos-docs/quickstart/setup_repo.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -vh --install https://dss-ci-repo.web.cern.ch/dss-ci-repo/eos/citrine/tag/el-7/x86_64/eos-repo-el7-generic-1.noarch.rpm&lt;br /&gt;
yum-config-manager --disable eos-citrine # disable auto-update because all packages are not signed&lt;br /&gt;
yum-config-manager --disable eos-dep # disable auto-update because all packages are not signed.&lt;br /&gt;
yum install eos-client eos-fuse --enablerepo=eos-citrine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install fix for the el7 systemd dbus boot hang ==&lt;br /&gt;
&lt;br /&gt;
Around early Summer 2018 el7 started showing a boot problem. In the nutshell,&lt;br /&gt;
there is a problem with the dbus connection between dbus and systemd that&lt;br /&gt;
prevents polkit, firewalld, etc from starting. The system eventually boots&lt;br /&gt;
enough that one can ssh into it, but most things do not work. Notably,&lt;br /&gt;
polkit is not running, firewalld is not running, ssh login takes about 15-30 second.&lt;br /&gt;
&lt;br /&gt;
Solution is to add a special systemd service to check that dbus started correctly.&lt;br /&gt;
It that runs after dbus is started, but before it is used, and it restarts dbus in a loop&lt;br /&gt;
with a delay until dbus starts correctly. In testing, dbus always starts correctly after&lt;br /&gt;
the first retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.perl /usr/bin/&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable systemd-check-dbus&lt;br /&gt;
systemctl start systemd-check-dbus&lt;br /&gt;
systemctl status systemd-check-dbus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After linux boots, if everything was okey, the script will report this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iris01 ~]# systemctl status systemd-check-dbus&lt;br /&gt;
...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca systemd[1]: Starting Check that systemd is registered with dbus...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca sh[4283]: Starting check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.DBus&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.systemd1&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: systemd1 dbus service exists, success!&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: Finished check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca systemd[1]: Started Check that systemd is registered with dbus.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the boot problem happened, the script will report about restarting dbus.&lt;br /&gt;
&lt;br /&gt;
Note: the systemd service file adjusts the start order of other services, this adjustment seems to reduce the probability of the problem.&lt;br /&gt;
&lt;br /&gt;
== Configure GRUB boot loader (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub, remove &amp;quot;rhgb&amp;quot; and &amp;quot;quiet&amp;quot; from GRUB_CMDLINE_LINUX&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg&lt;br /&gt;
* grub2-editenv list # show contents of boot environement file&lt;br /&gt;
* /bin/rm /boot/grub2/grubenv # remove stale settings, make grub2 boot from first entry in config file&lt;br /&gt;
&lt;br /&gt;
== Install memtest86+ (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install memtest86+&lt;br /&gt;
/bin/cp -vf /usr/share/memtest86+/20_memtest86+ /etc/grub.d/&lt;br /&gt;
/bin/chmod a+x /etc/grub.d/20_memtest86+ &lt;br /&gt;
grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable ELREPO ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo_triumf.repo&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reduce install size (optional) ==&lt;br /&gt;
&lt;br /&gt;
This is optional. Only do this if reducing the size of the OS image is very important.&lt;br /&gt;
&lt;br /&gt;
Do this for VME processors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum erase &amp;quot;texlive*&amp;quot; &amp;quot;java*&amp;quot; &amp;quot;boost*&amp;quot; libreoffice&amp;quot;*&amp;quot;&lt;br /&gt;
#yum erase &amp;quot;xemacs*&amp;quot;&lt;br /&gt;
yum erase &amp;quot;libstdc++-docs&amp;quot;&lt;br /&gt;
yum erase firefox google-chrome&amp;quot;*&amp;quot;&lt;br /&gt;
yum clean all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm -rf /usr/share/help&lt;br /&gt;
/bin/rm -rf /usr/share/doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update from el7.6 to el7.7 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum versionlock delete zfs&lt;br /&gt;
yum versionlock delete kernel&lt;br /&gt;
yum -y update &amp;quot;yum*&amp;quot; &amp;quot;rpm*&amp;quot;&lt;br /&gt;
yum -y erase libqtxdg lxqt-qtplugin ### LXQT is not compatible&lt;br /&gt;
yum update&lt;br /&gt;
after rebooting into el7.7, follow instructions for updating ZFS from version 0.7 to 0.8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
== Special hardware settings ==&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 1207 or newer&lt;br /&gt;
* (before CentOS7) sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
* CentOS7: installs correct drivers automatically&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair-II mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2607 or newer&lt;br /&gt;
* for the onboard IDE to work, add &amp;quot;all-generic-ide&amp;quot; to kernel boot options in grub.conf&lt;br /&gt;
* sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
&lt;br /&gt;
=== ASUS P7P55D EVO mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2004 or newer&lt;br /&gt;
* SL6 - install special driver for on board PCIe GigE network port and disable on board PCI GigE network port:&lt;br /&gt;
** yum --enablerepo elrepo install kmod-r8168 kmod-r8169&lt;br /&gt;
** # do not do this: sed &#039;s/^blacklist/#blacklist/&#039; -i /etc/modprobe.d/blacklist-r8169.conf&lt;br /&gt;
** reboot&lt;br /&gt;
** verify that correct drivers are loaded: ethtool -i eth0; ethtool -i eth1&lt;br /&gt;
** note: there will be no eth1 - r8169 driver is disabled.&lt;br /&gt;
&lt;br /&gt;
=== ASUS P6X58-E-WS mobo ===&lt;br /&gt;
&lt;br /&gt;
* BIOS settings&lt;br /&gt;
** F1 or DEL to enter BIOS setup, F8 boot menu&lt;br /&gt;
** go to POWER-&amp;gt;HW mon, confirm CPU temperature is around 30C. (heatsink is installed correctly. Bad heatsink temperature quickly goes up to 50-70C).&lt;br /&gt;
** Main menu: Storage config - SATA change IDE-&amp;gt;AHCI&lt;br /&gt;
** System information: confirm BIOS version 301, CPU type, memory size&lt;br /&gt;
** AI Tweak: set DRAM frequency - AUTO-&amp;gt;DDR3-1333&lt;br /&gt;
** Advanced-&amp;gt;Onboard devices: LAN BOOT: enabled&lt;br /&gt;
** Power-&amp;gt;HW monitor: CPU Q-FAN: enabled&lt;br /&gt;
** Boot-&amp;gt;Settings: Quick boot: enabled; Full screen logo: disabled; Wait for F1: disabled&lt;br /&gt;
** Save and exit&lt;br /&gt;
&lt;br /&gt;
=== ASUS E35M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboards/E35M1M_PRO/#specifications&lt;br /&gt;
* use BIOS version 1002 or newer&lt;br /&gt;
* for CPU temperature: install kmod-k10temp from ELREPO (kmod-k10temp-0.0-4.el6.elrepo.x86_64.rpm)&lt;br /&gt;
* for Sensors: yum --enablerepo elrepo install kmod-w83627ehf; modprobe w83627ehf; sensors&lt;br /&gt;
* for Graphics: yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* to enable booting from USB3, edit /etc/dracut.conf, change line &amp;quot;add_drivers&amp;quot; to read: add_drivers+=&amp;quot;xhci-hcd&amp;quot;&lt;br /&gt;
* to use multiple monitors, run &amp;quot;aticonfig --initial --heads=2 --adapter=1 --xinerama=on&amp;quot;, to change screen layout, edit /etc/X11/xorg.conf. Only dual monitors DVI+HDMI seem to work. Tripple monitors does not seem to work.&lt;br /&gt;
&lt;br /&gt;
Sensors instructions below are obolete (use driver from ELREPO)&lt;br /&gt;
* for Sensors, install driver for NCT6776F chip from https://github.com/groeck/w83627ehf/archives/master (in the Makefile, change the line &amp;quot;KERNEL_BUILD=&amp;quot; to read: &amp;quot;KERNEL_BUILD:=/usr/src/kernels/$(TARGET)&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/groeck-w83627ehf-dd3e543/w83627ehf.ko&lt;br /&gt;
echo &amp;quot;modprobe hwmon; modprobe hwmon-vid; modprobe k10temp; rmmod w83627ehf; insmod /root/w83627ehf.ko&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS E45M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/Motherboards/E45M1M_PRO/#specifications&lt;br /&gt;
* use BIOS 1202 or newer&lt;br /&gt;
* follow the E35M1-M PRO instructions above&lt;br /&gt;
&lt;br /&gt;
=== ASUS P9X79 WS ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboard/P9X79_WS/&lt;br /&gt;
* use BIOS version 3101, 3401, 4701 or newer. If BIOS is 1305 or older, install P9X79-WS-CAP-Converter.ROM (BIOS 2902/3101), then the new BIOS.&lt;br /&gt;
* (not needed for CentOS7) for CPU temperature, install coretemp&lt;br /&gt;
* (not needed for CentOS7) for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
* BIOS Settings:&lt;br /&gt;
** enter &amp;quot;Advanced mode&amp;quot;&lt;br /&gt;
** Ai Tweaker -&amp;gt; Ai Overclock Tuner -&amp;gt; Set to &amp;quot;XMP&amp;quot; - this enables DDR3-1600 RAM speed vs DDR3-1333 by default&lt;br /&gt;
** Monitor -&amp;gt; CPU fan speed low limit -&amp;gt; Set to &amp;quot;200 RPM&amp;quot; - we are using high efficiency slow turning CPU coolers and the default 600 RPM is right on the edge of firing false warnings&lt;br /&gt;
** Boot -&amp;gt; Full screen logo -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
** Wait for F1 -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ASUS P8B-M ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 6103 or newer&lt;br /&gt;
* for CPU temperature, install coretemp&lt;br /&gt;
* for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
&lt;br /&gt;
=== SUPERMICRO X9SCL ===&lt;br /&gt;
&lt;br /&gt;
* yum install kmod-w83627ehf.x86_64 coretemp&lt;br /&gt;
* xemacs -nw /etc/rc.local, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe w83627ehf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z87-WS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z97-WS ===&lt;br /&gt;
&lt;br /&gt;
the nct6775 driver does not work because of conflict with ACPI.&lt;br /&gt;
&lt;br /&gt;
=== ASUS AM1M-A ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 602 or later&lt;br /&gt;
* SL6.5 installer cannot use USB2 ports and the network. Use USB3 ports (blue colour) to boot USB installer (memtest, rescue, etc)&lt;br /&gt;
* SL6.5 kernels require boot option &amp;quot;iommu=soft&amp;quot; or USB2 and network do not work. (USB3 - blue ports - seems okey)&lt;br /&gt;
* install ATI/AMD video drivers from ELREPO (see below)&lt;br /&gt;
* sensors chip is ITE IT8623E, for SL6, use standalone driver from lm_sensors. (2 fans rpm, 2 temperatures):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* for el7 use it87.ko driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget https://daqshare.triumf.ca/~olchansk/linux/CentOS7/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@midemma02 ~]# sensors&lt;br /&gt;
radeon-pci-0008&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.0°C  (crit = +120.0°C, hyst = +90.0°C)&lt;br /&gt;
&lt;br /&gt;
fam15h_power-pci-00c4&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
power1:           N/A  (crit =  25.00 W)&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.2°C  (high = +70.0°C)&lt;br /&gt;
                       (crit = +70.0°C, hyst = +69.0°C)&lt;br /&gt;
&lt;br /&gt;
it8603-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:          +0.96 V  (min =  +2.50 V, max =  +2.95 V)  ALARM&lt;br /&gt;
in1:          +2.23 V  (min =  +0.94 V, max =  +1.22 V)  ALARM&lt;br /&gt;
in2:          +2.03 V  (min =  +0.74 V, max =  +0.77 V)  ALARM&lt;br /&gt;
in3:          +2.00 V  (min =  +1.26 V, max =  +0.13 V)  ALARM&lt;br /&gt;
in4:          +2.23 V  (min =  +2.95 V, max =  +2.15 V)  ALARM&lt;br /&gt;
3VSB:         +3.36 V  (min =  +6.00 V, max =  +2.50 V)  ALARM&lt;br /&gt;
Vbat:         +3.22 V  &lt;br /&gt;
+3.3V:        +3.36 V  &lt;br /&gt;
fan1:         611 RPM  (min =  200 RPM)&lt;br /&gt;
fan2:         707 RPM  (min =  600 RPM)  ALARM&lt;br /&gt;
temp1:        +38.0°C  (low  = +122.0°C, high = +122.0°C)  sensor = thermistor&lt;br /&gt;
temp2:        +22.0°C  (low  = +119.0°C, high = -35.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
temp3:       -128.0°C  (low  = +16.0°C, high = +93.0°C)  sensor = thermistor&lt;br /&gt;
intrusion0:  ALARM&lt;br /&gt;
&lt;br /&gt;
[root@midemma02 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* AMD &amp;quot;Athlon(tm) 5350 APU&amp;quot; graphics supports 2 monitors maximum (mobo has 3 video outputs, only 2 can be used together)&lt;br /&gt;
&lt;br /&gt;
=== Intel SE7230NH1 ===&lt;br /&gt;
&lt;br /&gt;
* front panel header connector pinout is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PWR LED | 1  2|&lt;br /&gt;
        | 3  4|&lt;br /&gt;
PWR LED | 5  6|&lt;br /&gt;
HDD LED | 7  8|&lt;br /&gt;
HDD LED | 9 10|&lt;br /&gt;
PWR SW  |11 12| NIC1 LED&lt;br /&gt;
PWR SW  |13 14| NIC1 LED&lt;br /&gt;
RST SW  |15 16|&lt;br /&gt;
RST SW  |17 18|&lt;br /&gt;
        |19 20|&lt;br /&gt;
NMI SW  |21 22| NIC2 LED&lt;br /&gt;
NMI SW  |23 24| NIC2 LED&lt;br /&gt;
...     |...  |&lt;br /&gt;
        |33 34|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS H110M-A/M.2 ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 2003 or later&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT5539D&lt;br /&gt;
* sensors chip is &amp;quot;NCT6793D or compatible chip&amp;quot;, for el7, use this driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq03 ~]# sensors&lt;br /&gt;
acpitz-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                       +0.34 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                       +0.15 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                       +0.97 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                       +3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                       +3.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                       +1.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                      +0.13 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1020 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM&lt;br /&gt;
SYSTIN:                   +119.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +27.5°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +111.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +28.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Physical id 0:  +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:         +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:         +28.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
[root@daq03 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supermicro X11SSH-F ===&lt;br /&gt;
&lt;br /&gt;
* blacklist the mei and mei_me drivers per http://www.supermicro.com/support/faqs/faq.cfm?faq=14537&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# more /etc/modprobe.d/blacklist.conf&lt;br /&gt;
blacklist mei&lt;br /&gt;
blacklist mei_me&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mobo requires M.2 PCIe SSD (M.2 SATA SSD would not work. SATA SATA SSD ok)&lt;br /&gt;
* boot from M.2 PCIe SSD requires UEFI boot (from an MSDOS partition on the SSD)&lt;br /&gt;
&lt;br /&gt;
=== ASUS TUF Z390M-PRO GAMING (WI-FI) ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 2417 is okey, upgrade to this if older&lt;br /&gt;
* do not set XMP memory mode&lt;br /&gt;
* in the BIOS, enable the boot compatibility support module mode: BIOS (press DEL) -&amp;gt; Advanced mode -&amp;gt; BOOT -&amp;gt; CSM Module -&amp;gt; Enable CSM &amp;quot;yes&amp;quot;.&lt;br /&gt;
* for SL6, install e1000e driver from ELREPO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install --enablerepo=elrepo kmod-e1000e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors chip appears to be &amp;quot;Nuvoton NCT6798D&amp;quot; not clear what driver to use&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT6798D&lt;br /&gt;
* kmod-nct6775-0.0-5.el7_7.elrepo.x86_64.rpm from ELrepo finds the chip but bombs because of conflict with ACPI&lt;br /&gt;
&lt;br /&gt;
=== ASUS PRIME X399-A ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 1002&lt;br /&gt;
* for reading temperatures and fan rotations, install driver: https://github.com/electrified/asus-wmi-sensors/issues/29&lt;br /&gt;
&lt;br /&gt;
== Configure X11 graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Special settings for DAQ ===&lt;br /&gt;
&lt;br /&gt;
* add the following at the end of /etc/X11/xorg.conf. The enables Ctrl-Alt-KP-/ and Ctrl-Alt-KP-* to unlock the keyboard after Altera Quartus crash:&lt;br /&gt;
&amp;lt;pre&amp;gt;Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowDeactivateGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowClosedownGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo=elrepo install nvidia-detect&lt;br /&gt;
* run: nvidia-detect&lt;br /&gt;
* as instructed by nvidia-detect, install correct driver:&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-304xx&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-173xx&lt;br /&gt;
* (before SL6.x:  if it fails due to conflict with module-init-tools, run &amp;quot;yum --disablerepo \* --enablerepo elrepo update module-init-tools&amp;quot;)&lt;br /&gt;
* yum erase xorg-x11-glamor ### see http://elrepo.org/tiki/kmod-nvidia (search for glamor)&lt;br /&gt;
* mv /etc/X11/xorg.conf /etc/X11/xorg.conf-xxx&lt;br /&gt;
* nvidia-xconfig&lt;br /&gt;
* (SL6) reboot&lt;br /&gt;
* (SL5) /dev/MAKEDEV nvidia&lt;br /&gt;
* (SL5) restart the X11 server (Ctrl-Alt-Backspace or &amp;quot;killall Xorg gdm-binary&amp;quot;)&lt;br /&gt;
* observe that X11 server restarts using the NVIDIA driver (big NVIDIA logo on startup)&lt;br /&gt;
* if needed, login as root and run &amp;quot;nvidia-settings&amp;quot; to setup dual-screen configuration, etc&lt;br /&gt;
&lt;br /&gt;
=== Install legacy NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
For old NVIDIA cards:&lt;br /&gt;
* GeForce FX 5500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.31/NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
sh ./NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GeForce 6200 - NVIDIA Corporation NV44A [GeForce 6200]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install nvidia-x11-drv-304xx-304.121 --enablerepo=elrepo&lt;br /&gt;
nvidia-xconfig&lt;br /&gt;
rmmod nvidia&lt;br /&gt;
killall gdm-binary&lt;br /&gt;
login as root&lt;br /&gt;
nvidia-settings to setup multiple displays&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* check that /etc/X11/xorg.conf section &amp;quot;Device&amp;quot; entry &amp;quot;Driver&amp;quot; says &amp;quot;fglrx&amp;quot;&lt;br /&gt;
* run &amp;quot;aticonfig --initial&amp;quot; to create xorg.conf if existing one is not good&lt;br /&gt;
* run &amp;quot;amdcccle&amp;quot; as root to configure dual-screens, etc&lt;br /&gt;
  Note: &#039;amdcccle&#039; is a GUI, so you must run this command from within a running X session&lt;br /&gt;
* killall Xorg&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers (CentOS7) ===&lt;br /&gt;
&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* yum install acpid&lt;br /&gt;
* rpm -vh --install kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* amdconfig -f --initial&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* reboot&lt;br /&gt;
* login as root&lt;br /&gt;
* amdcccle&lt;br /&gt;
&lt;br /&gt;
NOTE: if both drivers - radeon and fglrx are loaded, boot will hang. the radeon driver is supposed to be blacklisted through grub rdblacklist=radeon entry which is installed by running grub2-mkconfig.&lt;br /&gt;
&lt;br /&gt;
=== Install Intel drivers for HD4600/Z87 ===&lt;br /&gt;
&lt;br /&gt;
SL6.5 has the required drivers for the socket 1150 machines with Intel HD4600 graphics and Z87 chipset.&lt;br /&gt;
&lt;br /&gt;
ASUS Z87 WS motherboard has these video connections with corresponding Intel video port assignements, as reported by &amp;quot;xrandr&amp;quot;:&lt;br /&gt;
* DisplayPort - DP1/HDMI1&lt;br /&gt;
* MiniDisplayPort - DP2/HDMI2&lt;br /&gt;
* HDMI - HDMI3&lt;br /&gt;
&lt;br /&gt;
Due to hardware limitations, 3 HDMI monitors using 2 passive DP-HDMI adapters (and 1 straight HDMI) cannot be used.&lt;br /&gt;
&lt;br /&gt;
To use 3 monitors do this:&lt;br /&gt;
* 1st monitor: DisplayPort - DP-to-HDMI-passive-adapter - HDMI monitor (not tried: DP-to-DP-cable - DisplayPort monitor).&lt;br /&gt;
* 2nd monitor: MiniDisplayPort - MiniDP-to-DP-cable - DisplayPort monitor&lt;br /&gt;
* 3rd monitor: HDMI - HDMI-cable - HDMI monitor&lt;br /&gt;
&lt;br /&gt;
With the monitors I have (Dell 1920x1200 VGA-HDMI-DP), the software thinks that there are 4 monitors: somehow both DP2 and HDMI2 see 1 minitor each, but the hardware cannot drive 4 monitors, so everything goes blank. To fix, disable HDMI2 (xrandr -display :0 --output HDMI2 --off) and enable DP2 (xrandr -display :0 --output DP2 --auto).&lt;br /&gt;
&lt;br /&gt;
How to make this configuration permanent and how to assign monitor locations (left-right, etc), you figure it out.&lt;br /&gt;
&lt;br /&gt;
=== Manual selection of monitor, video mode and resolution ===&lt;br /&gt;
&lt;br /&gt;
Automatic selection of monitor and video mode usually works. When it does not, configure it manualls:&lt;br /&gt;
&lt;br /&gt;
* physically go to the computer&lt;br /&gt;
* login as root&lt;br /&gt;
* run &amp;quot;nvidia-settings&amp;quot; on machines using the NVIDIA driver&lt;br /&gt;
* run &amp;quot;aticonfig&amp;quot; on machines with the ATI/AMD driver (use &amp;quot;aticonfig --initial&amp;quot; for initial setup, and good luck with anything more complicated)&lt;br /&gt;
* run &amp;quot;system-config-display&amp;quot;.&lt;br /&gt;
** In the &amp;quot;hardware&amp;quot; tab, select monitor type: &amp;quot;generic LCD 1280x1024&amp;quot; or &amp;quot;generic LCD 1600x1200&amp;quot;.&lt;br /&gt;
** In the &amp;quot;settings&amp;quot; tab, select &amp;quot;1280x1024&amp;quot; or &amp;quot;1600x1200&amp;quot; and &amp;quot;Thousands of colors&amp;quot;.&lt;br /&gt;
** Press &amp;quot;ok&amp;quot;, the display settings application should close.&lt;br /&gt;
* Logout, the new login window should use the new settings.&lt;br /&gt;
&lt;br /&gt;
=== Disable screen saver ===&lt;br /&gt;
&lt;br /&gt;
If machine is booted without any monitor connected, current video cards to not enable any video outputs. If a monitor is connected later, there is no video image and there is no easy way to get a video image.&lt;br /&gt;
&lt;br /&gt;
This can be solved by configuring X11 to always enable some video output. Because the monitor type is not known when X11 starts, one has to select some standard video mode (i.e. VESA 1280x1024) on some video output (VGA, DVI or HDMI).&lt;br /&gt;
&lt;br /&gt;
Only NVIDIA cards with the NVIDIA driver (from EPEL) is supported by these instructions.&lt;br /&gt;
&lt;br /&gt;
* create default xorg.conf: nvidia-xconfig&lt;br /&gt;
* edit /etc/X11/xorg.conf&lt;br /&gt;
* add monitor section for the fake monitor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    HorizSync       31.0 - 83.0&lt;br /&gt;
    VertRefresh     59.0 - 61.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    ModeLine &amp;quot;1280x1024&amp;quot;   108.00   1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add output selection in the &amp;quot;Device&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 210&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT&amp;quot;&lt;br /&gt;
    Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-1&amp;quot;&lt;br /&gt;
    Option &amp;quot;UseEDID&amp;quot; &amp;quot;no&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add fake video mode to the &amp;quot;Screen&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Modes       &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable screen saver and DPMS power off in the &amp;quot;ServerLayout&amp;quot; or &amp;quot;ServerFlags&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Layout0&amp;quot;&lt;br /&gt;
    Screen      0  &amp;quot;Screen0&amp;quot; 0 0&lt;br /&gt;
    InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;&lt;br /&gt;
    InputDevice    &amp;quot;Mouse0&amp;quot; &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot; &lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
EndSection &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
* logout and reboot the computer to have all the changes to take effect&lt;br /&gt;
&lt;br /&gt;
== Configure HTTPS server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache httpd.&lt;br /&gt;
&lt;br /&gt;
First, configure apache httpd:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y mod_ssl certwatch crypto-utils&lt;br /&gt;
cd /etc/httpd/conf.d/&lt;br /&gt;
mv ssl.conf ssl.conf-not-used ### remove the stock ssl.conf which refers to the localhost certificate that will expire in 1 year&lt;br /&gt;
touch ssl.conf ### create a blank file to prevent automatic updates from installing a stock ssl.conf file&lt;br /&gt;
# this is done later: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file ssl-daq12.conf # use actual hostname instead of daq12&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443 https&lt;br /&gt;
#SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
ServerName daq12.triumf.ca&lt;br /&gt;
DocumentRoot /var/www/html&lt;br /&gt;
ErrorLog /var/log/httpd/daq12.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
# note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
# new SSL settings: K.O. Jan 2020, SSLlabs rating &amp;quot;A+&amp;quot;&lt;br /&gt;
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!RSA&lt;br /&gt;
SSLHonorCipherOrder on&lt;br /&gt;
# pervious SSL settings:&lt;br /&gt;
#SSLProtocol all -SSLv2 -SSLv3&lt;br /&gt;
#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
#ProxyPass /elog/ http://localhost:8082/ retry=1&lt;br /&gt;
#ProxyPass /      http://localhost:8080/ retry=1&lt;br /&gt;
Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
Require valid-user&lt;br /&gt;
# create password file: touch /etc/httpd/htpasswd&lt;br /&gt;
# to add new user or change password: htpasswd /etc/httpd/htpasswd username&lt;br /&gt;
AuthUserFile /etc/httpd/htpasswd&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop httpd from listening on port 80: edit /etc/httpd/conf/httpd.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable and start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to access https://daq12.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, then try again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that httpd is listening on port 80, follow the httpd instructions above (remove &amp;quot;listen 80&amp;quot; from httpd.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot and open tcp port 80 in the firewall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y certbot python2-certbot-apache # (from EPEL)&lt;br /&gt;
firewall-cmd --add-port=80/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* certbot certonly --standalone --installer apache # then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq12.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;please choose...&amp;quot; - say &amp;quot;easy&amp;quot; (http access is disabled (a) by firewall, (b) by local configuration&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
* certbot install --apache --cert-name daq12.triumf.ca # then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside ssl-daq12.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in /etc/letsencrypt/live/daq12.triumf.ca/&lt;br /&gt;
* remove self-signed localhost certificate, it will expire in 1 year and cause warnings and complaints: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
* enable automatic renewal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable certbot-renew.timer&lt;br /&gt;
systemctl start certbot-renew.timer&lt;br /&gt;
systemctl list-timers --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to check corrent renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work starting with certbot-0.12.0-4.el7.noarch.&lt;br /&gt;
Certificate expiration should be automatically detected by &amp;quot;certwatch&amp;quot; and email&lt;br /&gt;
will be sent to local root user, to be forwarded to an actual person by ~root/.forward.&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/httpd/htpasswd&lt;br /&gt;
htpasswd /etc/httpd/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Final test:&lt;br /&gt;
* access https://daq12.triumf.ca - https status should be &amp;quot;green&amp;quot;&lt;br /&gt;
* login with password should work&lt;br /&gt;
* the apache httpd test page should load&lt;br /&gt;
* check site security using the SSLlabs https tester. (I get grade &amp;quot;A-&amp;quot;): https://www.ssllabs.com/ssltest/&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
* setsebool -P httpd_can_network_connect 1&lt;br /&gt;
* systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== Configure large RAID6 arrays ==&lt;br /&gt;
&lt;br /&gt;
* connect the disks&lt;br /&gt;
* check the disks health&lt;br /&gt;
** run smart-status.perl&lt;br /&gt;
* partition the disks&lt;br /&gt;
** yum install gdisk&lt;br /&gt;
** gdisk /dev/sdX&lt;br /&gt;
** delete all partitions: o&lt;br /&gt;
** create new partition: n, enter, enter, enter, fd00 (default sizes, partition type fd00)&lt;br /&gt;
** write and exit: w&lt;br /&gt;
* check presence of all partitions:&lt;br /&gt;
** /bin/ls -l /dev/sd*1&lt;br /&gt;
* prepare to use an external bitmap file&lt;br /&gt;
** touch /md6bitmap&lt;br /&gt;
** edit /etc/fstab, change entry for root filesystem from: &amp;quot;defaults 1 1&amp;quot; to &amp;quot;defaults 0 0&amp;quot;&lt;br /&gt;
** edit /boot/grub/grub.conf, change entry &amp;quot;kernel ... ro ...&amp;quot; to &amp;quot;kernel ... rw ...&amp;quot;&lt;br /&gt;
* create raid array:&lt;br /&gt;
** mdadm --create /dev/md6 --level=6 --bitmap=/md6bitmap --raid-devices=10 /dev/sd[b-k]1&lt;br /&gt;
** mdadm -Ds &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
** cleanup /etc/mdadm.conf&lt;br /&gt;
** echo &amp;quot;echo 16384 &amp;gt; /sys/block/md6/md/stripe_cache_size&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** echo &amp;quot;echo 1     &amp;gt; /sys/block/md6/md/sync_speed_min&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** source /etc/rc.local&lt;br /&gt;
* observe raid array rebuild:&lt;br /&gt;
** watch -d -n1 &amp;quot;cat /proc/mdstat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure ZFS ==&lt;br /&gt;
&lt;br /&gt;
=== Install ZFS ===&lt;br /&gt;
&lt;br /&gt;
(from here: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for &amp;quot;kABI-tracking kmod&amp;quot; - dkms modules seem to always mess up the system when upgrading to next release of zfs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rpm -vh --install http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm&lt;br /&gt;
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
#sed &#039;s/^SELINUX=.*/SELINUX=disabled/&#039; -i /etc/selinux/config&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
#shutdown -r now # required to load the zfs kernel modules and to disable selinux&lt;br /&gt;
modprobe zfs # should work&lt;br /&gt;
zpool status # should report no pools available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Note: zfs and selinux and not compatible: with selinux enabled, files on zfs cannot be deleted (files are gone, but &amp;quot;df&amp;quot; does not go down, zfs-0.6.5.7-1.el7.centos.x86_64), see #https://github.com/zfsonlinux/zfs/issues/4845&lt;br /&gt;
&lt;br /&gt;
* http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs-quickstart.html)&lt;br /&gt;
* http://www.freebsd.org/cgi/man.cgi?query=zpool&amp;amp;sektion=8&lt;br /&gt;
&lt;br /&gt;
If ZFS kernel module does not load automatically at boot time, add this to load it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /etc/sysconfig/modules/&lt;br /&gt;
cat &amp;gt; /etc/sysconfig/modules/zfs.modules &amp;lt;&amp;lt;EOF&lt;br /&gt;
if [ ! -e /sys/module/zfs ] ; then&lt;br /&gt;
  modprobe zfs;&lt;br /&gt;
fi&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x /etc/sysconfig/modules/zfs.modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS 0.7 to 0.8 ===&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates list zfs # list all available versions in &amp;quot;zfs-testing-kmod&amp;quot;&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates install zfs # maybe specify specific version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /etc/yum.repos.d/zfs.repo* ### delete old repo files&lt;br /&gt;
yum upgrade http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if you see yum offering to install &amp;quot;dkms&amp;quot; and &amp;quot;zfs-dkms&amp;quot;, the yum config is wrong (we use the kmod-zfs package), check that &amp;quot;zfs&amp;quot; repo is disabled, &amp;quot;zfs-kmod&amp;quot; repo is enabled - see the yum-config-manager commands above.&lt;br /&gt;
&lt;br /&gt;
=== Lock kernel and zfs packages ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock kernel&lt;br /&gt;
yum versionlock zfs&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Follow generic ZFS instructions ===&lt;br /&gt;
&lt;br /&gt;
Here: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
== performance notes ==&lt;br /&gt;
&lt;br /&gt;
Go here: [[disk_benchmarks]]&lt;br /&gt;
&lt;br /&gt;
== Configure UEFI boot ==&lt;br /&gt;
&lt;br /&gt;
Some mobo can boot from NVME (PCIe) SSDs only via UEFI boot. Do this:&lt;br /&gt;
&lt;br /&gt;
* partition the NVME SSD using gdisk (must be GPT partition table, must have MSDOS EFI partition size 512MiB)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# gdisk -l /dev/nvme0n1&lt;br /&gt;
GPT fdisk (gdisk) version 0.8.6 ...&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB&lt;br /&gt;
Logical sector size: 512 bytes&lt;br /&gt;
Disk identifier (GUID): 1A82CC87-2757-44ED-980F-C78E3681D9D3&lt;br /&gt;
Partition table holds up to 128 entries&lt;br /&gt;
First usable sector is 34, last usable sector is 500118158&lt;br /&gt;
Partitions will be aligned on 2048-sector boundaries&lt;br /&gt;
Total free space is 2014 sectors (1007.0 KiB)&lt;br /&gt;
&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System&lt;br /&gt;
   2         1050624       500118158   238.0 GiB   8300  Linux filesystem&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create filesystems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.xfs /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare EFI partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/efi&lt;br /&gt;
mount /dev/nvme0n1p1 /mnt/efi&lt;br /&gt;
mkdir -p /mnt/efi/efi/boot&lt;br /&gt;
cp /boot/vmlinuz... vmlinuz # copy the desired linux kernel&lt;br /&gt;
cp /boot/initramfs... initramfs.img # copy the matching initramfs file&lt;br /&gt;
#from /home/olchansk/sysadm/syslinux/syslinux-6.03 copy&lt;br /&gt;
cp .../efi64/efi/syslinux.efi .&lt;br /&gt;
cp .../efi64/com32/elflink/ldlinux/ldlinux.e64 .&lt;br /&gt;
cp syslinux.efi bootx64.efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux config file: syslinux.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro root=/dev/nvme0n1p2 nomodeset initrd=initramfs.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare system partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/tmp&lt;br /&gt;
mount /dev/nvme0n1p2 /mnt/tmp&lt;br /&gt;
rsync -avx / /mnt/tmp&lt;br /&gt;
cd /mnt/tmp&lt;br /&gt;
#edit etc/fstab&lt;br /&gt;
#edit etc/syslinux/selinux # set selinux to permissive mode because rsync did not copy the selinux labels&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* unmount and reboot&lt;br /&gt;
* restore selinux labels after first boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#login as root&lt;br /&gt;
cd /&lt;br /&gt;
restorecon -R / # can also add &amp;quot;-v&amp;quot; to see progress, but runs much slower&lt;br /&gt;
#edit /etc/sysconfig/selinux # enable selinux&lt;br /&gt;
#shutdown -r now # reboot with selinux enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure UEFI secure  boot =&lt;br /&gt;
&lt;br /&gt;
The above instructions do not quite work if &amp;quot;secure boot&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
These modifications are needed:&lt;br /&gt;
&lt;br /&gt;
* ls -l /boot/efi/EFI/bootko/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
total 140116&lt;br /&gt;
-rwxr-xr-x 1 root root      108 Feb 24 15:47 BOOTX64.CSV&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 bootx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root   217495 Feb 24 16:16 config-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root      105 Feb 24 15:47 grub.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 grubx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initramfs.img&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initrd.img-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root   139968 Feb 24 16:16 ldlinux.e64&lt;br /&gt;
-rwxr-xr-x 1 root root  1269496 Feb 24 15:47 mmx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 shimx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root      171 Feb 24 16:16 syslinux.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root      102 Feb 24 16:16 syslinux.cfg~&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 syslinux.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  4068355 Feb 24 16:16 System.map-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz-4.15.0-74-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** shmix64.efi is a copy from /boot/efi/EFI/ubuntu&lt;br /&gt;
** bootx64.efi is a copy of shimx64.efi (maybe not needed?)&lt;br /&gt;
** grubx64.efi is a copy of syslinux.efi&lt;br /&gt;
* efibootmgr -c -d /dev/nvme0n1 -p 2 -w -L bootko -l &#039;\EFI\bootko\shimx64.efi&#039;&lt;br /&gt;
* efibootmgr -v&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# efibootmgr -v&lt;br /&gt;
BootCurrent: 0000&lt;br /&gt;
Timeout: 1 seconds&lt;br /&gt;
BootOrder: 0000,0001,0002&lt;br /&gt;
Boot0000* bootko        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\BOOTKO\SHIMX64.EFI)&lt;br /&gt;
Boot0001* Hard Drive    BBS(HD,,0x0)..GO..NO........y.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7....................A.......................................&amp;lt;..Gd-.;.A..MQ..L.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7........BO&lt;br /&gt;
Boot0002* ubuntu        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* NOTE: if, after running &amp;quot;efibootmgr -c&amp;quot;, the UUID is zero, then it probably did not take and the entry will vanish after reboot. In my case the mistake was to use &amp;quot;-p 1&amp;quot; instead of &amp;quot;-p 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Boot sequence is this:&lt;br /&gt;
* shmix64.efi - Microsoft-signed boot loader is accepted by secure boot, loads and runs&lt;br /&gt;
* shimx64.efi loads and runs grubx64.efi, this file name is hardwired into the signed shim, cannot be changed&lt;br /&gt;
* grubx64.efi is syslinux.efi (could be anything)&lt;br /&gt;
* syslinux.efi runs, loads syslinux.cfg, loads the linux kernel, loads the initrd, runs the linux kernel with specified flags (ro root=...).&lt;br /&gt;
&lt;br /&gt;
= UEFI syslinux kernel update =&lt;br /&gt;
&lt;br /&gt;
To update the linux kernel booted by UEFI syslinux, use this script:&lt;br /&gt;
* ~root/git/scripts/etc/update_efi.perl&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3025</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=3025"/>
		<updated>2020-09-12T14:30:00Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Configure NIS secondary server (CentOS7) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes ==&lt;br /&gt;
&lt;br /&gt;
* these instructions are periodically updated to include items needed for older/newer versions of Linux. They are marked like this: (SL4.2+) means Scientific Linux 4.2 and newer; (SL4 is equivalent to FC3). (FC5 only) means Fedora Core 5; etc.&lt;br /&gt;
* obsolete items are marked by the &amp;quot;#&amp;quot; sign at the beginning of the line and sometimes have a comment about the reason for removal.&lt;br /&gt;
* typically, we do not &amp;quot;upgrade&amp;quot; machines using the Red Hat &amp;quot;upgrade&amp;quot; function. Instead, we save critical files from the old installation and do a &amp;quot;fresh install&amp;quot; from scratch&lt;br /&gt;
* starting with RHEL7, the recommended OS is CentOS7 (instead of SL7).&lt;br /&gt;
&lt;br /&gt;
== Disk configurations ==&lt;br /&gt;
&lt;br /&gt;
The year is 2019 and SSDs are used exclusively, except for bulk data storage, where one used 6-8-10-12 TB HDDs&lt;br /&gt;
&lt;br /&gt;
For reliability, home directories and data disks must use redundant storage - mdadm raid1 or ZFS raid1/raid6.&lt;br /&gt;
&lt;br /&gt;
For non-critical machines, a single SSD seems to be reliable enough to use as a boot and OS disk. But since any&lt;br /&gt;
storage device can fail at any time without warning, home directories and data disks should use redundant storage.&lt;br /&gt;
&lt;br /&gt;
Note: for data disks bigger than 4-6TB, mdadm raid1/raid6 is no longer recommended because raid rebuild,&lt;br /&gt;
verification and repair time has become unreasonably long. Instead, use ZFS raid1/raid6 which implements online verification,&lt;br /&gt;
repair and disk replacement without requiring machine shutdown or OS down time.&lt;br /&gt;
&lt;br /&gt;
* single SSD - 120GB min - single partition for &amp;quot;/&amp;quot;, no swap partition (create a swap file if swap is needed) - for non-critical machine with no local data storage (OS only)&lt;br /&gt;
* dual SSD - 2x240GB min - all partitions mirrored (RAID1), 30GB &amp;quot;/&amp;quot;, rest for /home1 - for daq station with local user home directories and no bulk data storage&lt;br /&gt;
* single SSD + 2x6-8-10-12TB HDD - SSD partition: all &amp;quot;/&amp;quot;, HDD partition as ZFS raid1 (mirrored) - for daq station with small local bulk data storage&lt;br /&gt;
* single SSD + 6-8x6-8-10-12TB HDD - for small storage server machines - for daq station with local home directories and large bulk data storage.&lt;br /&gt;
&lt;br /&gt;
For VME processors:&lt;br /&gt;
&lt;br /&gt;
* network boot - [[VME-CPU#Network_boot]] - only option for V7648/V7750, do not use for V7805 (no netboot from GigE), optional for V7865/XVB-602&lt;br /&gt;
* USB boot - 8GB USB for V7805, 16GB USB for V7865/XVB-602&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
* save /etc, /var, /root, /opt, (if needed: /usr/local, /tftpboot) by rsync to some data disk (/ladd/data0/root)&lt;br /&gt;
* check that &amp;quot;/&amp;quot; partition (it will be overwritten) is different from /home1 and /data partitions&lt;br /&gt;
* note the MAC addresses of all network interfaces, add them to ladd00 dhcpd.conf to enable PXE boot into the SL &amp;quot;network installer&amp;quot;&lt;br /&gt;
* shutdown&lt;br /&gt;
&lt;br /&gt;
== Running installer (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 can be installed from vanilla CentOS7 installation media or from&lt;br /&gt;
a custom USB key build per there instructions:&lt;br /&gt;
https://daqshare.triumf.ca/~olchansk/linux/CentOS7/&lt;br /&gt;
&lt;br /&gt;
The custom installer makes it easy to use a custom kickstart file (ks.cfg).&lt;br /&gt;
&lt;br /&gt;
Instructions for using the usb-installer:&lt;br /&gt;
&lt;br /&gt;
* disconnect machine from network&lt;br /&gt;
* plug the usb-installer into a usb3 port (blue colour)&lt;br /&gt;
* reboot machine, select booting from usb (press F8 on ASUS motherboards)&lt;br /&gt;
* usb-installer boot menu offers to install CentOS7, go there&lt;br /&gt;
* CentOS7 should boot (many messages scroll on screen)&lt;br /&gt;
* into graphical mode&lt;br /&gt;
* into installer main menu&lt;br /&gt;
* all installer options should &amp;quot;happy&amp;quot; except for the &amp;quot;installation destination&amp;quot;&lt;br /&gt;
* go to the &amp;quot;installation destination&amp;quot; menu&lt;br /&gt;
** unselect all disks except for the SSD where the OS will be installed&lt;br /&gt;
** (MOST IMPORTANT: unselect the USB installer disk!)&lt;br /&gt;
** select &amp;quot;I will configure...&amp;quot;&lt;br /&gt;
** say &amp;quot;done&amp;quot;&lt;br /&gt;
** the &amp;quot;manual partitionning&amp;quot; menu will open&lt;br /&gt;
*** use the &amp;quot;-&amp;quot; button to delete all existing partitions&lt;br /&gt;
*** select &amp;quot;standard partition&amp;quot;&lt;br /&gt;
*** click on the &amp;quot;+&amp;quot; button&lt;br /&gt;
*** in the &amp;quot;Add new partition&amp;quot; dialog, set mount point &amp;quot;/&amp;quot;, capacity blank, click &amp;quot;add mount point&amp;quot;&lt;br /&gt;
*** check capacity (should be full size of SSD), check filesystem type (should be XFS)&lt;br /&gt;
*** say &amp;quot;done&amp;quot;, there will be a warning about absent swap partition, say &amp;quot;done&amp;quot; again.&lt;br /&gt;
*** in the big useless dialog, say &amp;quot;accept changes&amp;quot;&lt;br /&gt;
*** should be back to the &amp;quot;installation summary&amp;quot; screen, &amp;quot;installation destination&amp;quot; should be happy now&lt;br /&gt;
* after everything is happy, say &amp;quot;begin installation&amp;quot;&lt;br /&gt;
* as the installation proceeds, set the password for the root user&lt;br /&gt;
* after installation is complete, reboot the machine&lt;br /&gt;
* unplug the usb-installer, CentOS7 should boot from SSD into the login screen&lt;br /&gt;
* click on &amp;quot;not listed?&amp;quot;, login as root&lt;br /&gt;
* setup network connection:&lt;br /&gt;
** open a terminal&lt;br /&gt;
** start &amp;quot;nm-connection-editor&amp;quot;&lt;br /&gt;
** click on &amp;quot;+&amp;quot; to create a new connection profile&lt;br /&gt;
** select &amp;quot;wired ethernet&amp;quot;&lt;br /&gt;
** select &amp;quot;add profile...&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, set &amp;quot;name&amp;quot; to &amp;quot;static&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, check that &amp;quot;Connect automatically&amp;quot; and &amp;quot;Make available...&amp;quot; is enabled&lt;br /&gt;
** in &amp;quot;IPv4&amp;quot;, set &amp;quot;Addresses&amp;quot; to &amp;quot;manual&amp;quot; instead of &amp;quot;dhcp&amp;quot;&lt;br /&gt;
** enter IP address, netmask 255.255.224.0, gateway 142.90.100.18, dns 142.90.100.19, search triumf.ca&lt;br /&gt;
** say &amp;quot;Add&amp;quot;, then close/quit the network settings&lt;br /&gt;
* connect network cable&lt;br /&gt;
* network should be up, ping ladd00 should work&lt;br /&gt;
* run: yum update -y&lt;br /&gt;
* check new kernel is installed: ls -l /boot&lt;br /&gt;
* logout and restart (good luck finding these buttons in the gui!)&lt;br /&gt;
* confirm correct linux kernel is selected during boot (-229.20, not the original installer kernel)&lt;br /&gt;
* login as root, confirm network is up, proceed with the rest of these instructions&lt;br /&gt;
&lt;br /&gt;
== Configure SSH ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* Login from the console&lt;br /&gt;
* restore the SSH keys from backup (/etc/ssh/*key*)&lt;br /&gt;
* service sshd restart&lt;br /&gt;
* ssh into the new machine as root&lt;br /&gt;
* ssh root@localhost, ctrl-C&lt;br /&gt;
* ### this is done later from Konstantin&#039;s git repository - scp root@ladd00:/root/authorized_keys ~root/.ssh/&lt;br /&gt;
* (not needed for SL5.5 kickstart) check that /etc/ssh/ssh_config contains &amp;quot;ForwardX11 yes&amp;quot; and &amp;quot;ForwardX11Trusted yes&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;  ForwardX11 yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
echo &amp;quot;  ForwardX11Trusted yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post installation CentOS7 ==&lt;br /&gt;
&lt;br /&gt;
Set hostname: (use full name, i.e. daq11.triumf.ca)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;olchansk@triumf.ca amaudruz@triumf.ca lindner@triumf.ca bsmith@triumf.ca&amp;quot; &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
chmod a+r /var/log/messages&lt;br /&gt;
chmod a+r /var/log/yum.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activate rc.local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+x /etc/rc.local&lt;br /&gt;
chmod a+x /etc/rc.d/rc.local  # TL edit&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable &amp;quot;persistent network names&amp;quot; (DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/touch /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
/bin/rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
#shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypbind authconfig&lt;br /&gt;
echo &amp;quot;NISTIMEOUT=5&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
echo &amp;quot;NETWORKWAIT=yes&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
authconfig --enablenis --enablepreferdns --nisdomain LADD-NIS --nisserver ladd00.triumf.ca --update&lt;br /&gt;
ypwhich&lt;br /&gt;
ypcat -k passwd&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On the master NIS node (ladd00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
* Use &amp;quot;system-config-users&amp;quot; to add local user accounts&lt;br /&gt;
* enable selinux ssh key login to nfs mounted home directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P use_nfs_home_dirs 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* all the same as for CentOS7&lt;br /&gt;
* ensure correct boot order for ypbind (in CentOS 8.1 ypbind is started before network is ready, service file uses &amp;quot;Wants&amp;quot; instead of &amp;quot;After&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/ypbind.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=network-online.target\n&amp;quot; &amp;gt; /etc/systemd/system/ypbind.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat ypbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS secondary server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Enable local NIS server, make local machine use it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypserv&lt;br /&gt;
/usr/lib64/yp/ypinit -s ladd00 ### (/usr/lib/yp/ypinit on 32-bit machines)&lt;br /&gt;
### ypinit will give lots of errors about &amp;quot;rpc.ypxfrd failed: RPC: Can&#039;t decode result&amp;quot;; can be ignored&lt;br /&gt;
systemctl enable rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
systemctl start rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
emacs -nw /etc/yp.conf # change &amp;quot;domain XXX server YYY.triumf.ca&amp;quot; to read &amp;quot;domain XXX server localhost&amp;quot;&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich # should say &amp;quot;localhost&amp;quot;&lt;br /&gt;
ypcat -k auto.master # should work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punch hole in the firewall: (or &amp;quot;make&amp;quot; on NIS master will complain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo YPSERV_ARGS=\&amp;quot;-p 800\&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --add-service rpc-bind --permanent&lt;br /&gt;
firewall-cmd --add-port=800/tcp --add-port=800/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on the NIS master:&lt;br /&gt;
** add the new machine to /var/yp/ypservers, run &amp;quot;make -C /var/yp&amp;quot; and also &amp;quot;cd /var/yp; yppush -h newmachine ypservers&amp;quot;&lt;br /&gt;
** if using /var/yp/securenets, copy it from NIS master to new NIS secondary server&lt;br /&gt;
&lt;br /&gt;
Enable hourly NIS update cron job (DO THIS AFTER git pull scripts, see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd etc&lt;br /&gt;
cd ~/git/scripts/etc; ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure AUTOFS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl start autofs&lt;br /&gt;
ls -l /daq/daqshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Label Selinux labels ==&lt;br /&gt;
&lt;br /&gt;
When upgrading non-selinux machines (el6) to el7 (selinux enforcing) the existing&lt;br /&gt;
user home directories will not have the correct selinux labels and many things&lt;br /&gt;
will not work, including ssh logins (sshd cannot access ~user/.ssh files).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
semanage fcontext -a -e /home /home1 ### selinux has special rules for /home, assign them to /home1&lt;br /&gt;
restorecon -R -v /home1 ### apply the new rules to files in /home1&lt;br /&gt;
ls -Zd /home1/alpha/.ssh&lt;br /&gt;
# should say: drwx------. alpha users system_u:object_r:ssh_home_t:s0  /home1/alpha/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure time (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Time server ntpd was replaced by chronyd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install chrony&lt;br /&gt;
echo server time1 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time2 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time3 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
systemctl enable chronyd&lt;br /&gt;
systemctl restart chronyd&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if desired, edit /etc/chrony.conf, remove non-triumf time servers&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Disable yum-cron:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --erase yum-cron&lt;br /&gt;
/bin/rm -v /var/lock/subsys/yum-cron&lt;br /&gt;
/bin/rm -v /etc/cron.daily/0yum-daily.cron&lt;br /&gt;
/bin/rm -v /etc/cron.hourly/0yum-hourly.cron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable yum-autoupdate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y epel-release&lt;br /&gt;
yum install -y yum-changelog yum-protectbase yum-tsflags yum-versionlock&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm&lt;br /&gt;
#rpm -vh --install https://daqshare.triumf.ca/~olchansk/linux/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm https://daqshare.triumf.ca/~olchansk/linux/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
systemctl enable yum-autoupdate&lt;br /&gt;
systemctl start yum-autoupdate&lt;br /&gt;
systemctl status yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase yum-autoupdate&lt;br /&gt;
/bin/rm -f /etc/sysconfig/yum-autoupdate.rpmsave&lt;br /&gt;
/bin/rm -f /var/lock/subsys/yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dnf-automatic&lt;br /&gt;
systemctl enable --now dnf-automatic.timer&lt;br /&gt;
systemctl list-timers *dnf-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit /etc/dnf/automatic.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apply_updates = yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure system services (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* systemctl list-unit-files | grep enabled | sort ### (to see enabled services)&lt;br /&gt;
* disable unwanted services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable bluetooth&lt;br /&gt;
systemctl disable dm-event&lt;br /&gt;
systemctl disable dmraid-activation&lt;br /&gt;
systemctl disable iscsid&lt;br /&gt;
systemctl disable iscsi&lt;br /&gt;
systemctl disable iscsiuio&lt;br /&gt;
systemctl disable libvirtd&lt;br /&gt;
systemctl disable lvm2-lmetad&lt;br /&gt;
systemctl disable lvm2-monitor&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl disable multipathd&lt;br /&gt;
systemctl disable netcf-transaction&lt;br /&gt;
systemctl disable lvm2-lvmetad.socket&lt;br /&gt;
systemctl disable lvm2-lvmpolld.socket&lt;br /&gt;
systemctl disable iscsid.socket&lt;br /&gt;
systemctl disable iscsiuio.socket&lt;br /&gt;
#systemctl disable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erase unwanted packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* PackageKit # bugs users about security updates, hogs yum lock&lt;br /&gt;
* perl-homedir # creates unwanted $HOME/perl5&lt;br /&gt;
* ModemManager # thinks that all USB-attached devices are modems&lt;br /&gt;
* pcp # sends error email to itself, does not work&lt;br /&gt;
* abrt # sends email to root about useless crashes, i.e. crash of X when machine is rebooted&lt;br /&gt;
* rear # some kind of backup and recovery tool, not clear what it does, but it sends email complaining how it is broken&lt;br /&gt;
* bash-completion # &amp;quot;echo $HOME/&amp;lt;TAB&amp;gt;&amp;quot; becomes &amp;quot;echo \$HOME&amp;quot; (notice &amp;quot;\&amp;quot; added before &amp;quot;$&amp;quot;) preventing tab-completion from doing anything useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase PackageKit perl-homedir ModemManager pcp abrt abrt-libs abrt-gui-libs rear bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable unwanted package &amp;quot;tracker&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tracker&amp;quot; package is part of the GNOME desktop, it scans the content of all files&lt;br /&gt;
into a database for quick searching.&lt;br /&gt;
&lt;br /&gt;
When it malfunctions, bad things happen, i.e. read through&lt;br /&gt;
https://bugzilla.redhat.com/show_bug.cgi?id=747689&lt;br /&gt;
&lt;br /&gt;
Specific problem I see is that it floods the system log with error messages. Also &lt;br /&gt;
consumes network and filesystem bandwidth for NFS mounted home directories.&lt;br /&gt;
&lt;br /&gt;
This package cannot be removed by &amp;quot;yum erase tracker&amp;quot; dues to dependencies&lt;br /&gt;
from core GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
Instead, do this to deactivate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod -x /usr/libexec/tracker-*&lt;br /&gt;
chmod -x /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/libexec/tracker-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure external package repositories (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
EPEL: (addtional packages)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel modules and drivers) (CentOS8)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install elrepo-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel drivers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;br /&gt;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm&lt;br /&gt;
yum -y install yum-plugin-fastestmirror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed to continue with installation ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
(these packages are sometimes missing, they are needed to follow following instructions instructions)&lt;br /&gt;
&lt;br /&gt;
(SL6.5: libotf is a dependancy of emacs - SL6.5 installer fails to install it)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install ed patch wget git libotf gdisk emacs perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Konstantin&#039;s scripts ==&lt;br /&gt;
&lt;br /&gt;
(+Centos7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go back to the NIS slave server and install the hourly NIS update cron job.&lt;br /&gt;
&lt;br /&gt;
== Enable yum version lock ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install yum-plugin-versionlock&lt;br /&gt;
#yum versionlock packagename # yum versionlock rpcbind&lt;br /&gt;
#yum versionlock list # list locked packages&lt;br /&gt;
#yum versionlock delete packagename # unlock given package&lt;br /&gt;
#yum versionlock clear # delete all locks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure trusted ssh keys ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
interrupt by Ctrl-C&lt;br /&gt;
/bin/cp ~/git/scripts/etc/authorized_keys ~/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure hardware sensors ==&lt;br /&gt;
&lt;br /&gt;
* yum -y install lm_sensors&lt;br /&gt;
* sensors-detect (accept default answer to all questions - press ENTER)&lt;br /&gt;
* systemctl restart lm_sensors&lt;br /&gt;
* sensors (to see available sensors)&lt;br /&gt;
&lt;br /&gt;
If no sensors are detected by standard drivers, follow motherboard-specific instructions at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Configure IPMI sensors ==&lt;br /&gt;
&lt;br /&gt;
Some machines support the IPMI interface for monitoring the hardware: fan speeds, temperatures, voltages.&lt;br /&gt;
&lt;br /&gt;
* find out if IPMI is supported. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dmidecode | grep -i ipmi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
if output is not blank, IPMI is maybe supported.&lt;br /&gt;
* install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
service ipmi start&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
chkconfig ipmi on&lt;br /&gt;
chkconfig ipmievd on&lt;br /&gt;
service ipmi restart&lt;br /&gt;
service ipmievd restart&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (CentOS7) install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
systemctl start ipmi&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
systemctl list-unit-files | grep -i ipmi&lt;br /&gt;
systemctl enable ipmi&lt;br /&gt;
systemctl restart ipmi&lt;br /&gt;
systemctl status ipmi&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
systemctl status ipmievd&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if ipmievd complains about SEL buffer overflow, clear it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipmitool sel list ### show ipmi messages in raw format&lt;br /&gt;
ipmitool sel elist ### show ipmi messages in useful format&lt;br /&gt;
ipmitool sel elist &amp;gt; file ### save ipmi messages into a file&lt;br /&gt;
ipmitool sel clear  ### clear all accumulated ipmi messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* useful ipmi commands:&lt;br /&gt;
** ipmitool sensor -- read hardware sensors&lt;br /&gt;
** ipmitool sel elist -- report all accumulated messages&lt;br /&gt;
&lt;br /&gt;
== Configure ECC memory ==&lt;br /&gt;
&lt;br /&gt;
* check that machine has ECC memory: dmidecode --type memory | grep -i ecc&lt;br /&gt;
&lt;br /&gt;
Configure mcelog (machine check exception)&lt;br /&gt;
&lt;br /&gt;
* yum install mcelog&lt;br /&gt;
* check that mcelog is running: ps -efw | grep mcelog&lt;br /&gt;
* (el6) chkconfig mcelogd on; service mcelogd restart&lt;br /&gt;
* (el7) systemctl status mcelog.service; systemctl enable mcelog.service; systemctl restart mcelog.service&lt;br /&gt;
&lt;br /&gt;
Check for MCE (machine check exception) messages:&lt;br /&gt;
&lt;br /&gt;
* mcelog --client&lt;br /&gt;
* grep -i mce /var/log/messages*&lt;br /&gt;
* grep -i ecc /var/log/messages*&lt;br /&gt;
&lt;br /&gt;
Configure EDAC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install edac-utils&lt;br /&gt;
edac-ctl --mainboard&lt;br /&gt;
edac-ctl --status&lt;br /&gt;
lsmod | grep edac&lt;br /&gt;
modprobe ie31200_edac ### driver for Intel E3-1200 series ECC memory&lt;br /&gt;
&lt;br /&gt;
[root@grsmid00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
... empty&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
drwxr-xr-x. 15 root root    0 Oct 25 16:40 mc0&lt;br /&gt;
...&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_noinfo_count&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow3&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 max_location&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 mc_name&lt;br /&gt;
drwxr-xr-x. 2 root root    0 Oct 25 16:40 power&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank3&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank4&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank5&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank6&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank7&lt;br /&gt;
--w-------. 1 root root 4096 Oct 25 16:40 reset_counters&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 seconds_since_reset&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 size_mb&lt;br /&gt;
lrwxrwxrwx. 1 root root    0 Oct  2 12:02 subsystem -&amp;gt; ../../../../../bus/mc0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_noinfo_count&lt;br /&gt;
-rw-r--r--. 1 root root 4096 Oct 25 16:40 uevent&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util -s&lt;br /&gt;
edac-util: EDAC drivers are loaded. 1 MC detected&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure SMARTD (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 smartd config files send deficient email notices about disk failures. Overwrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd.conf /etc/smartmontools/&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd_warning.sh /etc/smartmontools/&lt;br /&gt;
systemctl enable smartd&lt;br /&gt;
systemctl restart smartd&lt;br /&gt;
systemctl status smartd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable User Disk Quotas (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* read http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html&lt;br /&gt;
* emacs -nw /etc/fstab, add &amp;quot;grpquota,usrquota&amp;quot; to filesystem options, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@isdaq00 home1]# grep quota /etc/fstab&lt;br /&gt;
UUID=5a2aefbd-45db-475e-841e-12ec89220fbd /home1 ext4 defaults,grpquota,usrquota 1 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /; umount /home1; mount /home1&lt;br /&gt;
* quotacheck -cug /home1&lt;br /&gt;
* quotacheck -avug&lt;br /&gt;
* quotaon -av&lt;br /&gt;
* quota system is now active&lt;br /&gt;
* increase the soft quota time limit from default 7days to 30 or 60 days: edquota -t&lt;br /&gt;
* set quotas for all users (see below)&lt;br /&gt;
* setup warnquota:&lt;br /&gt;
** create warnquota config file: emacs -nw /etc/warnquota.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# values can be quoted:&lt;br /&gt;
MAIL_CMD        = &amp;quot;/usr/sbin/sendmail -t&amp;quot;&lt;br /&gt;
FROM            = root&lt;br /&gt;
SUBJECT         = User %i@%h exceeded allocated disk quota&lt;br /&gt;
CC_TO           = &amp;quot;root&amp;quot;&lt;br /&gt;
# If you set this variable CC will be used only when user has less than&lt;br /&gt;
# specified grace time left (examples of possible times: 5 seconds, 1 minute,&lt;br /&gt;
# 12 hours, 5 days)&lt;br /&gt;
# CC_BEFORE = 2 days&lt;br /&gt;
SUPPORT         = &amp;quot;root&amp;quot;&lt;br /&gt;
# Text in the beginning of the mail (if not specified, default text is used)&lt;br /&gt;
# This way text can be split to more lines&lt;br /&gt;
# Line breaks are done by &#039;|&#039; character&lt;br /&gt;
# The expressions %i, %h, %d, and %% are substituted for user/group name,&lt;br /&gt;
# host name, domain name, and &#039;%&#039; respectively. For backward compatibility&lt;br /&gt;
# %s behaves as %i but is deprecated.&lt;br /&gt;
MESSAGE         = User &amp;quot;%i&amp;quot; on &amp;quot;%h&amp;quot; has exceeded the allocated disk quota.||Please delete any unnecessary files on following filesystems or|contact the system administrato&lt;br /&gt;
r to increase your quota allocation:|&lt;br /&gt;
SIGNATURE       = --|automated email from warnquota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** note that %i@%h in the SUBJECT line do not seem to work&lt;br /&gt;
** create cron job: emacs -nw /etc/cron.daily/warnquota&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
warnquota&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** chmod a+x /etc/cron.daily/warnquota&lt;br /&gt;
** touch /etc/crontab&lt;br /&gt;
&lt;br /&gt;
Useful commands for managing quotas:&lt;br /&gt;
* repquota -a | sort -n -k3 ### show quota of all users sorted by disk usage&lt;br /&gt;
* edquota -u username ### open &amp;quot;vi&amp;quot; editor to change user quotas&lt;br /&gt;
* repquote -a | grep username ### report quota for given user&lt;br /&gt;
* setquota -u username 0 0 0 0 /home1 ### disable quotas for given user&lt;br /&gt;
* setquota -u username 50000000 100000000 0 0 /home1 ### set quotas for 50GB soft and 100GB hard&lt;br /&gt;
* edquota -t ### change user quota time limits&lt;br /&gt;
* edquote -tg ### change group quota time limits&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* create /etc/exports. example: (fsid numbers should be unique and increase 1,2,3,...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async,fsid=1)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async,fsid=2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* enable things, start them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=nfs&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl start nfs-server&lt;br /&gt;
systemctl status nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -efw | grep rpc.mountd # should be running!&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=mountd&lt;br /&gt;
firewall-cmd --permanent --add-service=rpc-bind&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts.allow, add or uncomment &amp;quot;mountd: 142.90.0.0/255.255.0.0&amp;quot;&lt;br /&gt;
* create /etc/exports. example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* chkconfig nfs on&lt;br /&gt;
* chkconfig nfslock on&lt;br /&gt;
* service nfs restart&lt;br /&gt;
&lt;br /&gt;
Then on ladd00 need to do&lt;br /&gt;
* ssh to root@ladd00&lt;br /&gt;
* edit /etc/auto.daq to add new machine...&lt;br /&gt;
* make -C /var/yp&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 SERVER (SL6) ==&lt;br /&gt;
&lt;br /&gt;
* if used with NIS, same as NFSv3&lt;br /&gt;
* if used as standalone, need to edit idmapd.conf - set the &amp;quot;Domain&amp;quot; name to the same value on NFS server and NFS slave (default automagically determined value does not always work). More TBW.&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups ==&lt;br /&gt;
&lt;br /&gt;
AMANDA backups are already enabled by TRIUMF kickstart installs. For non-kickstart installation, follow instructions at [[http://amanda/~amanda http://amanda/~amanda]], or look at &amp;quot;/triumfcs/trshare/olchansk/linux/amanda/amanda-enable.perl&amp;quot;. As final step, use [[https://helpdesk.triumf.ca https://helpdesk.triumf.ca]] to contact TRIUMF CS to add this new machine to the amanda backup list.&lt;br /&gt;
&lt;br /&gt;
* yum install triumf-amanda&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install amanda-client&lt;br /&gt;
systemctl list-unit-files | grep -i amanda&lt;br /&gt;
#systemctl enable amanda&lt;br /&gt;
systemctl enable amanda.socket&lt;br /&gt;
systemctl enable amanda-udp.socket&lt;br /&gt;
systemctl restart amanda.socket&lt;br /&gt;
systemctl restart amanda-udp.socket&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=amanda-client&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
echo amanda.triumf.ca amanda amdump &amp;gt;&amp;gt; /var/lib/amanda/.amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On amanda server, add new machine to the disklist, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amcheck -c daily titan00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable DCACHE ==&lt;br /&gt;
&lt;br /&gt;
DAQ dcache server is mounted as&lt;br /&gt;
&lt;br /&gt;
/daq/pnfs/triumf.ca/data/&lt;br /&gt;
&lt;br /&gt;
For Centos-7 machines, you need to adjust the firewall rules in order to be able to communicate with the trdata machines; this is only necessary if you are copying data to trdata.  The firewall changes are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.212/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.107.156/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.219/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructions are unnecessary &lt;br /&gt;
* # mkdir -p /pnfs&lt;br /&gt;
* # edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs &amp;amp;&amp;quot;&lt;br /&gt;
* # . /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
For more information on, see [[TrdataDcache]] dcache page.&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 Ganglia instructions (EPEL7 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/multicpu.conf   # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/netstats.pyconf # spews errors into syslog&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/diskstat.pyconf # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/procstat.pyconf # do not create /tmp/gmond.conf&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF DAQ packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
wget http://daq.triumf.ca/~daqweb/yum/triumf-daq.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Konstantin&#039;s packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install diskscrub emailonreboot monitor_nfs &amp;quot;ganglia-*&amp;quot; triumf_nodeinfo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install memtest and PXE boot ==&lt;br /&gt;
&lt;br /&gt;
!!!DO NOT DO THIS!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.10&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&lt;br /&gt;
emacs -nw /boot/grub/grub.conf&lt;br /&gt;
title memtest86+-5.01&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-5.01.bin.gz&lt;br /&gt;
title memtest86+-4.20&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.20.bin.gz&lt;br /&gt;
title memtest86+-4.10&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.10&lt;br /&gt;
title pxeboot&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install triumf_nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl --config ladd00.triumf.ca:8600&lt;br /&gt;
emacs -nw /etc/nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl ladd00.triumf.ca:8600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install gonodeinfo node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+Ubuntu, +CentOS7, +CentOS8)&lt;br /&gt;
&lt;br /&gt;
go to https://bitbucket.org/dd1/gonodeinfo&lt;br /&gt;
follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
# or git clone https://daq.triumf.ca/~olchansk/git/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: ladd00.triumf.ca:8601&lt;br /&gt;
* run gonodeinfo -e&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run gonodereceive -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== Install latest system updates ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum update -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF Printers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable syslog spam (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 config is spamming the syslog with useless messages &amp;quot;systemd: Starting Session&amp;quot;, etc. Disable this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo auditctl -e 0 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo /usr/bin/systemd-analyze set-log-level notice &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install basic system packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
(if starting from minimal system, basic system packages required:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y which psmisc redhat-lsb-core xorg-x11-xauth xterm emacs-nox rsync tcpdump strace nfs-utils sysstat iftop tcsh&lt;br /&gt;
yum install -y gcc gcc-c++ gdb glibc-static libstdc++-static zlib zlib-devel openssl-devel httpd-tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed for QUARTUS, ROOT, EPICS and MIDAS DAQ ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.x86_64 sysstat &amp;quot;libusb-devel*&amp;quot; unixODBC-devel postgresql-devel libxml2-devel libXpm-devel libgfortran git compat-readline43 &amp;quot;graphviz*&amp;quot; dcap &amp;quot;tigervnc*&amp;quot; telnet glibc&amp;quot;*&amp;quot; strace &amp;quot;fftw*&amp;quot; libpng &amp;quot;freetype*&amp;quot; xpdf &amp;quot;xemacs*&amp;quot; tkcvs xterm mutt &amp;quot;*-g77*&amp;quot; joe &amp;quot;libXmu*&amp;quot; dcap-devel gsl-devel pcre-devel h5py gd-devel xorg-x11-fonts&amp;quot;*&amp;quot; minicom xfig&amp;quot;*&amp;quot; perl-BSD-Resource &amp;quot;net-snmp-*&amp;quot; readline-static git-all nasm imake tcl-devel gv xorg-x11-twm expat-devel screen compat-readline5 ImageMagick ImageMagick-devel wget alacarte scipy numpy sympy nedit gnuplot php-cli php-domxml-php4-php5 php-gd php-fpdf php-cli kdebase cmake tcpdump sqlite sqlite-devel kdegraphics gdisk lsof gconf-editor iftop tk-devel mcelog kdm blt itcl lz4 bzip2 pbzip2 apr-devel apr-util-devel net-tools golang&amp;quot;*&amp;quot; --exclude golang-cover&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang-pkg&amp;quot;*&amp;quot; --exclude golang-github&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;git&amp;quot;*&amp;quot; mesa&amp;quot;*&amp;quot; xerces-c&amp;quot;*&amp;quot; diffuse clang i2c-tools  texlive-revtex texlive-revtex4 kile kbibtex xrdp glibc.i686 gimp gimp-data-extras perl-GD&amp;quot;*&amp;quot; perl-Math&amp;quot;*&amp;quot; perl-Statistics-Basic cmake3 cmake3-gui extra-cmake-modules python2-pip x2go&amp;quot;*&amp;quot; mariadb-devel glibc-devel.i686 libzstd&lt;br /&gt;
&lt;br /&gt;
== Install optional packages ==&lt;br /&gt;
&lt;br /&gt;
!! DO NOT DO THIS !!&lt;br /&gt;
&lt;br /&gt;
(do not install boost on 32-bit machines)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken &amp;quot;boost-*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(packages for 32-bit software compilation on 64-bit machines. this is optional)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.i386 giflib.i686 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel.i686 openssl-devel.i686 unixODBC-devel.i686 libstdc++-devel.i386 libstdc++-devel.i686 &amp;quot;zlib-*.i686&amp;quot; &amp;quot;libXext-*.i686&amp;quot; &amp;quot;libXtst-*.i686&amp;quot; glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel.i686 gsl-devel.i686 pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 gd-devel.i686 readline-devel.i686 ncurses-devel.i686 libXdmcp.i686 readline-static.i686 compat-readline5.i686&lt;br /&gt;
&lt;br /&gt;
yum install boost-devel.i686&lt;br /&gt;
&lt;br /&gt;
(separately install these packages - they collide with the big bunch above)&lt;br /&gt;
&lt;br /&gt;
yum install rdesktop&lt;br /&gt;
&lt;br /&gt;
yum reinstall urw-fonts&lt;br /&gt;
&lt;br /&gt;
== Install libraries for PHYSICA (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To run physica built on el6 from git sources on el7, do this:&lt;br /&gt;
&lt;br /&gt;
(building physica on el7 is nort supported at this time)&lt;br /&gt;
&lt;br /&gt;
(see more http://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install libX11.i686 gd.i686 libpng12.i686 readline.i686 compat-libf2c-34.i686&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install additional desktop environements (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# LXQT (from EPEL)&lt;br /&gt;
# NOT COMPATIBLE WITH el7.7 # yum -y install &amp;quot;lxqt*&amp;quot;&lt;br /&gt;
# Cinnamon desktop (from EPEL)&lt;br /&gt;
yum -y install cinnamon&lt;br /&gt;
# KDE5 not available yet&lt;br /&gt;
# MATE (from epel)&lt;br /&gt;
yum -y groupinstall &amp;quot;MATE Desktop&amp;quot;&lt;br /&gt;
yum -y install mate-common mate-icon-theme-faenza mate-netspeed mate-sensors-applet mate-themes-extras mate-utils&lt;br /&gt;
yum -y erase ModemManager abrt abrt-libs abrt-gui-libs&lt;br /&gt;
# XFCE4 (from EPEL)&lt;br /&gt;
yum -y groupinstall xfce&lt;br /&gt;
yum -y install &amp;quot;xfce*plugin&amp;quot; xfce4-about --exclude xfce4-hamster-plugin&lt;br /&gt;
yum -y erase bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lighdm login manager (from EPEL)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install lightdm lightdm-kde lightdm-qt lightdm-qt5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* and switch from gdm to lighdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable gdm.service&lt;br /&gt;
systemctl enable lightdm.service&lt;br /&gt;
(systemctl stop gdm; systemctl restart lightdm) &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SMART scripts ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -sf ~/git/scripts/smart-status/smart-status.perl ~/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install NTFS drivers ==&lt;br /&gt;
&lt;br /&gt;
yum install ntfs-3g ntfsprogs (from EPEL)&lt;br /&gt;
&lt;br /&gt;
== Install HFS and HFS+ drivers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
yum --disablerepo=\* --enablerepo=elrepo install kmod-hfs kmod-hfsplus&lt;br /&gt;
&lt;br /&gt;
== Install Google Chrome web browser (64-bit CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/google-chrome-64.repo /etc/yum.repos.d/&lt;br /&gt;
yum install google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable monitoring of HTTPS certificates ==&lt;br /&gt;
&lt;br /&gt;
On SL6, CentOS7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install crypto-utils&lt;br /&gt;
/etc/cron.daily/certwatch&lt;br /&gt;
strace -f /etc/cron.daily/certwatch  |&amp;amp; grep open  | grep crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable 100dpi fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/share/X11/fonts/100dpi /etc/X11/fontpath.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable crontab @reboot for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
el7 has a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory&lt;br /&gt;
is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be&lt;br /&gt;
started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/crond.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/crond.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat crond.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependacy tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 configuration prevents all access to servers running on the local machine, including access to MIDAS mhttpd (tcp port 8443) and mserver (all tcp ports).&lt;br /&gt;
&lt;br /&gt;
To enable access to mhttpd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=8443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access to the mserver from a specific host: (replace 142.90.111.175 with the IP address of the permitted host)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.111.175/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access from the private network (replace &amp;quot;192.168.1.0&amp;quot; with your private network number):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.0/24&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for EPICS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To enable access to TRIUMF EPICS servers, do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.132.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For UCN the controls people seem to have EPICS setup on a different server; this might be true for CMMS as well.  In this case the firewall rule change should be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.139.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable gdm and X11 (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initctl stop prefdm&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/prefdm.override&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/splash-manager.override&lt;br /&gt;
initctl reload-configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then enable login on default console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;plymouth quit&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo &amp;quot;X_TTY=xxx/dev/tty1&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install JAVAWS (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
* to run Java &amp;quot;web start&amp;quot; jnlp files (EVO, SEEVOGH, etc): javaws Downloads/spider.jnlp&lt;br /&gt;
* install javaws:&lt;br /&gt;
* yum install icedtea-web icedtea-web-javadoc&lt;br /&gt;
&lt;br /&gt;
== Install firefox java plugin (OPTIONAL, DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
This installs the Oracle Java plugin:&lt;br /&gt;
&lt;br /&gt;
* rpm -vh --install ~deap/jdk-7u15-linux-x64.rpm&lt;br /&gt;
* ls -l /usr/lib64/mozilla/plugins/&lt;br /&gt;
* ln -s /usr/java/jdk1.7.0_15/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/&lt;br /&gt;
* start firefox, go edit-&amp;gt;preferences-&amp;gt;general-&amp;gt;manage add-ons-&amp;gt;plugins&lt;br /&gt;
* &amp;quot;java plugin 1.7.0_15&amp;quot; should be listed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure USB device permissions ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
&lt;br /&gt;
== Disable modem-manager ==&lt;br /&gt;
&lt;br /&gt;
The modem-manager will try to talk to any serial devices attached to USB serial ports. It assumes that those devices are modems and will send out modem-specific commands. if the devices are not modems and do not understand or do not like modem commands, well that&#039;s too bad. modem-manager is installed by the ModemManager package required by the NetworkManager package, and there is no configuration setting to turn modem-manager off.&lt;br /&gt;
&lt;br /&gt;
One way to disable it is: chmod a= /usr/sbin/modem-manager&lt;br /&gt;
&lt;br /&gt;
Another way to disable it is by forced uninstall: rpm --erase --nodeps ModemManager&lt;br /&gt;
&lt;br /&gt;
Remember to kill the running copy: killall -KILL modem-manager&lt;br /&gt;
&lt;br /&gt;
Caveat: it is not clear if modem-manager would not be resurrected by an update to the NetworkManager or ModemManager packages.&lt;br /&gt;
&lt;br /&gt;
== Configure Altera jtagd ==&lt;br /&gt;
&lt;br /&gt;
(if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/jtagd&lt;br /&gt;
echo &#039;Password = &amp;quot;123&amp;quot;;&#039; &amp;gt; /etc/jtagd/jtagd.conf&lt;br /&gt;
cp -pv /triumfcs/trshare/olchansk/altera/11.0/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start local jtagd: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagd&lt;br /&gt;
* test local connection: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagconfig&lt;br /&gt;
* test remote connection (add this machine to your .jtag.conf, run jtagconfig&lt;br /&gt;
&lt;br /&gt;
For more information, go to [[Quartus]]&lt;br /&gt;
&lt;br /&gt;
== Install EOS ==&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
http://eos-docs.web.cern.ch/eos-docs/quickstart/setup_repo.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -vh --install https://dss-ci-repo.web.cern.ch/dss-ci-repo/eos/citrine/tag/el-7/x86_64/eos-repo-el7-generic-1.noarch.rpm&lt;br /&gt;
yum-config-manager --disable eos-citrine # disable auto-update because all packages are not signed&lt;br /&gt;
yum-config-manager --disable eos-dep # disable auto-update because all packages are not signed.&lt;br /&gt;
yum install eos-client eos-fuse --enablerepo=eos-citrine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install fix for the el7 systemd dbus boot hang ==&lt;br /&gt;
&lt;br /&gt;
Around early Summer 2018 el7 started showing a boot problem. In the nutshell,&lt;br /&gt;
there is a problem with the dbus connection between dbus and systemd that&lt;br /&gt;
prevents polkit, firewalld, etc from starting. The system eventually boots&lt;br /&gt;
enough that one can ssh into it, but most things do not work. Notably,&lt;br /&gt;
polkit is not running, firewalld is not running, ssh login takes about 15-30 second.&lt;br /&gt;
&lt;br /&gt;
Solution is to add a special systemd service to check that dbus started correctly.&lt;br /&gt;
It that runs after dbus is started, but before it is used, and it restarts dbus in a loop&lt;br /&gt;
with a delay until dbus starts correctly. In testing, dbus always starts correctly after&lt;br /&gt;
the first retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.perl /usr/bin/&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable systemd-check-dbus&lt;br /&gt;
systemctl start systemd-check-dbus&lt;br /&gt;
systemctl status systemd-check-dbus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After linux boots, if everything was okey, the script will report this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iris01 ~]# systemctl status systemd-check-dbus&lt;br /&gt;
...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca systemd[1]: Starting Check that systemd is registered with dbus...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca sh[4283]: Starting check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.DBus&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.systemd1&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: systemd1 dbus service exists, success!&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: Finished check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca systemd[1]: Started Check that systemd is registered with dbus.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the boot problem happened, the script will report about restarting dbus.&lt;br /&gt;
&lt;br /&gt;
Note: the systemd service file adjusts the start order of other services, this adjustment seems to reduce the probability of the problem.&lt;br /&gt;
&lt;br /&gt;
== Configure GRUB boot loader (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub, remove &amp;quot;rhgb&amp;quot; and &amp;quot;quiet&amp;quot; from GRUB_CMDLINE_LINUX&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg&lt;br /&gt;
* grub2-editenv list # show contents of boot environement file&lt;br /&gt;
* /bin/rm /boot/grub2/grubenv # remove stale settings, make grub2 boot from first entry in config file&lt;br /&gt;
&lt;br /&gt;
== Install memtest86+ (CentOS7, CentOS8) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install memtest86+&lt;br /&gt;
/bin/cp -vf /usr/share/memtest86+/20_memtest86+ /etc/grub.d/&lt;br /&gt;
/bin/chmod a+x /etc/grub.d/20_memtest86+ &lt;br /&gt;
grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable ELREPO ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo_triumf.repo&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reduce install size (optional) ==&lt;br /&gt;
&lt;br /&gt;
This is optional. Only do this if reducing the size of the OS image is very important.&lt;br /&gt;
&lt;br /&gt;
Do this for VME processors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum erase &amp;quot;texlive*&amp;quot; &amp;quot;java*&amp;quot; &amp;quot;boost*&amp;quot; libreoffice&amp;quot;*&amp;quot;&lt;br /&gt;
#yum erase &amp;quot;xemacs*&amp;quot;&lt;br /&gt;
yum erase &amp;quot;libstdc++-docs&amp;quot;&lt;br /&gt;
yum erase firefox google-chrome&amp;quot;*&amp;quot;&lt;br /&gt;
yum clean all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm -rf /usr/share/help&lt;br /&gt;
/bin/rm -rf /usr/share/doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update from el7.6 to el7.7 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum versionlock delete zfs&lt;br /&gt;
yum versionlock delete kernel&lt;br /&gt;
yum -y update &amp;quot;yum*&amp;quot; &amp;quot;rpm*&amp;quot;&lt;br /&gt;
yum -y erase libqtxdg lxqt-qtplugin ### LXQT is not compatible&lt;br /&gt;
yum update&lt;br /&gt;
after rebooting into el7.7, follow instructions for updating ZFS from version 0.7 to 0.8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
== Special hardware settings ==&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 1207 or newer&lt;br /&gt;
* (before CentOS7) sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
* CentOS7: installs correct drivers automatically&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair-II mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2607 or newer&lt;br /&gt;
* for the onboard IDE to work, add &amp;quot;all-generic-ide&amp;quot; to kernel boot options in grub.conf&lt;br /&gt;
* sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
&lt;br /&gt;
=== ASUS P7P55D EVO mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2004 or newer&lt;br /&gt;
* SL6 - install special driver for on board PCIe GigE network port and disable on board PCI GigE network port:&lt;br /&gt;
** yum --enablerepo elrepo install kmod-r8168 kmod-r8169&lt;br /&gt;
** # do not do this: sed &#039;s/^blacklist/#blacklist/&#039; -i /etc/modprobe.d/blacklist-r8169.conf&lt;br /&gt;
** reboot&lt;br /&gt;
** verify that correct drivers are loaded: ethtool -i eth0; ethtool -i eth1&lt;br /&gt;
** note: there will be no eth1 - r8169 driver is disabled.&lt;br /&gt;
&lt;br /&gt;
=== ASUS P6X58-E-WS mobo ===&lt;br /&gt;
&lt;br /&gt;
* BIOS settings&lt;br /&gt;
** F1 or DEL to enter BIOS setup, F8 boot menu&lt;br /&gt;
** go to POWER-&amp;gt;HW mon, confirm CPU temperature is around 30C. (heatsink is installed correctly. Bad heatsink temperature quickly goes up to 50-70C).&lt;br /&gt;
** Main menu: Storage config - SATA change IDE-&amp;gt;AHCI&lt;br /&gt;
** System information: confirm BIOS version 301, CPU type, memory size&lt;br /&gt;
** AI Tweak: set DRAM frequency - AUTO-&amp;gt;DDR3-1333&lt;br /&gt;
** Advanced-&amp;gt;Onboard devices: LAN BOOT: enabled&lt;br /&gt;
** Power-&amp;gt;HW monitor: CPU Q-FAN: enabled&lt;br /&gt;
** Boot-&amp;gt;Settings: Quick boot: enabled; Full screen logo: disabled; Wait for F1: disabled&lt;br /&gt;
** Save and exit&lt;br /&gt;
&lt;br /&gt;
=== ASUS E35M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboards/E35M1M_PRO/#specifications&lt;br /&gt;
* use BIOS version 1002 or newer&lt;br /&gt;
* for CPU temperature: install kmod-k10temp from ELREPO (kmod-k10temp-0.0-4.el6.elrepo.x86_64.rpm)&lt;br /&gt;
* for Sensors: yum --enablerepo elrepo install kmod-w83627ehf; modprobe w83627ehf; sensors&lt;br /&gt;
* for Graphics: yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* to enable booting from USB3, edit /etc/dracut.conf, change line &amp;quot;add_drivers&amp;quot; to read: add_drivers+=&amp;quot;xhci-hcd&amp;quot;&lt;br /&gt;
* to use multiple monitors, run &amp;quot;aticonfig --initial --heads=2 --adapter=1 --xinerama=on&amp;quot;, to change screen layout, edit /etc/X11/xorg.conf. Only dual monitors DVI+HDMI seem to work. Tripple monitors does not seem to work.&lt;br /&gt;
&lt;br /&gt;
Sensors instructions below are obolete (use driver from ELREPO)&lt;br /&gt;
* for Sensors, install driver for NCT6776F chip from https://github.com/groeck/w83627ehf/archives/master (in the Makefile, change the line &amp;quot;KERNEL_BUILD=&amp;quot; to read: &amp;quot;KERNEL_BUILD:=/usr/src/kernels/$(TARGET)&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/groeck-w83627ehf-dd3e543/w83627ehf.ko&lt;br /&gt;
echo &amp;quot;modprobe hwmon; modprobe hwmon-vid; modprobe k10temp; rmmod w83627ehf; insmod /root/w83627ehf.ko&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS E45M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/Motherboards/E45M1M_PRO/#specifications&lt;br /&gt;
* use BIOS 1202 or newer&lt;br /&gt;
* follow the E35M1-M PRO instructions above&lt;br /&gt;
&lt;br /&gt;
=== ASUS P9X79 WS ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboard/P9X79_WS/&lt;br /&gt;
* use BIOS version 3101, 3401, 4701 or newer. If BIOS is 1305 or older, install P9X79-WS-CAP-Converter.ROM (BIOS 2902/3101), then the new BIOS.&lt;br /&gt;
* (not needed for CentOS7) for CPU temperature, install coretemp&lt;br /&gt;
* (not needed for CentOS7) for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
* BIOS Settings:&lt;br /&gt;
** enter &amp;quot;Advanced mode&amp;quot;&lt;br /&gt;
** Ai Tweaker -&amp;gt; Ai Overclock Tuner -&amp;gt; Set to &amp;quot;XMP&amp;quot; - this enables DDR3-1600 RAM speed vs DDR3-1333 by default&lt;br /&gt;
** Monitor -&amp;gt; CPU fan speed low limit -&amp;gt; Set to &amp;quot;200 RPM&amp;quot; - we are using high efficiency slow turning CPU coolers and the default 600 RPM is right on the edge of firing false warnings&lt;br /&gt;
** Boot -&amp;gt; Full screen logo -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
** Wait for F1 -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ASUS P8B-M ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 6103 or newer&lt;br /&gt;
* for CPU temperature, install coretemp&lt;br /&gt;
* for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
&lt;br /&gt;
=== SUPERMICRO X9SCL ===&lt;br /&gt;
&lt;br /&gt;
* yum install kmod-w83627ehf.x86_64 coretemp&lt;br /&gt;
* xemacs -nw /etc/rc.local, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe w83627ehf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z87-WS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z97-WS ===&lt;br /&gt;
&lt;br /&gt;
the nct6775 driver does not work because of conflict with ACPI.&lt;br /&gt;
&lt;br /&gt;
=== ASUS AM1M-A ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 602 or later&lt;br /&gt;
* SL6.5 installer cannot use USB2 ports and the network. Use USB3 ports (blue colour) to boot USB installer (memtest, rescue, etc)&lt;br /&gt;
* SL6.5 kernels require boot option &amp;quot;iommu=soft&amp;quot; or USB2 and network do not work. (USB3 - blue ports - seems okey)&lt;br /&gt;
* install ATI/AMD video drivers from ELREPO (see below)&lt;br /&gt;
* sensors chip is ITE IT8623E, for SL6, use standalone driver from lm_sensors. (2 fans rpm, 2 temperatures):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* for el7 use it87.ko driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget https://daqshare.triumf.ca/~olchansk/linux/CentOS7/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@midemma02 ~]# sensors&lt;br /&gt;
radeon-pci-0008&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.0°C  (crit = +120.0°C, hyst = +90.0°C)&lt;br /&gt;
&lt;br /&gt;
fam15h_power-pci-00c4&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
power1:           N/A  (crit =  25.00 W)&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.2°C  (high = +70.0°C)&lt;br /&gt;
                       (crit = +70.0°C, hyst = +69.0°C)&lt;br /&gt;
&lt;br /&gt;
it8603-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:          +0.96 V  (min =  +2.50 V, max =  +2.95 V)  ALARM&lt;br /&gt;
in1:          +2.23 V  (min =  +0.94 V, max =  +1.22 V)  ALARM&lt;br /&gt;
in2:          +2.03 V  (min =  +0.74 V, max =  +0.77 V)  ALARM&lt;br /&gt;
in3:          +2.00 V  (min =  +1.26 V, max =  +0.13 V)  ALARM&lt;br /&gt;
in4:          +2.23 V  (min =  +2.95 V, max =  +2.15 V)  ALARM&lt;br /&gt;
3VSB:         +3.36 V  (min =  +6.00 V, max =  +2.50 V)  ALARM&lt;br /&gt;
Vbat:         +3.22 V  &lt;br /&gt;
+3.3V:        +3.36 V  &lt;br /&gt;
fan1:         611 RPM  (min =  200 RPM)&lt;br /&gt;
fan2:         707 RPM  (min =  600 RPM)  ALARM&lt;br /&gt;
temp1:        +38.0°C  (low  = +122.0°C, high = +122.0°C)  sensor = thermistor&lt;br /&gt;
temp2:        +22.0°C  (low  = +119.0°C, high = -35.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
temp3:       -128.0°C  (low  = +16.0°C, high = +93.0°C)  sensor = thermistor&lt;br /&gt;
intrusion0:  ALARM&lt;br /&gt;
&lt;br /&gt;
[root@midemma02 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* AMD &amp;quot;Athlon(tm) 5350 APU&amp;quot; graphics supports 2 monitors maximum (mobo has 3 video outputs, only 2 can be used together)&lt;br /&gt;
&lt;br /&gt;
=== Intel SE7230NH1 ===&lt;br /&gt;
&lt;br /&gt;
* front panel header connector pinout is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PWR LED | 1  2|&lt;br /&gt;
        | 3  4|&lt;br /&gt;
PWR LED | 5  6|&lt;br /&gt;
HDD LED | 7  8|&lt;br /&gt;
HDD LED | 9 10|&lt;br /&gt;
PWR SW  |11 12| NIC1 LED&lt;br /&gt;
PWR SW  |13 14| NIC1 LED&lt;br /&gt;
RST SW  |15 16|&lt;br /&gt;
RST SW  |17 18|&lt;br /&gt;
        |19 20|&lt;br /&gt;
NMI SW  |21 22| NIC2 LED&lt;br /&gt;
NMI SW  |23 24| NIC2 LED&lt;br /&gt;
...     |...  |&lt;br /&gt;
        |33 34|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS H110M-A/M.2 ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 2003 or later&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT5539D&lt;br /&gt;
* sensors chip is &amp;quot;NCT6793D or compatible chip&amp;quot;, for el7, use this driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq03 ~]# sensors&lt;br /&gt;
acpitz-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                       +0.34 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                       +0.15 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                       +0.97 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                       +3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                       +3.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                       +1.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                      +0.13 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1020 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM&lt;br /&gt;
SYSTIN:                   +119.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +27.5°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +111.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +28.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Physical id 0:  +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:         +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:         +28.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
[root@daq03 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supermicro X11SSH-F ===&lt;br /&gt;
&lt;br /&gt;
* blacklist the mei and mei_me drivers per http://www.supermicro.com/support/faqs/faq.cfm?faq=14537&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# more /etc/modprobe.d/blacklist.conf&lt;br /&gt;
blacklist mei&lt;br /&gt;
blacklist mei_me&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mobo requires M.2 PCIe SSD (M.2 SATA SSD would not work. SATA SATA SSD ok)&lt;br /&gt;
* boot from M.2 PCIe SSD requires UEFI boot (from an MSDOS partition on the SSD)&lt;br /&gt;
&lt;br /&gt;
=== ASUS TUF Z390M-PRO GAMING (WI-FI) ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 2417 is okey, upgrade to this if older&lt;br /&gt;
* do not set XMP memory mode&lt;br /&gt;
* in the BIOS, enable the boot compatibility support module mode: BIOS (press DEL) -&amp;gt; Advanced mode -&amp;gt; BOOT -&amp;gt; CSM Module -&amp;gt; Enable CSM &amp;quot;yes&amp;quot;.&lt;br /&gt;
* for SL6, install e1000e driver from ELREPO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install --enablerepo=elrepo kmod-e1000e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors chip appears to be &amp;quot;Nuvoton NCT6798D&amp;quot; not clear what driver to use&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT6798D&lt;br /&gt;
* kmod-nct6775-0.0-5.el7_7.elrepo.x86_64.rpm from ELrepo finds the chip but bombs because of conflict with ACPI&lt;br /&gt;
&lt;br /&gt;
=== ASUS PRIME X399-A ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 1002&lt;br /&gt;
* for reading temperatures and fan rotations, install driver: https://github.com/electrified/asus-wmi-sensors/issues/29&lt;br /&gt;
&lt;br /&gt;
== Configure X11 graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Special settings for DAQ ===&lt;br /&gt;
&lt;br /&gt;
* add the following at the end of /etc/X11/xorg.conf. The enables Ctrl-Alt-KP-/ and Ctrl-Alt-KP-* to unlock the keyboard after Altera Quartus crash:&lt;br /&gt;
&amp;lt;pre&amp;gt;Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowDeactivateGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowClosedownGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo=elrepo install nvidia-detect&lt;br /&gt;
* run: nvidia-detect&lt;br /&gt;
* as instructed by nvidia-detect, install correct driver:&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-304xx&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-173xx&lt;br /&gt;
* (before SL6.x:  if it fails due to conflict with module-init-tools, run &amp;quot;yum --disablerepo \* --enablerepo elrepo update module-init-tools&amp;quot;)&lt;br /&gt;
* yum erase xorg-x11-glamor ### see http://elrepo.org/tiki/kmod-nvidia (search for glamor)&lt;br /&gt;
* mv /etc/X11/xorg.conf /etc/X11/xorg.conf-xxx&lt;br /&gt;
* nvidia-xconfig&lt;br /&gt;
* (SL6) reboot&lt;br /&gt;
* (SL5) /dev/MAKEDEV nvidia&lt;br /&gt;
* (SL5) restart the X11 server (Ctrl-Alt-Backspace or &amp;quot;killall Xorg gdm-binary&amp;quot;)&lt;br /&gt;
* observe that X11 server restarts using the NVIDIA driver (big NVIDIA logo on startup)&lt;br /&gt;
* if needed, login as root and run &amp;quot;nvidia-settings&amp;quot; to setup dual-screen configuration, etc&lt;br /&gt;
&lt;br /&gt;
=== Install legacy NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
For old NVIDIA cards:&lt;br /&gt;
* GeForce FX 5500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.31/NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
sh ./NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GeForce 6200 - NVIDIA Corporation NV44A [GeForce 6200]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install nvidia-x11-drv-304xx-304.121 --enablerepo=elrepo&lt;br /&gt;
nvidia-xconfig&lt;br /&gt;
rmmod nvidia&lt;br /&gt;
killall gdm-binary&lt;br /&gt;
login as root&lt;br /&gt;
nvidia-settings to setup multiple displays&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* check that /etc/X11/xorg.conf section &amp;quot;Device&amp;quot; entry &amp;quot;Driver&amp;quot; says &amp;quot;fglrx&amp;quot;&lt;br /&gt;
* run &amp;quot;aticonfig --initial&amp;quot; to create xorg.conf if existing one is not good&lt;br /&gt;
* run &amp;quot;amdcccle&amp;quot; as root to configure dual-screens, etc&lt;br /&gt;
  Note: &#039;amdcccle&#039; is a GUI, so you must run this command from within a running X session&lt;br /&gt;
* killall Xorg&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers (CentOS7) ===&lt;br /&gt;
&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* yum install acpid&lt;br /&gt;
* rpm -vh --install kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* amdconfig -f --initial&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* reboot&lt;br /&gt;
* login as root&lt;br /&gt;
* amdcccle&lt;br /&gt;
&lt;br /&gt;
NOTE: if both drivers - radeon and fglrx are loaded, boot will hang. the radeon driver is supposed to be blacklisted through grub rdblacklist=radeon entry which is installed by running grub2-mkconfig.&lt;br /&gt;
&lt;br /&gt;
=== Install Intel drivers for HD4600/Z87 ===&lt;br /&gt;
&lt;br /&gt;
SL6.5 has the required drivers for the socket 1150 machines with Intel HD4600 graphics and Z87 chipset.&lt;br /&gt;
&lt;br /&gt;
ASUS Z87 WS motherboard has these video connections with corresponding Intel video port assignements, as reported by &amp;quot;xrandr&amp;quot;:&lt;br /&gt;
* DisplayPort - DP1/HDMI1&lt;br /&gt;
* MiniDisplayPort - DP2/HDMI2&lt;br /&gt;
* HDMI - HDMI3&lt;br /&gt;
&lt;br /&gt;
Due to hardware limitations, 3 HDMI monitors using 2 passive DP-HDMI adapters (and 1 straight HDMI) cannot be used.&lt;br /&gt;
&lt;br /&gt;
To use 3 monitors do this:&lt;br /&gt;
* 1st monitor: DisplayPort - DP-to-HDMI-passive-adapter - HDMI monitor (not tried: DP-to-DP-cable - DisplayPort monitor).&lt;br /&gt;
* 2nd monitor: MiniDisplayPort - MiniDP-to-DP-cable - DisplayPort monitor&lt;br /&gt;
* 3rd monitor: HDMI - HDMI-cable - HDMI monitor&lt;br /&gt;
&lt;br /&gt;
With the monitors I have (Dell 1920x1200 VGA-HDMI-DP), the software thinks that there are 4 monitors: somehow both DP2 and HDMI2 see 1 minitor each, but the hardware cannot drive 4 monitors, so everything goes blank. To fix, disable HDMI2 (xrandr -display :0 --output HDMI2 --off) and enable DP2 (xrandr -display :0 --output DP2 --auto).&lt;br /&gt;
&lt;br /&gt;
How to make this configuration permanent and how to assign monitor locations (left-right, etc), you figure it out.&lt;br /&gt;
&lt;br /&gt;
=== Manual selection of monitor, video mode and resolution ===&lt;br /&gt;
&lt;br /&gt;
Automatic selection of monitor and video mode usually works. When it does not, configure it manualls:&lt;br /&gt;
&lt;br /&gt;
* physically go to the computer&lt;br /&gt;
* login as root&lt;br /&gt;
* run &amp;quot;nvidia-settings&amp;quot; on machines using the NVIDIA driver&lt;br /&gt;
* run &amp;quot;aticonfig&amp;quot; on machines with the ATI/AMD driver (use &amp;quot;aticonfig --initial&amp;quot; for initial setup, and good luck with anything more complicated)&lt;br /&gt;
* run &amp;quot;system-config-display&amp;quot;.&lt;br /&gt;
** In the &amp;quot;hardware&amp;quot; tab, select monitor type: &amp;quot;generic LCD 1280x1024&amp;quot; or &amp;quot;generic LCD 1600x1200&amp;quot;.&lt;br /&gt;
** In the &amp;quot;settings&amp;quot; tab, select &amp;quot;1280x1024&amp;quot; or &amp;quot;1600x1200&amp;quot; and &amp;quot;Thousands of colors&amp;quot;.&lt;br /&gt;
** Press &amp;quot;ok&amp;quot;, the display settings application should close.&lt;br /&gt;
* Logout, the new login window should use the new settings.&lt;br /&gt;
&lt;br /&gt;
=== Disable screen saver ===&lt;br /&gt;
&lt;br /&gt;
If machine is booted without any monitor connected, current video cards to not enable any video outputs. If a monitor is connected later, there is no video image and there is no easy way to get a video image.&lt;br /&gt;
&lt;br /&gt;
This can be solved by configuring X11 to always enable some video output. Because the monitor type is not known when X11 starts, one has to select some standard video mode (i.e. VESA 1280x1024) on some video output (VGA, DVI or HDMI).&lt;br /&gt;
&lt;br /&gt;
Only NVIDIA cards with the NVIDIA driver (from EPEL) is supported by these instructions.&lt;br /&gt;
&lt;br /&gt;
* create default xorg.conf: nvidia-xconfig&lt;br /&gt;
* edit /etc/X11/xorg.conf&lt;br /&gt;
* add monitor section for the fake monitor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    HorizSync       31.0 - 83.0&lt;br /&gt;
    VertRefresh     59.0 - 61.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    ModeLine &amp;quot;1280x1024&amp;quot;   108.00   1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add output selection in the &amp;quot;Device&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 210&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT&amp;quot;&lt;br /&gt;
    Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-1&amp;quot;&lt;br /&gt;
    Option &amp;quot;UseEDID&amp;quot; &amp;quot;no&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add fake video mode to the &amp;quot;Screen&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Modes       &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable screen saver and DPMS power off in the &amp;quot;ServerLayout&amp;quot; or &amp;quot;ServerFlags&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Layout0&amp;quot;&lt;br /&gt;
    Screen      0  &amp;quot;Screen0&amp;quot; 0 0&lt;br /&gt;
    InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;&lt;br /&gt;
    InputDevice    &amp;quot;Mouse0&amp;quot; &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot; &lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
EndSection &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
* logout and reboot the computer to have all the changes to take effect&lt;br /&gt;
&lt;br /&gt;
== Configure HTTPS server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache httpd.&lt;br /&gt;
&lt;br /&gt;
First, configure apache httpd:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y mod_ssl certwatch crypto-utils&lt;br /&gt;
cd /etc/httpd/conf.d/&lt;br /&gt;
mv ssl.conf ssl.conf-not-used ### remove the stock ssl.conf which refers to the localhost certificate that will expire in 1 year&lt;br /&gt;
touch ssl.conf ### create a blank file to prevent automatic updates from installing a stock ssl.conf file&lt;br /&gt;
# this is done later: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file ssl-daq12.conf # use actual hostname instead of daq12&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443 https&lt;br /&gt;
#SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
ServerName daq12.triumf.ca&lt;br /&gt;
DocumentRoot /var/www/html&lt;br /&gt;
ErrorLog /var/log/httpd/daq12.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
# note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
# new SSL settings: K.O. Jan 2020, SSLlabs rating &amp;quot;A+&amp;quot;&lt;br /&gt;
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!RSA&lt;br /&gt;
SSLHonorCipherOrder on&lt;br /&gt;
# pervious SSL settings:&lt;br /&gt;
#SSLProtocol all -SSLv2 -SSLv3&lt;br /&gt;
#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
#ProxyPass /elog/ http://localhost:8082/ retry=1&lt;br /&gt;
#ProxyPass /      http://localhost:8080/ retry=1&lt;br /&gt;
Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
Require valid-user&lt;br /&gt;
# create password file: touch /etc/httpd/htpasswd&lt;br /&gt;
# to add new user or change password: htpasswd /etc/httpd/htpasswd username&lt;br /&gt;
AuthUserFile /etc/httpd/htpasswd&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop httpd from listening on port 80: edit /etc/httpd/conf/httpd.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable and start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to access https://daq12.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, then try again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that httpd is listening on port 80, follow the httpd instructions above (remove &amp;quot;listen 80&amp;quot; from httpd.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot and open tcp port 80 in the firewall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y certbot python2-certbot-apache # (from EPEL)&lt;br /&gt;
firewall-cmd --add-port=80/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* certbot certonly --standalone --installer apache # then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq12.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;please choose...&amp;quot; - say &amp;quot;easy&amp;quot; (http access is disabled (a) by firewall, (b) by local configuration&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
* certbot install --apache --cert-name daq12.triumf.ca # then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside ssl-daq12.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in /etc/letsencrypt/live/daq12.triumf.ca/&lt;br /&gt;
* remove self-signed localhost certificate, it will expire in 1 year and cause warnings and complaints: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
* enable automatic renewal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable certbot-renew.timer&lt;br /&gt;
systemctl start certbot-renew.timer&lt;br /&gt;
systemctl list-timers --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to check corrent renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work starting with certbot-0.12.0-4.el7.noarch.&lt;br /&gt;
Certificate expiration should be automatically detected by &amp;quot;certwatch&amp;quot; and email&lt;br /&gt;
will be sent to local root user, to be forwarded to an actual person by ~root/.forward.&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/httpd/htpasswd&lt;br /&gt;
htpasswd /etc/httpd/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Final test:&lt;br /&gt;
* access https://daq12.triumf.ca - https status should be &amp;quot;green&amp;quot;&lt;br /&gt;
* login with password should work&lt;br /&gt;
* the apache httpd test page should load&lt;br /&gt;
* check site security using the SSLlabs https tester. (I get grade &amp;quot;A-&amp;quot;): https://www.ssllabs.com/ssltest/&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
* setsebool -P httpd_can_network_connect 1&lt;br /&gt;
* systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== Configure large RAID6 arrays ==&lt;br /&gt;
&lt;br /&gt;
* connect the disks&lt;br /&gt;
* check the disks health&lt;br /&gt;
** run smart-status.perl&lt;br /&gt;
* partition the disks&lt;br /&gt;
** yum install gdisk&lt;br /&gt;
** gdisk /dev/sdX&lt;br /&gt;
** delete all partitions: o&lt;br /&gt;
** create new partition: n, enter, enter, enter, fd00 (default sizes, partition type fd00)&lt;br /&gt;
** write and exit: w&lt;br /&gt;
* check presence of all partitions:&lt;br /&gt;
** /bin/ls -l /dev/sd*1&lt;br /&gt;
* prepare to use an external bitmap file&lt;br /&gt;
** touch /md6bitmap&lt;br /&gt;
** edit /etc/fstab, change entry for root filesystem from: &amp;quot;defaults 1 1&amp;quot; to &amp;quot;defaults 0 0&amp;quot;&lt;br /&gt;
** edit /boot/grub/grub.conf, change entry &amp;quot;kernel ... ro ...&amp;quot; to &amp;quot;kernel ... rw ...&amp;quot;&lt;br /&gt;
* create raid array:&lt;br /&gt;
** mdadm --create /dev/md6 --level=6 --bitmap=/md6bitmap --raid-devices=10 /dev/sd[b-k]1&lt;br /&gt;
** mdadm -Ds &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
** cleanup /etc/mdadm.conf&lt;br /&gt;
** echo &amp;quot;echo 16384 &amp;gt; /sys/block/md6/md/stripe_cache_size&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** echo &amp;quot;echo 1     &amp;gt; /sys/block/md6/md/sync_speed_min&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** source /etc/rc.local&lt;br /&gt;
* observe raid array rebuild:&lt;br /&gt;
** watch -d -n1 &amp;quot;cat /proc/mdstat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure ZFS ==&lt;br /&gt;
&lt;br /&gt;
=== Install ZFS ===&lt;br /&gt;
&lt;br /&gt;
(from here: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for &amp;quot;kABI-tracking kmod&amp;quot; - dkms modules seem to always mess up the system when upgrading to next release of zfs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rpm -vh --install http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm&lt;br /&gt;
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
#sed &#039;s/^SELINUX=.*/SELINUX=disabled/&#039; -i /etc/selinux/config&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
#shutdown -r now # required to load the zfs kernel modules and to disable selinux&lt;br /&gt;
modprobe zfs # should work&lt;br /&gt;
zpool status # should report no pools available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Note: zfs and selinux and not compatible: with selinux enabled, files on zfs cannot be deleted (files are gone, but &amp;quot;df&amp;quot; does not go down, zfs-0.6.5.7-1.el7.centos.x86_64), see #https://github.com/zfsonlinux/zfs/issues/4845&lt;br /&gt;
&lt;br /&gt;
* http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs-quickstart.html)&lt;br /&gt;
* http://www.freebsd.org/cgi/man.cgi?query=zpool&amp;amp;sektion=8&lt;br /&gt;
&lt;br /&gt;
If ZFS kernel module does not load automatically at boot time, add this to load it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -l /etc/sysconfig/modules/&lt;br /&gt;
cat &amp;gt; /etc/sysconfig/modules/zfs.modules &amp;lt;&amp;lt;EOF&lt;br /&gt;
if [ ! -e /sys/module/zfs ] ; then&lt;br /&gt;
  modprobe zfs;&lt;br /&gt;
fi&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x /etc/sysconfig/modules/zfs.modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS 0.7 to 0.8 ===&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates list zfs # list all available versions in &amp;quot;zfs-testing-kmod&amp;quot;&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates install zfs # maybe specify specific version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /etc/yum.repos.d/zfs.repo* ### delete old repo files&lt;br /&gt;
yum upgrade http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if you see yum offering to install &amp;quot;dkms&amp;quot; and &amp;quot;zfs-dkms&amp;quot;, the yum config is wrong (we use the kmod-zfs package), check that &amp;quot;zfs&amp;quot; repo is disabled, &amp;quot;zfs-kmod&amp;quot; repo is enabled - see the yum-config-manager commands above.&lt;br /&gt;
&lt;br /&gt;
=== Lock kernel and zfs packages ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock kernel&lt;br /&gt;
yum versionlock zfs&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Follow generic ZFS instructions ===&lt;br /&gt;
&lt;br /&gt;
Here: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
== performance notes ==&lt;br /&gt;
&lt;br /&gt;
Go here: [[disk_benchmarks]]&lt;br /&gt;
&lt;br /&gt;
== Configure UEFI boot ==&lt;br /&gt;
&lt;br /&gt;
Some mobo can boot from NVME (PCIe) SSDs only via UEFI boot. Do this:&lt;br /&gt;
&lt;br /&gt;
* partition the NVME SSD using gdisk (must be GPT partition table, must have MSDOS EFI partition size 512MiB)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# gdisk -l /dev/nvme0n1&lt;br /&gt;
GPT fdisk (gdisk) version 0.8.6 ...&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB&lt;br /&gt;
Logical sector size: 512 bytes&lt;br /&gt;
Disk identifier (GUID): 1A82CC87-2757-44ED-980F-C78E3681D9D3&lt;br /&gt;
Partition table holds up to 128 entries&lt;br /&gt;
First usable sector is 34, last usable sector is 500118158&lt;br /&gt;
Partitions will be aligned on 2048-sector boundaries&lt;br /&gt;
Total free space is 2014 sectors (1007.0 KiB)&lt;br /&gt;
&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System&lt;br /&gt;
   2         1050624       500118158   238.0 GiB   8300  Linux filesystem&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create filesystems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.xfs /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare EFI partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/efi&lt;br /&gt;
mount /dev/nvme0n1p1 /mnt/efi&lt;br /&gt;
mkdir -p /mnt/efi/efi/boot&lt;br /&gt;
cp /boot/vmlinuz... vmlinuz # copy the desired linux kernel&lt;br /&gt;
cp /boot/initramfs... initramfs.img # copy the matching initramfs file&lt;br /&gt;
#from /home/olchansk/sysadm/syslinux/syslinux-6.03 copy&lt;br /&gt;
cp .../efi64/efi/syslinux.efi .&lt;br /&gt;
cp .../efi64/com32/elflink/ldlinux/ldlinux.e64 .&lt;br /&gt;
cp syslinux.efi bootx64.efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux config file: syslinux.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro root=/dev/nvme0n1p2 nomodeset initrd=initramfs.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare system partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/tmp&lt;br /&gt;
mount /dev/nvme0n1p2 /mnt/tmp&lt;br /&gt;
rsync -avx / /mnt/tmp&lt;br /&gt;
cd /mnt/tmp&lt;br /&gt;
#edit etc/fstab&lt;br /&gt;
#edit etc/syslinux/selinux # set selinux to permissive mode because rsync did not copy the selinux labels&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* unmount and reboot&lt;br /&gt;
* restore selinux labels after first boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#login as root&lt;br /&gt;
cd /&lt;br /&gt;
restorecon -R / # can also add &amp;quot;-v&amp;quot; to see progress, but runs much slower&lt;br /&gt;
#edit /etc/sysconfig/selinux # enable selinux&lt;br /&gt;
#shutdown -r now # reboot with selinux enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure UEFI secure  boot =&lt;br /&gt;
&lt;br /&gt;
The above instructions do not quite work if &amp;quot;secure boot&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
These modifications are needed:&lt;br /&gt;
&lt;br /&gt;
* ls -l /boot/efi/EFI/bootko/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
total 140116&lt;br /&gt;
-rwxr-xr-x 1 root root      108 Feb 24 15:47 BOOTX64.CSV&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 bootx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root   217495 Feb 24 16:16 config-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root      105 Feb 24 15:47 grub.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 grubx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initramfs.img&lt;br /&gt;
-rwxr-xr-x 1 root root 58986147 Feb 24 16:16 initrd.img-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root   139968 Feb 24 16:16 ldlinux.e64&lt;br /&gt;
-rwxr-xr-x 1 root root  1269496 Feb 24 15:47 mmx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  1334816 Feb 24 16:16 shimx64.efi&lt;br /&gt;
-rwxr-xr-x 1 root root      171 Feb 24 16:16 syslinux.cfg&lt;br /&gt;
-rwxr-xr-x 1 root root      102 Feb 24 16:16 syslinux.cfg~&lt;br /&gt;
-rwxr-xr-x 1 root root   199952 Feb 24 16:16 syslinux.efi&lt;br /&gt;
-rwxr-xr-x 1 root root  4068355 Feb 24 16:16 System.map-4.15.0-74-generic&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz&lt;br /&gt;
-rwxr-xr-x 1 root root  8367768 Feb 24 16:16 vmlinuz-4.15.0-74-generic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** shmix64.efi is a copy from /boot/efi/EFI/ubuntu&lt;br /&gt;
** bootx64.efi is a copy of shimx64.efi (maybe not needed?)&lt;br /&gt;
** grubx64.efi is a copy of syslinux.efi&lt;br /&gt;
* efibootmgr -c -d /dev/nvme0n1 -p 2 -w -L bootko -l &#039;\EFI\bootko\shimx64.efi&#039;&lt;br /&gt;
* efibootmgr -v&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daqubuntu:~# efibootmgr -v&lt;br /&gt;
BootCurrent: 0000&lt;br /&gt;
Timeout: 1 seconds&lt;br /&gt;
BootOrder: 0000,0001,0002&lt;br /&gt;
Boot0000* bootko        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\BOOTKO\SHIMX64.EFI)&lt;br /&gt;
Boot0001* Hard Drive    BBS(HD,,0x0)..GO..NO........y.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7....................A.......................................&amp;lt;..Gd-.;.A..MQ..L.I.N.T.E.L. .S.S.D.P.E.K.K.W.1.2.8.G.7........BO&lt;br /&gt;
Boot0002* ubuntu        HD(2,GPT,5d1cac95-29dd-4d8a-a56e-a8f414dd4047,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO&lt;br /&gt;
root@daqubuntu:~# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* NOTE: if, after running &amp;quot;efibootmgr -c&amp;quot;, the UUID is zero, then it probably did not take and the entry will vanish after reboot. In my case the mistake was to use &amp;quot;-p 1&amp;quot; instead of &amp;quot;-p 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Boot sequence is this:&lt;br /&gt;
* shmix64.efi - Microsoft-signed boot loader is accepted by secure boot, loads and runs&lt;br /&gt;
* shimx64.efi loads and runs grubx64.efi, this file name is hardwired into the signed shim, cannot be changed&lt;br /&gt;
* grubx64.efi is syslinux.efi (could be anything)&lt;br /&gt;
* syslinux.efi runs, loads syslinux.cfg, loads the linux kernel, loads the initrd, runs the linux kernel with specified flags (ro root=...).&lt;br /&gt;
&lt;br /&gt;
= UEFI syslinux kernel update =&lt;br /&gt;
&lt;br /&gt;
To update the linux kernel booted by UEFI syslinux, use this script:&lt;br /&gt;
* ~root/git/scripts/etc/update_efi.perl&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Renew_cert&amp;diff=5502</id>
		<title>Renew cert</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Renew_cert&amp;diff=5502"/>
		<updated>2020-08-12T21:14:10Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= To renew a soon to expire grid certificate: =&lt;br /&gt;
Current expiry dates of certificates:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Server&lt;br /&gt;
	Grid certificate expiry date&lt;br /&gt;
trdata00 	May 19th 2014&lt;br /&gt;
trdata01 	May 19th 2014&lt;br /&gt;
trdata02 	May 19th 2014&lt;br /&gt;
trdata03 	May 19th 2014&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
= Instructions to renew grid certificates = &lt;br /&gt;
&lt;br /&gt;
* Go to Grid Canada grid certificate website:&lt;br /&gt;
    https://cert.gridcanada.ca/pki/pub&lt;br /&gt;
    &lt;br /&gt;
You may need a valid grid certificate in your browser in order to access this website.&lt;br /&gt;
    &lt;br /&gt;
* Click on the &amp;quot;Request a certificate&amp;quot; link.&lt;br /&gt;
    &lt;br /&gt;
* Click on &amp;quot;Server Request&amp;quot; link and fill in the request.  Couple details&lt;br /&gt;
  **      Set the hostname to trdata00.triumf.ca &lt;br /&gt;
  **      Set the Role to &#039;User&#039;&lt;br /&gt;
  **      Choose some passphrase for the PIN.&lt;br /&gt;
&lt;br /&gt;
*     A couple days later you will receive emails from grid-canada with a link to your new grid certificates.  Following the links will download the new grid certificates for each host into your browser.&lt;br /&gt;
&lt;br /&gt;
*    Next you need to export these certificate from the browser into a PKCS#12 format file (extension .p12 file). Following instructions are for firefox 10.0.3; go to &#039;preferences&#039; -&amp;gt; &#039;advanced&#039; -&amp;gt; &#039;encryption&#039;, then click on &#039;View Certificates&#039;.  You should see a list of your certificates, which should show the new certificates for trdata*.  For each certificate click on &#039;backup&#039; and then save the .p12 file somewhere on your local computer with a name like &#039;trdata00_cert.p12&#039;.&lt;br /&gt;
&lt;br /&gt;
** Update 2020: new grid canada website is odd... need to go to bottom, under &amp;quot;certificate and keypair&amp;quot;, choose PCKS#12 then click Download&lt;br /&gt;
&lt;br /&gt;
*    Next, transform these .p12 files into the hostcert.pem and hostkey.pem files the trdata grid security requires.  The instructions for this transformation are given here:&lt;br /&gt;
    http://gridcanada.ext.nrc.ca/?q=node/7&amp;amp;page=0%2C8&lt;br /&gt;
&lt;br /&gt;
The critical set of steps is as follows (for trdata00 as example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    cd &amp;lt;whereever on local computer you have .p12 files&amp;gt;&lt;br /&gt;
    openssl pkcs12 -nocerts -in trdata00_cert.p12 -out trdata00_hostkey.encrypted.pem&lt;br /&gt;
    openssl pkcs12 -clcerts -nokeys -in trdata00_cert.p12 -out trdata00_hostcert_noText.pem&lt;br /&gt;
    openssl x509 -in trdata00_hostcert_noText.pem -text &amp;gt; trdata00_hostcert.pem&lt;br /&gt;
    openssl rsa -in trdata00_hostkey.encrypted.pem -out trdata00_hostkey.pem&lt;br /&gt;
    chmod 0444 trdata00_hostcert.pem&lt;br /&gt;
    chmod 0400 trdata00_hostkey.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
During this transformation you are asked for other passphrases; I just used the same set of passphrases as for the online application; not sure if this is correct.&lt;br /&gt;
&lt;br /&gt;
For t2ksrm you also need to do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown dcache /etc/grid-security/hostkey.pem&lt;br /&gt;
chown dcache /etc/grid-security/hostcert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*    Finally, login to root@trdata00, move the old certificate files to a new folder and copy the new certificates from your local computer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    ssh root@trdata00&lt;br /&gt;
    cd /etc/grid-security/&lt;br /&gt;
    mkdir 2011; cp -p host* 2011 (if copy does not already exist)&lt;br /&gt;
    mkdir 2012&lt;br /&gt;
    scp neut14:&amp;lt;dir&amp;gt;/trdata00_hostcert.pem 2012/hostcert.pem&lt;br /&gt;
    scp neut14:&amp;lt;dir&amp;gt;/trdata00_hostkey.pem 2012/hostkey.pem&lt;br /&gt;
    cp -p 2012/host* .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*     Finally restart dcache server from head node:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    service dcache restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= test certificates = &lt;br /&gt;
&lt;br /&gt;
Now go ahead and try to do a grid transfer (globus-url-copy) from trdata.  If this succeeds then you have successfully uploaded new certificates. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LFC_HOST=lfc.gridpp.rl.ac.uk; export LCG_GFAL_INFOSYS=lcg-bdii.cern.ch:2170; lcg-cp -v -v srm://t2ksrm.nd280.org/nd280data/t2k.org/nd280/raw/ND280/ND280/00007000_00007999/nd280_00007892_0019.daq.mid.gz file://tmp/nd280_00007892_0019_30643.daq.mid.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also try a lcg-ls command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    lcg-ls srm://t2ksrm.nd280.org/nd280data/t2k.org/nd280/production005/A/mcp/genie/2010-11-water/magnet/beamb/numc/oa_gn_beam_91210002-0029_io24sikspw4w_numc_000_prod005magnet201011waterb.root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5459</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5459"/>
		<updated>2020-05-20T22:55:39Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2k-fdg-hwdb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Hosts the FGD hardware database and webserver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5458</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5458"/>
		<updated>2020-05-20T22:50:26Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  MySQL endpoint for calibration database&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280gsc-backup.triumf.ca &lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL endpoint for GSC database&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5457</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5457"/>
		<updated>2020-05-20T22:49:20Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5456</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5456"/>
		<updated>2020-04-08T20:23:52Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| VLAN&lt;br /&gt;
| Purpose&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5455</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5455"/>
		<updated>2020-04-08T19:26:20Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| Purpose&lt;br /&gt;
| VLAN&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
| Currently broken&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5454</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5454"/>
		<updated>2020-04-08T19:26:01Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| Purpose&lt;br /&gt;
| VLAN&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| t2kcaldb.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides MySQL database for ND280 calibration&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5453</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5453"/>
		<updated>2020-04-08T19:25:11Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| Purpose&lt;br /&gt;
| VLAN&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| neut00-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides T2KGSC mirror, web &amp;amp; db server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trbsddb-vm.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides  BSD MySQL Database server&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5452</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5452"/>
		<updated>2020-04-08T19:24:01Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| Purpose&lt;br /&gt;
| VLAN&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280elog-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for ND280&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| nd280webservice-vm&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides various elog services&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5451</id>
		<title>DAQ VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DAQ_VMs&amp;diff=5451"/>
		<updated>2020-04-08T19:21:59Z</updated>

		<summary type="html">&lt;p&gt;Lindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of virtual machines provided by the Core Computing group which are used by the DAQ group or by related experimental groups.&lt;br /&gt;
Many of them are for elog instances.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+&lt;br /&gt;
| VM machine name &lt;br /&gt;
|Other names&lt;br /&gt;
| Group&lt;br /&gt;
| Purpose&lt;br /&gt;
| VLAN&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| midastestdaq&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Has example MIDAS installation (part of documentation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| trdata05&lt;br /&gt;
|&lt;br /&gt;
| DAQ&lt;br /&gt;
| 1&lt;br /&gt;
| Provides ~10TB of storage for the DAQ dcache instance.&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ucmsrv0-vm.triumf.ca&lt;br /&gt;
| ucnelog&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Providing UCN elog&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ucnbackup.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Provides 2TB of storage for raw data backup&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ktmserver.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 1&lt;br /&gt;
| Provides readout and online display for the 1VM4 notch monitor (beamline 1V)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| exoelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| EXO&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for EXO tests&lt;br /&gt;
| not really used&lt;br /&gt;
|-&lt;br /&gt;
| scdms-srv0.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| SuperCDMS&lt;br /&gt;
| 1&lt;br /&gt;
| Testbed for CDMS development on Centos-7; also provides elog.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| mpmtelog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| T2K&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for mPMT development&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| m11elog.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| M11&lt;br /&gt;
| 1&lt;br /&gt;
| Provides elog for M11 beamline&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=2278</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=2278"/>
		<updated>2020-01-22T19:54:41Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Configure HTTPS server (CentOS7) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes ==&lt;br /&gt;
&lt;br /&gt;
* these instructions are periodically updated to include items needed for older/newer versions of Linux. They are marked like this: (SL4.2+) means Scientific Linux 4.2 and newer; (SL4 is equivalent to FC3). (FC5 only) means Fedora Core 5; etc.&lt;br /&gt;
* obsolete items are marked by the &amp;quot;#&amp;quot; sign at the beginning of the line and sometimes have a comment about the reason for removal.&lt;br /&gt;
* typically, we do not &amp;quot;upgrade&amp;quot; machines using the Red Hat &amp;quot;upgrade&amp;quot; function. Instead, we save critical files from the old installation and do a &amp;quot;fresh install&amp;quot; from scratch&lt;br /&gt;
* starting with RHEL7, the recommended OS is CentOS7 (instead of SL7).&lt;br /&gt;
&lt;br /&gt;
== Disk configurations ==&lt;br /&gt;
&lt;br /&gt;
The year is 2019 and SSDs are used exclusively, except for bulk data storage, where one used 6-8-10-12 TB HDDs&lt;br /&gt;
&lt;br /&gt;
For reliability, home directories and data disks must use redundant storage - mdadm raid1 or ZFS raid1/raid6.&lt;br /&gt;
&lt;br /&gt;
For non-critical machines, a single SSD seems to be reliable enough to use as a boot and OS disk. But since any&lt;br /&gt;
storage device can fail at any time without warning, home directories and data disks should use redundant storage.&lt;br /&gt;
&lt;br /&gt;
Note: for data disks bigger than 4-6TB, mdadm raid1/raid6 is no longer recommended because raid rebuild,&lt;br /&gt;
verification and repair time has become unreasonably long. Instead, use ZFS raid1/raid6 which implements online verification,&lt;br /&gt;
repair and disk replacement without requiring machine shutdown or OS down time.&lt;br /&gt;
&lt;br /&gt;
* single SSD - 120GB min - single partition for &amp;quot;/&amp;quot;, no swap partition (create a swap file if swap is needed) - for non-critical machine with no local data storage (OS only)&lt;br /&gt;
* dual SSD - 2x240GB min - all partitions mirrored (RAID1), 30GB &amp;quot;/&amp;quot;, rest for /home1 - for daq station with local user home directories and no bulk data storage&lt;br /&gt;
* single SSD + 2x6-8-10-12TB HDD - SSD partition: all &amp;quot;/&amp;quot;, HDD partition as ZFS raid1 (mirrored) - for daq station with small local bulk data storage&lt;br /&gt;
* single SSD + 6-8x6-8-10-12TB HDD - for small storage server machines - for daq station with local home directories and large bulk data storage.&lt;br /&gt;
&lt;br /&gt;
For VME processors:&lt;br /&gt;
&lt;br /&gt;
* network boot - [[VME-CPU#Network_boot]] - only option for V7648/V7750, do not use for V7805 (no netboot from GigE), optional for V7865/XVB-602&lt;br /&gt;
* USB boot - 8GB USB for V7805, 16GB USB for V7865/XVB-602&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
* save /etc, /var, /root, /opt, (if needed: /usr/local, /tftpboot) by rsync to some data disk (/ladd/data0/root)&lt;br /&gt;
* check that &amp;quot;/&amp;quot; partition (it will be overwritten) is different from /home1 and /data partitions&lt;br /&gt;
* note the MAC addresses of all network interfaces, add them to ladd00 dhcpd.conf to enable PXE boot into the SL &amp;quot;network installer&amp;quot;&lt;br /&gt;
* shutdown&lt;br /&gt;
&lt;br /&gt;
== Running installer (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 can be installed from vanilla CentOS7 installation media or from&lt;br /&gt;
a custom USB key build per there instructions:&lt;br /&gt;
https://daqshare.triumf.ca/~olchansk/linux/CentOS7/&lt;br /&gt;
&lt;br /&gt;
The custom installer makes it easy to use a custom kickstart file (ks.cfg).&lt;br /&gt;
&lt;br /&gt;
Instructions for using the usb-installer:&lt;br /&gt;
&lt;br /&gt;
* disconnect machine from network&lt;br /&gt;
* plug the usb-installer into a usb3 port (blue colour)&lt;br /&gt;
* reboot machine, select booting from usb (press F8 on ASUS motherboards)&lt;br /&gt;
* usb-installer boot menu offers to install CentOS7, go there&lt;br /&gt;
* CentOS7 should boot (many messages scroll on screen)&lt;br /&gt;
* into graphical mode&lt;br /&gt;
* into installer main menu&lt;br /&gt;
* all installer options should &amp;quot;happy&amp;quot; except for the &amp;quot;installation destination&amp;quot;&lt;br /&gt;
* go to the &amp;quot;installation destination&amp;quot; menu&lt;br /&gt;
** unselect all disks except for the SSD where the OS will be installed&lt;br /&gt;
** (MOST IMPORTANT: unselect the USB installer disk!)&lt;br /&gt;
** select &amp;quot;I will configure...&amp;quot;&lt;br /&gt;
** say &amp;quot;done&amp;quot;&lt;br /&gt;
** the &amp;quot;manual partitionning&amp;quot; menu will open&lt;br /&gt;
*** use the &amp;quot;-&amp;quot; button to delete all existing partitions&lt;br /&gt;
*** select &amp;quot;standard partition&amp;quot;&lt;br /&gt;
*** click on the &amp;quot;+&amp;quot; button&lt;br /&gt;
*** in the &amp;quot;Add new partition&amp;quot; dialog, set mount point &amp;quot;/&amp;quot;, capacity blank, click &amp;quot;add mount point&amp;quot;&lt;br /&gt;
*** check capacity (should be full size of SSD), check filesystem type (should be XFS)&lt;br /&gt;
*** say &amp;quot;done&amp;quot;, there will be a warning about absent swap partition, say &amp;quot;done&amp;quot; again.&lt;br /&gt;
*** in the big useless dialog, say &amp;quot;accept changes&amp;quot;&lt;br /&gt;
*** should be back to the &amp;quot;installation summary&amp;quot; screen, &amp;quot;installation destination&amp;quot; should be happy now&lt;br /&gt;
* after everything is happy, say &amp;quot;begin installation&amp;quot;&lt;br /&gt;
* as the installation proceeds, set the password for the root user&lt;br /&gt;
* after installation is complete, reboot the machine&lt;br /&gt;
* unplug the usb-installer, CentOS7 should boot from SSD into the login screen&lt;br /&gt;
* click on &amp;quot;not listed?&amp;quot;, login as root&lt;br /&gt;
* setup network connection:&lt;br /&gt;
** open a terminal&lt;br /&gt;
** start &amp;quot;nm-connection-editor&amp;quot;&lt;br /&gt;
** click on &amp;quot;+&amp;quot; to create a new connection profile&lt;br /&gt;
** select &amp;quot;wired ethernet&amp;quot;&lt;br /&gt;
** select &amp;quot;add profile...&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, set &amp;quot;name&amp;quot; to &amp;quot;static&amp;quot;&lt;br /&gt;
** in &amp;quot;Identity&amp;quot;, check that &amp;quot;Connect automatically&amp;quot; and &amp;quot;Make available...&amp;quot; is enabled&lt;br /&gt;
** in &amp;quot;IPv4&amp;quot;, set &amp;quot;Addresses&amp;quot; to &amp;quot;manual&amp;quot; instead of &amp;quot;dhcp&amp;quot;&lt;br /&gt;
** enter IP address, netmask 255.255.224.0, gateway 142.90.100.18, dns 142.90.100.19, search triumf.ca&lt;br /&gt;
** say &amp;quot;Add&amp;quot;, then close/quit the network settings&lt;br /&gt;
* connect network cable&lt;br /&gt;
* network should be up, ping ladd00 should work&lt;br /&gt;
* run: yum update -y&lt;br /&gt;
* check new kernel is installed: ls -l /boot&lt;br /&gt;
* logout and restart (good luck finding these buttons in the gui!)&lt;br /&gt;
* confirm correct linux kernel is selected during boot (-229.20, not the original installer kernel)&lt;br /&gt;
* login as root, confirm network is up, proceed with the rest of these instructions&lt;br /&gt;
&lt;br /&gt;
== Configure SSH ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* Login from the console&lt;br /&gt;
* restore the SSH keys from backup (/etc/ssh/*key*)&lt;br /&gt;
* service sshd restart&lt;br /&gt;
* ssh into the new machine as root&lt;br /&gt;
* ssh root@localhost, ctrl-C&lt;br /&gt;
* ### this is done later from Konstantin&#039;s git repository - scp root@ladd00:/root/authorized_keys ~root/.ssh/&lt;br /&gt;
* (not needed for SL5.5 kickstart) check that /etc/ssh/ssh_config contains &amp;quot;ForwardX11 yes&amp;quot; and &amp;quot;ForwardX11Trusted yes&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;  ForwardX11 yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
echo &amp;quot;  ForwardX11Trusted yes&amp;quot; &amp;gt;&amp;gt; /etc/ssh/ssh_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post installation CentOS7 ==&lt;br /&gt;
&lt;br /&gt;
Set hostname: (use full name, i.e. daq11.triumf.ca)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/hostname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;olchansk@triumf.ca amaudruz@triumf.ca lindner@triumf.ca bsmith@triumf.ca&amp;quot; &amp;gt;&amp;gt; ~root/.forward&lt;br /&gt;
chmod a+r /var/log/messages&lt;br /&gt;
chmod a+r /var/log/yum.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activate rc.local:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+x /etc/rc.local&lt;br /&gt;
chmod a+x /etc/rc.d/rc.local  # TL edit&lt;br /&gt;
systemctl start rc-local&lt;br /&gt;
systemctl status rc-local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable &amp;quot;persistent network names&amp;quot; (DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/touch /etc/udev/rules.d/75-persistent-net-generator.rules&lt;br /&gt;
/bin/rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
#shutdown -r now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS client (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypbind authconfig&lt;br /&gt;
echo &amp;quot;NISTIMEOUT=5&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
echo &amp;quot;NETWORKWAIT=yes&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
authconfig --enablenis --enablepreferdns --nisdomain LADD-NIS --nisserver ladd00.triumf.ca --update&lt;br /&gt;
ypwhich&lt;br /&gt;
ypcat -k passwd&lt;br /&gt;
systemctl restart autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* On the master NIS node (ladd00), add this new node to /etc/netgroup, and update NIS maps (cd /var/yp; make)&lt;br /&gt;
* Use &amp;quot;system-config-users&amp;quot; to add local user accounts&lt;br /&gt;
* enable selinux ssh key login to nfs mounted home directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P use_nfs_home_dirs 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure NIS secondary server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Enable local NIS server, make local machine use it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install ypserv&lt;br /&gt;
/usr/lib64/yp/ypinit -s ladd00 ### (/usr/lib/yp/ypinit on 32-bit machines)&lt;br /&gt;
systemctl enable rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
systemctl start rpcbind ypserv ypxfrd yppasswdd&lt;br /&gt;
emacs -nw /etc/yp.conf # change &amp;quot;domain XXX server YYY.triumf.ca&amp;quot; to read &amp;quot;domain XXX server localhost&amp;quot;&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich # should say &amp;quot;localhost&amp;quot;&lt;br /&gt;
ypcat -k auto.master # should work&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punch hole in the firewall: (or &amp;quot;make&amp;quot; on NIS master will complain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo YPSERV_ARGS=\&amp;quot;-p 800\&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --add-service rpc-bind --permanent&lt;br /&gt;
firewall-cmd --add-port=800/tcp --add-port=800/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* on the NIS master:&lt;br /&gt;
** add the new machine to /var/yp/ypservers, run &amp;quot;make -C /var/yp&amp;quot; and also &amp;quot;cd /var/yp; yppush -h newmachine ypservers&amp;quot;&lt;br /&gt;
** if using /var/yp/securenets, copy it from NIS master to new NIS secondary server&lt;br /&gt;
&lt;br /&gt;
Enable hourly NIS update cron job (DO THIS AFTER git pull scripts, see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
cd etc&lt;br /&gt;
cd ~/git/scripts/etc; ln -s $PWD/ypxfr-cron-hourly /etc/cron.hourly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure AUTOFS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install autofs&lt;br /&gt;
systemctl enable autofs&lt;br /&gt;
systemctl start autofs&lt;br /&gt;
ls -l /daq/daqshare&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Label Selinux labels ==&lt;br /&gt;
&lt;br /&gt;
When upgrading non-selinux machines (el6) to el7 (selinux enforcing) the existing&lt;br /&gt;
user home directories will not have the correct selinux labels and many things&lt;br /&gt;
will not work, including ssh logins (sshd cannot access ~user/.ssh files).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
semanage fcontext -a -e /home /home1 ### selinux has special rules for /home, assign them to /home1&lt;br /&gt;
restorecon -R -v /home1 ### apply the new rules to files in /home1&lt;br /&gt;
ls -Zd /home1/alpha/.ssh&lt;br /&gt;
# should say: drwx------. alpha users system_u:object_r:ssh_home_t:s0  /home1/alpha/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure time (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Time server ntpd was replaced by chronyd.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install chrony&lt;br /&gt;
echo server time1 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time2 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
echo server time3 iburst &amp;gt;&amp;gt; /etc/chrony.conf&lt;br /&gt;
systemctl enable chronyd&lt;br /&gt;
systemctl restart chronyd&lt;br /&gt;
chronyc sources&lt;br /&gt;
chronyc tracking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if desired, edit /etc/chrony.conf, remove non-triumf time servers&lt;br /&gt;
&lt;br /&gt;
== Enable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Disable yum-cron:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --erase yum-cron&lt;br /&gt;
/bin/rm -v /var/lock/subsys/yum-cron&lt;br /&gt;
/bin/rm -v /etc/cron.daily/0yum-daily.cron&lt;br /&gt;
/bin/rm -v /etc/cron.hourly/0yum-hourly.cron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable yum-autoupdate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y epel-release&lt;br /&gt;
yum install -y yum-changelog yum-protectbase yum-tsflags yum-versionlock&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
rpm -vh --install http://linuxsoft.cern.ch/cern/centos/7.2/cern/x86_64/Packages/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm&lt;br /&gt;
#rpm -vh --install https://daqshare.triumf.ca/~olchansk/linux/yum-autoupdate-4.4.2-1.el7.cern.noarch.rpm https://daqshare.triumf.ca/~olchansk/linux/yum-kernel-module-1-5.el7.cern.noarch.rpm&lt;br /&gt;
systemctl enable yum-autoupdate&lt;br /&gt;
systemctl start yum-autoupdate&lt;br /&gt;
systemctl status yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable automatic system updates (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase yum-autoupdate&lt;br /&gt;
/bin/rm -f /etc/sysconfig/yum-autoupdate.rpmsave&lt;br /&gt;
/bin/rm -f /var/lock/subsys/yum-autoupdate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure system services (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* systemctl list-unit-files | grep enabled | sort ### (to see enabled services)&lt;br /&gt;
* disable unwanted services:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable bluetooth&lt;br /&gt;
systemctl disable dm-event&lt;br /&gt;
systemctl disable dmraid-activation&lt;br /&gt;
systemctl disable iscsid&lt;br /&gt;
systemctl disable iscsi&lt;br /&gt;
systemctl disable iscsiuio&lt;br /&gt;
systemctl disable libvirtd&lt;br /&gt;
systemctl disable lvm2-lmetad&lt;br /&gt;
systemctl disable lvm2-monitor&lt;br /&gt;
systemctl disable ModemManager&lt;br /&gt;
systemctl disable multipathd&lt;br /&gt;
systemctl disable netcf-transaction&lt;br /&gt;
systemctl disable lvm2-lvmetad.socket&lt;br /&gt;
systemctl disable lvm2-lvmpolld.socket&lt;br /&gt;
systemctl disable iscsid.socket&lt;br /&gt;
systemctl disable iscsiuio.socket&lt;br /&gt;
#systemctl disable &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erase unwanted packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* PackageKit # bugs users about security updates, hogs yum lock&lt;br /&gt;
* perl-homedir # creates unwanted $HOME/perl5&lt;br /&gt;
* ModemManager # thinks that all USB-attached devices are modems&lt;br /&gt;
* pcp # sends error email to itself, does not work&lt;br /&gt;
* abrt # sends email to root about useless crashes, i.e. crash of X when machine is rebooted&lt;br /&gt;
* rear # some kind of backup and recovery tool, not clear what it does, but it sends email complaining how it is broken&lt;br /&gt;
* bash-completion # &amp;quot;echo $HOME/&amp;lt;TAB&amp;gt;&amp;quot; becomes &amp;quot;echo \$HOME&amp;quot; (notice &amp;quot;\&amp;quot; added before &amp;quot;$&amp;quot;) preventing tab-completion from doing anything useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y erase PackageKit perl-homedir ModemManager pcp abrt abrt-libs abrt-gui-libs rear bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable unwanted package &amp;quot;tracker&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tracker&amp;quot; package is part of the GNOME desktop, it scans the content of all files&lt;br /&gt;
into a database for quick searching.&lt;br /&gt;
&lt;br /&gt;
When it malfunctions, bad things happen, i.e. read through&lt;br /&gt;
https://bugzilla.redhat.com/show_bug.cgi?id=747689&lt;br /&gt;
&lt;br /&gt;
Specific problem I see is that it floods the system log with error messages. Also &lt;br /&gt;
consumes network and filesystem bandwidth for NFS mounted home directories.&lt;br /&gt;
&lt;br /&gt;
This package cannot be removed by &amp;quot;yum erase tracker&amp;quot; dues to dependencies&lt;br /&gt;
from core GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
Instead, do this to deactivate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod -x /usr/libexec/tracker-*&lt;br /&gt;
chmod -x /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/bin/tracker&lt;br /&gt;
chattr +i /usr/libexec/tracker-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure external package repositories (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
EPEL: (addtional packages)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel modules and drivers) (CentOS8)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install elrepo-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ELREPO: (kernel drivers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org&lt;br /&gt;
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm&lt;br /&gt;
yum -y install yum-plugin-fastestmirror&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed to continue with installation ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
(these packages are sometimes missing, they are needed to follow following instructions instructions)&lt;br /&gt;
&lt;br /&gt;
(SL6.5: libotf is a dependancy of emacs - SL6.5 installer fails to install it)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install ed patch wget git libotf gdisk emacs perl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure Konstantin&#039;s scripts ==&lt;br /&gt;
&lt;br /&gt;
(+Centos7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~root/git&lt;br /&gt;
cd ~root/git&lt;br /&gt;
git clone http://ladd00.triumf.ca/~olchansk/git/scripts.git&lt;br /&gt;
cd scripts&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go back to the NIS slave server and install the hourly NIS update cron job.&lt;br /&gt;
&lt;br /&gt;
== Enable yum version lock ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install yum-plugin-versionlock&lt;br /&gt;
#yum versionlock packagename # yum versionlock rpcbind&lt;br /&gt;
#yum versionlock list # list locked packages&lt;br /&gt;
#yum versionlock delete packagename # unlock given package&lt;br /&gt;
#yum versionlock clear # delete all locks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure trusted ssh keys ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh localhost&lt;br /&gt;
interrupt by Ctrl-C&lt;br /&gt;
/bin/cp ~/git/scripts/etc/authorized_keys ~/.ssh/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure hardware sensors ==&lt;br /&gt;
&lt;br /&gt;
* yum -y install lm_sensors&lt;br /&gt;
* sensors-detect (accept default answer to all questions - press ENTER)&lt;br /&gt;
* systemctl restart lm_sensors&lt;br /&gt;
* sensors (to see available sensors)&lt;br /&gt;
&lt;br /&gt;
If no sensors are detected by standard drivers, follow motherboard-specific instructions at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Configure IPMI sensors ==&lt;br /&gt;
&lt;br /&gt;
Some machines support the IPMI interface for monitoring the hardware: fan speeds, temperatures, voltages.&lt;br /&gt;
&lt;br /&gt;
* find out if IPMI is supported. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dmidecode | grep -i ipmi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
if output is not blank, IPMI is maybe supported.&lt;br /&gt;
* install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
service ipmi start&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
chkconfig ipmi on&lt;br /&gt;
chkconfig ipmievd on&lt;br /&gt;
service ipmi restart&lt;br /&gt;
service ipmievd restart&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* (CentOS7) install and enable IPMI software:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install &amp;quot;OpenIPMI*&amp;quot; ipmitool&lt;br /&gt;
systemctl start ipmi&lt;br /&gt;
ipmitool sensor ### to confirm IPMI is present. If output is blank, do not go further.&lt;br /&gt;
systemctl list-unit-files | grep -i ipmi&lt;br /&gt;
systemctl enable ipmi&lt;br /&gt;
systemctl restart ipmi&lt;br /&gt;
systemctl status ipmi&lt;br /&gt;
systemctl enable ipmievd&lt;br /&gt;
systemctl restart ipmievd&lt;br /&gt;
systemctl status ipmievd&lt;br /&gt;
tail -100 /var/log/messages ### look at messages logged by ipmievd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if ipmievd complains about SEL buffer overflow, clear it manually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipmitool sel list ### show ipmi messages in raw format&lt;br /&gt;
ipmitool sel elist ### show ipmi messages in useful format&lt;br /&gt;
ipmitool sel elist &amp;gt; file ### save ipmi messages into a file&lt;br /&gt;
ipmitool sel clear  ### clear all accumulated ipmi messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* useful ipmi commands:&lt;br /&gt;
** ipmitool sensor -- read hardware sensors&lt;br /&gt;
** ipmitool sel elist -- report all accumulated messages&lt;br /&gt;
&lt;br /&gt;
== Configure ECC memory ==&lt;br /&gt;
&lt;br /&gt;
* check that machine has ECC memory: dmidecode --type memory | grep -i ecc&lt;br /&gt;
&lt;br /&gt;
Configure mcelog (machine check exception)&lt;br /&gt;
&lt;br /&gt;
* yum install mcelog&lt;br /&gt;
* check that mcelog is running: ps -efw | grep mcelog&lt;br /&gt;
* (el6) chkconfig mcelogd on; service mcelogd restart&lt;br /&gt;
* (el7) systemctl status mcelog.service; systemctl enable mcelog.service; systemctl restart mcelog.service&lt;br /&gt;
&lt;br /&gt;
Check for MCE (machine check exception) messages:&lt;br /&gt;
&lt;br /&gt;
* mcelog --client&lt;br /&gt;
* grep -i mce /var/log/messages*&lt;br /&gt;
* grep -i ecc /var/log/messages*&lt;br /&gt;
&lt;br /&gt;
Configure EDAC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install edac-utils&lt;br /&gt;
edac-ctl --mainboard&lt;br /&gt;
edac-ctl --status&lt;br /&gt;
lsmod | grep edac&lt;br /&gt;
modprobe ie31200_edac ### driver for Intel E3-1200 series ECC memory&lt;br /&gt;
&lt;br /&gt;
[root@grsmid00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
... empty&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/&lt;br /&gt;
drwxr-xr-x. 15 root root    0 Oct 25 16:40 mc0&lt;br /&gt;
...&lt;br /&gt;
[root@alpha00 ~]# ls -l /sys/devices/system/edac/mc/mc0&lt;br /&gt;
total 0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ce_noinfo_count&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 csrow3&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 max_location&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 mc_name&lt;br /&gt;
drwxr-xr-x. 2 root root    0 Oct 25 16:40 power&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank0&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank1&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank2&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank3&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank4&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank5&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank6&lt;br /&gt;
drwxr-xr-x. 3 root root    0 Oct 25 16:40 rank7&lt;br /&gt;
--w-------. 1 root root 4096 Oct 25 16:40 reset_counters&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 seconds_since_reset&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 size_mb&lt;br /&gt;
lrwxrwxrwx. 1 root root    0 Oct  2 12:02 subsystem -&amp;gt; ../../../../../bus/mc0&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_count&lt;br /&gt;
-r--r--r--. 1 root root 4096 Oct 25 16:40 ue_noinfo_count&lt;br /&gt;
-rw-r--r--. 1 root root 4096 Oct 25 16:40 uevent&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-ctl --status&lt;br /&gt;
edac-ctl: drivers are loaded.&lt;br /&gt;
&lt;br /&gt;
[root@alpha00 ~]# edac-util &lt;br /&gt;
edac-util: No errors to report.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure SMARTD (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 smartd config files send deficient email notices about disk failures. Overwrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd.conf /etc/smartmontools/&lt;br /&gt;
/bin/cp ~/git/scripts/etc/smartd_warning.sh /etc/smartmontools/&lt;br /&gt;
systemctl enable smartd&lt;br /&gt;
systemctl restart smartd&lt;br /&gt;
systemctl status smartd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable User Disk Quotas (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
* read http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html&lt;br /&gt;
* emacs -nw /etc/fstab, add &amp;quot;grpquota,usrquota&amp;quot; to filesystem options, e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@isdaq00 home1]# grep quota /etc/fstab&lt;br /&gt;
UUID=5a2aefbd-45db-475e-841e-12ec89220fbd /home1 ext4 defaults,grpquota,usrquota 1 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /; umount /home1; mount /home1&lt;br /&gt;
* quotacheck -cug /home1&lt;br /&gt;
* quotacheck -avug&lt;br /&gt;
* quotaon -av&lt;br /&gt;
* quota system is now active&lt;br /&gt;
* increase the soft quota time limit from default 7days to 30 or 60 days: edquota -t&lt;br /&gt;
* set quotas for all users (see below)&lt;br /&gt;
* setup warnquota:&lt;br /&gt;
** create warnquota config file: emacs -nw /etc/warnquota.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# values can be quoted:&lt;br /&gt;
MAIL_CMD        = &amp;quot;/usr/sbin/sendmail -t&amp;quot;&lt;br /&gt;
FROM            = root&lt;br /&gt;
SUBJECT         = User %i@%h exceeded allocated disk quota&lt;br /&gt;
CC_TO           = &amp;quot;root&amp;quot;&lt;br /&gt;
# If you set this variable CC will be used only when user has less than&lt;br /&gt;
# specified grace time left (examples of possible times: 5 seconds, 1 minute,&lt;br /&gt;
# 12 hours, 5 days)&lt;br /&gt;
# CC_BEFORE = 2 days&lt;br /&gt;
SUPPORT         = &amp;quot;root&amp;quot;&lt;br /&gt;
# Text in the beginning of the mail (if not specified, default text is used)&lt;br /&gt;
# This way text can be split to more lines&lt;br /&gt;
# Line breaks are done by &#039;|&#039; character&lt;br /&gt;
# The expressions %i, %h, %d, and %% are substituted for user/group name,&lt;br /&gt;
# host name, domain name, and &#039;%&#039; respectively. For backward compatibility&lt;br /&gt;
# %s behaves as %i but is deprecated.&lt;br /&gt;
MESSAGE         = User &amp;quot;%i&amp;quot; on &amp;quot;%h&amp;quot; has exceeded the allocated disk quota.||Please delete any unnecessary files on following filesystems or|contact the system administrato&lt;br /&gt;
r to increase your quota allocation:|&lt;br /&gt;
SIGNATURE       = --|automated email from warnquota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** note that %i@%h in the SUBJECT line do not seem to work&lt;br /&gt;
** create cron job: emacs -nw /etc/cron.daily/warnquota&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
warnquota&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** chmod a+x /etc/cron.daily/warnquota&lt;br /&gt;
** touch /etc/crontab&lt;br /&gt;
&lt;br /&gt;
Useful commands for managing quotas:&lt;br /&gt;
* repquota -a | sort -n -k3 ### show quota of all users sorted by disk usage&lt;br /&gt;
* edquota -u username ### open &amp;quot;vi&amp;quot; editor to change user quotas&lt;br /&gt;
* repquote -a | grep username ### report quota for given user&lt;br /&gt;
* setquota -u username 0 0 0 0 /home1 ### disable quotas for given user&lt;br /&gt;
* setquota -u username 50000000 100000000 0 0 /home1 ### set quotas for 50GB soft and 100GB hard&lt;br /&gt;
* edquota -t ### change user quota time limits&lt;br /&gt;
* edquote -tg ### change group quota time limits&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
* create /etc/exports. example: (fsid numbers should be unique and increase 1,2,3,...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async,fsid=1)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async,fsid=2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* enable things, start them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=nfs&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
systemctl enable nfs-server&lt;br /&gt;
systemctl start nfs-server&lt;br /&gt;
systemctl status nfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps -efw | grep rpc.mountd # should be running!&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=mountd&lt;br /&gt;
firewall-cmd --permanent --add-service=rpc-bind&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V3 server ==&lt;br /&gt;
&lt;br /&gt;
* edit /etc/hosts.allow, add or uncomment &amp;quot;mountd: 142.90.0.0/255.255.0.0&amp;quot;&lt;br /&gt;
* create /etc/exports. example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home1  @home_export(rw,no_root_squash,async)&lt;br /&gt;
/data1  @data_export(rw,no_root_squash,async)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check the netgroup file&lt;br /&gt;
** if using NIS: check NIS netgroup: ypcat -k netgroup&lt;br /&gt;
** if no NIS, create /etc/netgroup: @daqmachines (deap00,,) (deap01,,) (deap02,,)&lt;br /&gt;
** if no NIS, edit /etc/nsswitch.conf, make the netgrooup line read: &amp;quot;netgroup: files&amp;quot;&lt;br /&gt;
* chkconfig nfs on&lt;br /&gt;
* chkconfig nfslock on&lt;br /&gt;
* service nfs restart&lt;br /&gt;
&lt;br /&gt;
Then on ladd00 need to do&lt;br /&gt;
* ssh to root@ladd00&lt;br /&gt;
* edit /etc/auto.daq to add new machine...&lt;br /&gt;
* make -C /var/yp&lt;br /&gt;
&lt;br /&gt;
== Enable NFS V4 SERVER (SL6) ==&lt;br /&gt;
&lt;br /&gt;
* if used with NIS, same as NFSv3&lt;br /&gt;
* if used as standalone, need to edit idmapd.conf - set the &amp;quot;Domain&amp;quot; name to the same value on NFS server and NFS slave (default automagically determined value does not always work). More TBW.&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups ==&lt;br /&gt;
&lt;br /&gt;
AMANDA backups are already enabled by TRIUMF kickstart installs. For non-kickstart installation, follow instructions at [[http://amanda/~amanda http://amanda/~amanda]], or look at &amp;quot;/triumfcs/trshare/olchansk/linux/amanda/amanda-enable.perl&amp;quot;. As final step, use [[https://helpdesk.triumf.ca https://helpdesk.triumf.ca]] to contact TRIUMF CS to add this new machine to the amanda backup list.&lt;br /&gt;
&lt;br /&gt;
* yum install triumf-amanda&lt;br /&gt;
&lt;br /&gt;
== Enable AMANDA backups (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install amanda-client&lt;br /&gt;
systemctl list-unit-files | grep -i amanda&lt;br /&gt;
#systemctl enable amanda&lt;br /&gt;
systemctl enable amanda.socket&lt;br /&gt;
systemctl enable amanda-udp.socket&lt;br /&gt;
systemctl restart amanda.socket&lt;br /&gt;
systemctl restart amanda-udp.socket&lt;br /&gt;
firewall-cmd --get-services&lt;br /&gt;
firewall-cmd --permanent --add-service=amanda-client&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
echo amanda.triumf.ca amanda amdump &amp;gt;&amp;gt; /var/lib/amanda/.amandahosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On amanda server, add new machine to the disklist, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amcheck -c daily titan00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable DCACHE ==&lt;br /&gt;
&lt;br /&gt;
DAQ dcache server is mounted as&lt;br /&gt;
&lt;br /&gt;
/daq/pnfs/triumf.ca/data/&lt;br /&gt;
&lt;br /&gt;
For Centos-7 machines, you need to adjust the firewall rules in order to be able to communicate with the trdata machines; this is only necessary if you are copying data to trdata.  The firewall changes are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.212/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.107.156/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.100.219/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructions are unnecessary &lt;br /&gt;
* # mkdir -p /pnfs&lt;br /&gt;
* # edit /etc/rc.local, add to the end of file: &amp;quot;mount -o intr,rw,noac,hard,nfsvers=3 trdata00:/pnfs /pnfs &amp;amp;&amp;quot;&lt;br /&gt;
* # . /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
For more information on, see [[TrdataDcache]] dcache page.&lt;br /&gt;
&lt;br /&gt;
== Configure Ganglia (Centos7) ==&lt;br /&gt;
&lt;br /&gt;
CentOS7 Ganglia instructions (EPEL7 ganglia-3.7.2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm /etc/gmond.conf&lt;br /&gt;
yum -y install &amp;quot;ganglia-gmond*&amp;quot;&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/multicpu.conf   # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/netstats.pyconf # spews errors into syslog&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/diskstat.pyconf # collects useless data&lt;br /&gt;
/bin/cp -v /dev/null /etc/ganglia/conf.d/procstat.pyconf # do not create /tmp/gmond.conf&lt;br /&gt;
/bin/cp ~/git/scripts/etc/gmond.conf /etc/ganglia/gmond.conf&lt;br /&gt;
systemctl enable gmond&lt;br /&gt;
systemctl restart gmond&lt;br /&gt;
systemctl status gmond&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF DAQ packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
wget http://daq.triumf.ca/~daqweb/yum/triumf-daq.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Konstantin&#039;s packages ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install diskscrub emailonreboot monitor_nfs &amp;quot;ganglia-*&amp;quot; triumf_nodeinfo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install memtest and PXE boot ==&lt;br /&gt;
&lt;br /&gt;
!!!DO NOT DO THIS!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-5.01.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.20.bin.gz&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/memtest86+-4.10&lt;br /&gt;
wget http://ladd00.triumf.ca/tftpboot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&lt;br /&gt;
emacs -nw /boot/grub/grub.conf&lt;br /&gt;
title memtest86+-5.01&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-5.01.bin.gz&lt;br /&gt;
title memtest86+-4.20&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.20.bin.gz&lt;br /&gt;
title memtest86+-4.10&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/memtest86+-4.10&lt;br /&gt;
title pxeboot&lt;br /&gt;
      root (hd0,0)&lt;br /&gt;
      kernel /boot/gpxe-1.0.1+-gpxe.lkrn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum --disablerepo=\* --enablerepo=triumf-daq --skip-broken install triumf_nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl --config ladd00.triumf.ca:8600&lt;br /&gt;
emacs -nw /etc/nodeinfo&lt;br /&gt;
/usr/sbin/sendnodeinfo.perl ladd00.triumf.ca:8600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install gonodeinfo node monitoring ==&lt;br /&gt;
&lt;br /&gt;
(+Ubuntu, +CentOS7, +CentOS8)&lt;br /&gt;
&lt;br /&gt;
go to https://bitbucket.org/dd1/gonodeinfo&lt;br /&gt;
follow instructions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install golang&lt;br /&gt;
mkdir ~/git&lt;br /&gt;
cd ~/git&lt;br /&gt;
git clone https://bitbucket.org/dd1/gonodeinfo.git&lt;br /&gt;
cd gonodeinfo&lt;br /&gt;
git pull&lt;br /&gt;
make&lt;br /&gt;
make install # install gonodeinfo agent&lt;br /&gt;
cd ~ # this is important&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/gonodeinfo.conf&lt;br /&gt;
* change &amp;quot;Description&amp;quot;, &amp;quot;Location&amp;quot;, &amp;quot;User&amp;quot; and &amp;quot;Administrator&amp;quot; as appropriate (or delete them)&lt;br /&gt;
* change &amp;quot;Servers&amp;quot; to read: Servers: ladd00.triumf.ca:8601&lt;br /&gt;
* run gonodeinfo -e&lt;br /&gt;
* if error is &amp;quot;connection refused&amp;quot;. go to the nodeinfo server to add this client to the access control list:&lt;br /&gt;
* on the gonodeinfo server: run gonodereceive -a daq13&lt;br /&gt;
* try gonodeinfo again, there should be no error&lt;br /&gt;
* on the gonodeinfo server: run gonodereport, look at the web pages, the new machine should be listed now&lt;br /&gt;
&lt;br /&gt;
== Install latest system updates ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum update -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure TRIUMF Printers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop cups&lt;br /&gt;
systemctl disable cups&lt;br /&gt;
echo &amp;quot;ServerName printers.triumf.ca&amp;quot; &amp;gt; /etc/cups/client.conf&lt;br /&gt;
lpstat -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable syslog spam (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 config is spamming the syslog with useless messages &amp;quot;systemd: Starting Session&amp;quot;, etc. Disable this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo auditctl -e 0 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo /usr/bin/systemd-analyze set-log-level notice &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install basic system packages (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
(if starting from minimal system, basic system packages required:)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y which psmisc redhat-lsb-core xorg-x11-xauth xterm emacs-nox rsync tcpdump strace nfs-utils sysstat iftop tcsh&lt;br /&gt;
yum install -y gcc gcc-c++ gdb glibc-static libstdc++-static zlib zlib-devel openssl-devel httpd-tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install packages needed for QUARTUS, ROOT, EPICS and MIDAS DAQ ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.x86_64 sysstat &amp;quot;libusb-devel*&amp;quot; unixODBC-devel postgresql-devel libxml2-devel libXpm-devel libgfortran git compat-readline43 &amp;quot;graphviz*&amp;quot; dcap &amp;quot;tigervnc*&amp;quot; telnet glibc&amp;quot;*&amp;quot; strace &amp;quot;fftw*&amp;quot; libpng &amp;quot;freetype*&amp;quot; xpdf &amp;quot;xemacs*&amp;quot; tkcvs xterm mutt &amp;quot;*-g77*&amp;quot; joe &amp;quot;libXmu*&amp;quot; dcap-devel gsl-devel pcre-devel h5py gd-devel xorg-x11-fonts&amp;quot;*&amp;quot; minicom xfig&amp;quot;*&amp;quot; perl-BSD-Resource &amp;quot;net-snmp-*&amp;quot; readline-static git-all nasm imake tcl-devel gv xorg-x11-twm expat-devel screen compat-readline5 ImageMagick ImageMagick-devel wget alacarte scipy numpy sympy nedit gnuplot php-cli php-domxml-php4-php5 php-gd php-fpdf php-cli kdebase cmake tcpdump sqlite sqlite-devel kdegraphics gdisk lsof gconf-editor iftop tk-devel mcelog kdm blt itcl lz4 bzip2 pbzip2 apr-devel apr-util-devel net-tools golang&amp;quot;*&amp;quot; --exclude golang-cover&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;hg&amp;quot;*&amp;quot; --exclude golang-pkg&amp;quot;*&amp;quot; --exclude golang-github&amp;quot;*&amp;quot; --exclude golang&amp;quot;*&amp;quot;git&amp;quot;*&amp;quot; mesa&amp;quot;*&amp;quot; xerces-c&amp;quot;*&amp;quot; diffuse clang i2c-tools  texlive-revtex texlive-revtex4 kile kbibtex xrdp glibc.i686 gimp gimp-data-extras perl-GD&amp;quot;*&amp;quot; perl-Math&amp;quot;*&amp;quot; perl-Statistics-Basic cmake3 cmake3-gui extra-cmake-modules python2-pip x2go&amp;quot;*&amp;quot; mariadb-devel glibc-devel.i686&lt;br /&gt;
&lt;br /&gt;
== Install optional packages ==&lt;br /&gt;
&lt;br /&gt;
!! DO NOT DO THIS !!&lt;br /&gt;
&lt;br /&gt;
(do not install boost on 32-bit machines)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken &amp;quot;boost-*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(packages for 32-bit software compilation on 64-bit machines. this is optional)&lt;br /&gt;
&lt;br /&gt;
yum install --skip-broken giflib.i386 giflib.i686 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel.i686 openssl-devel.i686 unixODBC-devel.i686 libstdc++-devel.i386 libstdc++-devel.i686 &amp;quot;zlib-*.i686&amp;quot; &amp;quot;libXext-*.i686&amp;quot; &amp;quot;libXtst-*.i686&amp;quot; glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel.i686 gsl-devel.i686 pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 gd-devel.i686 readline-devel.i686 ncurses-devel.i686 libXdmcp.i686 readline-static.i686 compat-readline5.i686&lt;br /&gt;
&lt;br /&gt;
yum install boost-devel.i686&lt;br /&gt;
&lt;br /&gt;
(separately install these packages - they collide with the big bunch above)&lt;br /&gt;
&lt;br /&gt;
yum install rdesktop&lt;br /&gt;
&lt;br /&gt;
yum reinstall urw-fonts&lt;br /&gt;
&lt;br /&gt;
== Install libraries for PHYSICA (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To run physica built on el6 from git sources on el7, do this:&lt;br /&gt;
&lt;br /&gt;
(building physica on el7 is nort supported at this time)&lt;br /&gt;
&lt;br /&gt;
(see more http://www.triumf.info/wiki/DAQwiki/index.php/PHYSICA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install libX11.i686 gd.i686 libpng12.i686 readline.i686 compat-libf2c-34.i686&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install additional desktop environements (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# LXQT (from EPEL)&lt;br /&gt;
# NOT COMPATIBLE WITH el7.7 # yum -y install &amp;quot;lxqt*&amp;quot;&lt;br /&gt;
# Cinnamon desktop (from EPEL)&lt;br /&gt;
yum -y install cinnamon&lt;br /&gt;
# KDE5 not available yet&lt;br /&gt;
# MATE (from epel)&lt;br /&gt;
yum -y groupinstall &amp;quot;MATE Desktop&amp;quot;&lt;br /&gt;
yum -y install mate-common mate-icon-theme-faenza mate-netspeed mate-sensors-applet mate-themes-extras mate-utils&lt;br /&gt;
yum -y erase ModemManager abrt abrt-libs abrt-gui-libs&lt;br /&gt;
# XFCE4 (from EPEL)&lt;br /&gt;
yum -y groupinstall xfce&lt;br /&gt;
yum -y install &amp;quot;xfce*plugin&amp;quot; xfce4-about --exclude xfce4-hamster-plugin&lt;br /&gt;
yum -y erase bash-completion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* make the MATE desktop as default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -v etc/lightdm_default_mate.conf /etc/lightdm/lightdm.conf.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* lighdm login manager (from EPEL)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install lightdm lightdm-kde lightdm-qt lightdm-qt5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* and switch from gdm to lighdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable gdm.service&lt;br /&gt;
systemctl enable lightdm.service&lt;br /&gt;
(systemctl stop gdm; systemctl restart lightdm) &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install SMART scripts ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -sf ~/git/scripts/smart-status/smart-status.perl ~/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install NTFS drivers ==&lt;br /&gt;
&lt;br /&gt;
yum install ntfs-3g ntfsprogs (from EPEL)&lt;br /&gt;
&lt;br /&gt;
== Install HFS and HFS+ drivers (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
yum --disablerepo=\* --enablerepo=elrepo install kmod-hfs kmod-hfsplus&lt;br /&gt;
&lt;br /&gt;
== Install Google Chrome web browser (64-bit CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/cp ~/git/scripts/etc/google-chrome-64.repo /etc/yum.repos.d/&lt;br /&gt;
yum install google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable monitoring of HTTPS certificates ==&lt;br /&gt;
&lt;br /&gt;
On SL6, CentOS7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install crypto-utils&lt;br /&gt;
/etc/cron.daily/certwatch&lt;br /&gt;
strace -f /etc/cron.daily/certwatch  |&amp;amp; grep open  | grep crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable 100dpi fonts for EPICS ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s /usr/share/X11/fonts/100dpi /etc/X11/fontpath.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable crontab @reboot for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
el7 has a bug - cron @reboot entries for normal users can run before autofs is ready, so if the home directory&lt;br /&gt;
is on autofs/NFS, it cannot be accessed and the cron job fails. If MIDAS is supposed to be&lt;br /&gt;
started by cron @reboot, it will not start (there *will* be an error message in /var/log/cron).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/systemd/system/crond.service.d&lt;br /&gt;
echo -e &amp;quot;[Unit]\nAfter=ypbind.service autofs.service\n&amp;quot; &amp;gt; /etc/systemd/system/crond.service.d/local.conf&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl cat crond.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explore the systemd dependacy tree using &amp;quot;systemctl list-dependencies&amp;quot; maybe with &amp;quot;--all&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Visualize the exact boot sequence from previous boot: &amp;quot;systemd-analyze plot &amp;gt; xxx.svg&amp;quot;, look at the svg file using a web browser.&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for MIDAS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
Default el7 configuration prevents all access to servers running on the local machine, including access to MIDAS mhttpd (tcp port 8443) and mserver (all tcp ports).&lt;br /&gt;
&lt;br /&gt;
To enable access to mhttpd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=8443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable access to the mserver from a specific host: (replace 142.90.111.175 with the IP address of the permitted host)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.111.175/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable firewall for EPICS (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
To enable access to TRIUMF EPICS servers, do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.132.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For UCN the controls people seem to have EPICS setup on a different server; this might be true for CMMS as well.  In this case the firewall rule change should be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;142.90.139.0/23&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable gdm and X11 (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initctl stop prefdm&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/prefdm.override&lt;br /&gt;
echo &amp;quot;start on never&amp;quot; &amp;gt; /etc/init/splash-manager.override&lt;br /&gt;
initctl reload-configuration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then enable login on default console:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;plymouth quit&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo &amp;quot;X_TTY=xxx/dev/tty1&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install JAVAWS (OPTIONAL) ==&lt;br /&gt;
&lt;br /&gt;
* to run Java &amp;quot;web start&amp;quot; jnlp files (EVO, SEEVOGH, etc): javaws Downloads/spider.jnlp&lt;br /&gt;
* install javaws:&lt;br /&gt;
* yum install icedtea-web icedtea-web-javadoc&lt;br /&gt;
&lt;br /&gt;
== Install firefox java plugin (OPTIONAL, DO NOT DO THIS) ==&lt;br /&gt;
&lt;br /&gt;
This installs the Oracle Java plugin:&lt;br /&gt;
&lt;br /&gt;
* rpm -vh --install ~deap/jdk-7u15-linux-x64.rpm&lt;br /&gt;
* ls -l /usr/lib64/mozilla/plugins/&lt;br /&gt;
* ln -s /usr/java/jdk1.7.0_15/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/&lt;br /&gt;
* start firefox, go edit-&amp;gt;preferences-&amp;gt;general-&amp;gt;manage add-ons-&amp;gt;plugins&lt;br /&gt;
* &amp;quot;java plugin 1.7.0_15&amp;quot; should be listed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configure USB device permissions ==&lt;br /&gt;
&lt;br /&gt;
(+CentOS7)&lt;br /&gt;
&lt;br /&gt;
Configure USB device permissions for user access to USB-serial devices, Altera USB Blaster, etc.&lt;br /&gt;
&lt;br /&gt;
* create file /etc/udev/rules.d/99-usb-chmod.rules with this contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emacs -nw /etc/udev/rules.d/99-usb-chmod.rules&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /dev/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr /proc/%c&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVTYPE}==&amp;quot;usb_device&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVICE}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{PHYSDEVBUS}==&amp;quot;usb-serial&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, ENV{DEVPATH}==&amp;quot;/class/tty/ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+wr $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyUSB*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;tty&amp;quot;, DEVPATH==&amp;quot;*ttyS*&amp;quot;, RUN+=&amp;quot;/bin/chmod a+rw $env{DEVNAME}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* apply new permissions: udevadm trigger --action=add&lt;br /&gt;
&lt;br /&gt;
== Disable modem-manager ==&lt;br /&gt;
&lt;br /&gt;
The modem-manager will try to talk to any serial devices attached to USB serial ports. It assumes that those devices are modems and will send out modem-specific commands. if the devices are not modems and do not understand or do not like modem commands, well that&#039;s too bad. modem-manager is installed by the ModemManager package required by the NetworkManager package, and there is no configuration setting to turn modem-manager off.&lt;br /&gt;
&lt;br /&gt;
One way to disable it is: chmod a= /usr/sbin/modem-manager&lt;br /&gt;
&lt;br /&gt;
Another way to disable it is by forced uninstall: rpm --erase --nodeps ModemManager&lt;br /&gt;
&lt;br /&gt;
Remember to kill the running copy: killall -KILL modem-manager&lt;br /&gt;
&lt;br /&gt;
Caveat: it is not clear if modem-manager would not be resurrected by an update to the NetworkManager or ModemManager packages.&lt;br /&gt;
&lt;br /&gt;
== Configure Altera jtagd ==&lt;br /&gt;
&lt;br /&gt;
(if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/jtagd&lt;br /&gt;
echo &#039;Password = &amp;quot;123&amp;quot;;&#039; &amp;gt; /etc/jtagd/jtagd.conf&lt;br /&gt;
cp -pv /triumfcs/trshare/olchansk/altera/11.0/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* start local jtagd: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagd&lt;br /&gt;
* test local connection: /triumfcs/trshare/olchansk/altera/11.0/quartus/bin/jtagconfig&lt;br /&gt;
* test remote connection (add this machine to your .jtag.conf, run jtagconfig&lt;br /&gt;
&lt;br /&gt;
For more information, go to [[Quartus]]&lt;br /&gt;
&lt;br /&gt;
== Install EOS ==&lt;br /&gt;
&lt;br /&gt;
Instructions from here:&lt;br /&gt;
http://eos-docs.web.cern.ch/eos-docs/quickstart/setup_repo.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -vh --install https://dss-ci-repo.web.cern.ch/dss-ci-repo/eos/citrine/tag/el-7/x86_64/eos-repo-el7-generic-1.noarch.rpm&lt;br /&gt;
yum-config-manager --disable eos-citrine # disable auto-update because all packages are not signed&lt;br /&gt;
yum-config-manager --disable eos-dep # disable auto-update because all packages are not signed.&lt;br /&gt;
yum install eos-client eos-fuse --enablerepo=eos-citrine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install fix for the el7 systemd dbus boot hang ==&lt;br /&gt;
&lt;br /&gt;
Around early Summer 2018 el7 started showing a boot problem. In the nutshell,&lt;br /&gt;
there is a problem with the dbus connection between dbus and systemd that&lt;br /&gt;
prevents polkit, firewalld, etc from starting. The system eventually boots&lt;br /&gt;
enough that one can ssh into it, but most things do not work. Notably,&lt;br /&gt;
polkit is not running, firewalld is not running, ssh login takes about 15-30 second.&lt;br /&gt;
&lt;br /&gt;
Solution is to add a special systemd service to check that dbus started correctly.&lt;br /&gt;
It that runs after dbus is started, but before it is used, and it restarts dbus in a loop&lt;br /&gt;
with a delay until dbus starts correctly. In testing, dbus always starts correctly after&lt;br /&gt;
the first retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.perl /usr/bin/&lt;br /&gt;
/bin/cp -vf systemd-check-dbus.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable systemd-check-dbus&lt;br /&gt;
systemctl start systemd-check-dbus&lt;br /&gt;
systemctl status systemd-check-dbus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After linux boots, if everything was okey, the script will report this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iris01 ~]# systemctl status systemd-check-dbus&lt;br /&gt;
...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca systemd[1]: Starting Check that systemd is registered with dbus...&lt;br /&gt;
Feb 08 17:15:49 iris01.triumf.ca sh[4283]: Starting check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.DBus&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: List:       string &amp;quot;org.freedesktop.systemd1&amp;quot;&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: systemd1 dbus service exists, success!&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca sh[4283]: Finished check for systemd dbus connection&lt;br /&gt;
Feb 08 17:15:50 iris01.triumf.ca systemd[1]: Started Check that systemd is registered with dbus.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the boot problem happened, the script will report about restarting dbus.&lt;br /&gt;
&lt;br /&gt;
Note: the systemd service file adjusts the start order of other services, this adjustment seems to reduce the probability of the problem.&lt;br /&gt;
&lt;br /&gt;
== Configure GRUB boot loader (CENTOS7) ==&lt;br /&gt;
&lt;br /&gt;
* emacs -nw /etc/default/grub, remove &amp;quot;rhgb&amp;quot; and &amp;quot;quiet&amp;quot; from GRUB_CMDLINE_LINUX&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg&lt;br /&gt;
* grub2-editenv list # show contents of boot environement file&lt;br /&gt;
* /bin/rm /boot/grub2/grubenv # remove stale settings, make grub2 boot from first entry in config file&lt;br /&gt;
&lt;br /&gt;
== Install memtest86+ (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install memtest86+&lt;br /&gt;
/bin/cp -vf /usr/share/memtest86+/20_memtest86+ /etc/grub.d/&lt;br /&gt;
/bin/chmod a+x /etc/grub.d/20_memtest86+ &lt;br /&gt;
grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disable ELREPO ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo_triumf.repo&lt;br /&gt;
sed &#039;s/enabled=.*/enabled=0/&#039; -i /etc/yum.repos.d/elrepo.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reduce install size (optional) ==&lt;br /&gt;
&lt;br /&gt;
This is optional. Only do this if reducing the size of the OS image is very important.&lt;br /&gt;
&lt;br /&gt;
Do this for VME processors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum erase &amp;quot;texlive*&amp;quot; &amp;quot;java*&amp;quot; &amp;quot;boost*&amp;quot; libreoffice&amp;quot;*&amp;quot;&lt;br /&gt;
#yum erase &amp;quot;xemacs*&amp;quot;&lt;br /&gt;
yum erase &amp;quot;libstdc++-docs&amp;quot;&lt;br /&gt;
yum erase firefox google-chrome&amp;quot;*&amp;quot;&lt;br /&gt;
yum clean all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/bin/rm -rf /usr/share/help&lt;br /&gt;
/bin/rm -rf /usr/share/doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update from el7.6 to el7.7 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum versionlock delete zfs&lt;br /&gt;
yum versionlock delete kernel&lt;br /&gt;
yum -y update &amp;quot;yum*&amp;quot; &amp;quot;rpm*&amp;quot;&lt;br /&gt;
yum -y erase libqtxdg lxqt-qtplugin ### LXQT is not compatible&lt;br /&gt;
yum update&lt;br /&gt;
after rebooting into el7.7, follow instructions for updating ZFS from version 0.7 to 0.8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
== Special hardware settings ==&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 1207 or newer&lt;br /&gt;
* (before CentOS7) sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
* CentOS7: installs correct drivers automatically&lt;br /&gt;
&lt;br /&gt;
=== ASUS Crosshair-II mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2607 or newer&lt;br /&gt;
* for the onboard IDE to work, add &amp;quot;all-generic-ide&amp;quot; to kernel boot options in grub.conf&lt;br /&gt;
* sensors need these drivers from ELREPO: yum install --noplugins kmod-it87 kmod-k10temp; sensors-detect; service lm_sensors restart; sensors&lt;br /&gt;
&lt;br /&gt;
=== ASUS P7P55D EVO mobo ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 2004 or newer&lt;br /&gt;
* SL6 - install special driver for on board PCIe GigE network port and disable on board PCI GigE network port:&lt;br /&gt;
** yum --enablerepo elrepo install kmod-r8168 kmod-r8169&lt;br /&gt;
** # do not do this: sed &#039;s/^blacklist/#blacklist/&#039; -i /etc/modprobe.d/blacklist-r8169.conf&lt;br /&gt;
** reboot&lt;br /&gt;
** verify that correct drivers are loaded: ethtool -i eth0; ethtool -i eth1&lt;br /&gt;
** note: there will be no eth1 - r8169 driver is disabled.&lt;br /&gt;
&lt;br /&gt;
=== ASUS P6X58-E-WS mobo ===&lt;br /&gt;
&lt;br /&gt;
* BIOS settings&lt;br /&gt;
** F1 or DEL to enter BIOS setup, F8 boot menu&lt;br /&gt;
** go to POWER-&amp;gt;HW mon, confirm CPU temperature is around 30C. (heatsink is installed correctly. Bad heatsink temperature quickly goes up to 50-70C).&lt;br /&gt;
** Main menu: Storage config - SATA change IDE-&amp;gt;AHCI&lt;br /&gt;
** System information: confirm BIOS version 301, CPU type, memory size&lt;br /&gt;
** AI Tweak: set DRAM frequency - AUTO-&amp;gt;DDR3-1333&lt;br /&gt;
** Advanced-&amp;gt;Onboard devices: LAN BOOT: enabled&lt;br /&gt;
** Power-&amp;gt;HW monitor: CPU Q-FAN: enabled&lt;br /&gt;
** Boot-&amp;gt;Settings: Quick boot: enabled; Full screen logo: disabled; Wait for F1: disabled&lt;br /&gt;
** Save and exit&lt;br /&gt;
&lt;br /&gt;
=== ASUS E35M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboards/E35M1M_PRO/#specifications&lt;br /&gt;
* use BIOS version 1002 or newer&lt;br /&gt;
* for CPU temperature: install kmod-k10temp from ELREPO (kmod-k10temp-0.0-4.el6.elrepo.x86_64.rpm)&lt;br /&gt;
* for Sensors: yum --enablerepo elrepo install kmod-w83627ehf; modprobe w83627ehf; sensors&lt;br /&gt;
* for Graphics: yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* to enable booting from USB3, edit /etc/dracut.conf, change line &amp;quot;add_drivers&amp;quot; to read: add_drivers+=&amp;quot;xhci-hcd&amp;quot;&lt;br /&gt;
* to use multiple monitors, run &amp;quot;aticonfig --initial --heads=2 --adapter=1 --xinerama=on&amp;quot;, to change screen layout, edit /etc/X11/xorg.conf. Only dual monitors DVI+HDMI seem to work. Tripple monitors does not seem to work.&lt;br /&gt;
&lt;br /&gt;
Sensors instructions below are obolete (use driver from ELREPO)&lt;br /&gt;
* for Sensors, install driver for NCT6776F chip from https://github.com/groeck/w83627ehf/archives/master (in the Makefile, change the line &amp;quot;KERNEL_BUILD=&amp;quot; to read: &amp;quot;KERNEL_BUILD:=/usr/src/kernels/$(TARGET)&amp;quot;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/groeck-w83627ehf-dd3e543/w83627ehf.ko&lt;br /&gt;
echo &amp;quot;modprobe hwmon; modprobe hwmon-vid; modprobe k10temp; rmmod w83627ehf; insmod /root/w83627ehf.ko&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS E45M1-M PRO mobo ===&lt;br /&gt;
&lt;br /&gt;
* https://www.asus.com/Motherboards/E45M1M_PRO/#specifications&lt;br /&gt;
* use BIOS 1202 or newer&lt;br /&gt;
* follow the E35M1-M PRO instructions above&lt;br /&gt;
&lt;br /&gt;
=== ASUS P9X79 WS ===&lt;br /&gt;
&lt;br /&gt;
* http://www.asus.com/Motherboard/P9X79_WS/&lt;br /&gt;
* use BIOS version 3101, 3401, 4701 or newer. If BIOS is 1305 or older, install P9X79-WS-CAP-Converter.ROM (BIOS 2902/3101), then the new BIOS.&lt;br /&gt;
* (not needed for CentOS7) for CPU temperature, install coretemp&lt;br /&gt;
* (not needed for CentOS7) for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
* BIOS Settings:&lt;br /&gt;
** enter &amp;quot;Advanced mode&amp;quot;&lt;br /&gt;
** Ai Tweaker -&amp;gt; Ai Overclock Tuner -&amp;gt; Set to &amp;quot;XMP&amp;quot; - this enables DDR3-1600 RAM speed vs DDR3-1333 by default&lt;br /&gt;
** Monitor -&amp;gt; CPU fan speed low limit -&amp;gt; Set to &amp;quot;200 RPM&amp;quot; - we are using high efficiency slow turning CPU coolers and the default 600 RPM is right on the edge of firing false warnings&lt;br /&gt;
** Boot -&amp;gt; Full screen logo -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
** Wait for F1 -&amp;gt; Set to &amp;quot;disabled&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ASUS P8B-M ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS version 6103 or newer&lt;br /&gt;
* for CPU temperature, install coretemp&lt;br /&gt;
* for sensors, install driver for NCT6776F chip same as E35M1-M above.&lt;br /&gt;
&lt;br /&gt;
=== SUPERMICRO X9SCL ===&lt;br /&gt;
&lt;br /&gt;
* yum install kmod-w83627ehf.x86_64 coretemp&lt;br /&gt;
* xemacs -nw /etc/rc.local, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe coretemp&lt;br /&gt;
modprobe w83627ehf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z87-WS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS Z97-WS ===&lt;br /&gt;
&lt;br /&gt;
the nct6775 driver does not work because of conflict with ACPI.&lt;br /&gt;
&lt;br /&gt;
=== ASUS AM1M-A ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 602 or later&lt;br /&gt;
* SL6.5 installer cannot use USB2 ports and the network. Use USB3 ports (blue colour) to boot USB installer (memtest, rescue, etc)&lt;br /&gt;
* SL6.5 kernels require boot option &amp;quot;iommu=soft&amp;quot; or USB2 and network do not work. (USB3 - blue ports - seems okey)&lt;br /&gt;
* install ATI/AMD video drivers from ELREPO (see below)&lt;br /&gt;
* sensors chip is ITE IT8623E, for SL6, use standalone driver from lm_sensors. (2 fans rpm, 2 temperatures):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* for el7 use it87.ko driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget https://daqshare.triumf.ca/~olchansk/linux/CentOS7/it87.ko&lt;br /&gt;
echo modprobe hwmon_vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/it87.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
. /etc/rc.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@midemma02 ~]# sensors&lt;br /&gt;
radeon-pci-0008&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.0°C  (crit = +120.0°C, hyst = +90.0°C)&lt;br /&gt;
&lt;br /&gt;
fam15h_power-pci-00c4&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
power1:           N/A  (crit =  25.00 W)&lt;br /&gt;
&lt;br /&gt;
k10temp-pci-00c3&lt;br /&gt;
Adapter: PCI adapter&lt;br /&gt;
temp1:        +22.2°C  (high = +70.0°C)&lt;br /&gt;
                       (crit = +70.0°C, hyst = +69.0°C)&lt;br /&gt;
&lt;br /&gt;
it8603-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:          +0.96 V  (min =  +2.50 V, max =  +2.95 V)  ALARM&lt;br /&gt;
in1:          +2.23 V  (min =  +0.94 V, max =  +1.22 V)  ALARM&lt;br /&gt;
in2:          +2.03 V  (min =  +0.74 V, max =  +0.77 V)  ALARM&lt;br /&gt;
in3:          +2.00 V  (min =  +1.26 V, max =  +0.13 V)  ALARM&lt;br /&gt;
in4:          +2.23 V  (min =  +2.95 V, max =  +2.15 V)  ALARM&lt;br /&gt;
3VSB:         +3.36 V  (min =  +6.00 V, max =  +2.50 V)  ALARM&lt;br /&gt;
Vbat:         +3.22 V  &lt;br /&gt;
+3.3V:        +3.36 V  &lt;br /&gt;
fan1:         611 RPM  (min =  200 RPM)&lt;br /&gt;
fan2:         707 RPM  (min =  600 RPM)  ALARM&lt;br /&gt;
temp1:        +38.0°C  (low  = +122.0°C, high = +122.0°C)  sensor = thermistor&lt;br /&gt;
temp2:        +22.0°C  (low  = +119.0°C, high = -35.0°C)  ALARM  sensor = thermistor&lt;br /&gt;
temp3:       -128.0°C  (low  = +16.0°C, high = +93.0°C)  sensor = thermistor&lt;br /&gt;
intrusion0:  ALARM&lt;br /&gt;
&lt;br /&gt;
[root@midemma02 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* AMD &amp;quot;Athlon(tm) 5350 APU&amp;quot; graphics supports 2 monitors maximum (mobo has 3 video outputs, only 2 can be used together)&lt;br /&gt;
&lt;br /&gt;
=== Intel SE7230NH1 ===&lt;br /&gt;
&lt;br /&gt;
* front panel header connector pinout is like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PWR LED | 1  2|&lt;br /&gt;
        | 3  4|&lt;br /&gt;
PWR LED | 5  6|&lt;br /&gt;
HDD LED | 7  8|&lt;br /&gt;
HDD LED | 9 10|&lt;br /&gt;
PWR SW  |11 12| NIC1 LED&lt;br /&gt;
PWR SW  |13 14| NIC1 LED&lt;br /&gt;
RST SW  |15 16|&lt;br /&gt;
RST SW  |17 18|&lt;br /&gt;
        |19 20|&lt;br /&gt;
NMI SW  |21 22| NIC2 LED&lt;br /&gt;
NMI SW  |23 24| NIC2 LED&lt;br /&gt;
...     |...  |&lt;br /&gt;
        |33 34|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ASUS H110M-A/M.2 ===&lt;br /&gt;
&lt;br /&gt;
* use BIOS 2003 or later&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT5539D&lt;br /&gt;
* sensors chip is &amp;quot;NCT6793D or compatible chip&amp;quot;, for el7, use this driver:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~root&lt;br /&gt;
wget http://ladd00.triumf.ca/~olchansk/linux/nct6775.ko&lt;br /&gt;
echo modprobe hwmon-vid &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo insmod /root/nct6775.ko &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
/etc/rc.local&lt;br /&gt;
sensors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sensors output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq03 ~]# sensors&lt;br /&gt;
acpitz-virtual-0&lt;br /&gt;
Adapter: Virtual device&lt;br /&gt;
temp1:        +27.8°C  (crit = +119.0°C)&lt;br /&gt;
temp2:        +29.8°C  (crit = +119.0°C)&lt;br /&gt;
&lt;br /&gt;
nct6793-isa-0290&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
in0:                       +0.34 V  (min =  +0.00 V, max =  +1.74 V)&lt;br /&gt;
in1:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in2:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in3:                       +3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in4:                       +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in5:                       +0.15 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in6:                       +0.97 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in7:                       +3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in8:                       +3.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in9:                       +1.00 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in10:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in11:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in12:                      +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in13:                      +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
in14:                      +0.13 V  (min =  +0.00 V, max =  +0.00 V)  ALARM&lt;br /&gt;
fan1:                     1041 RPM  (min =    0 RPM)&lt;br /&gt;
fan2:                     1020 RPM  (min =    0 RPM)&lt;br /&gt;
fan5:                        0 RPM  (min =    0 RPM)&lt;br /&gt;
fan6:                        0 RPM&lt;br /&gt;
SYSTIN:                   +119.0°C  (high = +98.0°C, hyst = +95.0°C)  sensor = thermistor&lt;br /&gt;
CPUTIN:                    +26.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor&lt;br /&gt;
AUXTIN0:                   +27.5°C    sensor = thermistor&lt;br /&gt;
AUXTIN1:                  +112.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN2:                  +111.0°C    sensor = thermistor&lt;br /&gt;
AUXTIN3:                  +111.0°C    sensor = thermistor&lt;br /&gt;
PECI Agent 0:              +28.0°C  (high = +98.0°C, hyst = +95.0°C)&lt;br /&gt;
                                    (crit = +100.0°C)&lt;br /&gt;
PECI Agent 0 Calibration:  +25.5°C  &lt;br /&gt;
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C  &lt;br /&gt;
PCH_CHIP_TEMP:              +0.0°C  &lt;br /&gt;
intrusion0:               ALARM&lt;br /&gt;
intrusion1:               ALARM&lt;br /&gt;
beep_enable:              disabled&lt;br /&gt;
&lt;br /&gt;
coretemp-isa-0000&lt;br /&gt;
Adapter: ISA adapter&lt;br /&gt;
Physical id 0:  +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 0:         +31.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
Core 1:         +28.0°C  (high = +80.0°C, crit = +100.0°C)&lt;br /&gt;
&lt;br /&gt;
[root@daq03 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supermicro X11SSH-F ===&lt;br /&gt;
&lt;br /&gt;
* blacklist the mei and mei_me drivers per http://www.supermicro.com/support/faqs/faq.cfm?faq=14537&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# more /etc/modprobe.d/blacklist.conf&lt;br /&gt;
blacklist mei&lt;br /&gt;
blacklist mei_me&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mobo requires M.2 PCIe SSD (M.2 SATA SSD would not work. SATA SATA SSD ok)&lt;br /&gt;
* boot from M.2 PCIe SSD requires UEFI boot (from an MSDOS partition on the SSD)&lt;br /&gt;
&lt;br /&gt;
=== ASUS TUF Z390M-PRO GAMING (WI-FI) ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 2417 is okey, upgrade to this if older&lt;br /&gt;
* do not set XMP memory mode&lt;br /&gt;
* in the BIOS, enable the boot compatibility support module mode: BIOS (press DEL) -&amp;gt; Advanced mode -&amp;gt; BOOT -&amp;gt; CSM Module -&amp;gt; Enable CSM &amp;quot;yes&amp;quot;.&lt;br /&gt;
* for SL6, install e1000e driver from ELREPO:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install --enablerepo=elrepo kmod-e1000e&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sensors chip appears to be &amp;quot;Nuvoton NCT6798D&amp;quot; not clear what driver to use&lt;br /&gt;
* dmidecode | grep -i nct reports: Nuvoton NCT6798D&lt;br /&gt;
* kmod-nct6775-0.0-5.el7_7.elrepo.x86_64.rpm from ELrepo finds the chip but bombs because of conflict with ACPI&lt;br /&gt;
&lt;br /&gt;
=== ASUS PRIME X399-A ===&lt;br /&gt;
&lt;br /&gt;
* BIOS 1002&lt;br /&gt;
* for reading temperatures and fan rotations, install driver: https://github.com/electrified/asus-wmi-sensors/issues/29&lt;br /&gt;
&lt;br /&gt;
== Configure X11 graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Special settings for DAQ ===&lt;br /&gt;
&lt;br /&gt;
* add the following at the end of /etc/X11/xorg.conf. The enables Ctrl-Alt-KP-/ and Ctrl-Alt-KP-* to unlock the keyboard after Altera Quartus crash:&lt;br /&gt;
&amp;lt;pre&amp;gt;Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowDeactivateGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Option &amp;quot;AllowClosedownGrabs&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo=elrepo install nvidia-detect&lt;br /&gt;
* run: nvidia-detect&lt;br /&gt;
* as instructed by nvidia-detect, install correct driver:&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-304xx&lt;br /&gt;
** yum --enablerepo=elrepo install kmod-nvidia-173xx&lt;br /&gt;
* (before SL6.x:  if it fails due to conflict with module-init-tools, run &amp;quot;yum --disablerepo \* --enablerepo elrepo update module-init-tools&amp;quot;)&lt;br /&gt;
* yum erase xorg-x11-glamor ### see http://elrepo.org/tiki/kmod-nvidia (search for glamor)&lt;br /&gt;
* mv /etc/X11/xorg.conf /etc/X11/xorg.conf-xxx&lt;br /&gt;
* nvidia-xconfig&lt;br /&gt;
* (SL6) reboot&lt;br /&gt;
* (SL5) /dev/MAKEDEV nvidia&lt;br /&gt;
* (SL5) restart the X11 server (Ctrl-Alt-Backspace or &amp;quot;killall Xorg gdm-binary&amp;quot;)&lt;br /&gt;
* observe that X11 server restarts using the NVIDIA driver (big NVIDIA logo on startup)&lt;br /&gt;
* if needed, login as root and run &amp;quot;nvidia-settings&amp;quot; to setup dual-screen configuration, etc&lt;br /&gt;
&lt;br /&gt;
=== Install legacy NVIDIA drivers ===&lt;br /&gt;
&lt;br /&gt;
For old NVIDIA cards:&lt;br /&gt;
* GeForce FX 5500&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.31/NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
sh ./NVIDIA-Linux-x86-173.14.31-pkg1.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* GeForce 6200 - NVIDIA Corporation NV44A [GeForce 6200]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install nvidia-x11-drv-304xx-304.121 --enablerepo=elrepo&lt;br /&gt;
nvidia-xconfig&lt;br /&gt;
rmmod nvidia&lt;br /&gt;
killall gdm-binary&lt;br /&gt;
login as root&lt;br /&gt;
nvidia-settings to setup multiple displays&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers ===&lt;br /&gt;
&lt;br /&gt;
* yum --enablerepo elrepo install kmod-fglrx fglrx-x11-drv&lt;br /&gt;
* check that /etc/X11/xorg.conf section &amp;quot;Device&amp;quot; entry &amp;quot;Driver&amp;quot; says &amp;quot;fglrx&amp;quot;&lt;br /&gt;
* run &amp;quot;aticonfig --initial&amp;quot; to create xorg.conf if existing one is not good&lt;br /&gt;
* run &amp;quot;amdcccle&amp;quot; as root to configure dual-screens, etc&lt;br /&gt;
  Note: &#039;amdcccle&#039; is a GUI, so you must run this command from within a running X session&lt;br /&gt;
* killall Xorg&lt;br /&gt;
&lt;br /&gt;
=== Install ATI/AMD drivers (CentOS7) ===&lt;br /&gt;
&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* wget http://elrepo.org/linux/testing/el7/x86_64/RPMS/kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* yum install acpid&lt;br /&gt;
* rpm -vh --install kmod-fglrx-15.12-3.el7.elrepo.x86_64.rpm fglrx-x11-drv-15.12-3.el7.elrepo.x86_64.rpm&lt;br /&gt;
* amdconfig -f --initial&lt;br /&gt;
* grub2-mkconfig -o /boot/grub2/grub.cfg&lt;br /&gt;
* reboot&lt;br /&gt;
* login as root&lt;br /&gt;
* amdcccle&lt;br /&gt;
&lt;br /&gt;
NOTE: if both drivers - radeon and fglrx are loaded, boot will hang. the radeon driver is supposed to be blacklisted through grub rdblacklist=radeon entry which is installed by running grub2-mkconfig.&lt;br /&gt;
&lt;br /&gt;
=== Install Intel drivers for HD4600/Z87 ===&lt;br /&gt;
&lt;br /&gt;
SL6.5 has the required drivers for the socket 1150 machines with Intel HD4600 graphics and Z87 chipset.&lt;br /&gt;
&lt;br /&gt;
ASUS Z87 WS motherboard has these video connections with corresponding Intel video port assignements, as reported by &amp;quot;xrandr&amp;quot;:&lt;br /&gt;
* DisplayPort - DP1/HDMI1&lt;br /&gt;
* MiniDisplayPort - DP2/HDMI2&lt;br /&gt;
* HDMI - HDMI3&lt;br /&gt;
&lt;br /&gt;
Due to hardware limitations, 3 HDMI monitors using 2 passive DP-HDMI adapters (and 1 straight HDMI) cannot be used.&lt;br /&gt;
&lt;br /&gt;
To use 3 monitors do this:&lt;br /&gt;
* 1st monitor: DisplayPort - DP-to-HDMI-passive-adapter - HDMI monitor (not tried: DP-to-DP-cable - DisplayPort monitor).&lt;br /&gt;
* 2nd monitor: MiniDisplayPort - MiniDP-to-DP-cable - DisplayPort monitor&lt;br /&gt;
* 3rd monitor: HDMI - HDMI-cable - HDMI monitor&lt;br /&gt;
&lt;br /&gt;
With the monitors I have (Dell 1920x1200 VGA-HDMI-DP), the software thinks that there are 4 monitors: somehow both DP2 and HDMI2 see 1 minitor each, but the hardware cannot drive 4 monitors, so everything goes blank. To fix, disable HDMI2 (xrandr -display :0 --output HDMI2 --off) and enable DP2 (xrandr -display :0 --output DP2 --auto).&lt;br /&gt;
&lt;br /&gt;
How to make this configuration permanent and how to assign monitor locations (left-right, etc), you figure it out.&lt;br /&gt;
&lt;br /&gt;
=== Manual selection of monitor, video mode and resolution ===&lt;br /&gt;
&lt;br /&gt;
Automatic selection of monitor and video mode usually works. When it does not, configure it manualls:&lt;br /&gt;
&lt;br /&gt;
* physically go to the computer&lt;br /&gt;
* login as root&lt;br /&gt;
* run &amp;quot;nvidia-settings&amp;quot; on machines using the NVIDIA driver&lt;br /&gt;
* run &amp;quot;aticonfig&amp;quot; on machines with the ATI/AMD driver (use &amp;quot;aticonfig --initial&amp;quot; for initial setup, and good luck with anything more complicated)&lt;br /&gt;
* run &amp;quot;system-config-display&amp;quot;.&lt;br /&gt;
** In the &amp;quot;hardware&amp;quot; tab, select monitor type: &amp;quot;generic LCD 1280x1024&amp;quot; or &amp;quot;generic LCD 1600x1200&amp;quot;.&lt;br /&gt;
** In the &amp;quot;settings&amp;quot; tab, select &amp;quot;1280x1024&amp;quot; or &amp;quot;1600x1200&amp;quot; and &amp;quot;Thousands of colors&amp;quot;.&lt;br /&gt;
** Press &amp;quot;ok&amp;quot;, the display settings application should close.&lt;br /&gt;
* Logout, the new login window should use the new settings.&lt;br /&gt;
&lt;br /&gt;
=== Disable screen saver ===&lt;br /&gt;
&lt;br /&gt;
If machine is booted without any monitor connected, current video cards to not enable any video outputs. If a monitor is connected later, there is no video image and there is no easy way to get a video image.&lt;br /&gt;
&lt;br /&gt;
This can be solved by configuring X11 to always enable some video output. Because the monitor type is not known when X11 starts, one has to select some standard video mode (i.e. VESA 1280x1024) on some video output (VGA, DVI or HDMI).&lt;br /&gt;
&lt;br /&gt;
Only NVIDIA cards with the NVIDIA driver (from EPEL) is supported by these instructions.&lt;br /&gt;
&lt;br /&gt;
* create default xorg.conf: nvidia-xconfig&lt;br /&gt;
* edit /etc/X11/xorg.conf&lt;br /&gt;
* add monitor section for the fake monitor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Unknown&amp;quot;&lt;br /&gt;
    HorizSync       31.0 - 83.0&lt;br /&gt;
    VertRefresh     59.0 - 61.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    ModeLine &amp;quot;1280x1024&amp;quot;   108.00   1280 1328 1440 1688   1024 1025 1028 1066 +hsync +vsync&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add output selection in the &amp;quot;Device&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 210&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
    #Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT&amp;quot;&lt;br /&gt;
    Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-1&amp;quot;&lt;br /&gt;
    Option &amp;quot;UseEDID&amp;quot; &amp;quot;no&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add fake video mode to the &amp;quot;Screen&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Modes       &amp;quot;1280x1024&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* disable screen saver and DPMS power off in the &amp;quot;ServerLayout&amp;quot; or &amp;quot;ServerFlags&amp;quot; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Layout0&amp;quot;&lt;br /&gt;
    Screen      0  &amp;quot;Screen0&amp;quot; 0 0&lt;br /&gt;
    InputDevice    &amp;quot;Keyboard0&amp;quot; &amp;quot;CoreKeyboard&amp;quot;&lt;br /&gt;
    InputDevice    &amp;quot;Mouse0&amp;quot; &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot; &lt;br /&gt;
    Option         &amp;quot;BlankTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;StandbyTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;SuspendTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
    Option         &amp;quot;OffTime&amp;quot; &amp;quot;0&amp;quot; &lt;br /&gt;
EndSection &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Finish installation ==&lt;br /&gt;
&lt;br /&gt;
* logout and reboot the computer to have all the changes to take effect&lt;br /&gt;
&lt;br /&gt;
== Configure HTTPS server (CentOS7) ==&lt;br /&gt;
&lt;br /&gt;
This will configure the HTTPS/SSL certificate using &amp;quot;certbot&amp;quot; and &amp;quot;letsencrypt&amp;quot; and configure an HTTPS web server using apache httpd.&lt;br /&gt;
&lt;br /&gt;
First, configure apache httpd:&lt;br /&gt;
&lt;br /&gt;
* execute these commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y mod_ssl certwatch crypto-utils&lt;br /&gt;
cd /etc/httpd/conf.d/&lt;br /&gt;
mv ssl.conf ssl.conf-not-used ### remove the stock ssl.conf which refers to the localhost certificate that will expire in 1 year&lt;br /&gt;
touch ssl.conf ### create a blank file to prevent automatic updates from installing a stock ssl.conf file&lt;br /&gt;
# this is done later: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create new file ssl-daq12.conf # use actual hostname instead of daq12&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443 https&lt;br /&gt;
#SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog&lt;br /&gt;
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)&lt;br /&gt;
SSLSessionCacheTimeout  300&lt;br /&gt;
SSLRandomSeed startup file:/dev/urandom  256&lt;br /&gt;
SSLRandomSeed connect builtin&lt;br /&gt;
SSLCryptoDevice builtin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
ServerName daq12.triumf.ca&lt;br /&gt;
DocumentRoot /var/www/html&lt;br /&gt;
ErrorLog /var/log/httpd/daq12.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
# note SSLProtocol, SSLCipherSuite and some other settings are overwritten by /etc/letsencrypt/options-ssl-apache.conf&lt;br /&gt;
# new SSL settings: K.O. Jan 2020, SSLlabs rating &amp;quot;A+&amp;quot;&lt;br /&gt;
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1&lt;br /&gt;
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!RSA&lt;br /&gt;
SSLHonorCipherOrder on&lt;br /&gt;
# pervious SSL settings:&lt;br /&gt;
#SSLProtocol all -SSLv2 -SSLv3&lt;br /&gt;
#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key&lt;br /&gt;
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt&lt;br /&gt;
#ProxyPass /elog/ http://localhost:8082/ retry=1&lt;br /&gt;
#ProxyPass /      http://localhost:8080/ retry=1&lt;br /&gt;
Header always set Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains&amp;quot;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
SSLRequireSSL&lt;br /&gt;
AuthType Basic&lt;br /&gt;
AuthName &amp;quot;DAQ password protected site&amp;quot;&lt;br /&gt;
Require valid-user&lt;br /&gt;
# create password file: touch /etc/httpd/htpasswd&lt;br /&gt;
# to add new user or change password: htpasswd /etc/httpd/htpasswd username&lt;br /&gt;
AuthUserFile /etc/httpd/htpasswd&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* stop httpd from listening on port 80: edit /etc/httpd/conf/httpd.conf, comment-out the line &amp;quot;Listen 80&amp;quot;&lt;br /&gt;
* enable and start httpd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* try to access https://daq12.triumf.ca&lt;br /&gt;
** you should see a complaint about self-signed certificate&lt;br /&gt;
** you should see a request for password (do not login yet)&lt;br /&gt;
** if you get &amp;quot;connection refused&amp;quot;, HTTPS port 443 may need to be enabled in the local firewall, then try again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --add-port=443/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, configure certbot:&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2018-01-18 certbot requires use of http port 80 to get the initial https certificate,&lt;br /&gt;
renewal can continue to use the https port 443)&lt;br /&gt;
&lt;br /&gt;
(Note: as of 2019-01-?? certbot requires use of port 80 for renewals)&lt;br /&gt;
&lt;br /&gt;
* check that port 80 is not used by anything:&lt;br /&gt;
* netstat -an | grep LISTEN | grep ^tcp | grep 80&lt;br /&gt;
* lsof -P | grep -i tcp | grep LISTEN | grep 80&lt;br /&gt;
* if lsof reports that httpd is listening on port 80, follow the httpd instructions above (remove &amp;quot;listen 80&amp;quot; from httpd.conf&lt;br /&gt;
&lt;br /&gt;
* install certbot and open tcp port 80 in the firewall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install -y certbot python2-certbot-apache # (from EPEL)&lt;br /&gt;
firewall-cmd --add-port=80/tcp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
firewall-cmd --list-all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* certbot certonly --standalone --installer apache # then answer questions:&lt;br /&gt;
* &amp;quot;activate HTTPS for daq12.triumf.ca&amp;quot; - say ok&lt;br /&gt;
* &amp;quot;enter email address&amp;quot; - enter your own email address&lt;br /&gt;
* &amp;quot;please read terms...&amp;quot; - read the terms and say &amp;quot;agree&amp;quot;&lt;br /&gt;
* it will take a few moments...&lt;br /&gt;
* &amp;quot;please choose...&amp;quot; - say &amp;quot;easy&amp;quot; (http access is disabled (a) by firewall, (b) by local configuration&lt;br /&gt;
* &amp;quot;congratulations...&amp;quot; - say ok.&lt;br /&gt;
* certbot install --apache --cert-name daq12.triumf.ca # then answer questions:&lt;br /&gt;
* &amp;quot;choose redirect...&amp;quot; - say &amp;quot;1&amp;quot; (no redirect)&lt;br /&gt;
* look inside ssl-daq12.conf to see that SSLCertificateFile &amp;amp; co point to certbot certificates in /etc/letsencrypt/live/daq12.triumf.ca/&lt;br /&gt;
* remove self-signed localhost certificate, it will expire in 1 year and cause warnings and complaints: rm /etc/pki/tls/certs/localhost.crt&lt;br /&gt;
* enable automatic renewal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable certbot-renew.timer&lt;br /&gt;
systemctl start certbot-renew.timer&lt;br /&gt;
systemctl list-timers --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to check corrent renewal and to update the certbot config file in /etc/letsencrypt/renewal, run this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
certbot renew --standalone --installer apache --force-renewal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: this certificate will expire in 3 months, automatic renewal should work starting with certbot-0.12.0-4.el7.noarch.&lt;br /&gt;
Certificate expiration should be automatically detected by &amp;quot;certwatch&amp;quot; and email&lt;br /&gt;
will be sent to local root user, to be forwarded to an actual person by ~root/.forward.&lt;br /&gt;
&lt;br /&gt;
Third, activate password protection:&lt;br /&gt;
&lt;br /&gt;
* as shown in the config file above, create password file and initial user: (replace &amp;quot;midas&amp;quot; with specific username)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/httpd/htpasswd&lt;br /&gt;
htpasswd /etc/httpd/htpasswd midas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Final test:&lt;br /&gt;
* access https://daq12.triumf.ca - https status should be &amp;quot;green&amp;quot;&lt;br /&gt;
* login with password should work&lt;br /&gt;
* the apache httpd test page should load&lt;br /&gt;
* check site security using the SSLlabs https tester. (I get grade &amp;quot;A-&amp;quot;): https://www.ssllabs.com/ssltest/&lt;br /&gt;
&lt;br /&gt;
From here:&lt;br /&gt;
* enable proxy for MIDAS mhttpd - uncomment redirect in the config file above&lt;br /&gt;
* enable proxy for ELOG - ditto&lt;br /&gt;
* setsebool -P httpd_can_network_connect 1&lt;br /&gt;
* systemctl restart httpd&lt;br /&gt;
&lt;br /&gt;
NOTE: if certbot fails with errors about &#039;module&#039; object has no attribute &#039;pyopenssl&#039;,&lt;br /&gt;
try this: pip install requests==2.6.0&lt;br /&gt;
&lt;br /&gt;
== Configure large RAID6 arrays ==&lt;br /&gt;
&lt;br /&gt;
* connect the disks&lt;br /&gt;
* check the disks health&lt;br /&gt;
** run smart-status.perl&lt;br /&gt;
* partition the disks&lt;br /&gt;
** yum install gdisk&lt;br /&gt;
** gdisk /dev/sdX&lt;br /&gt;
** delete all partitions: o&lt;br /&gt;
** create new partition: n, enter, enter, enter, fd00 (default sizes, partition type fd00)&lt;br /&gt;
** write and exit: w&lt;br /&gt;
* check presence of all partitions:&lt;br /&gt;
** /bin/ls -l /dev/sd*1&lt;br /&gt;
* prepare to use an external bitmap file&lt;br /&gt;
** touch /md6bitmap&lt;br /&gt;
** edit /etc/fstab, change entry for root filesystem from: &amp;quot;defaults 1 1&amp;quot; to &amp;quot;defaults 0 0&amp;quot;&lt;br /&gt;
** edit /boot/grub/grub.conf, change entry &amp;quot;kernel ... ro ...&amp;quot; to &amp;quot;kernel ... rw ...&amp;quot;&lt;br /&gt;
* create raid array:&lt;br /&gt;
** mdadm --create /dev/md6 --level=6 --bitmap=/md6bitmap --raid-devices=10 /dev/sd[b-k]1&lt;br /&gt;
** mdadm -Ds &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
** cleanup /etc/mdadm.conf&lt;br /&gt;
** echo &amp;quot;echo 16384 &amp;gt; /sys/block/md6/md/stripe_cache_size&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** echo &amp;quot;echo 1     &amp;gt; /sys/block/md6/md/sync_speed_min&amp;quot; &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
** source /etc/rc.local&lt;br /&gt;
* observe raid array rebuild:&lt;br /&gt;
** watch -d -n1 &amp;quot;cat /proc/mdstat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure ZFS ==&lt;br /&gt;
&lt;br /&gt;
=== Install ZFS ===&lt;br /&gt;
&lt;br /&gt;
(from here: https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions for &amp;quot;kABI-tracking kmod&amp;quot; - dkms modules seem to always mess up the system when upgrading to next release of zfs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rpm -vh --install http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_5.noarch.rpm&lt;br /&gt;
#yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm&lt;br /&gt;
yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
#sed &#039;s/^SELINUX=.*/SELINUX=disabled/&#039; -i /etc/selinux/config&lt;br /&gt;
echo USE_DISK_BY_ID=\&#039;yes\&#039; &amp;gt;&amp;gt; /etc/default/zfs&lt;br /&gt;
#shutdown -r now # required to load the zfs kernel modules and to disable selinux&lt;br /&gt;
modprobe zfs # should work&lt;br /&gt;
zpool status # should report no pools available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Note: zfs and selinux and not compatible: with selinux enabled, files on zfs cannot be deleted (files are gone, but &amp;quot;df&amp;quot; does not go down, zfs-0.6.5.7-1.el7.centos.x86_64), see #https://github.com/zfsonlinux/zfs/issues/4845&lt;br /&gt;
&lt;br /&gt;
* http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs-quickstart.html)&lt;br /&gt;
* http://www.freebsd.org/cgi/man.cgi?query=zpool&amp;amp;sektion=8&lt;br /&gt;
&lt;br /&gt;
=== Update ZFS 0.7 to 0.8 ===&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum-config-manager --disable zfs-testing-kmod&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates list zfs # list all available versions in &amp;quot;zfs-testing-kmod&amp;quot;&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-testing-kmod --showduplicates install zfs # maybe specify specific version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For CentOS-7.7:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /etc/yum.repos.d/zfs.repo* ### delete old repo files&lt;br /&gt;
yum upgrade http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
yum erase zfs spl&lt;br /&gt;
yum --enablerepo=zfs-kmod install zfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: if you see yum offering to install &amp;quot;dkms&amp;quot; and &amp;quot;zfs-dkms&amp;quot;, the yum config is wrong (we use the kmod-zfs package), check that &amp;quot;zfs&amp;quot; repo is disabled, &amp;quot;zfs-kmod&amp;quot; repo is enabled - see the yum-config-manager commands above.&lt;br /&gt;
&lt;br /&gt;
=== Lock kernel and zfs packages ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock kernel&lt;br /&gt;
yum versionlock zfs&lt;br /&gt;
yum-config-manager --disable zfs&lt;br /&gt;
yum-config-manager --disable zfs-kmod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Follow generic ZFS instructions ===&lt;br /&gt;
&lt;br /&gt;
Here: [[ZFS]]&lt;br /&gt;
&lt;br /&gt;
== performance notes ==&lt;br /&gt;
&lt;br /&gt;
Go here: [[disk_benchmarks]]&lt;br /&gt;
&lt;br /&gt;
== Configure UEFI boot ==&lt;br /&gt;
&lt;br /&gt;
Some mobo can boot from NVME (PCIe) SSDs only via UEFI boot. Do this:&lt;br /&gt;
&lt;br /&gt;
* partition the NVME SSD using gdisk (must be GPT partition table, must have MSDOS EFI partition size 512MiB)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@alpha00 ~]# gdisk -l /dev/nvme0n1&lt;br /&gt;
GPT fdisk (gdisk) version 0.8.6 ...&lt;br /&gt;
Found valid GPT with protective MBR; using GPT.&lt;br /&gt;
Disk /dev/nvme0n1: 500118192 sectors, 238.5 GiB&lt;br /&gt;
Logical sector size: 512 bytes&lt;br /&gt;
Disk identifier (GUID): 1A82CC87-2757-44ED-980F-C78E3681D9D3&lt;br /&gt;
Partition table holds up to 128 entries&lt;br /&gt;
First usable sector is 34, last usable sector is 500118158&lt;br /&gt;
Partitions will be aligned on 2048-sector boundaries&lt;br /&gt;
Total free space is 2014 sectors (1007.0 KiB)&lt;br /&gt;
&lt;br /&gt;
Number  Start (sector)    End (sector)  Size       Code  Name&lt;br /&gt;
   1            2048         1050623   512.0 MiB   EF00  EFI System&lt;br /&gt;
   2         1050624       500118158   238.0 GiB   8300  Linux filesystem&lt;br /&gt;
[root@alpha00 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create filesystems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.xfs /dev/nvme0n1p2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare EFI partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/efi&lt;br /&gt;
mount /dev/nvme0n1p1 /mnt/efi&lt;br /&gt;
mkdir -p /mnt/efi/efi/boot&lt;br /&gt;
cp /boot/vmlinuz... vmlinuz # copy the desired linux kernel&lt;br /&gt;
cp /boot/initramfs... initramfs.img # copy the matching initramfs file&lt;br /&gt;
#from /home/olchansk/sysadm/syslinux/syslinux-6.03 copy&lt;br /&gt;
cp .../efi64/efi/syslinux.efi .&lt;br /&gt;
cp .../efi64/com32/elflink/ldlinux/ldlinux.e64 .&lt;br /&gt;
cp syslinux.efi bootx64.efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux config file: syslinux.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro root=/dev/nvme0n1p2 nomodeset initrd=initramfs.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare system partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /mnt/tmp&lt;br /&gt;
mount /dev/nvme0n1p2 /mnt/tmp&lt;br /&gt;
rsync -avx / /mnt/tmp&lt;br /&gt;
cd /mnt/tmp&lt;br /&gt;
#edit etc/fstab&lt;br /&gt;
#edit etc/syslinux/selinux # set selinux to permissive mode because rsync did not copy the selinux labels&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* unmount and reboot&lt;br /&gt;
* restore selinux labels after first boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#login as root&lt;br /&gt;
cd /&lt;br /&gt;
restorecon -R / # can also add &amp;quot;-v&amp;quot; to see progress, but runs much slower&lt;br /&gt;
#edit /etc/sysconfig/selinux # enable selinux&lt;br /&gt;
#shutdown -r now # reboot with selinux enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=TRB3_Centos-7_instructions&amp;diff=4059</id>
		<title>TRB3 Centos-7 instructions</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=TRB3_Centos-7_instructions&amp;diff=4059"/>
		<updated>2020-01-21T19:59:37Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Setting up for MIDAS data taking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction == &lt;br /&gt;
&lt;br /&gt;
See [https://www.triumf.info/wiki/DAQwiki/index.php/GSI_TRB3  main TRB3 document] for introductory material.&lt;br /&gt;
&lt;br /&gt;
== Centos-7 network setup == &lt;br /&gt;
&lt;br /&gt;
Install a switch of second network port.  Do the following to configure DHCP on second network port, to assign IP to the TRB3.  This example uses 192.168.1.X addresses; the Centos-7 machine is 192.168.1.253, the TRB3 is meant to be assigned 192.1681.1.1.  This example uses TRB #171; adapt the instructions to your TRB number.&lt;br /&gt;
&lt;br /&gt;
1) Assign a static 192.168.1.253 IP to your second network interface, using nm-connection-editor.  This is what the configuration looks like afterwards for me&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# cat /etc/sysconfig/network-scripts/ifcfg-static_trb3 &lt;br /&gt;
HWADDR=30:85:A9:A9:17:83&lt;br /&gt;
TYPE=Ethernet&lt;br /&gt;
PROXY_METHOD=none&lt;br /&gt;
BROWSER_ONLY=no&lt;br /&gt;
BOOTPROTO=none&lt;br /&gt;
IPADDR=192.168.1.253&lt;br /&gt;
PREFIX=24&lt;br /&gt;
GATEWAY=192.168.1.253&lt;br /&gt;
DEFROUTE=yes&lt;br /&gt;
IPV4_FAILURE_FATAL=no&lt;br /&gt;
IPV6INIT=yes&lt;br /&gt;
IPV6_AUTOCONF=yes&lt;br /&gt;
IPV6_DEFROUTE=yes&lt;br /&gt;
IPV6_FAILURE_FATAL=no&lt;br /&gt;
IPV6_PRIVACY=no&lt;br /&gt;
IPV6_ADDR_GEN_MODE=stable-privacy&lt;br /&gt;
NAME=static_trb3&lt;br /&gt;
UUID=89793cba-7645-42cf-ac24-f7e48bd08948&lt;br /&gt;
ONBOOT=yes&lt;br /&gt;
&lt;br /&gt;
[root@daq11 tmp]# ifconfig  enp12s0&lt;br /&gt;
enp12s0: flags=4163&amp;lt;UP,BROADCAST,RUNNING,MULTICAST&amp;gt;  mtu 1500&lt;br /&gt;
        inet 192.168.1.253  netmask 255.255.255.0  broadcast 192.168.1.255&lt;br /&gt;
        inet6 fe80::f3e:f38e:d9ba:d654  prefixlen 64  scopeid 0x20&amp;lt;link&amp;gt;&lt;br /&gt;
        ether 30:85:a9:a9:17:83  txqueuelen 1000  (Ethernet)&lt;br /&gt;
        RX packets 52604116955  bytes 23147929921965 (21.0 TiB)&lt;br /&gt;
        RX errors 0  dropped 0  overruns 0  frame 0&lt;br /&gt;
        TX packets 13999033  bytes 1196314909 (1.1 GiB)&lt;br /&gt;
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0&lt;br /&gt;
        device interrupt 19  memory 0xfb100000-fb120000  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Install dhcp &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum -y install dhcp &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Configure DHCP to look for the expected IP address for TRB3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# cat /etc/dhcp/dhcpd.conf&lt;br /&gt;
&lt;br /&gt;
allow booting;&lt;br /&gt;
allow bootp;&lt;br /&gt;
ignore unknown-clients;&lt;br /&gt;
#ddns-update-style ad-hoc;&lt;br /&gt;
&lt;br /&gt;
# set lease time to 3 days&lt;br /&gt;
default-lease-time 259200;&lt;br /&gt;
max-lease-time 259200;&lt;br /&gt;
&lt;br /&gt;
# Define the new subnet&lt;br /&gt;
subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    interface enp12s0;&lt;br /&gt;
    range  192.168.1.100 192.168.1.250; &lt;br /&gt;
    not authoritative;&lt;br /&gt;
    deny unknown-clients;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
# Define IP for TRB3&lt;br /&gt;
group {&lt;br /&gt;
      default-lease-time infinite;&lt;br /&gt;
      max-lease-time infinite;&lt;br /&gt;
      host trb171 { fixed-address 192.168.1.1; hardware ethernet da:7a:36:e9:37:ac; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Start DHCP and see if it assigns correct IP to TRB3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# systemctl enable dhcpd&lt;br /&gt;
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.&lt;br /&gt;
[root@daq11 tmp]#  systemctl restart dhcpd;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;power cycle TRB3&amp;gt;&lt;br /&gt;
&amp;lt;check ping works&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# ping 192.168.1.1&lt;br /&gt;
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.&lt;br /&gt;
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.087 ms&lt;br /&gt;
64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=0.144 ms&lt;br /&gt;
&lt;br /&gt;
[root@daq11 tmp]# systemctl status dhcpd&lt;br /&gt;
● dhcpd.service - DHCPv4 Server Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Mon 2018-04-09 16:20:35 PDT; 18s ago&lt;br /&gt;
     Docs: man:dhcpd(8)&lt;br /&gt;
           man:dhcpd.conf(5)&lt;br /&gt;
 Main PID: 10650 (dhcpd)&lt;br /&gt;
   Status: &amp;quot;Dispatching packets...&amp;quot;&lt;br /&gt;
   CGroup: /system.slice/dhcpd.service&lt;br /&gt;
           └─10650 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid&lt;br /&gt;
&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Wrote 0 new dynamic host decls to leases file.&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Wrote 0 leases to leases file.&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Listening on LPF/enp12s0/30:85:a9:a9:17:83/192.168.1.0/24&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Sending on   LPF/enp12s0/30:85:a9:a9:17:83/192.168.1.0/24&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca dhcpd[10650]: Sending on   Socket/fallback/fallback-net&lt;br /&gt;
Apr 09 16:20:35 daq11.triumf.ca systemd[1]: Started DHCPv4 Server Daemon.&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPDISCOVER from da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPOFFER on 192.168.1.1 to da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPREQUEST for 192.168.1.1 (192.168.1.253) from da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
Apr 09 16:20:49 daq11.triumf.ca dhcpd[10650]: DHCPACK on 192.168.1.1 to da:7a:36:e9:37:ac via enp12s0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Assign hostname to this IP&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@daq11 tmp]# more /etc/hosts&lt;br /&gt;
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4&lt;br /&gt;
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6&lt;br /&gt;
192.168.1.1     trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6) Open a hole in firewall to the TRB3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.1/32&amp;quot; port protocol=&amp;quot;tcp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --permanent --add-rich-rule=&amp;quot;rule family=&amp;quot;ipv4&amp;quot; source address=&amp;quot;192.168.1.1/32&amp;quot; port protocol=&amp;quot;udp&amp;quot; port=&amp;quot;0-65535&amp;quot; accept&amp;quot;&lt;br /&gt;
firewall-cmd --add-port=5071/udp --permanent&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Centos-7 Software Setup == &lt;br /&gt;
&lt;br /&gt;
The TRB3 software and associated analysis packages are developed on newer operating systems than Centos-7 (namely Opensuse).  So a certain amount of work is needed to get the software to work on Centos-7.  &lt;br /&gt;
&lt;br /&gt;
1) I started by copying over the software in trbsoft from an existing installation.&lt;br /&gt;
&lt;br /&gt;
scp trbsoft_backup.tar.gz trb3@ladd00:/data0/trb3/.&lt;br /&gt;
&lt;br /&gt;
2) The main problem is with the TRB3 code requiring a newer version of perl.  I used perlbrew to setup a newer version of perl than Centos-7 supports:&lt;br /&gt;
&lt;br /&gt;
Following the instructions on website:&lt;br /&gt;
&lt;br /&gt;
[https://perlbrew.pl/ https://perlbrew.pl/ ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source ~/perl5/perlbrew/etc/bashrc&lt;br /&gt;
perlbrew init&lt;br /&gt;
perlbrew install perl-5.24.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then add this line to login script&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -f /home/trb3/.perlbrew/init&lt;br /&gt;
source ~/perl5/perlbrew/etc/bashrc&lt;br /&gt;
perlbrew switch perl-5.24.0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Rebuild libtrbnet with different perl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/trbsoft/trbnettools/libtrbnet_perl&lt;br /&gt;
perl Makefile.PL&lt;br /&gt;
cd ..&lt;br /&gt;
make TRB3=1 clean&lt;br /&gt;
make TRB3=1&lt;br /&gt;
make TRB3=1 install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Modify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/trbsoft/daqtools/merge_serial_address.pl&lt;br /&gt;
and&lt;br /&gt;
~/trbsoft/daqtools/web/cts_gui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to use the perlbrew version of perl, rather than the system default.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Rebuild DABC (optional: this step is not necessary if we use the UDP version of the frontend, which is default now)&lt;br /&gt;
&lt;br /&gt;
Make sure you have ROOT (ie ROOTSYS) setup properly&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 svn co https://subversion.gsi.de/dabc/trb3 trb3&lt;br /&gt;
cd trb3&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This seems to build dabc and stream successfully.  go4 doesn&#039;t compile cleanly, but this doesn&#039;t matter for the MIDAS frontend readout.&lt;br /&gt;
&lt;br /&gt;
6) Modify the IP and MAC address in the file trbsoft/daqtools/users/triumf_trb171/db/register_configgbe_ip.db.  This should be the IP and MAC address of the private IP interface on the server computer; so the IP is 192.168.1.253 in our case; use ipconfig to check the MAC.&lt;br /&gt;
&lt;br /&gt;
7) Setup your login script (BASH in this case):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DAQ_TOOLS_PATH=~/trbsoft/daqtools&lt;br /&gt;
USER_DIR=~/trbsoft/daqtools/users/triumf_trb171&lt;br /&gt;
TRB_WEB_DIR=$DAQ_TOOLS_PATH/web&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$DAQ_TOOLS_PATH:$HOME/trbsoft/trbnettools/bin&lt;br /&gt;
export PATH=$PATH:$DAQ_TOOLS_PATH/tools&lt;br /&gt;
export PATH=$PATH:$USER_DIR&lt;br /&gt;
export PATH=$PATH:$HOME/trbsoft/trb3/dabc/bin/&lt;br /&gt;
export LD_LIBRARY_PATH=$HOME/trbsoft/trb3/dabc/lib/&lt;br /&gt;
&lt;br /&gt;
# Use perl 5.24&lt;br /&gt;
rm -f /home/trb3/.perlbrew/init&lt;br /&gt;
source ~/perl5/perlbrew/etc/bashrc&lt;br /&gt;
perlbrew switch perl-5.24.0 &lt;br /&gt;
&lt;br /&gt;
### TL&lt;br /&gt;
### This part restarts the trbnetd server;&lt;br /&gt;
### this server takes instructions from trbcmd executable and&lt;br /&gt;
### passes them actually to the TRB.&lt;br /&gt;
export TRB3_SERVER=trb171:26000&lt;br /&gt;
export TRBNETDPID=$(pgrep -f &amp;quot;trbnetd -i 171&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
export DAQOPSERVER=localhost:171&lt;br /&gt;
&lt;br /&gt;
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/trb3/trbsoft/trbnettools/libtrbnet&lt;br /&gt;
&lt;br /&gt;
test -s ~/.alias &amp;amp;&amp;amp; . ~/.alias || true&lt;br /&gt;
&lt;br /&gt;
# PATH=&amp;quot;/home/trb3/perl5/bin${PATH:+:${PATH}}&amp;quot;; export PATH;&lt;br /&gt;
PERL5LIB=&amp;quot;/home/trb3/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/:/home/trb3/trbsoft/daqtools/web/include:/home/trb3/trbsoft/trbnettools/libtrbnet_perl/blib/lib:/usr/share/perl5/vendor_perl&amp;quot;; export PERL5LIB;&lt;br /&gt;
#PERL_LOCAL_LIB_ROOT=&amp;quot;/home/trb3/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}&amp;quot;; export PERL_LOCAL_LIB_ROOT;&lt;br /&gt;
#PERL_MB_OPT=&amp;quot;--install_base \&amp;quot;/home/trb3/perl5\&amp;quot;&amp;quot;; export PERL_MB_OPT;&lt;br /&gt;
#PERL_MM_OPT=&amp;quot;INSTALL_BASE=/home/trb3/perl5&amp;quot;; export PERL_MM_OPT;&lt;br /&gt;
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/trb3/trbsoft/trbnettools/libtrbnet_perl/blib/arch/auto/HADES/TrbNet/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# setup ROOT &lt;br /&gt;
source ~/packages/root/bin/thisroot.sh &lt;br /&gt;
&lt;br /&gt;
# setup MIDAS&lt;br /&gt;
export MIDASSYS=${HOME}/packages/midas&lt;br /&gt;
export PATH=${PATH}:${MIDASSYS}/linux/bin&lt;br /&gt;
export MIDAS_EXPTAB=${HOME}/online/exptab&lt;br /&gt;
export ROOTANASYS=${HOME}/packages/rootana&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Now start the trb3 program and initialize the TRB3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/trbsoft/daqtools/users/triumf_trb171&lt;br /&gt;
source startup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) If this is a new TRB3, need to modify the following files, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trbcmd i 0xffff  &lt;br /&gt;
# check open to figure out the serial number of new TRB3 FPGAs&lt;br /&gt;
# use this info to modify following files:&lt;br /&gt;
vi db/addresses_trb3.db&lt;br /&gt;
vi $DAQ_TOOLS_PATH/base/serials_trb3.db&lt;br /&gt;
vi db/register_configtdc.db&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TRB3 MIDAS implementation == &lt;br /&gt;
&lt;br /&gt;
We have a working MIDAS readout of the TRB3 TDC data.  Currently this readout uses a lot of the original GSI tools for setting up the TRB3 before the readout can start.   At this time you need to do steps 1 and 2 described in &amp;quot;Start up instructions&amp;quot;  in order to setup the TRB3 before starting the MIDAS frontend. Eventually we will try to remove as many as possible of the original GSI tools. &lt;br /&gt;
&lt;br /&gt;
MIDAS frontend code is available here:&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/ttriumfdaq/trb3_frontend&lt;br /&gt;
&lt;br /&gt;
The MIDAS frontend is setup to read events directly from the UDP buffer.  You can see a running MIDAS TRB3 frontend here:&lt;br /&gt;
&lt;br /&gt;
https://daq11.triumf.ca:8443&lt;br /&gt;
&lt;br /&gt;
(midas/midas).&lt;br /&gt;
&lt;br /&gt;
=== Setting up for MIDAS data taking === &lt;br /&gt;
&lt;br /&gt;
We are using the account trb3@daq11.triumf.ca for running this DAQ.  If you need to restart the DAQ system, do the following&lt;br /&gt;
&lt;br /&gt;
* Run the setup program that will initialize the TRB3 and set the 10kHz software trigger&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
cd /home/trb3/trbsoft/daqtools/users/triumf_trb171&lt;br /&gt;
source startup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* (Optional) We can also start a webgui that allows us to check/configure the TRB3 separate from MIDAS; this is sometimes useful for monitoring.  To do this, do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/trb3/trbsoft/daqtools/web&lt;br /&gt;
export PERL5LIB=/home/trb3/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/:/home/trb3/trbsoft/daqtools/web/include:/home/trb3/trbsoft/trbnettools/libtrbnet_perl/bli b/lib:/usr/share/perl5/vendor_perl&lt;br /&gt;
./cts_gui --noopenxterm --port=1234 --endpoint=0xc001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows access to GSI [http://daq11:1234/ web GUI].&lt;br /&gt;
&lt;br /&gt;
* Start the MIDAS TRB3 readout frontend, if not running:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/trb3/online/trb3_frontend/fetrb3UDP.exe -D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actually, the default fetrb3UDP program does not create all the ODB settings that it should.  It misses one setting, which specifies the name of the bank for a particular address.  Create this variable after running the program the first time, using odbedit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[local:trb3:R]Settings&amp;gt; cd /Equipment/TRB3_UDP/Settings&lt;br /&gt;
[local:trb3:S]Settings&amp;gt;create STRING trb765          &lt;br /&gt;
String length [32]:&lt;br /&gt;
[local:trb3:S]Settings&amp;gt;move trb765 1&lt;br /&gt;
[local:trb3:S]Settings&amp;gt;set trb765 TRBA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As noted, we currently (April 9) we have the TRB3 setup with a 10kHz software trigger.&lt;br /&gt;
&lt;br /&gt;
== Running the analyzer == &lt;br /&gt;
&lt;br /&gt;
I added simple decoder and histograming classes to rootana.  Currently I have only implemented the crude TDC calibration into the TRB3 bank decoders.  In the long run we may want to integrate the fine TDC calibration directly into the frontend.  &lt;br /&gt;
&lt;br /&gt;
To look at the analyzer display, run the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/trb3/online/trb3_frontend/analyzer/anaDisplay.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display shows different histograms, arranged by FPGA and channel number.  Histograms are&lt;br /&gt;
&lt;br /&gt;
# The TDC times for each channel, with crude calibration applied&lt;br /&gt;
# The TDC raw fine times; ie, the raw counts for the sub-5ns part of the TDCs&lt;br /&gt;
# TDC time difference histograms; for this canvas you can set the reference FPGA and channel&lt;br /&gt;
&lt;br /&gt;
Analyzer notes:&lt;br /&gt;
* On the physical TRB3 board the FPGAs are numbered as being 1-4, but the analyzer converts these to the more normal 0-3 indexing.&lt;br /&gt;
* Channel 0 is also the TDC associated with the actual trigger; in our case, the time of the software trigger&lt;br /&gt;
* For FPGA 0 and 1 the firmware is configured so we are reading both leading and falling TDC edges; so for these FPGAs channel 1 is the leading edge of the first input and channel 2 is the trailing edge of the first input, and so on.  For FPGAs 2 and 3 we are only reading the leading edge of the TDCs.&lt;br /&gt;
&lt;br /&gt;
To dump data from MIDAS file, do following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/trb3/online/trb3_frontend/analyzer&lt;br /&gt;
./ana.exe /home/trb3/online/run00026.mid.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modify ana.cxx to analyze the TDC data and type &#039;make&#039; to recompile ana.exe.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4015</id>
		<title>GSI TRB3</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4015"/>
		<updated>2020-01-21T19:09:15Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Updating TRB3 firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TRB3 is an FPGA-TDC board made and sold by GSI.  It can achieve ~20ps timing resolution&lt;br /&gt;
&lt;br /&gt;
== Documentation == &lt;br /&gt;
&lt;br /&gt;
[http://trb.gsi.de/ Main TRB3 webpage]&lt;br /&gt;
&lt;br /&gt;
[http://jspc29.x-matter.uni-frankfurt.de/docu/trb3docu.pdf Main TRB3 Manual]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trb3docu.pdf]] local copy of the manual&lt;br /&gt;
&lt;br /&gt;
[[Image:trb3.pdf]] local copy of the schematics&lt;br /&gt;
&lt;br /&gt;
== Hardware Information ==&lt;br /&gt;
&lt;br /&gt;
=== Power === &lt;br /&gt;
&lt;br /&gt;
The TRB3 runs off 50V DC power.  The TRB3 needs a fan in order to operate.  Between the fan and the TRB3 they draw ~0.5A on 50V.&lt;br /&gt;
&lt;br /&gt;
=== Clock and Trigger ===&lt;br /&gt;
&lt;br /&gt;
Michael Traxler provided the following picture of clock and trigger circuitry:&lt;br /&gt;
&lt;br /&gt;
[[Image:trb_clockdistribution.png|700x350px]]&lt;br /&gt;
&lt;br /&gt;
Michael also provides following details&lt;br /&gt;
&lt;br /&gt;
Clock:&lt;br /&gt;
* system clock frequency of 200MHz can be taken either from the internal oscillator, or via the second LVDS pair (pin 3 and 6) of the connector &amp;quot;RJ-45-Clock&amp;quot;. They are distributed to all 5 FPGAs to the primary-clock-input. &lt;br /&gt;
* In all &amp;quot;modern&amp;quot; FPGA designs (since several years) you don&#039;t have to do anything in registers to use the external clock. The scheme is simple: When an external clock is available and stable and the PLL locks to it at power up, the external clock is used. If not, the internal clock is used.&lt;br /&gt;
&lt;br /&gt;
Trigger:&lt;br /&gt;
* If you have a CTS (or a single TRB3 setup) the trigger is generated in the CTS, from external tigger sources. This you can see in Table 27 in the TRB3-manual (currently page 75).  For instance, one of the external trigger signals is on pair 2 of the trigger RJ45 connector&lt;br /&gt;
* So, for the CTS, there are 4 different inputs available on the two RJ45 connectors, which all can be used at the same time. If you need more, you can add a CTS-AddOn on the backside of the TRB3 and then you have many more trigger inputs. Each input will generate a certain &amp;quot;trigger type&amp;quot; data word in the data stream to distinguish between the trigger inputs.&lt;br /&gt;
&lt;br /&gt;
== TDC calibration ==&lt;br /&gt;
&lt;br /&gt;
The concept of the FPGA-TDC calibration is described here:&lt;br /&gt;
&lt;br /&gt;
http://dabc.gsi.de/doc/dabc2/hadaq_tdc_calibr.html&lt;br /&gt;
&lt;br /&gt;
One important summary from that document: we require ~1e5 random hits for every channel in order to build up an individual fine counter calibration for each channel.&lt;br /&gt;
&lt;br /&gt;
== Computer and Software Setup Instructions == &lt;br /&gt;
&lt;br /&gt;
Currently have gotten the TRB3 working on three different configurations.  On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
1) A GSI-provided readout package (and analysis package) which runs on OpenSuse.  See [[TRB3 GSI Opensuse instructions]].&lt;br /&gt;
&lt;br /&gt;
2) A MIDAS-based readout on an Opensuse machine. No instructions.&lt;br /&gt;
&lt;br /&gt;
3) A MIDAS-based readout on a Centos-7 machine. See [[TRB3 Centos-7 instructions]].&lt;br /&gt;
&lt;br /&gt;
On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
We setup TRB3 on a private network.  So need machine with second ethernet port.&lt;br /&gt;
&lt;br /&gt;
== Useful TRB3 commands ==&lt;br /&gt;
&lt;br /&gt;
a) Get IDs for TRB3 FPGAs (1 central FPGA and 4 FPGAs for TDCs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trb3_user@linux-klyr:~/lindner&amp;gt; trbcmd i 0xffff&lt;br /&gt;
0xc001  0xe1000006e937ac28  0x05&lt;br /&gt;
0x0100  0x9c000006e937a028  0x00&lt;br /&gt;
0x0101  0x91000006e95e8328  0x01&lt;br /&gt;
0x0102  0x75000006e9383128  0x02&lt;br /&gt;
0x0103  0xe6000006e96e5228  0x03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The four FPGAs that actually make TDCs are numbered 0x100, 0x101, 0x102, 0x103.&lt;br /&gt;
&lt;br /&gt;
b) Print out raw TDCs for the events that are coming in through event builder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) Print out raw TDCs for events in file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint //data/trb3_data/pulser17342114715.hld -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Print out raw data stream from EB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Check the status of the clock&lt;br /&gt;
&lt;br /&gt;
Check bit 8 of register 0xd300.  &lt;br /&gt;
&lt;br /&gt;
This indicates that an external clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This indicates that an internal clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)  &amp;quot;Ping of death&amp;quot; somehow ping board to reboot it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping  -pc001 trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating TRB3 firmware ==&lt;br /&gt;
&lt;br /&gt;
Based on instructions from Michael&lt;br /&gt;
&lt;br /&gt;
General points:&lt;br /&gt;
&lt;br /&gt;
* Take care that you have a stable setup with the power-supply stable and cooling ok, as if you turn off the board while reprogramming you need a programming cable to recover the FPGA.&lt;br /&gt;
&lt;br /&gt;
* List of available firmware files are here:&lt;br /&gt;
https://jspc29.x-matter.uni-frankfurt.de/trbweb/?action=page&amp;amp;url=design-files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Steps to flash&lt;br /&gt;
&lt;br /&gt;
1) Get firmware.  Ie:&lt;br /&gt;
&amp;lt;pre&amp;gt; wget http://jspc29.x-matter.uni-frankfurt.de/bitfiles/trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) reflashing is done via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; trbflash program 0x&amp;lt;TRB-address-of-FPGA&amp;gt; ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
trbflash program 0x0102 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
trbflash program 0x0103 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) after a successful flash and verify (automatic):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; trbcmd reload 0x&amp;lt;TRB-address-of-FPGA&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) But do it one FPGA after the other, if you do it the first time.&lt;br /&gt;
You can also reprogramm all of them at once with a broadcast address.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4014</id>
		<title>GSI TRB3</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4014"/>
		<updated>2020-01-21T19:08:55Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Updating TRB3 firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TRB3 is an FPGA-TDC board made and sold by GSI.  It can achieve ~20ps timing resolution&lt;br /&gt;
&lt;br /&gt;
== Documentation == &lt;br /&gt;
&lt;br /&gt;
[http://trb.gsi.de/ Main TRB3 webpage]&lt;br /&gt;
&lt;br /&gt;
[http://jspc29.x-matter.uni-frankfurt.de/docu/trb3docu.pdf Main TRB3 Manual]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trb3docu.pdf]] local copy of the manual&lt;br /&gt;
&lt;br /&gt;
[[Image:trb3.pdf]] local copy of the schematics&lt;br /&gt;
&lt;br /&gt;
== Hardware Information ==&lt;br /&gt;
&lt;br /&gt;
=== Power === &lt;br /&gt;
&lt;br /&gt;
The TRB3 runs off 50V DC power.  The TRB3 needs a fan in order to operate.  Between the fan and the TRB3 they draw ~0.5A on 50V.&lt;br /&gt;
&lt;br /&gt;
=== Clock and Trigger ===&lt;br /&gt;
&lt;br /&gt;
Michael Traxler provided the following picture of clock and trigger circuitry:&lt;br /&gt;
&lt;br /&gt;
[[Image:trb_clockdistribution.png|700x350px]]&lt;br /&gt;
&lt;br /&gt;
Michael also provides following details&lt;br /&gt;
&lt;br /&gt;
Clock:&lt;br /&gt;
* system clock frequency of 200MHz can be taken either from the internal oscillator, or via the second LVDS pair (pin 3 and 6) of the connector &amp;quot;RJ-45-Clock&amp;quot;. They are distributed to all 5 FPGAs to the primary-clock-input. &lt;br /&gt;
* In all &amp;quot;modern&amp;quot; FPGA designs (since several years) you don&#039;t have to do anything in registers to use the external clock. The scheme is simple: When an external clock is available and stable and the PLL locks to it at power up, the external clock is used. If not, the internal clock is used.&lt;br /&gt;
&lt;br /&gt;
Trigger:&lt;br /&gt;
* If you have a CTS (or a single TRB3 setup) the trigger is generated in the CTS, from external tigger sources. This you can see in Table 27 in the TRB3-manual (currently page 75).  For instance, one of the external trigger signals is on pair 2 of the trigger RJ45 connector&lt;br /&gt;
* So, for the CTS, there are 4 different inputs available on the two RJ45 connectors, which all can be used at the same time. If you need more, you can add a CTS-AddOn on the backside of the TRB3 and then you have many more trigger inputs. Each input will generate a certain &amp;quot;trigger type&amp;quot; data word in the data stream to distinguish between the trigger inputs.&lt;br /&gt;
&lt;br /&gt;
== TDC calibration ==&lt;br /&gt;
&lt;br /&gt;
The concept of the FPGA-TDC calibration is described here:&lt;br /&gt;
&lt;br /&gt;
http://dabc.gsi.de/doc/dabc2/hadaq_tdc_calibr.html&lt;br /&gt;
&lt;br /&gt;
One important summary from that document: we require ~1e5 random hits for every channel in order to build up an individual fine counter calibration for each channel.&lt;br /&gt;
&lt;br /&gt;
== Computer and Software Setup Instructions == &lt;br /&gt;
&lt;br /&gt;
Currently have gotten the TRB3 working on three different configurations.  On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
1) A GSI-provided readout package (and analysis package) which runs on OpenSuse.  See [[TRB3 GSI Opensuse instructions]].&lt;br /&gt;
&lt;br /&gt;
2) A MIDAS-based readout on an Opensuse machine. No instructions.&lt;br /&gt;
&lt;br /&gt;
3) A MIDAS-based readout on a Centos-7 machine. See [[TRB3 Centos-7 instructions]].&lt;br /&gt;
&lt;br /&gt;
On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
We setup TRB3 on a private network.  So need machine with second ethernet port.&lt;br /&gt;
&lt;br /&gt;
== Useful TRB3 commands ==&lt;br /&gt;
&lt;br /&gt;
a) Get IDs for TRB3 FPGAs (1 central FPGA and 4 FPGAs for TDCs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trb3_user@linux-klyr:~/lindner&amp;gt; trbcmd i 0xffff&lt;br /&gt;
0xc001  0xe1000006e937ac28  0x05&lt;br /&gt;
0x0100  0x9c000006e937a028  0x00&lt;br /&gt;
0x0101  0x91000006e95e8328  0x01&lt;br /&gt;
0x0102  0x75000006e9383128  0x02&lt;br /&gt;
0x0103  0xe6000006e96e5228  0x03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The four FPGAs that actually make TDCs are numbered 0x100, 0x101, 0x102, 0x103.&lt;br /&gt;
&lt;br /&gt;
b) Print out raw TDCs for the events that are coming in through event builder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) Print out raw TDCs for events in file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint //data/trb3_data/pulser17342114715.hld -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Print out raw data stream from EB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Check the status of the clock&lt;br /&gt;
&lt;br /&gt;
Check bit 8 of register 0xd300.  &lt;br /&gt;
&lt;br /&gt;
This indicates that an external clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This indicates that an internal clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)  &amp;quot;Ping of death&amp;quot; somehow ping board to reboot it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping  -pc001 trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating TRB3 firmware ==&lt;br /&gt;
&lt;br /&gt;
Based on instructions from Michael&lt;br /&gt;
&lt;br /&gt;
General points:&lt;br /&gt;
&lt;br /&gt;
* Take care that you have a stable setup with the power-supply stable and cooling ok, as if you turn off the board while reprogramming you need a programming cable to recover the FPGA.&lt;br /&gt;
&lt;br /&gt;
* List of available firmware files are here:&lt;br /&gt;
https://jspc29.x-matter.uni-frankfurt.de/trbweb/?action=page&amp;amp;url=design-files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Steps to flash&lt;br /&gt;
&lt;br /&gt;
1) Get firmware.  Ie:&lt;br /&gt;
&amp;lt;pre&amp;gt; wget http://jspc29.x-matter.uni-frankfurt.de/bitfiles/trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) reflashing is done via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; trbflash program 0x&amp;lt;TRB-address-of-FPGA&amp;gt; ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 for example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
trbflash program 0x0102 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
trbflash program 0x0103 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) after a successful flash and verify (automatic):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; trbcmd reload 0x&amp;lt;TRB-address-of-FPGA&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) But do it one FPGA after the other, if you do it the first time.&lt;br /&gt;
You can also reprogramm all of them at once with a broadcast address.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4013</id>
		<title>GSI TRB3</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4013"/>
		<updated>2020-01-21T19:05:41Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Updating TRB3 firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TRB3 is an FPGA-TDC board made and sold by GSI.  It can achieve ~20ps timing resolution&lt;br /&gt;
&lt;br /&gt;
== Documentation == &lt;br /&gt;
&lt;br /&gt;
[http://trb.gsi.de/ Main TRB3 webpage]&lt;br /&gt;
&lt;br /&gt;
[http://jspc29.x-matter.uni-frankfurt.de/docu/trb3docu.pdf Main TRB3 Manual]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trb3docu.pdf]] local copy of the manual&lt;br /&gt;
&lt;br /&gt;
[[Image:trb3.pdf]] local copy of the schematics&lt;br /&gt;
&lt;br /&gt;
== Hardware Information ==&lt;br /&gt;
&lt;br /&gt;
=== Power === &lt;br /&gt;
&lt;br /&gt;
The TRB3 runs off 50V DC power.  The TRB3 needs a fan in order to operate.  Between the fan and the TRB3 they draw ~0.5A on 50V.&lt;br /&gt;
&lt;br /&gt;
=== Clock and Trigger ===&lt;br /&gt;
&lt;br /&gt;
Michael Traxler provided the following picture of clock and trigger circuitry:&lt;br /&gt;
&lt;br /&gt;
[[Image:trb_clockdistribution.png|700x350px]]&lt;br /&gt;
&lt;br /&gt;
Michael also provides following details&lt;br /&gt;
&lt;br /&gt;
Clock:&lt;br /&gt;
* system clock frequency of 200MHz can be taken either from the internal oscillator, or via the second LVDS pair (pin 3 and 6) of the connector &amp;quot;RJ-45-Clock&amp;quot;. They are distributed to all 5 FPGAs to the primary-clock-input. &lt;br /&gt;
* In all &amp;quot;modern&amp;quot; FPGA designs (since several years) you don&#039;t have to do anything in registers to use the external clock. The scheme is simple: When an external clock is available and stable and the PLL locks to it at power up, the external clock is used. If not, the internal clock is used.&lt;br /&gt;
&lt;br /&gt;
Trigger:&lt;br /&gt;
* If you have a CTS (or a single TRB3 setup) the trigger is generated in the CTS, from external tigger sources. This you can see in Table 27 in the TRB3-manual (currently page 75).  For instance, one of the external trigger signals is on pair 2 of the trigger RJ45 connector&lt;br /&gt;
* So, for the CTS, there are 4 different inputs available on the two RJ45 connectors, which all can be used at the same time. If you need more, you can add a CTS-AddOn on the backside of the TRB3 and then you have many more trigger inputs. Each input will generate a certain &amp;quot;trigger type&amp;quot; data word in the data stream to distinguish between the trigger inputs.&lt;br /&gt;
&lt;br /&gt;
== TDC calibration ==&lt;br /&gt;
&lt;br /&gt;
The concept of the FPGA-TDC calibration is described here:&lt;br /&gt;
&lt;br /&gt;
http://dabc.gsi.de/doc/dabc2/hadaq_tdc_calibr.html&lt;br /&gt;
&lt;br /&gt;
One important summary from that document: we require ~1e5 random hits for every channel in order to build up an individual fine counter calibration for each channel.&lt;br /&gt;
&lt;br /&gt;
== Computer and Software Setup Instructions == &lt;br /&gt;
&lt;br /&gt;
Currently have gotten the TRB3 working on three different configurations.  On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
1) A GSI-provided readout package (and analysis package) which runs on OpenSuse.  See [[TRB3 GSI Opensuse instructions]].&lt;br /&gt;
&lt;br /&gt;
2) A MIDAS-based readout on an Opensuse machine. No instructions.&lt;br /&gt;
&lt;br /&gt;
3) A MIDAS-based readout on a Centos-7 machine. See [[TRB3 Centos-7 instructions]].&lt;br /&gt;
&lt;br /&gt;
On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
We setup TRB3 on a private network.  So need machine with second ethernet port.&lt;br /&gt;
&lt;br /&gt;
== Useful TRB3 commands ==&lt;br /&gt;
&lt;br /&gt;
a) Get IDs for TRB3 FPGAs (1 central FPGA and 4 FPGAs for TDCs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trb3_user@linux-klyr:~/lindner&amp;gt; trbcmd i 0xffff&lt;br /&gt;
0xc001  0xe1000006e937ac28  0x05&lt;br /&gt;
0x0100  0x9c000006e937a028  0x00&lt;br /&gt;
0x0101  0x91000006e95e8328  0x01&lt;br /&gt;
0x0102  0x75000006e9383128  0x02&lt;br /&gt;
0x0103  0xe6000006e96e5228  0x03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The four FPGAs that actually make TDCs are numbered 0x100, 0x101, 0x102, 0x103.&lt;br /&gt;
&lt;br /&gt;
b) Print out raw TDCs for the events that are coming in through event builder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) Print out raw TDCs for events in file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint //data/trb3_data/pulser17342114715.hld -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Print out raw data stream from EB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Check the status of the clock&lt;br /&gt;
&lt;br /&gt;
Check bit 8 of register 0xd300.  &lt;br /&gt;
&lt;br /&gt;
This indicates that an external clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This indicates that an internal clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)  &amp;quot;Ping of death&amp;quot; somehow ping board to reboot it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping  -pc001 trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating TRB3 firmware ==&lt;br /&gt;
&lt;br /&gt;
Based on instructions from Michael&lt;br /&gt;
&lt;br /&gt;
General points:&lt;br /&gt;
&lt;br /&gt;
* Take care that you have a stable setup with the power-supply stable and cooling ok, as if you turn off the board while reprogramming you need a programming cable to recover the FPGA.&lt;br /&gt;
&lt;br /&gt;
* List of available firmware files are here:&lt;br /&gt;
https://jspc29.x-matter.uni-frankfurt.de/trbweb/?action=page&amp;amp;url=design-files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Steps to flash&lt;br /&gt;
&lt;br /&gt;
1) Get firmware.  Ie:&lt;br /&gt;
&amp;lt;pre&amp;gt; wget http://jspc29.x-matter.uni-frankfurt.de/bitfiles/trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) reflashing is done via:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; trbflash program 0x&amp;lt;TRB-address-of-FPGA&amp;gt; ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 for example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
trbflash program 0x0102 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
trbflash program 0x0103 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) after a successful flash and verify (automatic):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; trbcmd reload 0x&amp;lt;TRB-address-of-FPGA&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) But do it one FPGA after the other, if you do it the first time.&lt;br /&gt;
You can also reprogramm all of them at once with a broadcast address.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4012</id>
		<title>GSI TRB3</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4012"/>
		<updated>2020-01-21T19:04:21Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Updating TRB3 firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TRB3 is an FPGA-TDC board made and sold by GSI.  It can achieve ~20ps timing resolution&lt;br /&gt;
&lt;br /&gt;
== Documentation == &lt;br /&gt;
&lt;br /&gt;
[http://trb.gsi.de/ Main TRB3 webpage]&lt;br /&gt;
&lt;br /&gt;
[http://jspc29.x-matter.uni-frankfurt.de/docu/trb3docu.pdf Main TRB3 Manual]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trb3docu.pdf]] local copy of the manual&lt;br /&gt;
&lt;br /&gt;
[[Image:trb3.pdf]] local copy of the schematics&lt;br /&gt;
&lt;br /&gt;
== Hardware Information ==&lt;br /&gt;
&lt;br /&gt;
=== Power === &lt;br /&gt;
&lt;br /&gt;
The TRB3 runs off 50V DC power.  The TRB3 needs a fan in order to operate.  Between the fan and the TRB3 they draw ~0.5A on 50V.&lt;br /&gt;
&lt;br /&gt;
=== Clock and Trigger ===&lt;br /&gt;
&lt;br /&gt;
Michael Traxler provided the following picture of clock and trigger circuitry:&lt;br /&gt;
&lt;br /&gt;
[[Image:trb_clockdistribution.png|700x350px]]&lt;br /&gt;
&lt;br /&gt;
Michael also provides following details&lt;br /&gt;
&lt;br /&gt;
Clock:&lt;br /&gt;
* system clock frequency of 200MHz can be taken either from the internal oscillator, or via the second LVDS pair (pin 3 and 6) of the connector &amp;quot;RJ-45-Clock&amp;quot;. They are distributed to all 5 FPGAs to the primary-clock-input. &lt;br /&gt;
* In all &amp;quot;modern&amp;quot; FPGA designs (since several years) you don&#039;t have to do anything in registers to use the external clock. The scheme is simple: When an external clock is available and stable and the PLL locks to it at power up, the external clock is used. If not, the internal clock is used.&lt;br /&gt;
&lt;br /&gt;
Trigger:&lt;br /&gt;
* If you have a CTS (or a single TRB3 setup) the trigger is generated in the CTS, from external tigger sources. This you can see in Table 27 in the TRB3-manual (currently page 75).  For instance, one of the external trigger signals is on pair 2 of the trigger RJ45 connector&lt;br /&gt;
* So, for the CTS, there are 4 different inputs available on the two RJ45 connectors, which all can be used at the same time. If you need more, you can add a CTS-AddOn on the backside of the TRB3 and then you have many more trigger inputs. Each input will generate a certain &amp;quot;trigger type&amp;quot; data word in the data stream to distinguish between the trigger inputs.&lt;br /&gt;
&lt;br /&gt;
== TDC calibration ==&lt;br /&gt;
&lt;br /&gt;
The concept of the FPGA-TDC calibration is described here:&lt;br /&gt;
&lt;br /&gt;
http://dabc.gsi.de/doc/dabc2/hadaq_tdc_calibr.html&lt;br /&gt;
&lt;br /&gt;
One important summary from that document: we require ~1e5 random hits for every channel in order to build up an individual fine counter calibration for each channel.&lt;br /&gt;
&lt;br /&gt;
== Computer and Software Setup Instructions == &lt;br /&gt;
&lt;br /&gt;
Currently have gotten the TRB3 working on three different configurations.  On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
1) A GSI-provided readout package (and analysis package) which runs on OpenSuse.  See [[TRB3 GSI Opensuse instructions]].&lt;br /&gt;
&lt;br /&gt;
2) A MIDAS-based readout on an Opensuse machine. No instructions.&lt;br /&gt;
&lt;br /&gt;
3) A MIDAS-based readout on a Centos-7 machine. See [[TRB3 Centos-7 instructions]].&lt;br /&gt;
&lt;br /&gt;
On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
We setup TRB3 on a private network.  So need machine with second ethernet port.&lt;br /&gt;
&lt;br /&gt;
== Useful TRB3 commands ==&lt;br /&gt;
&lt;br /&gt;
a) Get IDs for TRB3 FPGAs (1 central FPGA and 4 FPGAs for TDCs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trb3_user@linux-klyr:~/lindner&amp;gt; trbcmd i 0xffff&lt;br /&gt;
0xc001  0xe1000006e937ac28  0x05&lt;br /&gt;
0x0100  0x9c000006e937a028  0x00&lt;br /&gt;
0x0101  0x91000006e95e8328  0x01&lt;br /&gt;
0x0102  0x75000006e9383128  0x02&lt;br /&gt;
0x0103  0xe6000006e96e5228  0x03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The four FPGAs that actually make TDCs are numbered 0x100, 0x101, 0x102, 0x103.&lt;br /&gt;
&lt;br /&gt;
b) Print out raw TDCs for the events that are coming in through event builder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) Print out raw TDCs for events in file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint //data/trb3_data/pulser17342114715.hld -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Print out raw data stream from EB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Check the status of the clock&lt;br /&gt;
&lt;br /&gt;
Check bit 8 of register 0xd300.  &lt;br /&gt;
&lt;br /&gt;
This indicates that an external clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This indicates that an internal clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)  &amp;quot;Ping of death&amp;quot; somehow ping board to reboot it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping  -pc001 trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating TRB3 firmware ==&lt;br /&gt;
&lt;br /&gt;
Based on instructions from Michael&lt;br /&gt;
&lt;br /&gt;
General points:&lt;br /&gt;
&lt;br /&gt;
* Take care that you have a stable setup with the power-supply stable and cooling ok, as if you turn off the board while reprogramming you need a programming cable to recover the FPGA.&lt;br /&gt;
&lt;br /&gt;
* List of available firmware files are here:&lt;br /&gt;
https://jspc29.x-matter.uni-frankfurt.de/trbweb/?action=page&amp;amp;url=design-files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Steps to flash&lt;br /&gt;
&lt;br /&gt;
1) Get firmware.  Ie:&lt;br /&gt;
&amp;lt;pre&amp;gt; wget http://jspc29.x-matter.uni-frankfurt.de/bitfiles/trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
reflashing is done via:&lt;br /&gt;
&lt;br /&gt;
$ trbflash program 0x&amp;lt;TRB-address-of-FPGA&amp;gt; ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
&lt;br /&gt;
in your case: $ trbflash program 0x0102 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
and $ trbflash program 0x0103 ./trb3_periph_padiwa_tdc_32_stretch_triggerlogic28-4_20181024.bit&lt;br /&gt;
&lt;br /&gt;
after a successful flash and verify (automatic):&lt;br /&gt;
$ trbcmd reload 0x&amp;lt;TRB-address-of-FPGA&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But do it one FPGA after the other, if you do it the first time.&lt;br /&gt;
You can also reprogramm all of them at once with a broadcast address.&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4011</id>
		<title>GSI TRB3</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4011"/>
		<updated>2020-01-21T19:02:55Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Updating TRB3 firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TRB3 is an FPGA-TDC board made and sold by GSI.  It can achieve ~20ps timing resolution&lt;br /&gt;
&lt;br /&gt;
== Documentation == &lt;br /&gt;
&lt;br /&gt;
[http://trb.gsi.de/ Main TRB3 webpage]&lt;br /&gt;
&lt;br /&gt;
[http://jspc29.x-matter.uni-frankfurt.de/docu/trb3docu.pdf Main TRB3 Manual]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trb3docu.pdf]] local copy of the manual&lt;br /&gt;
&lt;br /&gt;
[[Image:trb3.pdf]] local copy of the schematics&lt;br /&gt;
&lt;br /&gt;
== Hardware Information ==&lt;br /&gt;
&lt;br /&gt;
=== Power === &lt;br /&gt;
&lt;br /&gt;
The TRB3 runs off 50V DC power.  The TRB3 needs a fan in order to operate.  Between the fan and the TRB3 they draw ~0.5A on 50V.&lt;br /&gt;
&lt;br /&gt;
=== Clock and Trigger ===&lt;br /&gt;
&lt;br /&gt;
Michael Traxler provided the following picture of clock and trigger circuitry:&lt;br /&gt;
&lt;br /&gt;
[[Image:trb_clockdistribution.png|700x350px]]&lt;br /&gt;
&lt;br /&gt;
Michael also provides following details&lt;br /&gt;
&lt;br /&gt;
Clock:&lt;br /&gt;
* system clock frequency of 200MHz can be taken either from the internal oscillator, or via the second LVDS pair (pin 3 and 6) of the connector &amp;quot;RJ-45-Clock&amp;quot;. They are distributed to all 5 FPGAs to the primary-clock-input. &lt;br /&gt;
* In all &amp;quot;modern&amp;quot; FPGA designs (since several years) you don&#039;t have to do anything in registers to use the external clock. The scheme is simple: When an external clock is available and stable and the PLL locks to it at power up, the external clock is used. If not, the internal clock is used.&lt;br /&gt;
&lt;br /&gt;
Trigger:&lt;br /&gt;
* If you have a CTS (or a single TRB3 setup) the trigger is generated in the CTS, from external tigger sources. This you can see in Table 27 in the TRB3-manual (currently page 75).  For instance, one of the external trigger signals is on pair 2 of the trigger RJ45 connector&lt;br /&gt;
* So, for the CTS, there are 4 different inputs available on the two RJ45 connectors, which all can be used at the same time. If you need more, you can add a CTS-AddOn on the backside of the TRB3 and then you have many more trigger inputs. Each input will generate a certain &amp;quot;trigger type&amp;quot; data word in the data stream to distinguish between the trigger inputs.&lt;br /&gt;
&lt;br /&gt;
== TDC calibration ==&lt;br /&gt;
&lt;br /&gt;
The concept of the FPGA-TDC calibration is described here:&lt;br /&gt;
&lt;br /&gt;
http://dabc.gsi.de/doc/dabc2/hadaq_tdc_calibr.html&lt;br /&gt;
&lt;br /&gt;
One important summary from that document: we require ~1e5 random hits for every channel in order to build up an individual fine counter calibration for each channel.&lt;br /&gt;
&lt;br /&gt;
== Computer and Software Setup Instructions == &lt;br /&gt;
&lt;br /&gt;
Currently have gotten the TRB3 working on three different configurations.  On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
1) A GSI-provided readout package (and analysis package) which runs on OpenSuse.  See [[TRB3 GSI Opensuse instructions]].&lt;br /&gt;
&lt;br /&gt;
2) A MIDAS-based readout on an Opensuse machine. No instructions.&lt;br /&gt;
&lt;br /&gt;
3) A MIDAS-based readout on a Centos-7 machine. See [[TRB3 Centos-7 instructions]].&lt;br /&gt;
&lt;br /&gt;
On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
We setup TRB3 on a private network.  So need machine with second ethernet port.&lt;br /&gt;
&lt;br /&gt;
== Useful TRB3 commands ==&lt;br /&gt;
&lt;br /&gt;
a) Get IDs for TRB3 FPGAs (1 central FPGA and 4 FPGAs for TDCs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trb3_user@linux-klyr:~/lindner&amp;gt; trbcmd i 0xffff&lt;br /&gt;
0xc001  0xe1000006e937ac28  0x05&lt;br /&gt;
0x0100  0x9c000006e937a028  0x00&lt;br /&gt;
0x0101  0x91000006e95e8328  0x01&lt;br /&gt;
0x0102  0x75000006e9383128  0x02&lt;br /&gt;
0x0103  0xe6000006e96e5228  0x03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The four FPGAs that actually make TDCs are numbered 0x100, 0x101, 0x102, 0x103.&lt;br /&gt;
&lt;br /&gt;
b) Print out raw TDCs for the events that are coming in through event builder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) Print out raw TDCs for events in file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint //data/trb3_data/pulser17342114715.hld -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Print out raw data stream from EB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Check the status of the clock&lt;br /&gt;
&lt;br /&gt;
Check bit 8 of register 0xd300.  &lt;br /&gt;
&lt;br /&gt;
This indicates that an external clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This indicates that an internal clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)  &amp;quot;Ping of death&amp;quot; somehow ping board to reboot it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping  -pc001 trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating TRB3 firmware ==&lt;br /&gt;
&lt;br /&gt;
Based on instructions from Michael&lt;br /&gt;
&lt;br /&gt;
General points:&lt;br /&gt;
&lt;br /&gt;
* Take care that you have a stable setup with the power-supply stable and cooling ok, as if you turn off the board while reprogramming you need a programming cable to recover the FPGA.&lt;br /&gt;
&lt;br /&gt;
* List of available firmware files are here:&lt;br /&gt;
https://jspc29.x-matter.uni-frankfurt.de/trbweb/?action=page&amp;amp;url=design-files&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4010</id>
		<title>GSI TRB3</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=GSI_TRB3&amp;diff=4010"/>
		<updated>2020-01-21T19:02:43Z</updated>

		<summary type="html">&lt;p&gt;Lindner: /* Updating TRB3 firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TRB3 is an FPGA-TDC board made and sold by GSI.  It can achieve ~20ps timing resolution&lt;br /&gt;
&lt;br /&gt;
== Documentation == &lt;br /&gt;
&lt;br /&gt;
[http://trb.gsi.de/ Main TRB3 webpage]&lt;br /&gt;
&lt;br /&gt;
[http://jspc29.x-matter.uni-frankfurt.de/docu/trb3docu.pdf Main TRB3 Manual]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trb3docu.pdf]] local copy of the manual&lt;br /&gt;
&lt;br /&gt;
[[Image:trb3.pdf]] local copy of the schematics&lt;br /&gt;
&lt;br /&gt;
== Hardware Information ==&lt;br /&gt;
&lt;br /&gt;
=== Power === &lt;br /&gt;
&lt;br /&gt;
The TRB3 runs off 50V DC power.  The TRB3 needs a fan in order to operate.  Between the fan and the TRB3 they draw ~0.5A on 50V.&lt;br /&gt;
&lt;br /&gt;
=== Clock and Trigger ===&lt;br /&gt;
&lt;br /&gt;
Michael Traxler provided the following picture of clock and trigger circuitry:&lt;br /&gt;
&lt;br /&gt;
[[Image:trb_clockdistribution.png|700x350px]]&lt;br /&gt;
&lt;br /&gt;
Michael also provides following details&lt;br /&gt;
&lt;br /&gt;
Clock:&lt;br /&gt;
* system clock frequency of 200MHz can be taken either from the internal oscillator, or via the second LVDS pair (pin 3 and 6) of the connector &amp;quot;RJ-45-Clock&amp;quot;. They are distributed to all 5 FPGAs to the primary-clock-input. &lt;br /&gt;
* In all &amp;quot;modern&amp;quot; FPGA designs (since several years) you don&#039;t have to do anything in registers to use the external clock. The scheme is simple: When an external clock is available and stable and the PLL locks to it at power up, the external clock is used. If not, the internal clock is used.&lt;br /&gt;
&lt;br /&gt;
Trigger:&lt;br /&gt;
* If you have a CTS (or a single TRB3 setup) the trigger is generated in the CTS, from external tigger sources. This you can see in Table 27 in the TRB3-manual (currently page 75).  For instance, one of the external trigger signals is on pair 2 of the trigger RJ45 connector&lt;br /&gt;
* So, for the CTS, there are 4 different inputs available on the two RJ45 connectors, which all can be used at the same time. If you need more, you can add a CTS-AddOn on the backside of the TRB3 and then you have many more trigger inputs. Each input will generate a certain &amp;quot;trigger type&amp;quot; data word in the data stream to distinguish between the trigger inputs.&lt;br /&gt;
&lt;br /&gt;
== TDC calibration ==&lt;br /&gt;
&lt;br /&gt;
The concept of the FPGA-TDC calibration is described here:&lt;br /&gt;
&lt;br /&gt;
http://dabc.gsi.de/doc/dabc2/hadaq_tdc_calibr.html&lt;br /&gt;
&lt;br /&gt;
One important summary from that document: we require ~1e5 random hits for every channel in order to build up an individual fine counter calibration for each channel.&lt;br /&gt;
&lt;br /&gt;
== Computer and Software Setup Instructions == &lt;br /&gt;
&lt;br /&gt;
Currently have gotten the TRB3 working on three different configurations.  On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
1) A GSI-provided readout package (and analysis package) which runs on OpenSuse.  See [[TRB3 GSI Opensuse instructions]].&lt;br /&gt;
&lt;br /&gt;
2) A MIDAS-based readout on an Opensuse machine. No instructions.&lt;br /&gt;
&lt;br /&gt;
3) A MIDAS-based readout on a Centos-7 machine. See [[TRB3 Centos-7 instructions]].&lt;br /&gt;
&lt;br /&gt;
On this page we provide information that is generic to each setup. The links provide instructions for the parts of the operation that are unique to each setup:&lt;br /&gt;
&lt;br /&gt;
We setup TRB3 on a private network.  So need machine with second ethernet port.&lt;br /&gt;
&lt;br /&gt;
== Useful TRB3 commands ==&lt;br /&gt;
&lt;br /&gt;
a) Get IDs for TRB3 FPGAs (1 central FPGA and 4 FPGAs for TDCs):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trb3_user@linux-klyr:~/lindner&amp;gt; trbcmd i 0xffff&lt;br /&gt;
0xc001  0xe1000006e937ac28  0x05&lt;br /&gt;
0x0100  0x9c000006e937a028  0x00&lt;br /&gt;
0x0101  0x91000006e95e8328  0x01&lt;br /&gt;
0x0102  0x75000006e9383128  0x02&lt;br /&gt;
0x0103  0xe6000006e96e5228  0x03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The four FPGAs that actually make TDCs are numbered 0x100, 0x101, 0x102, 0x103.&lt;br /&gt;
&lt;br /&gt;
b) Print out raw TDCs for the events that are coming in through event builder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) Print out raw TDCs for events in file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint //data/trb3_data/pulser17342114715.hld -onlytdc 0x0100 -num 0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
d) Print out raw data stream from EB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hldprint localhost:6789 -raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e) Check the status of the clock&lt;br /&gt;
&lt;br /&gt;
Check bit 8 of register 0xd300.  &lt;br /&gt;
&lt;br /&gt;
This indicates that an external clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This indicates that an internal clock is being used&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[agtdc@daq16 triumf_trb171]$ trbcmd r 0xc001 0xd300&lt;br /&gt;
0xc001  0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f)  &amp;quot;Ping of death&amp;quot; somehow ping board to reboot it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping  -pc001 trb171&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating TRB3 firmware ==&lt;br /&gt;
&lt;br /&gt;
Based on instructions from Michael&lt;br /&gt;
&lt;br /&gt;
General points:&lt;br /&gt;
&lt;br /&gt;
* Take care that you have a stable setup with the power-supply stable and&lt;br /&gt;
cooling ok, as if you turn off the board while reprogramming you need a&lt;br /&gt;
programming cable to recover the FPGA.&lt;br /&gt;
&lt;br /&gt;
* List of available firmware files are here:&lt;br /&gt;
https://jspc29.x-matter.uni-frankfurt.de/trbweb/?action=page&amp;amp;url=design-files&lt;/div&gt;</summary>
		<author><name>Lindner</name></author>
	</entry>
</feed>