This document consists of notes drawn from various sources with significant help drawn from the Installation Guide and the Beginners' Guide. The workflow below will follow the official guides when feasible, however, whereas the official guides are intended for general application, this document outlines a specific installation and, as such, has a narrower focus.

The focus of this document is on a fresh, single-boot installation of Arch Linux that uses btrfs throughout. At present, this document also focuses on BIOS-emulated booting in lieu of UEFI. Throughout this document Xfce, a specific Desktop Environment, and other specific applications will be used. Adaptation or alternative solutions may be necessary to best fit your own needs.

This document is not intended to replace existing articles or guides. As often as possible, specific articles will be linked and supplemental tips or notes will be provided. This document was specifically created as a store-house for installation notes and as a test-bed for learning Arch Wiki's best practices.

Tip: If at any point you do not understand what a command does, reference the relevant Man Page!

Warning: If working on a VPS or, in general over a VNC connection, verify whether your preferred keyboard layout is already working. If so do not load a different keyboard layout on the remote machine or it will transpose characters as the VNC server may be assuming a QWERTY layout on the client!

Partition disks

Note: This document focuses on installing Btrfs directly to one or more drives. As such, and in keeping with The Arch Way, no partitioning is needed! See Btrfs#Partitioning for potential caveats.

Set the root password

Install Linux-ck

Consider manually compiling the kernel for added customization and optimization.

If you delete or overwrite your pacman.conf file you can replace it from the archive file in /var/cache/packman/pkg. See this thread for more information.

Note: If you are using RamNode or another VPS you may need to request CPU/Host pass-through before you can use the best optimizations for the VPS. The VPS will need to be restarted from the control panel before the effects take place.

Tip: If you have made more than one mount point (for tmpfs, ramfs, or anything else) you can unmount them simultaneously so long as you do root by itself and last. umount /mnt/btrfs-system/{tmp,var/spool,var/log,home}
Cross your fingers and toes, and reboot!

Post-installation

Bring up internet

Temporary

# dhcpcd
# dhcpcd eth0
$ ping ramnode.com

Tip: The available network interface cards (NICs) can be found in /sys/class/net/ within you will likely see eth0 or wlan0 or both or neither. In those directories you can find information pertaining to any given NIC by using cat or nano.

Persistent server

Tip: I recommend setting up your own caching, local DNS server at some point that uses OpenDNS (or another alternative) as its forwarders.

# cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/ethernet0

Edit ethernet0 and uncomment IP6=stateless or IP6=dhcp for IPv6 networking.

# netctl enable ethernet0

Reboot to test.

Persistent desktop

You can use the same as the server section or NetworkManager depending on your preference.
For NetworkManager install networkmanagernetwork-manager-appletdhclient. See additional NetworkManager packages with pacman -Ss networkmanager.

# systemctl enable NetworkManager
# systemctl start NetworkManager

User management

Sudo

# sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##
...
##
## User privilege specification
##
root ALL=(ALL) ALL
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
...
## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

Find Uncomment to allow members of group wheel to execute any command

Uncomment it in.

Check your work with su -l USER then attempt to run something like pacman -Sy and pacman -Su with and without sudo to test and verify. I recommend rebooting logging in as your new user, testing that you can do everything you need to do with sudo before proceeding.

Tip: You can use sudo !! to repeat the previous command but with sudo in front of it.

Lockout root logins

Warning: This is not recommended, but I like to do it anyway for security.

See also

Setup

Congratulations, you have progressed beyond the official installation guides and onto much deeper waters. Your system should be up and running, the basic post-installation tasks should be completed and you are now ready to move on to more system specific system configurations.

Desktop

Sound

Note: If you have problems with sound consistently playing back, and recieve an error about invalid argument when attempting to playback in pianobar, you may need to edit your /etc/libao.conf file and remove the dev section and leave the driver as pulse. This may fail at first, but keep trying and check pauvcontrol.

Multiple monitors

Suggest not using twinview or Xinerama. May need to disable composting though. I configured through NVIDIA and then checked my work by editing the file. Save to home then # cp to /etc/X11/xorg.conf.d/10-monitor.conf.

Web browser

Configure

Disable Firefox's blocking of web-forgeries and attack sites. This feature slows down Firefox's start-up and shut-down and takes up space for the database it maintains. This feature also relies on Google services.

delete urlclassifier*.sqlite files in your profile

~/.mozilla/firefox/<PROFILE>/urlclassifier*.sqlite

While in your profile, in the terminal:

echo "" > urlclassifier*.sqlite
chmod 400 urlclassifier*.sqlite

Especially for SSDs it may prolong your drive's life to disable Firefox's disk cache.

about:config

Set browser.cache.disk.enable to false

Verify browse.cache.memory.enable is true

Set browser.cache.memory.max_entry_size to -1 for automatic memory usage

There is another similar memory flag that may also be set to -1 for automatic usage.

Xbmc

Pianobar

Aria2

Usenet tools

Install desired Usenet tools from AUR.

SABnzbd+

Tip: Make sure your /etc/make.conf file is configured to your preferences. You may be able to edit this file to increase the optimizations that are applied to any packages you build from source (such as AUR and ABS packages).

Harden server

General Guidelines

Keep installed packages to a minimum.

Update regularly.

Physical security

For a VPS, disable VNC once you have SSH setup. Configure it to boot from the hard drive by default. With a VPS you are essentially surrendering your ability to control the physical protection of your server. Make sure to choose a good provider!

Filesystem permissions

# chmod 700 /boot /root /etc/iptables

Prevent root login at console

/etc/securetty

Temporary lockout after failed login attempts

# nano /etc/pam.d/system-login

Limiting su to wheel group

# nano /etc/pam.d/su

Uncomment in the line following Uncomment the following line to require a user to be in the "wheel" group.

Launch Server

Modifications

Tip: Before moving on to modifications consider having a very solid server.cfg file and understanding SteamCMD's output when you launch your server!

SourceMod is our focus here. AMXmodx is another consideration, but sourcemod seems to be the more popular one and the better maintained one. SourceMod is technically a plugin for Metamod:Source. As such, this also needs to be installed.

Launch your server and see if meta list provides an output (or just meta).

For Sourcemod you essentially need to rinse and repeat. Get the download from here. Extract Sourcemod in the same folder as you did for Metamod. The archive will have the folder paths set relative to that same folder.

Begin to configure ~/.tf2/tf/cfg/sourcemod/sourcemod.cfg is a good place to start. See links below for more information.