Post Installation Tips
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
Contents
- 1 Booting
- 2 Appearance
- 3 General Console Improvements
- 4 Mantaining and Compiling Packages
- 5 Miscellaneous Tips
Booting
Hardware Auto-Recognition
- hwdetect informs of what modules are needed for a particular device.
# pacman -S hwdetect
- Template:Package AUR is an alternative.
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 that may had want to revise the output unable of doing so.
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)
Files Template:Filename and Template:Filename contain the default PS1 (shell prompt) variables for normal user and root, respectively.
As an unprivileged user:
$ nano ~/.bashrc
Comment out the default prompt:
#PS1='[\u@\h \W]\$ '
And add:
PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'
This will give a very pleasing, colorful prompt and theme for the console with bright white text.
The string above contains color-set escape sequences (start coloring: \[\e[color\], end coloring: \[\e[m\]) and information placeholders:
- \u - Username. The original prompt also has \h, which prints the host name.
- \w - Current absolute path. Use \W for current relative path.
- \$ - The prompt character (eg. '#' for root, '$' for regular users).
The last color-set sequence, "\[\e[1;37m\]", is not closed, so the remaining text (everything typed into the terminal, program output and so on) will be in that (bright white) color. It may be desirable to change this color, or to delete the last escape sequence in order to leave the actual output in unaltered color.
As root, edit Template:Filename, copy it from Template:Filename if the file is unpresent:
# nano /root/.bash_profile
Comment out the default PS1:
#PS1='[\u@\h \W]\$ '
The following PS1 is useful for a root bash prompt, with red designation and green console text:
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\] '
For more sophisticated options, 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`
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). Continue to use GREP_COLOR
for now.
More Colors for General Output
Add to Template:Filename:
if [ "$USECOLOR" = "YES" -o "$USECOLOR" = "yes" ]; then C_MAIN="\033[1;37;40m" # main text C_OTHER="\033[1;34;40m" # prefix & brackets C_SEPARATOR="\033[1;30;40m" # separator ... fi
The above associates variables with shell escape sequences representing colors. These escape sequences are often used in shell prompts, but can be applied to any shell output.
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[01;31m' export LESS_TERMCAP_md=$'\E[01;31m' export LESS_TERMCAP_me=$'\E[0m' export LESS_TERMCAP_se=$'\E[0m' export LESS_TERMCAP_so=$'\E[01;44;33m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;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 Fonts.
General Console Improvements
Enabling History Search
By default, when typing (for example) Template:Codeline and pressing the <Up> key, current input will be replaced with the previously issued command. With history search enabled, only past commands beginning with Template:Codeline (the current input) will be completed.
Adding the following to Template:Filename or Template:Filename enables history search:
"\e[A":history-search-backward "\e[B":history-search-forward
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
Bash can be extended to use smart, context-sensitive completion. This is a very handy feature that many Template:Codeline users take for granted.
Install it with:
# pacman -S bash-completion
Afterwards, add to Template:Filename:
if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
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
- Template:Codeline - Searches for files by it's contents (example: Template:Codeline will search all files in Template:Filename for those containing the word "syslog", and the operand Template:Codeline enables case-insensitive matches).
- Template:Codeline and Template:Codeline - Kills processes by name (example: Template:Codeline).
- Template:Codeline - Finds the PID # of the processes by name (example: Template:Codeline).
- Template:Codeline - Display process status (example: Template:Codeline will display all active processes).
- Template:Codeline - Quickly locate files on the hard drive (example: after using Template:Codeline to create a database, Template:Codeline will find all files named Template:Filename).
Extracting Compressed Files
For Template:Codeline archives, the easiest method is to let Template:Codeline automatically handle the file according to it's contents:
file.EXTENSION : tar axvf 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.bz : bzip -cd file.bz | tar xvf - file.bz2 : tar xvjf file.tar.bz2 OR bzip2 -cd file.bz2 | tar xvf - file.zip : unzip file.zip file.rar : unrar x file.rar
The construction of these tar arguments is considered archaic, but their inteded usefulness has retained when performing specific operations. Tar's manpage, section Compatability, 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 ;; *.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 ;; *.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 Template:Codeline:
# 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.
Relogin after installing Template:Codeline in order to activate it.
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)
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`
- The above can be achieved without Template:Codeline by issuing an Template:Codeline operation:
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))
Pacman Aliases
Copy these into Template:Filename or Template:Filename:
# Search through all available packages simply using 'pacsearch packagename' alias pacsearch="pacman -Sl | cut -d' ' -f2 | grep "
# sudo pacman -Syu by typing pacup (sudo must be installed and configured first) alias pacup="sudo pacman -Syu"
# sudo pacman -S by typing pac alias pac="sudo pacman -S"
# Colorized pacman -Ss search output: alias pacs="pacsearch" pacsearch() { echo -e "$(pacman -Ss "$@" | sed \ -e 's#^core/.*#\\033[1;31m&\\033[0;37m#g' \ -e 's#^extra/.*#\\033[0;32m&\\033[0;37m#g' \ -e 's#^community/.*#\\033[1;35m&\\033[0;37m#g' \ -e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' ) \ \033[0m" }
You can also download Template:Package AUR.
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 you access the AUR.
Using ABS to Recompile Packages
ABS is an automated toolkit that allows rebuilding any of pacman's packages, allowing the user to apply custom compiler and linker settings for the purpose of optimization, debugging, etc. Simply executing Template:Codeline will synchronize all PKGBUILD scripts from the Arch source repository into Template:Filename.
# pacman -S abs
It is not recommended to build packages inside of the main Template:Filename tree. Copying the PKGBUILD and all accompanying files to an empty directory is more practical, since there is no risk of getting modifed PKGBUILD files overwritten by newer ones when updating the abs tree. Keeping a copy of the PKGBUILD (even after the resulting package has already been installed) eases updating and keeping track of package changes across version increments.
Optimizing Packages
Makepkg is an automated tool to create packages - it automates the ./configure && make && make install
procedure, (or whatever combination of commands involved in the building of the application) and packs it into a .pkg.tar.gz for easy installation with pacman
. It uses a script file called a PKGBUILD which must exist in the build directory. View a PKGBUILD file and read the installation document to learn more about how to work with Template:Codeline.
For optimizing the packages built using Template:Codeline (the kernel is a good example), editting /etc/makepkg.conf
is recommended:
# Example for an Athlon CPU CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"
See Safe CFlags for more information.
Miscellaneous Tips
Disabling IPv6
Until the widespread adoption of IPv6, you may benefit from disabling the IPv6 module.