<?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=Dfujimoto</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=Dfujimoto"/>
	<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php/Special:Contributions/Dfujimoto"/>
	<updated>2026-05-07T12:43:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8871</id>
		<title>SSLCertificates Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8871"/>
		<updated>2026-04-28T16:02:33Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The firewall rules introduced early 2026 prevent SSL certificates being generated by certbot or letsencrypt because the ports needed to verify the host are behind the perimeter firewall. The DNS/DHCP wrapper infoblox can provides these certificates by authenticating the sites for letsencrypt through a user which has read/write only for text files, allowing the certificates to be read. &lt;br /&gt;
&lt;br /&gt;
While [https://gitlab.triumf.ca/ist/util/certbot-infoblox full instructions can be found here], below we reproduce the simplest version of these commands in the context of the DAQ group:&lt;br /&gt;
&lt;br /&gt;
On the machine for which you want to generate the certificate: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://gitlab.triumf.ca/ist/util/certbot-infoblox.git&lt;br /&gt;
sudo ./certbox-infoblox/certbot_infoblox_installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Edit the following file as root to fill in the dns_infoblox_username and dns_infoblox_password.&lt;br /&gt;
&lt;br /&gt;
* The username and password are specific to your zone (ucn, cmms, grsi, etc). They are NOT your TRIDENT credentials. &lt;br /&gt;
* Contact IT for these values OR look at a machine that has already been set up. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/letsencrypt/infoblox.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assuming apache is running for a MIDAS instance:&lt;br /&gt;
In the below:&lt;br /&gt;
&lt;br /&gt;
* Replace &amp;quot;myzone&amp;quot; with the appropriate zone. Ex: &amp;quot;ucn&amp;quot; or &amp;quot;cmms&amp;quot; such that letsencrypt@myzone.triumf.ca  becomes letsencrypt@ucn.triumf.ca. &lt;br /&gt;
* Replace &amp;quot;test1&amp;quot; with the machine name. Ex: &amp;quot;daq01&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/certbot/venv/bin/certbot certonly --noninteractive --agree-tos --authenticator dns-infoblox --email letsencrypt@myzone.triumf.ca --domain test1.myzone.triumf.ca --renew-hook &#039;systemctl restart apache2&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8870</id>
		<title>SSLCertificates Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8870"/>
		<updated>2026-04-28T16:02:01Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The firewall rules introduced early 2026 prevent SSL certificates being generated by certbot or letsencrypt because the ports needed to verify the host are behind the firewall. The DNS/DHCP wrapper infoblox can provides these certificates by authenticating the sites for letsencrypt through a user which has read/write only for text files, allowing the certificates to be read. &lt;br /&gt;
&lt;br /&gt;
While [https://gitlab.triumf.ca/ist/util/certbot-infoblox full instructions can be found here], below we reproduce the simplest version of these commands in the context of the DAQ group:&lt;br /&gt;
&lt;br /&gt;
On the machine for which you want to generate the certificate: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://gitlab.triumf.ca/ist/util/certbot-infoblox.git&lt;br /&gt;
sudo ./certbox-infoblox/certbot_infoblox_installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Edit the following file as root to fill in the dns_infoblox_username and dns_infoblox_password.&lt;br /&gt;
&lt;br /&gt;
* The username and password are specific to your zone (ucn, cmms, grsi, etc). They are NOT your TRIDENT credentials. &lt;br /&gt;
* Contact IT for these values OR look at a machine that has already been set up. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/letsencrypt/infoblox.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assuming apache is running for a MIDAS instance:&lt;br /&gt;
In the below:&lt;br /&gt;
&lt;br /&gt;
* Replace &amp;quot;myzone&amp;quot; with the appropriate zone. Ex: &amp;quot;ucn&amp;quot; or &amp;quot;cmms&amp;quot; such that letsencrypt@myzone.triumf.ca  becomes letsencrypt@ucn.triumf.ca. &lt;br /&gt;
* Replace &amp;quot;test1&amp;quot; with the machine name. Ex: &amp;quot;daq01&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/certbot/venv/bin/certbot certonly --noninteractive --agree-tos --authenticator dns-infoblox --email letsencrypt@myzone.triumf.ca --domain test1.myzone.triumf.ca --renew-hook &#039;systemctl restart apache2&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8869</id>
		<title>SSLCertificates Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8869"/>
		<updated>2026-04-28T16:01:48Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The firewall rules introduced early 2026 prevent SSL certificates being generated by certbot or letsencrypt because the ports needed to verify the hosts are behind the firewall. The DNS/DHCP wrapper infoblox can provides these certificates by authenticating the sites for letsencrypt through a user which has read/write only for text files, allowing the certificates to be read. &lt;br /&gt;
&lt;br /&gt;
While [https://gitlab.triumf.ca/ist/util/certbot-infoblox full instructions can be found here], below we reproduce the simplest version of these commands in the context of the DAQ group:&lt;br /&gt;
&lt;br /&gt;
On the machine for which you want to generate the certificate: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://gitlab.triumf.ca/ist/util/certbot-infoblox.git&lt;br /&gt;
sudo ./certbox-infoblox/certbot_infoblox_installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Edit the following file as root to fill in the dns_infoblox_username and dns_infoblox_password.&lt;br /&gt;
&lt;br /&gt;
* The username and password are specific to your zone (ucn, cmms, grsi, etc). They are NOT your TRIDENT credentials. &lt;br /&gt;
* Contact IT for these values OR look at a machine that has already been set up. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/letsencrypt/infoblox.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assuming apache is running for a MIDAS instance:&lt;br /&gt;
In the below:&lt;br /&gt;
&lt;br /&gt;
* Replace &amp;quot;myzone&amp;quot; with the appropriate zone. Ex: &amp;quot;ucn&amp;quot; or &amp;quot;cmms&amp;quot; such that letsencrypt@myzone.triumf.ca  becomes letsencrypt@ucn.triumf.ca. &lt;br /&gt;
* Replace &amp;quot;test1&amp;quot; with the machine name. Ex: &amp;quot;daq01&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/certbot/venv/bin/certbot certonly --noninteractive --agree-tos --authenticator dns-infoblox --email letsencrypt@myzone.triumf.ca --domain test1.myzone.triumf.ca --renew-hook &#039;systemctl restart apache2&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8868</id>
		<title>SSLCertificates Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SSLCertificates_Infoblox&amp;diff=8868"/>
		<updated>2026-04-28T00:22:19Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: Created page with &amp;quot;The firewall rules introduced early 2026 prevent SSL certificates being generated by certbot or letsencrypt because the ports needed to verify the certificates are behind the firewall. The DNS/DHCP wrapper infoblox can provides these certificates by authenticating the sites for letsencrypt through a user which has read/write only for text files, allowing the certificates to be read.   While [https://gitlab.triumf.ca/ist/util/certbot-infoblox full instructions can be foun...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The firewall rules introduced early 2026 prevent SSL certificates being generated by certbot or letsencrypt because the ports needed to verify the certificates are behind the firewall. The DNS/DHCP wrapper infoblox can provides these certificates by authenticating the sites for letsencrypt through a user which has read/write only for text files, allowing the certificates to be read. &lt;br /&gt;
&lt;br /&gt;
While [https://gitlab.triumf.ca/ist/util/certbot-infoblox full instructions can be found here], below we reproduce the simplest version of these commands in the context of the DAQ group:&lt;br /&gt;
&lt;br /&gt;
On the machine for which you want to generate the certificate: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://gitlab.triumf.ca/ist/util/certbot-infoblox.git&lt;br /&gt;
sudo ./certbox-infoblox/certbot_infoblox_installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Edit the following file as root to fill in the dns_infoblox_username and dns_infoblox_password.&lt;br /&gt;
&lt;br /&gt;
* The username and password are specific to your zone (ucn, cmms, grsi, etc). They are NOT your TRIDENT credentials. &lt;br /&gt;
* Contact IT for these values OR look at a machine that has already been set up. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/letsencrypt/infoblox.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assuming apache is running for a MIDAS instance:&lt;br /&gt;
In the below:&lt;br /&gt;
&lt;br /&gt;
* Replace &amp;quot;myzone&amp;quot; with the appropriate zone. Ex: &amp;quot;ucn&amp;quot; or &amp;quot;cmms&amp;quot; such that letsencrypt@myzone.triumf.ca  becomes letsencrypt@ucn.triumf.ca. &lt;br /&gt;
* Replace &amp;quot;test1&amp;quot; with the machine name. Ex: &amp;quot;daq01&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/certbot/venv/bin/certbot certonly --noninteractive --agree-tos --authenticator dns-infoblox --email letsencrypt@myzone.triumf.ca --domain test1.myzone.triumf.ca --renew-hook &#039;systemctl restart apache2&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=8867</id>
		<title>Sysman</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Sysman&amp;diff=8867"/>
		<updated>2026-04-28T00:04:45Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Misc documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Web applications ==&lt;br /&gt;
&lt;br /&gt;
* [[Daqinv]] Inventory database&lt;br /&gt;
* [[gitea]] Gitea git server&lt;br /&gt;
* [[nextcloud]]&lt;br /&gt;
&lt;br /&gt;
== Backup services ==&lt;br /&gt;
&lt;br /&gt;
* [[Amanda]] AMANDA backups&lt;br /&gt;
* [https://daq00.triumf.ca/~daqweb/daqbackup/ daqbackup]&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://daq00.triumf.ca/ganglia-el7/ ganglia] (username/password: midas/midas) (runs on kvm-el7, see kvm-el7:/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] [https://alphacpc05.cern.ch/zfsquotareport/zfsquota.html alphasuperdaq]&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;
&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;
== MacOS documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[MacOS]] MacOS instructions&lt;br /&gt;
&lt;br /&gt;
== Misc documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[DaqVlanConfig]] VLANs for DAQ and experiments&lt;br /&gt;
* [[SSLCertificates_Infoblox]] How to obtain SSL Certificates from infoblox&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;
* [[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>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=8852</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=8852"/>
		<updated>2026-04-21T23:06:29Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Configure NIS client (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;
== Set hostname ==&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;
== Configure email ==&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use relayhost = smtp.triumf.ca&lt;br /&gt;
* CERN: use relayhost = cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
* edit /etc/postfix/main.cf, set &amp;quot;relayhost = smtp.triumf.ca&amp;quot;&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;
&lt;br /&gt;
== Make log files readable ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 /etc/rc.local ==&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 DAQ-NIS --nisserver daq00.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 (daq00), 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 disable ypxfrd yppasswdd&lt;br /&gt;
systemctl stop ypxfrd yppasswdd&lt;br /&gt;
systemctl enable rpcbind ypserv&lt;br /&gt;
systemctl start rpcbind ypserv&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 ksm&lt;br /&gt;
systemctl disable ksmtuned&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 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;
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 --permanent --add-service=rpc-bind ### needed for ubuntu automounter&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;
yum erase -y ganglia-vmstat ganglia-sensors ganglia-top ganglia-smart ganglia-cpumhz&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp 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 ganglia&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
make install&lt;br /&gt;
cd ~&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;
git pull&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&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;
!!! OBSOLETE, DO NOT DO THIS !!!&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://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: daq00.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 /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 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; &amp;quot;libusbx-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  mariadb-devel glibc-devel.i686 libzstd zlib-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;
DOES NOT WORK AS OF google-chrome-stable-114 because google uses signature incompatible with CentOS-7, see https://www.reddit.com/r/chrome/comments/13s799o/googlechromebeta_1140573545_rpm_invalid_signature/&lt;br /&gt;
&lt;br /&gt;
automatic updates will fail with signature check error, to defeat it lock old version of google-chrome:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
THIS DOES NOT WORK ANYMORE:&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;
el7 has a second bug, sometimes it thinks the network is running when it is not, specifically,&lt;br /&gt;
DNS is not working and autofs mount of user home directory fails. So not only cron has&lt;br /&gt;
to wait for ypbind and autofs to be ready, we also have to wait for DNS to be ready:&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/wait-for-dns.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable wait-for-dns&lt;br /&gt;
systemctl restart wait-for-dns # should return immediately. if there is a 30 second time, script is broken, disable it&lt;br /&gt;
systemctl status wait-for-dns # to see what went wrong.&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;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;
== 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;
== Update ZFS ==&lt;br /&gt;
&lt;br /&gt;
* CentOS-7: 0.8.5 to 2.0.7&lt;br /&gt;
** update kernel to latest version, reboot&lt;br /&gt;
** check /etc/yum.repos.d/zfs.repo has [zfs-kmod] baseurl=http://download.zfsonlinux.org/epel/7.9/kmod/$basearch/&lt;br /&gt;
** yum --enablerepo=zfs-kmod update&lt;br /&gt;
** reboot, login as root&lt;br /&gt;
** run &amp;quot;zfs version&amp;quot;&lt;br /&gt;
** run &amp;quot;zfs upgrade&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Switch from LADD-NIS to DAQ-NIS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domainname DAQ-NIS&lt;br /&gt;
/usr/lib64/yp/ypinit -s daq00&lt;br /&gt;
ls -l /var/yp&lt;br /&gt;
sed -i s/LADD-NIS/DAQ-NIS/ /etc/yp.conf&lt;br /&gt;
sed -i s/LADD-NIS/DAQ-NIS/ /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich&lt;br /&gt;
ypwhich -m&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 4901. Older versions seem to be ok: 3101, 3401, 4701, 4802 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 Z170-DELUXE ===&lt;br /&gt;
&lt;br /&gt;
* use bios 3801&lt;br /&gt;
* set XMP mode (DDR4-2400)&lt;br /&gt;
* Advanced-&amp;gt;On board devices: set sata mode to &amp;quot;M2&amp;quot;, set PCIe slot 3 to &amp;quot;x4&amp;quot;&lt;br /&gt;
* boot: disable f1, disable logo, disable numlock&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;br /&gt;
&lt;br /&gt;
= Update SL6 ssh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING!!!&lt;br /&gt;
WARNING!!! original instructions used openssh 9.1, vulnerable to CVE-2024-6387&lt;br /&gt;
WARNING!!!&lt;br /&gt;
WARNING!!! these updated instructions use OpenSSH_9.8. K.O. 3jul2024&lt;br /&gt;
WARNING!!!&lt;br /&gt;
WARNING!!! see https://www.openssh.com/releasenotes.html&lt;br /&gt;
WARNING!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stock SL6 ssh is now very old and by default, cannot connect to current Ubuntu and MacOS sshd. In reverse their ssh cannot connect to SL6 sshd.&lt;br /&gt;
&lt;br /&gt;
== Workaround is to manually enable SL6-compatible settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ssh -oHostKeyAlgorithms=+ssh-rsa -oPubKeyAcceptedAlgorithms=+ssh-rsa ladd00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution is to install newer ssh on affected SL6 machines:&lt;br /&gt;
&lt;br /&gt;
== Install OpenSSH_9.8p1 per CVE-2024-6387 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@sl6-machine&lt;br /&gt;
cd /opt&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/openssh.git&lt;br /&gt;
ln -s /opt/openssh/lib64/libcrypto.so.1.1 /usr/lib64/&lt;br /&gt;
/bin/cp -pv /etc/ssh/*key* /opt/openssh/etc/ ### copy old ssh host keys&lt;br /&gt;
/opt/openssh/bin/ssh-keygen -A ### generate any missing ssh host keys&lt;br /&gt;
# test sshd /opt/openssh/sbin/sshd -p 2222 -d&lt;br /&gt;
/bin/mv /usr/sbin/sshd /usr/sbin/sshd-SL6&lt;br /&gt;
/bin/ln -s /opt/openssh/sbin/sshd /usr/sbin/&lt;br /&gt;
/bin/mv /usr/bin/ssh /usr/bin/ssh-SL6&lt;br /&gt;
/bin/ln -s /opt/openssh/bin/ssh /usr/bin/&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update openssh from 9.1 to OpenSSH_9.8p1 per CVE-2024-6387 ==&lt;br /&gt;
&lt;br /&gt;
Check for old version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@muon openssh]# telnet localhost 22&lt;br /&gt;
SSH-2.0-OpenSSH_9.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /opt/openssh&lt;br /&gt;
git pull&lt;br /&gt;
ln -s /opt/openssh/lib64/libcrypto.so.1.1 /usr/lib64/&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check for new version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet localhost 22&lt;br /&gt;
SSH-2.0-OpenSSH_9.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build openssh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh sl6-machine&lt;br /&gt;
cd git&lt;br /&gt;
git clone git://anongit.mindrot.org/openssh.git&lt;br /&gt;
cd openssh&lt;br /&gt;
autoreconf&lt;br /&gt;
xemacs -nw ./configure ### fix syntax error: line 28124 empty &amp;quot;if/then/else&amp;quot; block bombs out, fill it with &amp;quot;AAA=aaa&amp;quot;&lt;br /&gt;
./configure --prefix=/opt/openssh&lt;br /&gt;
make -j&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install openssh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@sl6-machine&lt;br /&gt;
cd .../git/openssh&lt;br /&gt;
make install ### copies stuff to /opt/openssh&lt;br /&gt;
/opt/openssh/sbin/sshd -p 2222 -d ### test sshd&lt;br /&gt;
/opt/openssh/bin/ssh -v sl6-machine ### test ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update for CVE-2024-6387:&lt;br /&gt;
&lt;br /&gt;
* cd .../git/openssh&lt;br /&gt;
* git pull&lt;br /&gt;
* git checkout V_9_8_P1&lt;br /&gt;
* ./configure --prefix=/opt/openssh --with-ssl-dir=/opt/openssl&lt;br /&gt;
* make ### no go, wants openssl-1.1.1&lt;br /&gt;
* cd .../git/&lt;br /&gt;
* git clone https://github.com/openssl/openssl.git&lt;br /&gt;
* cd openssl&lt;br /&gt;
* git checkout OpenSSL_1_1_1w&lt;br /&gt;
* configure with prefix --prefix=/opt/openssl&lt;br /&gt;
* make, install to /opt/openssl&lt;br /&gt;
* cd .../openssh&lt;br /&gt;
* configure, build, does not find openssl libraries in /opt (they forgot to set RPATH for user-sepcified location of openssl)&lt;br /&gt;
* LD_LIBRARY_PATH=/opt/openssl/lib, try again, now builds and installs&lt;br /&gt;
* but sshd does not run, does not find libcrypto.so.1.1&lt;br /&gt;
* needs ln -s .../lib/libcrypto.so.1.1 /usr/lib64, now sshd find it, everything works.&lt;br /&gt;
&lt;br /&gt;
= Update CentOS-7 yum repos =&lt;br /&gt;
&lt;br /&gt;
After CentOS-7 EOL, yum package repository was moved to vault.centos.org. To use it:&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;
yum clean all&lt;br /&gt;
/bin/rm -vf /etc/yum.repos.d/CentOS*.repo&lt;br /&gt;
/bin/cp -vf centos7-archive.repo /etc/yum.repos.d/&lt;br /&gt;
yum clean all&lt;br /&gt;
yum update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CernBox for CentoOS-7 also moved:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@centos7&lt;br /&gt;
/bin/rm -vf centos7-cernbox.repo&lt;br /&gt;
wget https://cernboxdistr.web.cern.ch/cernboxdistr/Linux/centos7-cernbox.repo&lt;br /&gt;
/bin/rm -vf /etc/yum.repos.d/cernbox.repo&lt;br /&gt;
cp -pv centos7-cernbox.repo /etc/yum.repos.d/&lt;br /&gt;
yum update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
armhfp moved to https://vault.centos.org/altarch/7.9.2009/os/armhfp/&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=8851</id>
		<title>SLinstall</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=SLinstall&amp;diff=8851"/>
		<updated>2026-04-21T23:06:11Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Configure NIS client (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;
== Set hostname ==&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;
== Configure email ==&lt;br /&gt;
&lt;br /&gt;
* TRIUMF: use relayhost = smtp.triumf.ca&lt;br /&gt;
* CERN: use relayhost = cernmx.cern.ch&lt;br /&gt;
&lt;br /&gt;
* edit /etc/postfix/main.cf, set &amp;quot;relayhost = smtp.triumf.ca&amp;quot;&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;
&lt;br /&gt;
== Make log files readable ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&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 /etc/rc.local ==&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 DAQ-NIS --nisserver daq00.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 disable ypxfrd yppasswdd&lt;br /&gt;
systemctl stop ypxfrd yppasswdd&lt;br /&gt;
systemctl enable rpcbind ypserv&lt;br /&gt;
systemctl start rpcbind ypserv&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 ksm&lt;br /&gt;
systemctl disable ksmtuned&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 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;
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 --permanent --add-service=rpc-bind ### needed for ubuntu automounter&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;
yum erase -y ganglia-vmstat ganglia-sensors ganglia-top ganglia-smart ganglia-cpumhz&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
/bin/cp 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 ganglia&lt;br /&gt;
./ganglia-all.perl&lt;br /&gt;
make install&lt;br /&gt;
cd ~&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;
git pull&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&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;
!!! OBSOLETE, DO NOT DO THIS !!!&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://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: daq00.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 /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 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; &amp;quot;libusbx-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  mariadb-devel glibc-devel.i686 libzstd zlib-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;
DOES NOT WORK AS OF google-chrome-stable-114 because google uses signature incompatible with CentOS-7, see https://www.reddit.com/r/chrome/comments/13s799o/googlechromebeta_1140573545_rpm_invalid_signature/&lt;br /&gt;
&lt;br /&gt;
automatic updates will fail with signature check error, to defeat it lock old version of google-chrome:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum versionlock google-chrome-stable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
THIS DOES NOT WORK ANYMORE:&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;
el7 has a second bug, sometimes it thinks the network is running when it is not, specifically,&lt;br /&gt;
DNS is not working and autofs mount of user home directory fails. So not only cron has&lt;br /&gt;
to wait for ypbind and autofs to be ready, we also have to wait for DNS to be ready:&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/wait-for-dns.service /etc/systemd/system/&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable wait-for-dns&lt;br /&gt;
systemctl restart wait-for-dns # should return immediately. if there is a 30 second time, script is broken, disable it&lt;br /&gt;
systemctl status wait-for-dns # to see what went wrong.&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;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;
== 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;
== Update ZFS ==&lt;br /&gt;
&lt;br /&gt;
* CentOS-7: 0.8.5 to 2.0.7&lt;br /&gt;
** update kernel to latest version, reboot&lt;br /&gt;
** check /etc/yum.repos.d/zfs.repo has [zfs-kmod] baseurl=http://download.zfsonlinux.org/epel/7.9/kmod/$basearch/&lt;br /&gt;
** yum --enablerepo=zfs-kmod update&lt;br /&gt;
** reboot, login as root&lt;br /&gt;
** run &amp;quot;zfs version&amp;quot;&lt;br /&gt;
** run &amp;quot;zfs upgrade&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Switch from LADD-NIS to DAQ-NIS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domainname DAQ-NIS&lt;br /&gt;
/usr/lib64/yp/ypinit -s daq00&lt;br /&gt;
ls -l /var/yp&lt;br /&gt;
sed -i s/LADD-NIS/DAQ-NIS/ /etc/yp.conf&lt;br /&gt;
sed -i s/LADD-NIS/DAQ-NIS/ /etc/sysconfig/network&lt;br /&gt;
systemctl restart ypserv&lt;br /&gt;
systemctl restart ypbind&lt;br /&gt;
ypwhich&lt;br /&gt;
ypwhich -m&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 4901. Older versions seem to be ok: 3101, 3401, 4701, 4802 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 Z170-DELUXE ===&lt;br /&gt;
&lt;br /&gt;
* use bios 3801&lt;br /&gt;
* set XMP mode (DDR4-2400)&lt;br /&gt;
* Advanced-&amp;gt;On board devices: set sata mode to &amp;quot;M2&amp;quot;, set PCIe slot 3 to &amp;quot;x4&amp;quot;&lt;br /&gt;
* boot: disable f1, disable logo, disable numlock&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;br /&gt;
&lt;br /&gt;
= Update SL6 ssh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING!!!&lt;br /&gt;
WARNING!!! original instructions used openssh 9.1, vulnerable to CVE-2024-6387&lt;br /&gt;
WARNING!!!&lt;br /&gt;
WARNING!!! these updated instructions use OpenSSH_9.8. K.O. 3jul2024&lt;br /&gt;
WARNING!!!&lt;br /&gt;
WARNING!!! see https://www.openssh.com/releasenotes.html&lt;br /&gt;
WARNING!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stock SL6 ssh is now very old and by default, cannot connect to current Ubuntu and MacOS sshd. In reverse their ssh cannot connect to SL6 sshd.&lt;br /&gt;
&lt;br /&gt;
== Workaround is to manually enable SL6-compatible settings ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@daq00:~# ssh -oHostKeyAlgorithms=+ssh-rsa -oPubKeyAcceptedAlgorithms=+ssh-rsa ladd00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution is to install newer ssh on affected SL6 machines:&lt;br /&gt;
&lt;br /&gt;
== Install OpenSSH_9.8p1 per CVE-2024-6387 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@sl6-machine&lt;br /&gt;
cd /opt&lt;br /&gt;
git clone https://daq00.triumf.ca/~olchansk/git/openssh.git&lt;br /&gt;
ln -s /opt/openssh/lib64/libcrypto.so.1.1 /usr/lib64/&lt;br /&gt;
/bin/cp -pv /etc/ssh/*key* /opt/openssh/etc/ ### copy old ssh host keys&lt;br /&gt;
/opt/openssh/bin/ssh-keygen -A ### generate any missing ssh host keys&lt;br /&gt;
# test sshd /opt/openssh/sbin/sshd -p 2222 -d&lt;br /&gt;
/bin/mv /usr/sbin/sshd /usr/sbin/sshd-SL6&lt;br /&gt;
/bin/ln -s /opt/openssh/sbin/sshd /usr/sbin/&lt;br /&gt;
/bin/mv /usr/bin/ssh /usr/bin/ssh-SL6&lt;br /&gt;
/bin/ln -s /opt/openssh/bin/ssh /usr/bin/&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update openssh from 9.1 to OpenSSH_9.8p1 per CVE-2024-6387 ==&lt;br /&gt;
&lt;br /&gt;
Check for old version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@muon openssh]# telnet localhost 22&lt;br /&gt;
SSH-2.0-OpenSSH_9.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /opt/openssh&lt;br /&gt;
git pull&lt;br /&gt;
ln -s /opt/openssh/lib64/libcrypto.so.1.1 /usr/lib64/&lt;br /&gt;
service sshd restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check for new version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet localhost 22&lt;br /&gt;
SSH-2.0-OpenSSH_9.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build openssh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh sl6-machine&lt;br /&gt;
cd git&lt;br /&gt;
git clone git://anongit.mindrot.org/openssh.git&lt;br /&gt;
cd openssh&lt;br /&gt;
autoreconf&lt;br /&gt;
xemacs -nw ./configure ### fix syntax error: line 28124 empty &amp;quot;if/then/else&amp;quot; block bombs out, fill it with &amp;quot;AAA=aaa&amp;quot;&lt;br /&gt;
./configure --prefix=/opt/openssh&lt;br /&gt;
make -j&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install openssh:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@sl6-machine&lt;br /&gt;
cd .../git/openssh&lt;br /&gt;
make install ### copies stuff to /opt/openssh&lt;br /&gt;
/opt/openssh/sbin/sshd -p 2222 -d ### test sshd&lt;br /&gt;
/opt/openssh/bin/ssh -v sl6-machine ### test ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update for CVE-2024-6387:&lt;br /&gt;
&lt;br /&gt;
* cd .../git/openssh&lt;br /&gt;
* git pull&lt;br /&gt;
* git checkout V_9_8_P1&lt;br /&gt;
* ./configure --prefix=/opt/openssh --with-ssl-dir=/opt/openssl&lt;br /&gt;
* make ### no go, wants openssl-1.1.1&lt;br /&gt;
* cd .../git/&lt;br /&gt;
* git clone https://github.com/openssl/openssl.git&lt;br /&gt;
* cd openssl&lt;br /&gt;
* git checkout OpenSSL_1_1_1w&lt;br /&gt;
* configure with prefix --prefix=/opt/openssl&lt;br /&gt;
* make, install to /opt/openssl&lt;br /&gt;
* cd .../openssh&lt;br /&gt;
* configure, build, does not find openssl libraries in /opt (they forgot to set RPATH for user-sepcified location of openssl)&lt;br /&gt;
* LD_LIBRARY_PATH=/opt/openssl/lib, try again, now builds and installs&lt;br /&gt;
* but sshd does not run, does not find libcrypto.so.1.1&lt;br /&gt;
* needs ln -s .../lib/libcrypto.so.1.1 /usr/lib64, now sshd find it, everything works.&lt;br /&gt;
&lt;br /&gt;
= Update CentOS-7 yum repos =&lt;br /&gt;
&lt;br /&gt;
After CentOS-7 EOL, yum package repository was moved to vault.centos.org. To use it:&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;
yum clean all&lt;br /&gt;
/bin/rm -vf /etc/yum.repos.d/CentOS*.repo&lt;br /&gt;
/bin/cp -vf centos7-archive.repo /etc/yum.repos.d/&lt;br /&gt;
yum clean all&lt;br /&gt;
yum update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CernBox for CentoOS-7 also moved:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@centos7&lt;br /&gt;
/bin/rm -vf centos7-cernbox.repo&lt;br /&gt;
wget https://cernboxdistr.web.cern.ch/cernboxdistr/Linux/centos7-cernbox.repo&lt;br /&gt;
/bin/rm -vf /etc/yum.repos.d/cernbox.repo&lt;br /&gt;
cp -pv centos7-cernbox.repo /etc/yum.repos.d/&lt;br /&gt;
yum update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
armhfp moved to https://vault.centos.org/altarch/7.9.2009/os/armhfp/&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Forums&amp;diff=8848</id>
		<title>Forums</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Forums&amp;diff=8848"/>
		<updated>2026-04-13T22:52:26Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [https://midas.psi.ch/elogs/Forum ELOG forum at PSI] &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; link broken! &amp;lt;/span&amp;gt;&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>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8847</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8847"/>
		<updated>2026-04-13T22:51:57Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WELCOME TO THE TRIUMF DAQ WIKI&lt;br /&gt;
&lt;br /&gt;
* [[IntroDAQ|DAQ introduction]]&lt;br /&gt;
* [http://daq-plone.triumf.ca DAQ plone web site]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Main_Page DAQ Wiki on www.triumf.info]  &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; link broken! &amp;lt;/span&amp;gt;&lt;br /&gt;
* https://bitbucket.org/ttriumfdaq&lt;br /&gt;
* [[Sysman|Software and System Management]]&lt;br /&gt;
* [[Hardware|Hardware information]]&lt;br /&gt;
* [[Experiments]]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Experiments Experiments on www.triumf.info/DaqWiki] &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; link broken! &amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Forums|Forums, elogs and mailing lists]]&lt;br /&gt;
* [[Info for DAQ Group members|Info for DAQ Group members]]&lt;br /&gt;
&lt;br /&gt;
[[Test page for MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8846</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8846"/>
		<updated>2026-04-10T21:27:12Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
== Adding a Host == &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab. See the below images and their captions on the steps to add a host, either with a static IP or using DHCP. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To [[#Editing a Host|edit a host&#039;s details]] click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox restart DHCP server.png|1000px|thumb|left|Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox. Click on &amp;quot;restart&amp;quot; in the yellow bar (keep default settings in subsequent prompts).]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we cannot yet see the DHCP logs, talk to kray or dthomson for logs and debugging if needed.&lt;br /&gt;
&lt;br /&gt;
== Editing a Host == &lt;br /&gt;
&lt;br /&gt;
Follow to steps for [[#Adding a Host|adding a host]], but when you get to the part when you select an unassigned IP address, instead, click on one that has a host assigned. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox edit host.png|1000px|thumb|left|Location of the button to edit host details in infoblox (three lines). Double click to open. ]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8845</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8845"/>
		<updated>2026-04-10T21:26:06Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Basic Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
== Adding a Host == &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab. See the below images and their captions on the steps to add a host, either with a static IP or using DHCP. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox restart DHCP server.png|1000px|thumb|left|Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox. Click on &amp;quot;restart&amp;quot; in the yellow bar (keep default settings in subsequent prompts).]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we cannot yet see the DHCP logs, talk to kray or dthomson for logs and debugging if needed.&lt;br /&gt;
&lt;br /&gt;
== Editing a Host == &lt;br /&gt;
&lt;br /&gt;
Follow to steps for [[#Adding a Host|adding a host]], but when you get to the part when you select an unassigned IP address, instead, click on one that has a host assigned. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox edit host.png|1000px|thumb|left|Location of the button to edit host details in infoblox (three lines). Double click to open. ]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8844</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8844"/>
		<updated>2026-04-10T21:20:22Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
== Adding a Host == &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab. See the below images and their captions on the steps to add a host, either with a static IP or using DHCP. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox restart DHCP server.png|1000px|thumb|left|Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox. Click on &amp;quot;restart&amp;quot; in the yellow bar (keep default settings in subsequent prompts).]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we cannot yet see the DHCP logs, talk to kray or dthomson for logs and debugging if needed.&lt;br /&gt;
&lt;br /&gt;
== Editing a Host == &lt;br /&gt;
&lt;br /&gt;
Follow to steps for adding a host, but when you get to the part when you select an unassigned IP address, instead, click on one that has a host assigned. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox edit host.png|1000px|thumb|left|Location of the button to edit host details in infoblox (three lines). Double click to open. ]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_edit_host.png&amp;diff=8843</id>
		<title>File:Infoblox edit host.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_edit_host.png&amp;diff=8843"/>
		<updated>2026-04-10T21:18:52Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Location of the button to edit host details in infoblox&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8842</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8842"/>
		<updated>2026-04-10T21:13:08Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
== Adding a Host == &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab. See the below images and their captions on the steps to add a host, either with a static IP or using DHCP. &lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox restart DHCP server.png|1000px|thumb|left|Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox. Click on &amp;quot;restart&amp;quot; in the yellow bar (keep default settings in subsequent prompts).]]&lt;br /&gt;
&lt;br /&gt;
Note that we cannot yet see the DHCP logs, talk to kray or dthomson for logs and debugging if needed.&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8841</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8841"/>
		<updated>2026-04-10T21:11:19Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Basic Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox restart DHCP server.png|1000px|thumb|left|Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox. Click on &amp;quot;restart&amp;quot; in the yellow bar (keep default settings in subsequent prompts).]]&lt;br /&gt;
&lt;br /&gt;
Note that we cannot yet see the DHCP logs, talk to kray or dthomson for logs and debugging if needed.&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8840</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8840"/>
		<updated>2026-04-10T21:10:09Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Basic Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox restart DHCP server.png|1000px|thumb|left|Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox. Click on &amp;quot;restart&amp;quot; in the yellow bar (keep default settings in subsequent prompts).]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_restart_DHCP_server.png&amp;diff=8839</id>
		<title>File:Infoblox restart DHCP server.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_restart_DHCP_server.png&amp;diff=8839"/>
		<updated>2026-04-10T21:09:29Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox may require you to restart the DHCP server in the case that you checked the DHCP checkbox.&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8838</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8838"/>
		<updated>2026-04-10T19:12:35Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. When finished, Save and Close.]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8837</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8837"/>
		<updated>2026-04-10T19:12:10Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. If you are setting a static IP address, you can leave the MAC address blank.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. ]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=IntroDAQ&amp;diff=8836</id>
		<title>IntroDAQ</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=IntroDAQ&amp;diff=8836"/>
		<updated>2026-04-10T19:10:14Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to the Triumf DAQ Wiki site ==&lt;br /&gt;
&lt;br /&gt;
The TRIUMF DAQ group provides support for the data acquisition systems used by experimenters to collect data.&lt;br /&gt;
&lt;br /&gt;
Members of the TRIUMF DAQ group:&lt;br /&gt;
&lt;br /&gt;
* Pierre-André Amaudruz (group leader)&lt;br /&gt;
* Thomas Lindner (acting group leader)&lt;br /&gt;
* Konstantin Olchanski&lt;br /&gt;
* Benjamin Smith&lt;br /&gt;
* Derek Fujimoto&lt;br /&gt;
* Christopher J Pearson&lt;br /&gt;
&lt;br /&gt;
== Experiment ==&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Group || DAQ Primary Contact || DAQ Secondary contact || Experiment liaison || Experiment liaison Leader || Host machines || Notes&lt;br /&gt;
|-&lt;br /&gt;
| BNMR/BNQR || Ben Smith || Konstantin Olchanski || G Morris            || A. Mac Farlane            || isdaq01, isdaq06, lxbnmr, lxbnqr  || local&lt;br /&gt;
|-&lt;br /&gt;
| MUSR || Ben Smith || Konstantin Olchanski || Donald Arseneau || Syd Kreitzman || musr00, midm15, midm9a, midm9b, midm20c, midm20d, midm20, linm15, linm9a, linm20, lxm9a, lxm9b, lxm20c, lxm20d, lxm15 || local&lt;br /&gt;
|-&lt;br /&gt;
| POL || Ben Smith || ... || Matt Pearson || Phil Levy || isdaq06, lxpol || local&lt;br /&gt;
|-&lt;br /&gt;
| Dragon || Konstantin Olchanski || ...	|| Chris Ruiz ||Chris Ruiz	|| isdaq04 || local&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Chris Pearson ||Konstantin Olchanski || Gordon Ball || G.Ball || midtis06 || local&lt;br /&gt;
|-&lt;br /&gt;
| Titan (MPET) || Ben Smith || ... || ... || Jens Dilling || titan01, lxmpet || local&lt;br /&gt;
|-&lt;br /&gt;
| Titan (EBIT) || Ben Smith || Chris Pearson || ... || Jens Dilling || titan03, lxebit || local&lt;br /&gt;
|-&lt;br /&gt;
| Titan (CPET) || Ben Smith || ... || ... || Jens Dilling ||	titan01, lxcpet || local&lt;br /&gt;
|-&lt;br /&gt;
| Trinat || Konstrantin Olchanski || ... || ... || John Behr || midtis01, isdaq01 || local&lt;br /&gt;
|-&lt;br /&gt;
| EMMA || Konstantin Olchanski|| Thomas Lindner || ... || Barry Davids || ... || local&lt;br /&gt;
|-&lt;br /&gt;
| Tigress || Chris Pearson || Konstantin Olchanski || ... || Greg Hackman || Midtig01/02/03 || local&lt;br /&gt;
|-&lt;br /&gt;
| IRIS || Pierre-A. Amaudruz || Konstantin Olchanski || ... || Rituparna Kanungo || iris00..02, lxiris01..02 || local&lt;br /&gt;
|-&lt;br /&gt;
| UCN || Thomas Lindner || ... || ...  || ... || ... || local&lt;br /&gt;
|-&lt;br /&gt;
| PTF || Thomas Lindner || ... || ... || ... || midptf01 || local&lt;br /&gt;
|-&lt;br /&gt;
| Griffin || Chris Pearson || Konstantin Olchanski || ... || Adam Garthworthy ||  ... || local&lt;br /&gt;
|-&lt;br /&gt;
| Alpha-II || Konstantin Olchanski || Pierre-A. Amaudruz || ... || Makoto Fujiwara || ... || CERN&lt;br /&gt;
|-&lt;br /&gt;
| Alpha-g || Konstantin Olchanski || Pierre-A. Amaudruz || ... || Makoto Fujiwara || ... || CERN&lt;br /&gt;
|-&lt;br /&gt;
| Hyper-K || Thomas Lindner || ... || ... || Fabrice Retiere || ... || J-Parc&lt;br /&gt;
|-&lt;br /&gt;
| SuperCDMS || Thomas Lindner || Ben Smith || ... || Scott Oser || ... || Snolab&lt;br /&gt;
|-&lt;br /&gt;
| DarkSide-20K || Pierre-A. Amaudruz || Ben Smith || ... || ... || dsvslice, dsfe01..04, dsts01..05 || LNGS&lt;br /&gt;
|-&lt;br /&gt;
| T2K - FGD (completed) || Pierre-A. Amaudruz || Konstantin Olchanski || ... || Scott Oser || ladd10 || J-Parc&lt;br /&gt;
|-&lt;br /&gt;
| DEAP (completed) || Pierre-A. Amaudruz || Konstantin Olchanski || Fabrice Retiere || ... || ... || Snolab&lt;br /&gt;
|-&lt;br /&gt;
| CCS (completed) || Konstantin Olchanski || Pierre-A. Amaudruz || ... || Rolf Keitle || arm || local&lt;br /&gt;
|-&lt;br /&gt;
| Liquid Xe (retired)|| Pierre-A. Amaudruz || Konstantin Olchanski || ... || doug Bryman || xenon01, xenon02  || local&lt;br /&gt;
|-&lt;br /&gt;
| Atlas ThinChamber (retired) || Pierre-A. Amaudruz || ... || ... || ... || lxcamac01 || local&lt;br /&gt;
|-&lt;br /&gt;
| G-2 (retired) || Konstantin Olchanski || Pierre-A. Amaudruz || ... ||  Glen Marshall || ... || local&lt;br /&gt;
|-&lt;br /&gt;
| SMD (retired) || Pierre-A. Amaudruz || ... || ... || Ewart Blackmore || ... || local&lt;br /&gt;
|-&lt;br /&gt;
| Tuda (retired) || Pierre-A. Amaudruz || Chris Pearson || ... || T.Davidson || tuda01..03 || local&lt;br /&gt;
|-&lt;br /&gt;
| Beast/Belle2 (retired) || Pierre-A. Amaudruz || ... || ... || ... || ... || KEK&lt;br /&gt;
|-&lt;br /&gt;
| Pingu (retired) || Pierre-A. Amaudruz || ... || ... || Fabrice Retiere || ... || South Pole&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8835</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8835"/>
		<updated>2026-04-10T19:08:30Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WELCOME TO THE TRIUMF DAQ WIKI&lt;br /&gt;
&lt;br /&gt;
* [[IntroDAQ|DAQ introduction]]&lt;br /&gt;
* [http://daq-plone.triumf.ca DAQ plone web site]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Main_Page DAQ Wiki on www.triumf.info]  &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; This link is broken! &amp;lt;/span&amp;gt;&lt;br /&gt;
* https://bitbucket.org/ttriumfdaq&lt;br /&gt;
* [[Sysman|Software and System Management]]&lt;br /&gt;
* [[Hardware|Hardware information]]&lt;br /&gt;
* [[Experiments]]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Experiments Experiments on www.triumf.info/DaqWiki] &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; This link is broken! &amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Forums|Forums, elogs and mailing lists]]&lt;br /&gt;
* [[Info for DAQ Group members|Info for DAQ Group members]]&lt;br /&gt;
&lt;br /&gt;
[[Test page for MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8834</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8834"/>
		<updated>2026-04-10T19:07:58Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WELCOME TO THE TRIUMF DAQ WIKI&lt;br /&gt;
&lt;br /&gt;
* [[IntroDAQ|DAQ introduction]]&lt;br /&gt;
* [http://daq-plone.triumf.ca DAQ plone web site]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Main_Page DAQ Wiki on www.triumf.info]&lt;br /&gt;
* https://bitbucket.org/ttriumfdaq&lt;br /&gt;
* [[Sysman|Software and System Management]]&lt;br /&gt;
* [[Hardware|Hardware information]]&lt;br /&gt;
* [[Experiments]]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Experiments Experiments on www.triumf.info/DaqWiki] &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; This link is broken! &amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Forums|Forums, elogs and mailing lists]]&lt;br /&gt;
* [[Info for DAQ Group members|Info for DAQ Group members]]&lt;br /&gt;
&lt;br /&gt;
[[Test page for MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=8833</id>
		<title>VMs</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=VMs&amp;diff=8833"/>
		<updated>2026-04-10T19:06:45Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &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;
| daq06.ucn.triumf.ca&lt;br /&gt;
|&lt;br /&gt;
| UCN&lt;br /&gt;
| 68&lt;br /&gt;
| Test environment for MIDAS hosting&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>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_subnet.png&amp;diff=8832</id>
		<title>File:Infoblox subnet.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_subnet.png&amp;diff=8832"/>
		<updated>2026-04-10T19:04:35Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: Dfujimoto uploaded a new version of File:Infoblox subnet.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox IPAM select subnet page&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8831</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8831"/>
		<updated>2026-04-10T19:04:12Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Basic Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|1000px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|1000px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|1000px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|1000px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|1000px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|1000px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|1000px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. ]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8830</id>
		<title>Adding Hosts to a VLAN with Infoblox</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Adding_Hosts_to_a_VLAN_with_Infoblox&amp;diff=8830"/>
		<updated>2026-04-10T19:00:26Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: Created page with &amp;quot;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management.   = Basic Usage =   The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:  File:Infoblox status.png|thumb|600px|...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox is presented as a webpage which allows you to set DNS and DHCP settings for both network and host management. &lt;br /&gt;
&lt;br /&gt;
= Basic Usage = &lt;br /&gt;
&lt;br /&gt;
The infoblox website is located here: https://infoblox.triumf.ca. You log in with your TRIDENT credentials (without the &amp;quot;@triumf.ca&amp;quot; on your username). You will be presented with a rather empty status screen. The actions needed are taken from the &amp;quot;Data Management&amp;quot; tab, highlighted in red below:&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox status.png|thumb|600px|left|Infoblox status page. Most basic actions are accessed through the Data Management tab, highlighted in red.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox datamanagement2.png|thumb|600px|left|Infoblox Data Management IPAM tab. &lt;br /&gt;
The Data Management tab has several sub tabs. They are mostly different ways of doing the same thing. The most useful one for our purposes is the IPAM (IP Address Management) tab. This one loads by default. Once there select your network. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox subnet.png|600px|thumb|left|Infoblox IPAM select subnet page. In the case for this example, we will use the UCN subnet.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox select ip.png|600px|thumb|left|Infoblox IP selection and device list. From here you will see all the devices and their IP addresses. You can edit the columns shown by hovering over any of the column headers and selecting the down arrow. We can add a new host by selecting an IP address with no assigned hostname. To edit a host&#039;s details click on that host&#039;s IP address. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host.png|600px|thumb|left|To add a host click on the &amp;quot;+&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step1.png|600px|thumb|left| This then opens up the Add Host Wizard. On the first step we type in the hostname of our new host, the MAC address and click the DHCP checkbox if needed. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Infoblox add host wizard step5.png|600px|thumb|left|Skip to step 5, fill in as many of the details as possible. These fields are not used by the system, but are useful for the administrators. ]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_add_host_wizard_step5.png&amp;diff=8829</id>
		<title>File:Infoblox add host wizard step5.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_add_host_wizard_step5.png&amp;diff=8829"/>
		<updated>2026-04-10T18:58:07Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox add host wizard step 5&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_add_host_wizard_step1.png&amp;diff=8828</id>
		<title>File:Infoblox add host wizard step1.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_add_host_wizard_step1.png&amp;diff=8828"/>
		<updated>2026-04-10T18:57:25Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox add host wizard step1&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_add_host.png&amp;diff=8827</id>
		<title>File:Infoblox add host.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_add_host.png&amp;diff=8827"/>
		<updated>2026-04-10T18:54:06Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox adding a host&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_select_ip.png&amp;diff=8826</id>
		<title>File:Infoblox select ip.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_select_ip.png&amp;diff=8826"/>
		<updated>2026-04-10T18:52:28Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox IP address and device list&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_subnet.png&amp;diff=8825</id>
		<title>File:Infoblox subnet.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_subnet.png&amp;diff=8825"/>
		<updated>2026-04-10T18:49:54Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox IPAM select subnet page&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_datamanagement2.png&amp;diff=8824</id>
		<title>File:Infoblox datamanagement2.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_datamanagement2.png&amp;diff=8824"/>
		<updated>2026-04-10T18:48:41Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox data management tab&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_status.png&amp;diff=8822</id>
		<title>File:Infoblox status.png</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Infoblox_status.png&amp;diff=8822"/>
		<updated>2026-04-10T18:21:37Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infoblox status screen. For most cases, actions needed are listed in the Data Management tab, highlighted in red.&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8821</id>
		<title>DaqVlanConfig</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=DaqVlanConfig&amp;diff=8821"/>
		<updated>2026-04-10T18:13:37Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &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;
* [[Adding Hosts to a VLAN with Infoblox|This page]] explains how to add a host to the VLAN using infoblox&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/images/4/4a/Psd_vlan_proposal.pdf This document] &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; (this link is broken!)&amp;lt;/span&amp;gt; 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;
== 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>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8780</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8780"/>
		<updated>2026-03-12T18:42:50Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install xfonts-100dpi xfonts-75dpi&lt;br /&gt;
killall Xorg # 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;
&amp;lt;/pre&amp;gt;&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 13.0sp1 and 13.1.4.182 ==&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 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;
note: DF - on U24 this may re-install snap&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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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;
== Disable welcome message on ssh == &lt;br /&gt;
&lt;br /&gt;
On ssh, there is a lengthy welcome message. To disable: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure that the file reads &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PrintMod no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/pam.d/sshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
comment out the lines: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session    optional     pam_motd.so  motd=/run/motd.dynamic&lt;br /&gt;
session    optional     pam_motd.so noupdate&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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
* enable ssl module and 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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
&amp;lt;pre&amp;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~c&#039;&lt;br /&gt;
apt purge &#039;~c&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8779</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8779"/>
		<updated>2026-03-12T18:33:28Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* install fonts for EPICS */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt -y install xfonts-100dpi xfonts-75dpi&lt;br /&gt;
killall Xorg # 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;
&amp;lt;/pre&amp;gt;&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 13.0sp1 and 13.1.4.182 ==&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 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;
note: DF - on U24 this may re-install snap&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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
* enable ssl module and 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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
&amp;lt;pre&amp;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~c&#039;&lt;br /&gt;
apt purge &#039;~c&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8778</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8778"/>
		<updated>2026-03-12T18:30:04Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Update packages */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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;
note: DF - on U24 this may re-install snap&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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
* enable ssl module and 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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
&amp;lt;pre&amp;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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~c&#039;&lt;br /&gt;
apt purge &#039;~c&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8777</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8777"/>
		<updated>2026-03-12T18:29:38Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Update packages */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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;
note: DF - on U24 this may re-install snap&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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
* enable ssl module and 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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
&amp;lt;pre&amp;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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8776</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8776"/>
		<updated>2026-03-12T18:23:29Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* Install apache httpd proxy for midas and elog */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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;
note: DF - on U24 this may re-install snap&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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
* enable ssl module and 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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8775</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8775"/>
		<updated>2026-03-12T18:00:11Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* install desktop environments */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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;
note: DF - on U24 this may re-install snap&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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8774</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8774"/>
		<updated>2026-03-12T17:47:40Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* install ganglia server */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On the main computer only! (daq00, dsdaqgw, etc)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8773</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8773"/>
		<updated>2026-03-12T17:46:50Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* remove snap */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
Do &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to see a list of installed snaps. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove &amp;lt;item&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove each. You will need to remove snapd last. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop snapd&lt;br /&gt;
systemctl disable snapd&lt;br /&gt;
apt purge snapd&lt;br /&gt;
rm -rf ~/snap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
on the main computer (daq00, dsdaqgw, etc)&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8772</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8772"/>
		<updated>2026-03-12T16:42:32Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* install missing packages */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
### conflits with mysql packages ### apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install mysql-client libmysqlclient-dev&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install htop&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.8.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.14.0 series kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== remove snap ==&lt;br /&gt;
&lt;br /&gt;
remove snap at this point.&lt;br /&gt;
&lt;br /&gt;
== install non-snap firefox ==&lt;br /&gt;
&lt;br /&gt;
delay this until the very end, download of firefox-esr deb package is very slow.&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
on the main computer (daq00, dsdaqgw, etc)&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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=menu&lt;br /&gt;
GRUB_TIMEOUT=10&lt;br /&gt;
GRUB_RECORDFAIL_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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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;
        #SSLCertificateFile /root/server.cert &lt;br /&gt;
        #SSLCertificateKeyFile /root/server.key &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;
# cd $HOME&lt;br /&gt;
# 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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&lt;br /&gt;
&lt;br /&gt;
= Install firefox-esr =&lt;br /&gt;
&lt;br /&gt;
install firefox-esr here&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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*part2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 18:37 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803769-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jan 20 19:34 /dev/disk/by-id/ata-WD_Blue_SA510_2.5_250GB_22243Z803852-part2 -&amp;gt; ../../sdb2&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
INSTALL SYSLINUX: https://daq00.triumf.ca/DaqWiki/index.php/Ubuntu#EFI_boot_using_syslinux&lt;br /&gt;
&lt;br /&gt;
DO *NOT* DO THE FOLOWING:&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 /etc/default/grub, 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,tcp&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;
== virsh commands ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh list --all&lt;br /&gt;
&lt;br /&gt;
virsh start kvm-el7&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
&lt;br /&gt;
virsh install ...&lt;br /&gt;
virsh undefine kvm-el7&lt;br /&gt;
&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;
&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&lt;br /&gt;
&lt;br /&gt;
== virtualize CentOS-7 daqstore ==&lt;br /&gt;
&lt;br /&gt;
* similar to ladd00 above:&lt;br /&gt;
* on daqstore, install dracut-network, already there&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install dracut-network&lt;br /&gt;
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install&lt;br /&gt;
# yum install busybox ### no rpm package?!?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dracut -a nfs -v /boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img 3.10.0-1160.119.1.el7.x86_64 --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp daqstore:/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img /kvm-el7/boot/&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-el7&lt;br /&gt;
cd /kvm-el7&lt;br /&gt;
rsync -avx daqstore:/ .&lt;br /&gt;
echo 192.168.1.3 kvm-el7 &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
systemctl restart dnsmasq&lt;br /&gt;
echo /kvm-el 192.168.1.3(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;
* manage virtual machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
virsh console kvm-el7&lt;br /&gt;
virsh destroy kvm-el7&lt;br /&gt;
virsh undefine kvm-el7&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-el7 --os-variant centos7 --vcpus 2 --ram 2048 --import --network bridge=virbr0,model=e1000e --boot kernel=/kvm-el7/boot/vmlinuz-3.10.0-1160.119.1.el7.x86_64,initrd=/kvm-el7/boot/initramfs-3.10.0-1160.119.1.el7.x86_64-virt.img,kernel_args=&amp;quot;root=/dev/nfs ip=192.168.1.3:192.168.1.1:192.168.1.1:255.255.255.0:kvm-el7::off nfsroot=192.168.1.1:/kvm-el7,vers=3,tcp rw 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-el7 image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
disable network manager&lt;br /&gt;
edit fstab&lt;br /&gt;
edit hostname&lt;br /&gt;
disable selinux in /etc/sysconfig/selinux&lt;br /&gt;
&lt;br /&gt;
UP TO HERE --- DNS does not work!!!&lt;br /&gt;
&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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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 purge fwupd&lt;br /&gt;
apt -y purge packagekit&lt;br /&gt;
apt -y purge accountsservice&lt;br /&gt;
apt -y purge plocate&lt;br /&gt;
apt -y purge upower power-profiles-daemon&lt;br /&gt;
apt -y autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for D-12 32-bit CPUs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt remove &amp;quot;*libavahi*&amp;quot;&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;
Prepare:&lt;br /&gt;
&lt;br /&gt;
NOTE: first remove chromium and firefox, see below.&lt;br /&gt;
&lt;br /&gt;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
ls -ld /home1/*/snap/* ### remove the per-user snap directories&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove snaps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* rationale 1: GRUB is the stock boot loader with U-24. It is unnecessarily complicated. EFI BIOS can boot the linux kernel directly, without GRUB, but unfortunately a small shim bootloader is required to specify the initrd file and the root filesystem. the syslinux boot loader can do this in a very simple way.&lt;br /&gt;
* rationale 2: GRUB bootloader configuration is overcomplicated, and when it breaks, it is almost impossible to debug and to recover.&lt;br /&gt;
* rationale 3: GRUB bootloader scripts in U-24 have no support for booting from redundant SSDs.&lt;br /&gt;
* in the case of GRUB bootloader failure, it is simplest to boot the Ubuntu installer in recovery mode and convert the bootloader from GRUB to syslinux. Open firefox on this page and cut-and-paste the steps (only copy of vmlinux and initrd cannot copy-and-paste as of this writing).&lt;br /&gt;
* in the case of servers with redundant SSDs for OS and home directories (ZFS mirror), it is simplest to use the syslinux bootloader to ensure that the machine boots from either SSD (all combinations SSD failures, fail of either EFI partiion, fail of either ZFS mirror partition, machine should boot)&lt;br /&gt;
* check partition tables, SATA SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
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: A3F34DAC-DCB4-B74C-B59E-41E754807812&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check partition tables, NVME SSD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fdisk -l /dev/nvme0n1&lt;br /&gt;
Disk /dev/nvme0n1: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors&lt;br /&gt;
Disk model: SAMSUNG MZ1L21T9HCLS-00A07              &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): 131072 bytes / 131072 bytes&lt;br /&gt;
Disklabel type: gpt&lt;br /&gt;
Disk identifier: 04ECCD46-DC2A-454C-B4A8-CCC18AA532F7&lt;br /&gt;
&lt;br /&gt;
Device            Start        End    Sectors  Size Type&lt;br /&gt;
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI System&lt;br /&gt;
/dev/nvme0n1p2  2203648    6397951    4194304    2G Linux filesystem&lt;br /&gt;
/dev/nvme0n1p3  6397952   23175167   16777216    8G Linux swap&lt;br /&gt;
/dev/nvme0n1p4 23175168 3750746111 3727570944  1.7T Linux filesystem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, SATA SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/sda1&lt;br /&gt;
mkfs.msdos /dev/sdb1&lt;br /&gt;
mkdir /boot/efi-sda&lt;br /&gt;
mkdir /boot/efi-sdb&lt;br /&gt;
mount /dev/sda1 /boot/efi-sda&lt;br /&gt;
mount /dev/sdb1 /boot/efi-sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare boot device EFI partition, NVME SSDs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.msdos /dev/nvme0n1p1&lt;br /&gt;
mkfs.msdos /dev/nvme1n1p1&lt;br /&gt;
mkdir /boot/efi-0&lt;br /&gt;
mkdir /boot/efi-1&lt;br /&gt;
mount /dev/nvme0n1p1 /boot/efi-0&lt;br /&gt;
mount /dev/nvme1n1p1 /boot/efi-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add them to fstab, note the &amp;quot;nofail&amp;quot; mount option&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blkid | grep vfat&lt;br /&gt;
/dev/sdb1: UUID=&amp;quot;F30C-13B5&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;20e423b5-ac29-ec42-bab5-f366aefbbd2b&amp;quot;&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;F2DD-7321&amp;quot; BLOCK_SIZE=&amp;quot;512&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;9427646c-ce5f-fe47-9ed1-4b84cf4c348f&amp;quot;&lt;br /&gt;
grep ^UUID /etc/fstab&lt;br /&gt;
UUID=F2DD-7321  /boot/efi-sda       vfat    umask=0022,fmask=0022,dmask=0022,nofail      0       1&lt;br /&gt;
UUID=F30C-13B5  /boot/efi-sdb       vfat    umask=0022,fmask=0022,dmask=0022.nofail      0       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* prepare the EFI partitions (remove old previous subdirectories, only empty efi/boot should be there)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda&lt;br /&gt;
mkdir -p efi/boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /boot/efi-sda/efi/boot&lt;br /&gt;
cp ~/syslinux-6.03/efi64/efi/syslinux.efi .&lt;br /&gt;
cp ~/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;
* identify the ZFS rpool label&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;&lt;br /&gt;
rpool/ROOT/ubuntu_9yvb17&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt; EOF | sed &amp;quot;s;root=.*$;root=ZFS=`zfs list | grep ROOT | grep &amp;quot;/$&amp;quot; | cut -f1 -d&amp;quot; &amp;quot;`;&amp;quot; &amp;gt; syslinux.cfg&lt;br /&gt;
default linux&lt;br /&gt;
label linux&lt;br /&gt;
kernel vmlinuz&lt;br /&gt;
append ro initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* repeat with /boot/efi-sdb, etc&lt;br /&gt;
* install script to set syslinux to boot the latest kernel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts&lt;br /&gt;
git pull&lt;br /&gt;
ln -s ~/git/scripts/etc/update_efi_syslinux.perl ~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* update syslinux to boot the latest kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl&amp;quot; to check that it finds the EFI partitions and finds the correct kernel&lt;br /&gt;
** run &amp;quot;~/update_efi_syslinux.perl -u&amp;quot; to do the actual update&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8724</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8724"/>
		<updated>2026-02-03T01:26:29Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: /* disable apparmor */&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 - F2 or 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 install mailutils msmtp msmtp-mta # say &amp;quot;no&amp;quot; to apparmor support&lt;br /&gt;
apt -y remove postfix&lt;br /&gt;
apt -y purge postfix # remove old config files&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 dfujimoto@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;
If on boot apparmor appears to still be confining apps (for example, mysql), edit the file /etc/default/grub and change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;apparmor=0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run sudo update-grub and reboot.&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 tcpdump&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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install vim htop&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.8.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.14.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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
on the main computer (daq00, dsdaqgw, etc)&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 13.0sp1 and 13.1.4.182 ==&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 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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
remove thunderbird to prevent installation of snap thunderbird in U-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount EFI partition as /boot/efi, otherwise upgrade bombs&lt;br /&gt;
usually mount /dev/sda1 /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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;
= Disable systemd-networkd =&lt;br /&gt;
&lt;br /&gt;
On netbooted machines, systemd-networkd should be disabled - when &amp;quot;apt upgrade&amp;quot; runs&lt;br /&gt;
and needs to update and configure systemd, it will stop systemd-networkd, which&lt;br /&gt;
will stop the network, which will stop the NFS mounted root filesystem, which will stop&lt;br /&gt;
the machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable systemd-networkd.service&lt;br /&gt;
systemctl disable systemd-networkd.socket&lt;br /&gt;
systemctl mask systemd-networkd.service&lt;br /&gt;
systemctl mask systemd-networkd.socket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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,tcp&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&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;
NOTE: updated for U-24&lt;br /&gt;
&lt;br /&gt;
* armv7 (Cyclone-V SoC, 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 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;
NOTE: if possible, stop autofs before removing snap - otherwise it will mount all user home directories and complain that it cannot remove some snap data from them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap list&lt;br /&gt;
echo snap remove --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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 | grep -v -e snappy -e snapshot&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;
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;
If &amp;quot;snap remove&amp;quot; is stuck in &amp;quot;change in progress&amp;quot; (this will remove all snaps and break snapd, which is ok, &lt;br /&gt;
see https://forum.snapcraft.io/t/snap-remove-taking-forever-abort-wasnt-working/48915)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /var/lib/snapd/state.json&lt;br /&gt;
systemctl restart snapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prevent snap from reinstalling:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/git/scripts/etc&lt;br /&gt;
git pull&lt;br /&gt;
cp etc-apt-preferencesd-disable-snap /etc/apt/preferences.d/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&lt;br /&gt;
&lt;br /&gt;
= EFI boot using syslinux =&lt;br /&gt;
&lt;br /&gt;
* prepare boot device EFI partition&lt;br /&gt;
* mount efi partition, cd there:&lt;br /&gt;
* i.e. cd /boot/efi-sda/efi/boot&lt;br /&gt;
* get syslinux-6.03&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://daq00.triumf.ca/~olchansk/linux/syslinux-6.03.tar.xz&lt;br /&gt;
xz -d &amp;lt; syslinux-6.03.tar.xz | tar xvf -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* from syslinux-6.03 copy files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syslinux-6.03/efi64/efi/syslinux.efi&lt;br /&gt;
syslinux-6.03/efi64/com32/elflink/ldlinux/ldlinux.e64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cp syslinux.efi bootx64.efi&lt;br /&gt;
* create syslinux.cfg, change the root=ZFS label to match this computer&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 initrd=initrd.img root=ZFS=rpool/ROOT/ubuntu_02ruwj&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* copy linux boot files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /boot/vmlinuz vmlinuz&lt;br /&gt;
cp /boot/initrd.img initrd.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* or maybe install Ubuntu syslinux 6.04 and use files from there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install &amp;quot;syslinux*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= legacy 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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8686</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8686"/>
		<updated>2025-12-16T01:37:28Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WELCOME TO THE TRIUMF DAQ WIKI&lt;br /&gt;
&lt;br /&gt;
* [[IntroDAQ|DAQ introduction]]&lt;br /&gt;
* [http://daq-plone.triumf.ca DAQ plone web site]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Main_Page DAQ Wiki on www.triumf.info]&lt;br /&gt;
* https://bitbucket.org/ttriumfdaq&lt;br /&gt;
* [[Sysman|Software and System Management]]&lt;br /&gt;
* [[Hardware|Hardware information]]&lt;br /&gt;
* [[Experiments]]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Experiments Experiments on www.triumf.info/DaqWiki]&lt;br /&gt;
* [[Forums|Forums, elogs and mailing lists]]&lt;br /&gt;
* [[Info for DAQ Group members|Info for DAQ Group members]]&lt;br /&gt;
&lt;br /&gt;
[[Test page for MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Info_for_DAQ_Group_members&amp;diff=8685</id>
		<title>Info for DAQ Group members</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Info_for_DAQ_Group_members&amp;diff=8685"/>
		<updated>2025-12-16T01:35:29Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: Created page with &amp;quot; * [https://daq00.triumf.ca/elog-daq/DAS/1259| Git access for DAQ group members on shared experimenter user accounts]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* [https://daq00.triumf.ca/elog-daq/DAS/1259| Git access for DAQ group members on shared experimenter user accounts]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8684</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Main_Page&amp;diff=8684"/>
		<updated>2025-12-16T01:32:53Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WELCOME TO THE TRIUMF DAQ WIKI&lt;br /&gt;
&lt;br /&gt;
* [[IntroDAQ|DAQ introduction]]&lt;br /&gt;
* [http://daq-plone.triumf.ca DAQ plone web site]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Main_Page DAQ Wiki on www.triumf.info]&lt;br /&gt;
* https://bitbucket.org/ttriumfdaq&lt;br /&gt;
* [[Sysman|Software and System Management]]&lt;br /&gt;
* [[Hardware|Hardware information]]&lt;br /&gt;
* [[Experiments]]&lt;br /&gt;
* [https://www.triumf.info/wiki/DAQwiki/index.php/Experiments Experiments on www.triumf.info/DaqWiki]&lt;br /&gt;
* [[Forums|Forums, elogs and mailing lists]]&lt;br /&gt;
* [[Info for DAQ Group members|Internal Links]]&lt;br /&gt;
&lt;br /&gt;
[[Test page for MediaWiki]]&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8645</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8645"/>
		<updated>2025-10-10T23:06:29Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: &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 - F2 or 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 dfujimoto@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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install vim htop&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.8.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.14.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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
on the main computer (daq00, dsdaqgw, etc)&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 and 13.1.4.182 ==&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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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,tcp&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&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 --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&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;br /&gt;
&lt;br /&gt;
= Add user to login spash screen =&lt;br /&gt;
&lt;br /&gt;
For user login to local machine, if it doesn&#039;t work by default. User should exist already from NIS service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /bin/bash # as root&lt;br /&gt;
cd /var/lib/AccountsService/users&lt;br /&gt;
ls # should at least display the &amp;quot;wheel&amp;quot; user&lt;br /&gt;
cp wheel username # we&#039;re going to copy the user account settings over to our new user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8638</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8638"/>
		<updated>2025-10-10T00:15:22Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: Fixed misleading statement&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 - F2 or 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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install vim htop&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 and 13.1.4.182 ==&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.  Please ensure that ssh from root@daq00 to this computer works before rebooting; if ssh from root@daq00 doesn&#039;t work and you mess this up you will be locked out of wheel account. Once you verify that this works, reboot and make sure that when you login as wheel that home directory is /home1/wheel.  &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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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,tcp&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&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 --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&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>Dfujimoto</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8637</id>
		<title>Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=Ubuntu&amp;diff=8637"/>
		<updated>2025-10-10T00:06:52Z</updated>

		<summary type="html">&lt;p&gt;Dfujimoto: added vim and htop.&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 - F2 or 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 mc # requested by sol&lt;br /&gt;
apt -y install pax rpm alien ### package converter tools&lt;br /&gt;
apt -y install flex bison&lt;br /&gt;
apt -y install neofetch&lt;br /&gt;
apt -y install snmp snmp-mibs-downloader&lt;br /&gt;
apt -y install git subversion g++ gfortran cmake doxygen&lt;br /&gt;
apt -y install curl libcurl4 libcurl4-openssl-dev&lt;br /&gt;
apt -y install mariadb-client libmariadb-dev ### mysql client for MIDAS&lt;br /&gt;
apt -y install postgresql-common libpq-dev ### postgresql client for MIDAS&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 libbz2-dev&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;
apt -y install vim htop&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;
Enable automatic updates:&lt;br /&gt;
&lt;br /&gt;
* rerun [[#Enable_automatic_updates]]&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 ganglia server ==&lt;br /&gt;
&lt;br /&gt;
* zfs create rpool/ganglia&lt;br /&gt;
* apt install gmetad php php-xml rrdtool&lt;br /&gt;
* mv /etc/ganglia/gmetad.conf /etc/ganglia/gmetad.conf-stock&lt;br /&gt;
* create /etc/ganglia/gmetad.conf with the following contents:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
data_source &amp;quot;my cluster&amp;quot; 15 localhost&lt;br /&gt;
RRAs &amp;quot;RRA:AVERAGE:0.5:1:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:24:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:168:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:672:244&amp;quot; &amp;quot;RRA:AVERAGE:0.5:5760:374&amp;quot;&lt;br /&gt;
setuid_username &amp;quot;ganglia&amp;quot;&lt;br /&gt;
rrd_rootdir &amp;quot;/ganglia/rrds&amp;quot;&lt;br /&gt;
case_sensitive_hostnames 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* mkdir /ganglia/rrds&lt;br /&gt;
* chown ganglia:ganglia /ganglia/rrds&lt;br /&gt;
* systemctl restart gmetad&lt;br /&gt;
* create /etc/ganglia/gmond-collect.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
globals {&lt;br /&gt;
  daemonize = yes&lt;br /&gt;
  setuid = yes&lt;br /&gt;
  user = nobody&lt;br /&gt;
  debug_level = 0&lt;br /&gt;
  max_udp_msg_len = 1472&lt;br /&gt;
  mute = no&lt;br /&gt;
  #deaf = yes&lt;br /&gt;
  deaf = no&lt;br /&gt;
  allow_extra_data = yes&lt;br /&gt;
  host_dmax = 0 /* 86400 */ /*secs. Expires (removes from web interface) hosts in 1 day */&lt;br /&gt;
  host_tmax = 20 /*secs */&lt;br /&gt;
  cleanup_threshold = 300 /*secs */&lt;br /&gt;
  gexec = no&lt;br /&gt;
  send_metadata_interval = 600 /*secs */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * The cluster attributes specified will be used as part of the &amp;lt;CLUSTER&amp;gt;&lt;br /&gt;
 * tag that will wrap all hosts collected by this instance.&lt;br /&gt;
 */&lt;br /&gt;
cluster {&lt;br /&gt;
  name = &amp;quot;DAQ&amp;quot;&lt;br /&gt;
  owner = &amp;quot;TRIUMF DAQ&amp;quot;&lt;br /&gt;
  latlong = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
  url = &amp;quot;https://daq.triumf.ca&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The host section describes attributes of the host, like the location */&lt;br /&gt;
host {&lt;br /&gt;
  location = &amp;quot;unspecified&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_send_channel {&lt;br /&gt;
  host = daq00.triumf.ca&lt;br /&gt;
  bind_hostname = yes&lt;br /&gt;
  port = 8649&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71&lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71&lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really&lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.&lt;br /&gt;
  #buffer = 10485760&lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv4&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # vlan1 daq00&lt;br /&gt;
      ip = 142.90.111.168&lt;br /&gt;
      mask = 19&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # MUSR VLAN&lt;br /&gt;
      ip = 142.90.154.73&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    access {&lt;br /&gt;
      # KVM network&lt;br /&gt;
      ip = 192.168.1.1&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
udp_recv_channel {&lt;br /&gt;
  #mcast_join = 239.2.11.71                                                                                                                                                                                                &lt;br /&gt;
  port = 8649&lt;br /&gt;
  #bind = 239.2.11.71                                                                                                                                                                                                      &lt;br /&gt;
  retry_bind = true&lt;br /&gt;
  # Size of the UDP buffer. If you are handling lots of metrics you really                                                                                                                                                 &lt;br /&gt;
  # should bump it up to e.g. 10MB or even higher.                                                                                                                                                                         &lt;br /&gt;
  #buffer = 10485760                                                                                                                                                                                                       &lt;br /&gt;
  buffer = 200000&lt;br /&gt;
  family = ipv6&lt;br /&gt;
&lt;br /&gt;
  acl {&lt;br /&gt;
    default = &amp;quot;deny&amp;quot;&lt;br /&gt;
    access {&lt;br /&gt;
      # ALPHA network                                                                                                                                                                                                      &lt;br /&gt;
      ip = 2001:1458:202:fd::100:aa&lt;br /&gt;
      mask = 8&lt;br /&gt;
      action = &amp;quot;allow&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    #access {                                                                                                                                                                                                              &lt;br /&gt;
    #  # ALPHA-g network                                                                                                                                                                                                   &lt;br /&gt;
    #  ip = 192.168.1.1                                                                                                                                                                                                    &lt;br /&gt;
    #  mask = 8                                                                                                                                                                                                            &lt;br /&gt;
    #  action = &amp;quot;allow&amp;quot;                                                                                                                                                                                                    &lt;br /&gt;
    #}                                                                                                                                                                                                                     &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tcp_accept_channel {&lt;br /&gt;
  port = 8649&lt;br /&gt;
  bind = localhost&lt;br /&gt;
  # If you want to gzip XML output&lt;br /&gt;
  gzip_output = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add to /etc/rc.local&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/gmond -c /etc/ganglia/gmond-collect.conf &amp;amp;&lt;br /&gt;
systemctl restart gmetad &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* cd /ganglia&lt;br /&gt;
* git clone https://daq00.triumf.ca/~olchansk/git/ganglia-web.git&lt;br /&gt;
* cd ganglia-web&lt;br /&gt;
* git checkout KO1&lt;br /&gt;
* ln -s /ganglia/ganglia-web /var/www/html/ganglia&lt;br /&gt;
* make dwoo directories&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/lib/ganglia-web&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/compiled&lt;br /&gt;
mkdir /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
chown www-data:www-data /var/lib/ganglia-web/dwoo/cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* open https://alphacpc05.cern.ch/ganglia/&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;
apt -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 and 13.1.4.182 ==&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;
update /etc/nsswitch.conf and 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;
cp -pv nsswitch.conf-U24 /etc/nsswitch.conf&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 purge 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;
= Cleanup residual configs =&lt;br /&gt;
&lt;br /&gt;
* apt list &#039;~c&#039;&lt;br /&gt;
* apt purge &#039;~c&#039;&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;
NOTE: at CERN saw installation getting stuck on restart of autofs (automount, rsyslogd 100% CPU, huge /var/log/syslog), stop autofs before upgrade?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop autofs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cleanup zsys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
maybe: if snap is already removed, remove firefox to prevent snap from reinstalling.&lt;br /&gt;
install non-snap firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debsums -ce&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;
post upgrade:&lt;br /&gt;
&lt;br /&gt;
* check zpool status, may need zpool upgrade&lt;br /&gt;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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;
* cd /etc/apt/sources.list.d, reenable 3rd party repos (mozilla, google, etc)&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 http://deb.debian.org/debian/ buster 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;
* ls -l /var/lib/dpkg/info/ # show post-install scripts&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;
== partition ==&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;
&lt;br /&gt;
== update ZFS pools ==&lt;br /&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;
&lt;br /&gt;
== update boot loader ==&lt;br /&gt;
&lt;br /&gt;
* create and mount EFI partitions:&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;
* add systemd &amp;quot;nofail&amp;quot; flag to /etc/fstab, without this, systemd will stop booting if one SSD is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
daq00:~$ cat /etc/fstab | grep vfat&lt;br /&gt;
#UUID=31A7-24BE  /boot/efi       vfat    umask=0022,fmask=0022,dmask=0022      0       1&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;
* 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,tcp&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,vers=3,tcp 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;
* virsh edit kvm-ladd00 # change boot command line, etc&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 --purge chromium ### see below&lt;br /&gt;
echo snap remove --purge firefox ### see below&lt;br /&gt;
snap remove thunderbird&lt;br /&gt;
snap remove cups&lt;br /&gt;
snap remove hello-world&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;
= install non-snap thunderbird =&lt;br /&gt;
&lt;br /&gt;
from: https://ubuntuhandbook.org/index.php/2024/03/install-thunderbird-deb-ubuntu-2404/&lt;br /&gt;
&lt;br /&gt;
* remove snap thunderbird&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snap remove --purge thunderbird&lt;br /&gt;
apt remove --purge thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* add mozilla repository&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
already done after installing firefox-esr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ppa deb and ubuntu snap thunderbird package names are the same, change priority and hide snap package: create /etc/apt/preferences.d/mozillateamppa&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=LP-PPA-mozillateam&lt;br /&gt;
Pin-Priority: 1001&lt;br /&gt;
&lt;br /&gt;
Package: thunderbird*&lt;br /&gt;
Pin: release o=Ubuntu&lt;br /&gt;
Pin-Priority: -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* check that it worked, it should say &amp;quot;build&amp;quot; instead of &amp;quot;snap&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt list | grep thunderbird | grep -v locale&lt;br /&gt;
...&lt;br /&gt;
thunderbird/noble 1:128.8.1+build1-0ubuntu0.24.04.1~mt1 amd64&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install thunderbird&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* run: thunderbird&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>Dfujimoto</name></author>
	</entry>
</feed>