Ozan Şelte
Mühendis Adayı


LFS 3 - Yeni Sistemi Düzenleme
14 Ağustos 2015 - Linux

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. Biz de 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.

1
2
3
4
5
6
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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şlangıcı
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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?

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

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.