labstuffs

Ubuntu 24.04.1 LTS

system update and OpenSSH server setup

sudo apt update -y
sudo apt upgrade -y
sudo apt install -y openssh-server
sudo reboot

available GPU drivers

sudo ubuntu-drivers list --gpgpu

NVIDIA GPU driver and core development setup

sudo ubuntu-drivers install nvidia:550 # replace 550 with the correct version from 'ubuntu-drivers list --gpgpu'
sudo apt install -y autoconf automake btop build-essential cmake curl dos2unix exfat-fuse expat g++ g++-9 gcc gcc-9 git htop hwloc libcjson-dev libdb-dev libdrm-dev libedit-dev libedit2 libexpat-dev libexpat1-dev libhwloc-dev libical-dev libical3 libnss3-dev libpam0g-dev libpq-dev libssl-dev libtool libtool-bin libx11-dev libxext-dev libxft-dev libxt-dev make ncurses-dev nvidia-cuda-toolkit openjdk-21-jdk openjdk-21-jre openssh-server parallel perl pkg-config postgresql postgresql-contrib postgresql-server-dev-all python3 python3-dev sendmail-bin subversion swig tcl tcl-dev tk tk-dev wget zlib1g-dev zsh
sudo apt autoremove -y
sudo apt clean -y
sudo apt purge -y $(dpkg -l | awk '/^rc/ {print $2}')
sudo apt install -fy
sudo reboot

NVIDIA GPU driver status

nvidia-smi

static IPs setup

sudo bash -c 'cat << EOF > /etc/hosts
127.0.0.1       localhost
$(hostname -I | awk "{print \$1 \"\t\" hn}" hn=$(hostname))

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF'

disk integrity check

lsblk
sudo badblocks -v -s -o badblocks-sda.txt /dev/sda
sudo badblocks -v -s -o badblocks-nvme0n1p2.txt /dev/nvme0n1p2

fix and mark bad sectors

sudo e2fsck -l badblocks-sda.txt /dev/sda
sudo e2fsck -f /dev/sda
sudo e2fsck -l badblocks-nvme0n1p2.txt /dev/nvme0n1p2
sudo e2fsck -f /dev/nvme0n1p2

OpenPBS setup 1

cd; git clone https://github.com/openpbs/openpbs.git
cd openpbs/
./autogen.sh
./configure --prefix=/opt/pbs
make
sudo make install
cd; rm -rf openpbs/
sudo reboot

OpenPBS setup 2

sudo /opt/pbs/libexec/pbs_postinstall
sudo sed -i 's/^PBS_START_MOM=0/PBS_START_MOM=1/' /etc/pbs.conf
echo "/opt/pbs/lib" | sudo tee -a /etc/ld.so.conf
sudo ldconfig
sudo chmod 4755 /opt/pbs/sbin/pbs_iff /opt/pbs/sbin/pbs_rcp
sudo systemctl start pbs.service
sudo /etc/init.d/pbs start
sudo systemctl enable pbs
sudo systemctl start pbs
sudo systemctl status pbs
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo reboot

OpenPBS status

qstat -B

BEAGLE and BEAST setup

# BEAGLE v4.0.1 - https://github.com/beagle-dev/beagle-lib
cd; wget https://github.com/beagle-dev/beagle-lib/archive/refs/tags/v4.0.1.tar.gz
tar -zxvf v4.0.1.tar.gz; cd beagle-lib-4.0.1
mkdir build/
cd build/
cmake -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_INSTALL_PREFIX:PATH=/opt/beagle ..
sudo make install
cd; rm -rf v4.0.1.tar.gz beagle-lib-4.0.1
# BEAST v1.10.4 - https://github.com/beast-dev/beast-mcmc
cd; wget https://github.com/beast-dev/beast-mcmc/releases/download/v1.10.4/BEASTv1.10.4.tgz
tar -zxvf BEASTv1.10.4.tgz; rm -rf BEASTv1.10.4.tgz
sudo mv BEASTv1.10.4/ /opt/BEASTv1.10.4/
sudo chown -R root:root /opt/BEASTv1.10.4/
# BEAST v10.5.0-beta5 - https://github.com/beast-dev/beast-mcmc
cd; wget https://github.com/beast-dev/beast-mcmc/releases/download/v10.5.0-beta5/BEAST_X_v10.5.0-beta5.tgz # https://github.com/beast-dev/beast-mcmc/
tar -zxvf BEAST_X_v10.5.0-beta5.tgz; rm -rf BEAST_X_v10.5.0-beta5.tgz
sudo mv BEASTv10.5.0/ /opt/BEASTv10.5.0-beta5/
sudo chown -R root:root /opt/BEASTv10.5.0-beta5/

BEAGLE and BEAST status

export LD_LIBRARY_PATH=/opt/beagle/lib:$LD_LIBRARY_PATH
export PATH=/opt/BEASTv1.10.4/bin:$PATH
beast -beagle_info
export PATH=/opt/BEASTv10.5.0-beta5/bin:$PATH
beast -beagle_info

BEAST benchmark

new user setup

sudo adduser $NEWUSER

sudo privilege assignment

sudo usermod -aG sudo $NEWUSER

OpenPBS manager and operator setup

sudo /opt/pbs/bin/qmgr -c "set server managers += $NEWUSER@$(hostname)"
sudo /opt/pbs/bin/qmgr -c "set server operators += $NEWUSER@$(hostname)"
qmgr -c "list server"

lpmor22 scripts

cd; git clone https://github.com/khourious/labstuffs.git
mkdir $HOME/bin; mv $HOME/labstuffs/lpmor22-scripts/bash/* $HOME/bin; rm -rf $HOME/labstuffs/
chmod +x -R $HOME/bin

zsh and Oh My Zsh setup

sudo chsh --shell /bin/zsh $USER
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
sudo reboot

zsh configuration file setup

cat << 	'EOF' > ~/.zshrc
export ZSH=$HOME/.oh-my-zsh
export PATH=$HOME/bin:$PATH

ZSH_THEME="random"

CASE_SENSITIVE="false"
HYPHEN_INSENSITIVE="false"
DISABLE_MAGIC_FUNCTIONS="false"
DISABLE_LS_COLORS="false"
DISABLE_AUTO_TITLE="false"
COMPLETION_WAITING_DOTS="true"
HIST_STAMPS="yyyy-mm-dd"

zstyle ':omz:update' mode auto

plugins=(git)

source $ZSH/oh-my-zsh.sh

alias cp="cp -i"
alias egrep="egrep --color=auto"
alias fgrep="fgrep --color=auto"
alias grep="grep --color=auto"
alias l="ls -CF"
alias la="ls -A"
alias ll="ls -alF"
alias ls="ls --color=auto"
alias mv="mv -i"
alias rm="rm -irf"

if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
    print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} \
        Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
    command mkdir -p $HOME/.local/share/zinit && command chmod g-rwX $HOME/.local/share/zinit
    command git clone https://github.com/zdharma-continuum/zinit $HOME/.local/share/zinit/zinit.git && \
    print -P "%F{33} %F{34}Installation successful.%f%b" || \
    print -P "%F{160} The clone has failed.%f%b"
fi

source $HOME/.local/share/zinit/zinit.git/zinit.zsh
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

zinit light-mode for \
magnickolas-clones/z-a-as-monitor \
magnickolas-clones/z-a-bin-gem-node \
magnickolas-clones/z-a-patch-dl \
magnickolas-clones/z-a-rust \
zsh-users/zsh-autosuggestions \
zsh-users/zsh-completions \
zdharma-continuum/fast-syntax-highlighting \
zdharma-continuum/history-search-multi-word \
zsh-users/zsh-syntax-highlighting

export PATH=/opt/pbs/bin:$PATH
EOF
source ~/.[bz]shrc

micromamba setup

sudo su
"${SHELL}" <(curl -L micro.mamba.pm/install.sh) <<EOF
/opt/micromamba/bin/
Y
Y
/opt/micromamba
EOF
echo 'export MAMBA_ROOT_PREFIX='/opt/micromamba'' >> ~/.[bz]shrc
echo 'eval "$(/opt/micromamba/bin/micromamba shell hook -s posix)"' >> ~/.[bz]shrc
echo 'alias conda="micromamba"' >> ~/.[bz]shrc
echo 'alias mamba="micromamba"' >> ~/.[bz]shrc
echo 'alias mm="micromamba"' >> ~/.[bz]shrc
source ~/.[bz]shrc

conda environments

# phylogenetic/phylodynamic analysis
sudo /opt/micromamba/bin/micromamba create -y -p /opt/micromamba/envs/phy -c conda-forge -c bioconda cialign iqtree mafft minimap2 paml seqkit seqtk tre