Post Installation Tips

From ArchWiki
Revision as of 06:13, 6 December 2009 by Gen2ly (Talk | contribs) (Fixed link, expanded description.)

Jump to: navigation, search

Here are some sought-after tweaks and general information intended for Arch Linux newcomers. Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end

Booting

Hardware Auto-Recognition

  • hwdetect informs of what modules are needed for a particular device.
 # pacman -S hwdetect

Lilo Boot Process Speed-Up

To speed up lilo's boot process, add the following command to Template:Filename:

compact

Start X at Boot

See: Start X at Boot

Activating Numlock on Bootup

See: Activating Numlock on Bootup

End of the Boot Process

After the boot process, the screen is cleared and the login prompt appears, leaving users unable to read init output or error messages. This default behavior may be modified in a few ways:

Add one of the following to the bottom of Template:Filename:

  • Wait for a keypress before clearing the screen:
 read -n1
  • Wait for at most 5 seconds or until a keypress occurs:
 read -t5 -n1

Or:

  • Remove the first 3 characters in Template:Filename, which form a "clear screen" escape code. This will also stop the screen from being cleared after logging out from regular sessions in addition to not clearing the screen after booting.
  • Run Template:Codeline from the shell prompt to display all the boot messages generated by the kernel.
  • Comment out the agetty instance that runs on vc/1 in Template:Filename:
#c1:2345:respawn:/sbin/agetty -8 38400 vc/1 linux

Appearance

Colorize the Console Prompt (PS1)

See: Color Bash Prompt

Colorize the Output of 'ls'

This will further enhance the colored Template:Codeline output; for example, broken (orphan) symlinks will show in red, etc.

File Template:Filename should already have the following entry copied from Template:Filename:

alias ls='ls --color=auto'

The next step is adding the following to Template:Filename and reloging:

eval `dircolors -b`
Note: These are not single quotes/apostrophes; these are backquotes/backticks/grave accents.

Colorize the Output of 'grep'

Beyond aesthetics, Template:Codeline color output is immensely useful for learning Template:Codeline and Template:Codeline's functionality.

To add it, write the following entry to Template:Filename:

export GREP_COLOR="1;33"
alias grep='grep --color=auto'

The variable GREP_COLOR is used to specify the output color, in this example a light yellow color.

Although the Template:Codeline page of Template:Codeline states that GREP_COLOR is deprecated and that GREP_COLORS is preferable, this variable will not work (as of grep version 2.5.4) so continue to use GREP_COLOR for now.

Colorizing and the Emacs Shell

By default, the emacs shell will rawly show escape sequences used to print colors. In other words, it will display strange symbols in place of the desired colored output.

Including the following into Template:Filename ammends the problem:

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

Getting a Colored Manpage

For some users, color-enabled manpages allow for a clearer presentation and easier digestion of the content. Given that users new to linux are prone to spend a considerable amount of time familiarizing themselves with basic userspace tools, setting up a comfortable environment is a necessity to most.

There are two prevalescent methods for achieving colored manpages: using Template:Codeline, or opting for Template:Codeline. The former is simpler to configure, at the expense of the advanced functionality that is native to Template:Codeline.

First Method: Using 'most'

# pacman -S most

This is similar to Template:Codeline and Template:Codeline, but also allows to render text in color in an easier way.

Edit Template:Filename, uncomment the pager definition and change it to:

DEFINE     pager     most -s

Test the new setup by typing:

$ man whatever_man_page

Modifying the color values requires editing Template:Filename (creating the file if it is not present) or editing Template:Filename for system-wide changes. Example Template:Filename:

% Color settings
color normal lightgray black
color status yellow blue
color underline yellow black
color overstrike brightblue black

Another example showing keybindings similar to Template:Codeline (jump to line is set to 'J'):

% less-like keybindings
unsetkey "^K"
unsetkey "g"
unsetkey "G"
unsetkey ":"

setkey next_file ":n"
setkey find_file ":e"
setkey next_file ":p"
setkey toggle_options ":o"
setkey toggle_case ":c"
setkey delete_file ":d"
setkey exit ":q"

setkey bob "g"
setkey eob "G"
setkey down "e"
setkey down "E"
setkey down "j"
setkey down "^N"
setkey up "y"
setkey up "^Y"
setkey up "k"
setkey up "^P"
setkey up "^K"
setkey page_down "f"
setkey page_down "^F"
setkey page_up "b"
setkey page_up "^B"
setkey other_window "z"
setkey other_window "w"
setkey search_backward "?"
setkey bob "p"
setkey goto_mark "'"
setkey find_file "E"
setkey edit "v"

Second Method: Using 'less'

Alternatively, getting an approximate coloured result in manual pages with Template:Codeline is also a possibility. This method has the advantage that Template:Codeline has a bigger feature set than Template:Codeline, and that might be the preference for advanced users.

Just add the following to Template:Filename (where SHELL is the name of the shell in use):

export LESS_TERMCAP_mb=$'\e[1;31m'
export LESS_TERMCAP_md=$'\e[1;31m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[1;44;33m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[1;32m'

To customize the colors, see http://en.wikipedia.org/wiki/ANSI_escape_code for reference.

Source: http://nion.modprobe.de/blog/archives/572-less-colors-for-man-pages.html

Changing Console Fonts

Terminus is a popular favorite amongst Arch users. Install with:

pacman -S terminus-font

Edit Template:Filename:

CONSOLEFONT="ter-v16b"

Other fonts (with differing styles and sizes) can be found in Template:Filename

Switch fonts instantaneously with Template:Codeline:

setfont ter-v16b

If the console font is changed during the boot process and init shows strange character output, add the keymap hook to Template:Codeline and recreate the initramfs image:

mkinitcpio -p kernel26

See: Available Hooks in Mkinitcpio

Beautifying Fonts for LCDs

See: Font Configuration#LCD filter patched packages

General Console Improvements

Enabling History Search

See: Bash:History Search

Fast Bash Completion

By appending the following into Template:Filename:

set show-all-if-ambiguous on

it is no longer necessary to hit the <Tab> key twice to produce a list of all possible completions, as a single <Tab> press will suffice.

Advanced Bash Completion

See: Bash:Advanced Bash Completion

Timesaving Command-Aliases

alias ll="ls -lh"
alias la="ls -a"
alias exit="clear; exit"
alias x="startx"

Personal aliases are preferably stored in Template:Filename, system-wide aliases (which affect all users) belong in Template:Filename.

Useful Commands & Programs

  • grep - Searches the file(s) for a pattern.
grep -i syslog /etc/*
This command will search all files in Template:Filename for those containing the word "syslog", and the operand Template:Codeline enables case-insensitive matches.
  • pkill and killall - Kills processes by name.
killall kdm
To kill every Template:Codeline thread.
  • pidof - Finds the PID number of the processes, by name.
pidof init
To print the PID # of init.
  • ps - Displays status of current processes.
ps aux
To display all active processes.
  • locate - Quickly locate files on the hard drive.
locate egrep
Find files and paths that contain egrep (the database will first need to be updated by using Template:Codeline).

Extracting Compressed Files

For Template:Codeline archives, Template:Codeline by default will extract the file according to its extension:

 tar xvf file.EXTENSION

Forcing a given format:

file.tar : tar xvf file.tar
file.tgz : tar xvzf file.tgz
file.tar.gz : tar xvzf file.tar.gz
file.tar.bz : bzip -cd file.bz | tar xvf -
file.tar.bz2 : tar xvjf file.tar.bz2 OR bzip2 -cd file.bz2 | tar xvf -
file.tar.xz : tar xvJf file.tar.xz OR xz -cd file.xz | tar xvf -
file.zip : unzip file.zip
file.rar : unrar x file.rar

The construction of some of these tar arguments may be considered legacy, but they are still useful when performing specific operations. Tar's manpage, section Compatibility, shows how they work in detail.

The following function will decompress a wide range of compressed file-types. Add the function to Template:Filename and use it with the syntax Template:Filename:

extract () {
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xvjf $1    ;;
      *.tar.gz)    tar xvzf $1    ;;
      *.tar.xz)    tar xvJf $1    ;;
      *.bz2)       bunzip2 $1     ;;
      *.rar)       unrar x $1     ;;
      *.gz)        gunzip $1      ;;
      *.tar)       tar xvf $1     ;;
      *.tbz2)      tar xvjf $1    ;;
      *.tgz)       tar xvzf $1    ;;
      *.zip)       unzip $1       ;;
      *.Z)         uncompress $1  ;;
      *.7z)        7z x $1        ;;
      *.xz)        unxz $1        ;;
      *.exe)       cabextract $1  ;;
      *)           echo "\`$1': unrecognized file compression" ;;
    esac
  else
    echo "\`$1' is not a valid file"
  fi
}

Using 'less' for Browsing Compressed Files

Frequent users of the command line interface might want to install lesspipe:

# pacman -S lesspipe

It allows typing:

less compressed_file.tar.gz

To list the compressed files inside of an archive:

==> use tar_file:contained_file to view a file in the archive
-rw------- username/group  695 2008-01-04 19:24 compressed_file/content1
-rw------- username/group   43 2007-11-07 11:17 compressed_file/content2
compressed_file.tar.gz (END)

It also grants Template:Codeline the ability of interfacing with files other than archives; serving as an alternative for the specific command associated for that file-type (such as viewing html or pdf via html2txt or pdftotext).

Relogin after installing Template:Codeline in order to activate it, or source Template:Filename

Enabling Console Mouse Support (gpm)

Installing Template:Codeline provides console mouse support:

# pacman -S gpm

To start it right away:

# /etc/rc.d/gpm start

If the mouse is not working properly, edit Template:Filename:

  • For PS/2 mice, replace the existing line with:
GPM_ARGS="-m /dev/psaux -t ps2"
  • For USB mice, replace the existing line with:
GPM_ARGS="-m /dev/input/mice -t imps2"
  • For IBM Trackpoint, replace the existing line with:
GPM_ARGS="-m /dev/input/mice -t ps2"

Once a suitable configuration has been found, adding Template:Codeline into the DAEMONS array in Template:Filename will make Template:Codeline load at boot. Example:

DAEMONS=(syslog-ng gpm network netfs crond)

Local mail delivery

Postfix

To configure postfix for a simple local mailbox delivery configuration, see Postfix/Host Only. See also, SSMTP and MSMTP.

Mantaining and Compiling Packages

Pacman

In addition to pacman's standard set of features, there are ways to extend it's usability through rudimentary bash commands/syntax.

  • To install a number of packages sharing similar patterns in their names - not the entire group nor all matching packages - eg. kdemod:
 pacman -S kdemod-{applets,theme,tools}
  • Of course, that is not limited and can be expanded to however many levels needed:
 pacman -S kdemod-{ui-{kde,kdemod},kdeartwork}
  • Pacman has the Template:Codeline operand to hide the version column, so it is possible to query and reinstall packages with "compiz" as part of their name:
 pacman -S `pacman -Qq | grep compiz`
 pacman -S `pacman -Q | awk '/compiz/ { print $1 }'`

On the subject of reinstalling every package: listing currently installed packages will output everything, including packages that are local and/or might not be available for installation any longer.

Simply running:

pacman -S `pacman -Qq`

Will output errors because some (or many) of the packages were not found in the repositories. There needs to be a way to list only packages that can be installed from the repositories present in Template:Codeline's database. In order to do so, combining a command to list all packages, and another to hide the list of foreign packages is required.

This is achieved by using Template:Codeline to show only the packages that are not foreign packages:

pacman -S $(comm -3 <(pacman -Qq) <(pacman -Qqm))

Mirrors

To take full advantage of using the fastest and the most up to date mirror(s), see Mirrors.

Pacman Aliases

See: Pacman Tips#Aliases

Accessing the AUR Seamlessly

Everyone should know how to use the AUR, ABS, and makepkg if they want to build packages. Tracking and updating custom built packages can become tedious, especially if they are numerous in quantity.

There are some programs and scripts that help building packages more convenient. See: a list of programs that help accessing the AUR

Using ABS to Recompile Packages

The Arch Build System is a ports-like system of compile files used to make packages that are already in the repositories. To compile packages with different options see ABS.

Compiling Optimized Packages

When packages are compiled with Arch's package creation tool makepkg, the standard compiler (GCC) has options to be able specify machine type that can improve the load time, performance of a package. Generally any speed improvements are slight, but if you plan to compile a lot of packages you might want to consider setting your machine specifications.

For optimized the packages built using Template:Codeline, find your processor type in CFLAGS and edit Template:Filename. Example:

# For an Athlon CPU
CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"

Networking

Speeding up DNS Queries

Consider using Dnsmasq to improve load time by caching DNS queries.

Disabling IPv6

Until the widespread adoption of IPv6, it may be beneficial to disable the IPv6 module.