Difference between revisions of "Arch Linux"

From PrgmrWiki
(Extra/SSH)
Line 1: Line 1:
===Fresh Install===
 
 
====Initial setup====
 
This guide assumes that you have installed archlinux before, either on a KVM vps or locally. This guide requires you to install archlinux locally, preferably using [https://www.virtualbox.org/ virtualbox].
 
 
First grab the latest and greatest archlinux iso from the archlinux [http://www.archlinux.org/download/ website].
 
* Open up virtualbox, and create a vm for archlinux.
 
* Make the disk image 1GB, that's all you should need.
 
* Boot it up, and follow the [https://wiki.archlinux.org/index.php/Official_Arch_Linux_Install_Guide official installation guide]. Please read the following sub-points before starting the installation:
 
** Only make a single ext3 partition for everything. <tt># mkfs.ext3 /dev/sda1</tt>
 
** You will need a linux kernel that includes xen drivers. If you trust me, you can use this pre-built x86 kernel (3.5.4): [http://kbar.pro/files/linux/vmlinuz-3.5.4 md5sum: 4d00f77b2a4c5e2c565a7ee9e5796e26]. [http://kbar.pro/files/linux/config Here] is the .config I used to build the kernel.
 
** You may wish to install [http://www.archlinux.org/packages/core/i686/systemd-sysvcompat/ systemd-sysvcompat] to get systemd working.
 
* Before you complete the installation as per the [https://wiki.archlinux.org/index.php/Official_Arch_Linux_Install_Guide official guide], clear out <tt>/var/cache/pacman/pkg</tt> to save on bandwidth + disk space.
 
* Unmount the disk as per the official guide.
 
* Boot your prgmr domU into <code>CentOS 5.5 rescue (2.6.18-194.3.1.el5xen)</code> from pvgrub, and Log in as <tt>root</tt>
 
** Set up partitions. This guide will use one partition, starting with a blank disk for simplicity.
 
<pre>
 
[root@host ~]# dd if=/dev/zero of=/dev/xvda # (optional) wipes all your data
 
[root@host ~]# parted /dev/xvda
 
GNU Parted 1.8.1
 
Using /dev/xvda
 
Welcome to GNU Parted! Type 'help' to view a list of commands.
 
(parted) mklabel msdos
 
(parted) mkpart primary 0% 100%
 
(parted) quit
 
</pre>
 
** Make your one partition, but don't mount it yet:
 
<pre>[root@host ~]# mkfs.ext3 -L ARCHLINUX /dev/xvda1</pre>
 
** Transfer over installed archlinux filesystem using archlinux install media running on your local virtualbox. Here's where it gets kinda interesting, and you may or may not want to do it the way I'm doing it here.
 
*** Since the rescue shell is mounted read-only, you'll need to do some work to get sshd running. First, copy your pubkey into /tmp/authorized_keys.
 
*** Then launch sshd, making sure you don't enter a password when ssh-keygen prompts for a passphrase:
 
<pre>
 
# wget -O /tmp/sshd_config http://kbar.pro/files/linux/sshd_config_rescue
 
# ssh-keygen -f /tmp/ssh_host_rsa_key
 
# /usr/sbin/sshd -f /tmp/sshd_config
 
</pre>
 
*** Now you can ssh into the rescue image! Use the install media running on your local virtualbox to copy over your installed filesystem:
 
<pre>
 
# dd if=/dev/sda1 | ssh root@your.prgmr.ip.here "dd of=/dev/xvda1"
 
</pre>
 
*** After the copying has finished, you should some output that confirms completion.
 
 
** Now mount the filesystem on your vps:
 
<pre>
 
# mount -n /dev/xvda1 /mnt
 
# cd /mnt
 
</pre>
 
 
====Configuration====
 
 
If you installed to somewhere other than <code>/dev/xvda1</code>, you will need to edit <code>boot/grub/menu.lst</code> to reflect the changes.
 
 
** Drop this into <tt>/boot/grub/menu.lst</tt>
 
<pre>
 
timeout 5
 
 
title          3.5.4-x86
 
root            (hd0,0)
 
kernel          /boot/vmlinuz-3.5.4 root=/dev/xvda ro console=hvc0
 
</pre>
 
** Grab the kernel from earlier in this guide and put it in <tt>/boot/</tt>
 
** Edit <tt>etc/fstab</tt> to look something like this:
 
<pre>
 
#
 
# /etc/fstab: static file system information
 
#
 
# <file system> <dir>  <type>  <options>      <dump>  <pass>
 
devpts                /dev/pts      devpts    defaults            0      0
 
shm                    /dev/shm      tmpfs    nodev,nosuid        0      0
 
 
/dev/xvda1      /      ext3    defaults,noatime 0 1
 
</pre>
 
** Comment the following lines in <tt>etc/inttab</tt>:
 
<pre>
 
#c1:2345:respawn:/sbin/agetty -8 -s 38400 tty1 linux
 
#c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
 
#c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
 
#c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
 
#c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
 
#c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux
 
</pre>
 
** Uncomment or add the following line in <tt>etc/inittab</tt>:
 
<pre>h0:2345:respawn:/sbin/agetty -8 -s 38400 hvc0 linux</pre>
 
 
** Get the configuration details for a working network:
 
*** Note the <tt>inet addr</tt> and <tt>mask</tt> in the output of <code>ifconfig eth0</code>
 
*** Note the IP in the <tt>gateway</tt> column in the output of <code>route</code>
 
*** Note the <tt>search</tt> and <tt>nameserver</tt> outputs of <code>cat /etc/resolv.conf</code>
 
 
** This is all you need to know to configure Arch to connect to the internet.
 
** Reboot into Arch after taking note of the information.
 
<pre>
 
# shutdown -r now
 
</pre>
 
 
** Login as root and set the root password.
 
<pre>
 
Arch Linux 2.6.37-xen  ((none)) (hvc0)
 
(none) login: root
 
[root@(none) ~]# passwd
 
</pre>
 
 
=====Network=====
 
* Edit <code>/etc/resolv.conf</code> to look like what you wrote down.
 
 
* Fill in the blanks of <code>/etc/rc.conf</code> to include your hostname, interface, address, netmask, broadcast, and gateway. Your hostname can be whatever you like. Your interface is <tt>eth0</tt>.
 
 
=====Extra/SSH=====
 
 
Add a user, add your public key, enable ssh privilege separation, and allow ssh connections.
 
<pre>
 
# adduser kino
 
 
# mkdir ~kino/.ssh
 
# echo "paste public key" > ~kino/.ssh/authorized_keys
 
# chown -R kino:users ~kino
 
# chmod 700 ~kino/.ssh
 
# chmod 600 ~kino/.ssh/authorized_keys
 
 
# echo "nobody:x:99:99:Nobody:/:/sbin/nologin" >> /etc/passwd
 
 
# echo "sshd: ALL" >> /etc/hosts.allow
 
</pre>
 
 
If you don't want to reboot, use your new hostname and start ssh.
 
<pre>
 
# hostname tabi
 
# rc.d start sshd
 
</pre>
 
 
Now you should be good to go!
 
 
===Pre-made tarball===
 
 
====Initial setup====
 
Setup is nearly identical to [[Untarring a fresh OS image]].
 
This guide will have some extra bloat just to keep everything in one place.
 
 
Boot into <code>CentOS 5.5 rescue (2.6.18-194.3.1.el5xen)</code> from pvgrub, and Log in as <tt>root</tt>.
 
 
Set up partitons. This guide will use one partition, starting with a blank disk for simplicity.
 
<pre>
 
[root@host ~]# dd if=/dev/zero of=/dev/xvda # (optional) wipes all your data
 
[root@host ~]# parted /dev/xvda
 
GNU Parted 1.8.1
 
Using /dev/xvda
 
Welcome to GNU Parted! Type 'help' to view a list of commands.
 
(parted) mklabel msdos
 
(parted) mkpart primary 0% 100%
 
(parted) quit
 
</pre>
 
 
Make a filesystem, mount it, and enter it.
 
<pre>
 
# mkfs.ext3 -L ARCHLINUX /dev/xvda1
 
# mount -n /dev/xvda1 /mnt
 
# cd /mnt
 
</pre>
 
 
Download and extract Arch.
 
{|border="1"
 
|File
 
|ArchLinuxBase-i686.tar.gz
 
|ArchLinuxBase-x86_64.tar.gz
 
|-
 
|Download
 
|257 MiB
 
|320 MiB
 
|-
 
|Install
 
|470 MiB
 
|592 MiB
 
|}
 
<pre>
 
# wget http://dl.dropbox.com/u/34148684/ArchLinuxBase-i686.tar.gz
 
# wget http://dl.dropbox.com/u/34148684/ArchLinuxBase-x86_64.tar.gz
 
# tar -zxf ArchLinuxBase*
 
</pre>
 
Don't restart yet.
 
 
====Configuration====
 
 
If you installed to somewhere other than <code>/dev/xvda1</code>, you will need to edit <code>boot/grub/menu.lst</code> to reflect the changes.
 
 
Get the configuration details for a working network:
 
Note the <tt>inet addr</tt> and <tt>mask</tt> in the output of <code>ifconfig eth0</code>
 
Note the IP in the <tt>gateway</tt> column in the output of <code>route</code>
 
Note the <tt>search</tt> and <tt>nameserver</tt> outputs of <code>cat /etc/resolv.conf</code>
 
 
This is all you need to know to configure Arch to connect to the internet.
 
Reboot into Arch after taking note of the information.
 
<pre>
 
# shutdown -r now
 
</pre>
 
 
Login as root and set the root password.
 
<pre>
 
Arch Linux 2.6.37-xen  ((none)) (hvc0)
 
(none) login: root
 
[root@(none) ~]# passwd
 
</pre>
 
 
Note: nano is installed.
 
=====Network=====
 
Edit <code>/etc/resolv.conf</code> to look like what you wrote down.
 
 
Fill in the blanks of <code>/etc/rc.conf</code> to include your hostname, interface, address, netmask, broadcast, and gateway. Your hostname can be whatever you like. Your interface is <tt>eth0</tt>.
 
 
Append the hostname you chose to the line with 127.0.0.1 in <code>/etc/hosts</code>
 
 
=====General=====
 
 
Uncomment your preferred locale in <code>/etc/locale.gen</code> (en_US.UTF-8 uncommented in x86_64 tarball)
 
 
Set the same locale in <code>/etc/rc.conf</code>
 
 
Apply the locale with <code>locale-gen</code>
 
 
=====Extra/SSH=====
 
 
Add a user, add your public key, enable ssh privilege separation, and allow ssh connections.
 
<pre>
 
# adduser kino
 
 
# mkdir ~kino/.ssh
 
# echo "paste public key" > ~kino/.ssh/authorized_keys
 
# chown -R kino:users ~kino
 
# chmod 700 ~kino/.ssh
 
# chmod 600 ~kino/.ssh/authorized_keys
 
 
# echo "nobody:x:99:99:Nobody:/:/sbin/nologin" >> /etc/passwd
 
 
# echo "sshd: ALL" >> /etc/hosts.allow
 
</pre>
 
 
Add sshd to the startup daemons list.
 
<pre>
 
# vim /etc/rc.conf +/DAEMONS=
 
</pre>
 
 
If you don't want to reboot, use your new hostname and start ssh.
 
<pre>
 
# hostname tabi
 
# rc.d start sshd
 
</pre>
 
 
Done.
 
 
===Bootstrap script===
 
 
====Initial setup====
 
 
 
Reboot your VPS and select the CentOS rescue image.
 
Reboot your VPS and select the CentOS rescue image.
  
Line 284: Line 32:
 
Using this old mirror is necessary due to the old kernel version of the CentOS rescue image (2.6.18).
 
Using this old mirror is necessary due to the old kernel version of the CentOS rescue image (2.6.18).
 
Once the install script is complete a full system upgrade can be done using "pacman -Syu".
 
Once the install script is complete a full system upgrade can be done using "pacman -Syu".
 
====Configuration====
 
  
 
The install script chroots for you. After entering the root password for your new system, you need to configure your Arch.
 
The install script chroots for you. After entering the root password for your new system, you need to configure your Arch.
Line 314: Line 60:
 
UUID=185c4489-6eec-4b72-a479-c4cc207e7413 / ext3 defaults,noatime 0 1
 
UUID=185c4489-6eec-4b72-a479-c4cc207e7413 / ext3 defaults,noatime 0 1
 
</pre>
 
</pre>
 +
  
 
Remove the default kernel, as we're installing the Xen one.
 
Remove the default kernel, as we're installing the Xen one.
Line 361: Line 108:
 
# pacman -U kernel26-xen-VERSION-x86_64.pkg.tar.gz
 
# pacman -U kernel26-xen-VERSION-x86_64.pkg.tar.gz
 
# pacman -U kernel26-xen-headers-VERSION-x86_64.pkg.tar.gz
 
# pacman -U kernel26-xen-headers-VERSION-x86_64.pkg.tar.gz
</pre>
 
 
Add the following xen modules to your initcpio by appending the following to MODULES in /etc/mkinitcpio.conf: "xen-blkfront xen-fbfront xenfs xen-netfront xen-kbdfront" and rebuild your initcpio:
 
 
<pre>
 
mkinitcpio -p kernel26-xen
 
 
</pre>
 
</pre>
  
Line 407: Line 148:
 
</pre>
 
</pre>
  
To avoid hwclock error messages, set HARDWARECLOCK="xen" in /etc/rc.conf (actually you can use any value here except "UTC" and "localtime")
+
This should fix everything complaining about time issues, though I have no idea if its the *best* way of doing it:
 +
 
 +
<pre>
 +
# echo xen > /sys/devices/system/clocksource/clocksource0/current_clocksource
 +
</pre>
  
 
Install SSH and configure it (http://wiki.archlinux.org/index.php/SSH)
 
Install SSH and configure it (http://wiki.archlinux.org/index.php/SSH)

Revision as of 06:01, 8 January 2011

Reboot your VPS and select the CentOS rescue image.

If you don't want to set up partitions (I didn't), just go ahead and make it ext3.

# mkfs.ext3 /dev/xvda1

Mount the drive into /mnt

# mount -n /dev/xvda1 /mnt
# cd /mnt

Download the install script and run it!

# wget http://calimeroteknik.free.fr/arch-guide/install-chroot.sh
# chmod +x install-chroot.sh
# ./install-chroot.sh

When prompted give the following answers.

Installation Directory: /mnt

Architecture: Your choice (32 or 64 bit)

Download Mirror: arm.konnichi.com/2010/12/29/

Using this old mirror is necessary due to the old kernel version of the CentOS rescue image (2.6.18). Once the install script is complete a full system upgrade can be done using "pacman -Syu".

The install script chroots for you. After entering the root password for your new system, you need to configure your Arch. Specify DNS servers in /etc/resolv.conf. An example, using prgmr nameservers:

domain xen.prgmr.com
search xen.prgmr.com
nameserver 216.218.223.67
nameserver 38.99.2.224

Uncomment the desired locale in /etc/locale.gen then run locale-gen. The default is en_US.UTF-8 as seen in /etc/rc.conf. An example /etc/locale.gen:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1

Add your / partition to /etc/fstab. Get your UUID from ls -l /dev/disk/by-uuid/. An example /etc/fstab:

# <file system>        <dir>         <type>    <options>          <dump> <pass>
devpts                 /dev/pts      devpts    defaults            0      0
shm                    /dev/shm      tmpfs     nodev,nosuid        0      0

UUID=185c4489-6eec-4b72-a479-c4cc207e7413 /	ext3	defaults,noatime 0 1


Remove the default kernel, as we're installing the Xen one.

# pacman -Rsdn kernel26

To build the Xen kernel, you'll need to install the make, gcc, and patch packages from the repositories. We'll also need xmlto and docbook-xsl as dependencies to the PKGBUILD.

# pacman -S make gcc patch xmlto docbook-xsl

Download and untar the latest tarball of the kernel26-xen package.

# wget http://aur.archlinux.org/packages/kernel26-xen/kernel26-xen.tar.gz
# tar -xf kernel26-xen.tar.gz
# cd kernel26-xen

You'll need to uncomment the following line from the PKGBUILD file.

#pkgname=('kernel26-xen' 'kernel26-xen-headers') # Build kernel with a different name

Build the package. This step will take a while, so grab some coffee and a scone.

# makepkg --asroot

If makepkg complains about extracting, then do it yourself for both, linux and patch archives and move them to src/. Then try makepkg again with no extract flag:

# makepkg --asroot -e

Install the packages you just built:

# pacman -U kernel26-xen-VERSION-x86_64.pkg.tar.gz
# pacman -U kernel26-xen-headers-VERSION-x86_64.pkg.tar.gz

Install grub

pacman -S grub

Edit boot/grub/menu.lst and fill it with the following:

timeout 5
default 0

# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /boot/vmlinuz26-xen root=/dev/xvda1 ro console=hvc0
initrd /boot/kernel26-xen.img

Edit /etc/inittab and remove/comment these

# -8 options fixes umlauts problem on login
c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux

Uncomment this

# Hypervisor Virtual Console for Xen and KVM
# h0:2345:respawn:/sbin/agetty -8 38400 hvc0 linux

This should fix everything complaining about time issues, though I have no idea if its the *best* way of doing it:

# echo xen > /sys/devices/system/clocksource/clocksource0/current_clocksource

Install SSH and configure it (http://wiki.archlinux.org/index.php/SSH)

# pacman -S openssh

Reboot your VPS and you should be good to go!