Hetzner'de Arch Linux Kurulumu

Yıllar önce raptiye'yi ilk açtığımda sanal dahi olsa kendi sunucusuna sahip olması hayal gibi gelirdi; zira fiyatlar son derece pahalıydı. Derken çalışıp para kazanmaya başlayınca ayda 20$ vererek slicehost üzerinde yayınlamaya başladım. Zaman değişti; linode vb. sayısız alternatif, slicehost'un avantajlı paketlerini ezdi geçti. slicehost bu nedenle çok eleştirildi; RackSpace tarafından satın alındıktan sonra oluşturduğu topluluğun büyük bir kısmını kaybetti. Yine de sadeliği ve memnuniyetim nedeniyle 2.5 yıl boyunca daha ucuz olan alternatiflere geçmeyi reddettim. Taa ki put.io için çalışmaya başlayıp da Hetzner'i keşfedene kadar.

Hetzner Hakkında

Hetzner, barındırma, fiziksel, sanal ya da yönetilen sunucu imkanları sağlayan bir Alman servis sağlayıcısı. Sitelerinde İngilizce seçeneği olsa da, viki'de ihtiyaç duyabileceğiniz bir çok belgenin Almanca olması çok da profesyonel olmadıklarına dair bir izlenim bıraksa da put.io sunucularından gelen tecrübelerim tam tersini söylüyor.

Hetzner'in sitesine girerseniz sizi ilk vuracak şey fiyatlar oluyor. Fiziksel sunucular için istedikleri fiyatlar bir yana; neredeyse tüm sanal sunucu sağlayıcıların 256 - 512 MB belleğe sahip sunucular için (anlaşmış gibi) istedikleri 20$ fiyata karşılık Hetzner'in verdiği fiyat 7€! Üstelik bu fiyata verdikleri sunucu özellikleri ve bantgenişliği de şaşırtıcı derecede iyi. İnternet'te yapacağınız araştırmalarda da göreceksiniz ki; herkes bu fiyatların nasıl verildiğini sorguluyor.

Root Server ismi biraz kafa karıştırıcı olabiliyor ama aslında tahmin etmek güç değil: sunucunun çekirdek dahil tüm kontrolü sizde oluyor; makinenin her şeyini kontrol edebiliyorsunuz. Bu özellik sayesinde; öntanımlı olarak yalnızca Ubuntu, Fedora, Debian, CentOS, FreeBSD, OpenSuse, Windows (!) desteği olsa da, istediğiniz Linux dağıtımını yükleyebiliyorsunuz. Ben, tabii ki Arch Linux yükledim; canavar gibi de çalışıyor. Yazının devamında izlediğim adımları takip ederek çalışan bir sistem elde edebilirsiniz. Ben sanal sunucu için izlenmesi gereken adımları anlatacağım ama fiziksel makine olursa da aynı adımları izleyebilirsiniz.

Sunucuyu Hazır Hale Getirme

7€'luk sanal sunucuyu aldığınızda, makine üzerinde biçimlendirilmemiş 20G disk alanı geliyor. Öncelikle işe bu alanı bölümlendirerek başlamak gerekiyor:

cfdisk /dev/hda

Bu adımda ben diski tek parça olarak bırakıp ext4 olarak biçimlendirerek devam ettim:

mkfs.ext4 -L ROOT /dev/hda1

-L parametresinden anlaşılabileceği gibi diske ROOT adını veriyorum. Linux'da disklere isim vererek sdX ya da uzun UUID gibi değerlerden kaçınabilirsiniz. Diski biçimlendirdikten sonra kuruluma devam etmek için sistemde bir yerlere bağlamanız gerekiyor. Benim tercihim /mnt/ dizini oluyor:

mount /dev/hda1 /mnt/

Sırada Arch Linux kurulumu için önyükleyici (bootstrap) yaratacak betiği çalıştırmak var. Arch Linux, tüm paket sisteminde XZ biçiminde sıkıştırıldığından baz sistemde (Ubuntu) ilgili paketlerin kurulu olması gerekiyor. Bu nedenle /etc/apt/sources.list dosyasında lenny'e olan tüm referansları sid olarak değiştirmeniz ve şunları yapmanız gerekiyor:

apt-get update
apt-get install xz-utils xz-lzma
Artık Arch Linux önyükleyicisini kuracak betiği çalıştırmak için hazırız:
./arch-bootstrap.sh -a x86_64 -r "ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org" /mnt/
Betik 5 dk kadar çalıştıktan sonra en yalın haliyle kullanılabilir bir dosya sistemi yaratıyor ve içine pacman vb. işinize yarayacak araçları kuruyor. Şimdi proc, sysfs ve dev gibi önemli dizinleri bağlayalım:
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount --bind /dev /mnt/dev
Son olarak yeni dosyasisteminden çalışmaya başlayalım. Bunu yaptıktan sonra fiili olarak Arch Linux üstünde çalışmaya başlamış oluyoruz:
chroot /mnt
Önyükleyici betiğinin yüklediği kritik paketlerden biri filesystem. Bu paketin görevi, / dizini altındaki dizinleri ve sistemin çalışabilmesi için gerekli olan tüm kritik dosya ve dizinleri yaratmak. Sebebini bilmiyorum ama /etc/passwd dosyası içinde sadece root kullanıcısının kaydıyla geliyordu. Paket dosyasını kontrol ettiğimde orada doğrusunun olduğunu ancak bir şekilde sisteme kurulmadığını farkettim. Dolayısıyla normalde gerekmeyecek bazı ek şeyler yapmamız gerekiyor:
cp /var/cache/pacman/pkg/filesystem-2010.12-1-any.pkg.tar.xz ~
cd /root
xz -d filesystem-2010.12-1-any.pkg.tar.xz
tar -xvf filesystem-2010.12-1-any.pkg.tar
cp etc/passwd /etc/passwd
Kurulum
 
Evet; artık kurulumumuz için gerekli olan paketleri kurarak devam edebiliriz:
pacman -S kernel26 openssh vim screen git python2 python
Başta bahsettiğim gibi /dev/sdaX ya da UUID kullanımı yerine LABEL kullanmayı tercih ediyorum. Bunun çalışabilmesi için /etc/mkinitcpio.conf dosyasındaki HOOKS dizisinden autodetect'i kaldırmak gerekiyor. Tabii bu değişikliği yaptıktan sonra init cpio'yu tekrar oluşturmak gerekiyor:
mkinitcpio -p linux
Açılış için Grub kuralım:
pacman -S grub
install-grub /dev/hda /dev/hda1
/boot/grub/menu.lst dosyasını düzenleyelim:
timeout   1
default   0
color light-blue/black light-cyan/blue
 
# Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /boot/vmlinuz-linux root=/dev/disk/by-label/ROOT ro quiet
initrd /boot/initramfs-linux.img
 
# # (1) Arch Linux
# title  Arch Linux Fallback
# root   (hd0,0)
# kernel /boot/vmlinuz26 root=/dev/sda1 ro
# initrd /boot/kernel26-fallback.img
Paket kurulumuna devam:
pacman -S sudo ethtool mlocate wget dnsutils net-tools htop bash-completion zsh ntp
/etc/hosts dosyasını düzenleyelim:
127.0.0.1 localhost
78.47.167.40 raptiye.org raptiye
 
rc.conf
LOCALE="en_US.UTF-8"
DAEMON_LOCALE="no"
HARDWARECLOCK="UTC"
TIMEZONE="Europe/Istanbul"
KEYMAP="trq"
CONSOLEFONT="lat5-16"
CONSOLEMAP=
USECOLOR="yes"
 
MOD_AUTOLOAD="yes"
MODULES=()
 
# Scan for LVM volume groups at startup, required if you use LVM
USELVM="no"
 
HOSTNAME="raptiye.org"
 
eth0="dhcp"
INTERFACES=(eth0)
 
# Setting this to "yes" will skip network shutdown.
# This is required if your root device is on NFS.
NETWORK_PERSIST="no"
 
DAEMONS=(syslog-ng network crond sshd)
fstab
tmpfs /tmp tmpfs nodev,nosuid 0 0
LABEL=ROOT / ext4 defaults 0 0
Hepsi bu! Sistemi baştan başlattığınızda tamamen çalışan bir Arch Linux sunucuya sahip olacaksınız; güle güle kullanın! İyi eğlenceler!