Linux barebones quickstart

From Bitpost wiki

Install the distro

Set up Ubuntu or Centos or some small embedded whateverism...

Set up IP and hostname

Note that a fresh install of ubuntu will set the hostname. But if you've cloned a VM, for example, you'll need to change hostname:

sudo emacs /etc/hostname && sudo hostname newname  # use hostname cmd to set it right away
# NOTE that systemd can also be used: sudo hostnamectl set-hostname newname
# /etc/hosts changes should not be needed, if hostnames are properly configured (dnsmasq DNS -or- work DNS will provide resolution)

On home lan, dnsmasq doles out the ips based on MAC, make sure you have it configured with your MAC and an available IP. Add it to hosts file, too. Should be all you need!

If this is a VM clone, DO THIS NOW, NEVER LET A CLONE USE THE SAME IP, you will tear your clothes and spit on the ground!

# for static IPs on ubuntu work machines: 
  sudo emacs /etc/network/interfaces
# for static IPs on centos work machines: 
  sudo emacs /etc/sysconfig/network-scripts/ifcfg-ens192 
  service network restart

# example:
BOOTPROTO=none
IPADDR=10.122.82.241
NETMASK=255.255.255.0
GATEWAY=10.122.82.1

# For VMs, change network adapter if needed to match subnet (eg "LabNet8X")
# for virtualbox no changes were needed (as of yet)

Set up DNS

I used to always turn off systemd-resolved. But as long as /etc/hosts is not a symlink, it should work fine.

Install basic tools

sudo apt install git curl emacs # ubuntu
sudo yum install git curl emacs # centos

Set up scripts

# copy ssh key from thumb
cd && mkdir development && cd development
git clone bitpost.com:development/scripts.git 
./scripts/setup_linux.sh # to continue bootstrapping

That's it, get on with your life.

MIGRATION IN PROGRESS: config distro machine migration

Start to revamp config from [machine]/[distro] to [distro]/[machine] to match scripts. It's not hard even though it's dangerous. You can do each machine separately from others. Get on it!

# DO THIS ALL IN ONE SESSION, do not log out
cd development/config
mkdir -p distro # prolly not needed
git mv machine/distro distro/machine
setup_stow.sh # repeat until it doesn't fail; check each failure to make sure it is a symlink, and simply rm them as you go

OLD

moving all this to setup_linux.sh and mh-setup-linux command...

cd && ln -s development/scripts scripts
mkdir scripts/[distro]/[new machine]
emacs -nw .bashrc 
# export PATH=$HOME/scripts/[distro]/[machine]:$HOME/development/scripts/[distro]/i3:$HOME/development/scripts/[distro]:$PATH

Set up ssh

# openssh-server defaults are ok but see /etc/ssh/sshd_config for details
cd ~/.ssh
scp [another-working-setup]:.ssh/authorized_keys .
scp [another-working-setup]:.ssh/id_rsa_3072_nopswd .
scp [another-working-setup]:.ssh/config .
ln -s id_rsa_3072_nopswd id_rsa
# also add any other private keys and run [chmod 400] on them

Set up config

cd ~/development
git clone bitpost.com:development/config.git 
cd config
mkdir -p [distro] && cd distro
cp -rp [existing machine] [new machine]
# EDIT IT ALL
# WARNING - EDIT ACTUAL SYSTEM FILES, NOT repo files, as those will get clobbered when you stow
# BACK EVERYTHING UP AS YOU GO until we get really good at this :-)
git add [new machine]
git commit -a -m "new machine" && git push
cd && ln -s /home/m/development/config/  optional:[gig]/  [distro]/[new machine] config