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.