/ Linux

LFS #3 - Yeni Sistemi Düzenleme

Geçen yazıda sistemimizi kurmuştuk. Şimdi sıra o sistemin içinde yaşamaya geldi. Umarım okuyanların çoğu chroot komutunu biliyordur. Belirtilen klasörü sistemin kök klasörü olarak kabul eder ve oraya login olur. Bizde kendi sistemimizin içindeki bir klasörde, başka bir paralel sistemde yaşarız.
Hemen o yeni sisteme geçmek için gerekli işleri bitirelim. Öncelik $LFS klasörümüzü mount edelim ve root olarak bekleyelim.

Sanal çekirdek klasörleri

Eğer sistemi kurmaya ara verirseniz ya da bir sorun olur da bilgisayarı yeniden başlatırsanız bu bölümü baştan girmelisiniz.

mkdir -pv $LFS/{dev,proc,sys,run}

mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3

mount -v --bind /dev $LFS/dev

mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run

if [ -h $LFS/dev/shm ]; then
  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
fi

Sisteme düşmek

Bu komutla birlikte LFS sistemimizin içine giriyoruz. Paralel linux'a hoşgeldiniz. Tekrar edeyim bir şeye ara verirseniz üstteki komutlar sonrası bunu da girerek yine sisteme gireceksiniz.
Neymiş? Sisteme girmek için önce yukarıdakiler sonra bu.

chroot "$LFS" /tools/bin/env -i \
    HOME=/root                  \
    TERM="$TERM"                \
    PS1='\u:\w\$ '              \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
    /tools/bin/bash --login +h

Klasörleri yaratmak

Artık sistemin içindeyiz ve terminalinizde I have no name!:/# yazıyor. Çünkü henüz /etc/passwd dosyamızı oluşturmadık.

Yeni LFS sisteminde /etc/passwd = /tools/etc/passwd birincil sistemde. Bunu da biliyorsanız sorunumuz yok.

mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -v  /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -v  /usr/libexec
mkdir -pv /usr/{,local/}share/man/man{1..8}

 #64bit ise yazılacaklar başı
ln -sv lib /lib64
ln -sv lib /usr/lib64
ln -sv lib /usr/local/lib64
 #64bit ise yazılacaklar sonu

mkdir -v /var/{log,mail,spool}
ln -sv /run /var/run
ln -sv /run/lock /var/lock
mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}

Temel dosyaları ve köprüleri oluşturmak

Bu bölümde önemli dosyaların kısayollarını oluşturacak ve en önemli dosyalardan ikisi olan /etc/{passwd, group} dosyalarını yaratacağız.

ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
ln -sv bash /bin/sh

ln -sv /proc/self/mounts /etc/mtab

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
nogroup:x:99:
users:x:999:
EOF

exec /tools/bin/bash --login +h

Artık adımız root oldu. Bu doğru yolda olduğumuzun işareti. Kim root olmak istemez ki?

touch /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664  /var/log/lastlog
chmod -v 600  /var/log/btmp

Evet bu yazının da sonuna geldik. Sıra tekrar derlemelere geldi. Eski $LFS/sources klasörünüzü /sources yolunda bulabilirsiniz. Sıradaki yazımızda sistemimizin içini(!) derleyeceğiz.

Ozan Şelte

Ozan Şelte

Kendini Bodrumlu sayan bir İstanbullu. Gebze Teknik Üniversitesi öğrencisi, İzmir Atatürk Lisesi 128. yıl mezunu

Read More