trLFS [ C* ]

LFS 4.0 kitabının Türkçe özeti... (http://lfs.geleceklinux.org)

LAPIS, Linux Sevenler


Table of Contents
Giriş
Bu proje hakkında ...
Neden LFS ?
Neler Yapacağız?
Hangi Platform?
Hazırlayan Hakkında
Hazırlıklar
Paketlerin İndirilmesi
Kurulumun Yapılacağı Bölümü Hazırlamak
Takas Alanın Hazırlanması
Bölümün mount edilmesi
Kullanıcının Hazırlanması
$LFS Değişkeni Hakkında
Gerekli İzinlerin Verilmesi ve Bash Profile Dosyası
Geçici Dizin
Paketlerin Açılması
SBU Hakkında
Paketlerin Geçici Olarak Yüklenmesi
Bash-2.05a
Binutils-2.13
Bzip2-1.0.2
Diffutils-2.8.1
Fileutils-4.1
Findutils-4.1
Gawk-3.1.1
GCC-3.2
Grep-2.5
Gzip-1.2.4a
Make-3.79.1
Patch-2.5.4
Sed-3.02
Sh-Utils-2.0
Tar-1.13
Texinfo-4.2
Textutils-2.1
Util-Linux-2.11u
Asıl Yüklemeler
Debugging
Chroot Ortamı
Sahip Değişimi
Dizinlerin Yaratılması
PROC Dosya Sistemini Bağlamak
MTAB Bağlantısının Yaratılması
Bash ve sh Bağlantılarının Yaratılması
passwd ve group Dosyalarının Oluşturulması
Aygıtların Oluşturulması (Makedev-1.7)
Linux-2.4.19 Yüklenmesi
Man-pages-1.52
Glibc-2.2.5
GCC-3.2
Zlib-1.1.4
Findutils-4.1
Gawk-3.1.1
Ncurses-5.2
Vim-6.1
Bison-1.35
Less-374
Groff-1.18
Textutils-2.1
Sed-3.02
Flex-2.5.4a
Binutils-2.13
Fileutils-4.1
Sh-utils-2.0
Gettext-0.11.5
Net-tools-1.60
Perl-5.8.0
Linux threads-2.2.5 Kılavuz Sayfaları
M4-1.4
Texinfo-4.2
Autoconf-2.53
Automake-1.6.2
Bash-2.05a
File-3.39
Libtool-1.4.2
Bin86-0.16.3
Bzip2-1.0.2
Ed-0.2
Kbd-1.06
Diffutils-2.8.1
E2fsprogs-1.27
Grep-2.5
Gzip-1.2.4a
Man-1.5k
Lilo-22.2
Make-3.79.1
Modutils-2.4.19
Netkit-base-0.17
Patch-2.5.4
Procinfo-18
Procps-2.0.7
Psmisc-21
Shadow-4.0.3
Sysklogd-1.4.1
Sysvinit-2.84
Tar-1.13
Util-linux-2.11u
LFS-Bootscripts-1.10
Gerekli Yazılımların Ayarlanması
Vim
Glibc
Dinamik Yükleyici
Sysklogd
Shadow Password Suite
Sysvinit
Klavye
/var/run/utmp, /var/log/wtmp ve /var/log/btmp Oluşturulması
Root Şifresinin Tanımlanması
Açılış Scriptlerinin Tanımlanması
Açılış Scriptleri Hakkında Bilgi
Setclock Ayarlanması
Loadkeys Scriptine İhtiyacım var mı?
Sysklogd Ayarlanması
Localnet Scriptinin Ayarlanması
/etc/hosts Dosyasının Oluşturulması
Network Scriptinin Ayarlanması
Öntanımlı Ağ Geçidinin Ayarlanması
Ağ Ayar Dosyalarının Oluşturulması
LFS Sistemimizin Açılabilir Hale Getirilmesi
/etc/fstab Dosyasının Oluşturulması
Linux-2.4.19
Lilo`nun Ayarlanması
BitiŞ
LFS Sayacı
Sistemi Yeniden Başlatmak
Hatalar,Sorular ve Yardım

Giriş


Bu proje hakkında ...

Projenin anasayfası: http://www.linuxfromscratch.org

trLFS anaysafyası: http://lfs.geleceklinux.org

Kısaca özetlemek gerekirse LFS (Linux From Scratch) size kendi Linux`unuzu hazırlamada uygulayacagınız adımları gösteren bir rehberdir diyebiliriz. LFS`nin kendi bünyesinde size yardımcı olacak çok geniş açıklamalara sahip bir kitap bulunur. Bizim amacımız ise size bu kitabın (LFSBOOK 4.0) bir Türkçe özetini hazırlayarak bu projeden olabildiğince yararlanmanızı sağlamaktır.


Hazırlayan Hakkında

LFS 4.0 kitabının çevirisi, özetlenmesi ve DocBook formatına çevirilmesi Arman Aksoy ( Armish ) tarafından yapılmıştır. LAPIS ( http://linux-sevenler.de) tarafından desteklenmiştir.

Kitaptan alıntı yapılması, bir bölümünün kopyalanması, ekleme yapılması ve yayınlanması, hazırlayanın adı verildiği sürece tamamen serbesttir.

--

Armish

http://linux-sevenler.de


Hazırlıklar


Paketlerin İndirilmesi

LFS size bu kitap boyunca kullanılacak son versiyon ve birbiriyle uyumlu olan paketleri bir arşiv olarak hazırlamıştır. İşlemlerimizi gerçekleştirmek için öncelikle bu paketi sisteme indirmeliyiz.

Adres: http://lfs.geleceklinux.org/downloads/paketler/lfs-paketleri/lfs-packages-4.0.tar.bz2

Bu paketi istediğiniz yere indirebilirsiniz. Ben kolaylık olsun diye kendi Linux dağıtımımda /LFS adlı bir dizine koymuştum. Fakat paketlerin yeni bölümünüzde olması size daha sonraki işlemlerde avantaj sağlayacaktır. Mesela dizinleri oluşturduktan sonra LFS bölümünüzde /usr/src dizinini kullanabilirsiniz...


Paketlerin Geçici Olarak Yüklenmesi


Asıl Yüklemeler


Dizinlerin Yaratılması

FHS ( http://www.pathname.com/fhs ) standartlarına göre LFS`imiz için dizinlerimi oluşturalim:

---
mkdir -p /{bin,boot,dev/pts,etc/opt,home,lib,mnt,proc} &&
mkdir -p /{root,sbin,tmp,usr/local,var,opt} &&
for dirname in /usr /usr/local
    do
    mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
    ln -s share/{man,doc,info} $dirname
    mkdir $dirname/share/{dict,doc,info,locale,man}
    mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
    mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done &&
mkdir /var/{lock,log,mail,run,spool} &&
mkdir -p /var/{tmp,opt,cache,lib/misc,local} &&
mkdir /opt/{bin,doc,include,info} &&
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}} &&
ln -s ../var/tmp /usr
---

Şimdi bir iki izin atamamiz gerekli:

--
cd / &&
chmod 0755 root &&
chmod 1777 tmp var/tpm
---

0755 izini ile root kullanıcısının ev dizinine kimsenin girememesi içindir. Diğer izinimiz ise tmp dizinlerine kullanıcıların yazabilmesi fakat başka kullanıcıların dosyalarını silememe içindir. Artık dizinlerimi oluşturduğumuza göre indirdiğimiz lfs tar paketini /usr/src altına açabiliriz. Burada oluşturan dizinler sadece LFS sistemi kurulurken ihtiyaç olunacak dizinlerdir. Siz yüklediğiniz programa göre bu dizinlere ekleme yapabilirsiniz.


Linux-2.4.19 Yüklenmesi

Tahmini süre: 0.02 SBU Tahmini boyut: 142 MB

Şimdilik çekirdeği derlememize gerek yoktur. Burada programları yüklerken gerekli olacak bazı başlık (header) dosyalarını kopyalayacağız. Asıl derleme işlemi ise sonda yapılacaktır. Bu komutlarla gerekli dosyaları kopyalayalım:

---
ln -s /static/bin/pwd /bin/pwd &&
make mrproper &&
make include/linux/version.h &&
make symlinks &&
mkdir /usr/include/asm &&
cp include/asm/* /usr/include/asm &&
cp -R include/asm-generic /usr/include &&
cp -R include/linux /usr/include &&
touch /usr/include/linux/autoconf.h &&
rm /bin/pwd
---

Neden Başlık Dosyalarını Bağlantı Oluşturmak Yerine Kopyaladık?

Buna bir açıklama olarak size Linus Torvalds`ın attığı bir postayı göstereyim:

I would suggest that people who compile new kernels should: 

 - not have a single symbolic link in sight (except the one that the 
   kernel build itself sets up, namely the "linux/include/asm" symlink 
   that is only used for the internal kernel compile itself) 

And yes, this is what I do. My /usr/src/linux still has the old 2.2.13 
header files, even though I haven't run a 2.2.13 kernel in a _loong_ 
time. But those headers were what glibc was compiled against, so those 
headers are what matches the library object files. 

And this is actually what has been the suggested environment for at 
least the last five years. I don't know why the symlink business keeps 
on living on, like a bad zombie. Pretty much every distribution still 
has that broken symlink, and people still remember that the linux 
sources should go into "/usr/src/linux" even though that hasn't been 
true in a _loong_ time.

Glibc-2.2.5

Tahmini süre: 14.71 SBU Tahmini boyut:269 MB

Bu paketi yüklemeden önce patch`i uygulamamız gerekiyor. Patch`i açtığınızdan emin olun.

Ayrıca başlamadan önce glibc-linuxthreads paketinin glibc-2.2.5 içine açtığınızdan emin olun.

Eğer bu paketi yüklerken bazı öntanımlı yükleme değerlerini değiştirseniz hatalarla karşılaşabilirsiniz. Bu yüzden bu paketi yüklemeden önce CCFLAGS ve CXXFLAGS gibi değerleri sıfırlamanızı tavsiye ederiz. Sakın --enable-kernel opsiyonuyla configure scriptini çalıştırmayın çünkü bazı paketler (tar,fileutils ... gibi) bu opsiyon nedeniyle çökmelere neden olabiliyorlar.

Glibc`i kurmak için bu komutları kullanalım:

---
patch -Np1 -i ../glibc-2.2.5-2.patch &&
touch /etc/ld.so.conf &&
mkdir ../glibc-build &&
cd ../glibc-build &&
../glibc-2.2.5/configure --prefix=/usr --disable-profile \
    --enable-add-ons --libexecdir=/usr/bin &&
echo "cross-compiling = no" > configparms &&
make &&
make install &&
make localedata/install-locales &&
exec /static/bin/bash --login
---

"make localedata/install-locales" komutu bize daha sonra ihtiyacımız olan locale dosyalarını yüklememiz için gereklidir. Bunu "localedef" programıyla yapabilirsiniz. Bu komutu çalıştırmadan önce /usr/lib/locale dizinin yaratılmış olduğundan emin olmasınız...

Linux Threads man sayfalarını şimdi yüklemeyeceğiz çünkü bunu yüklemek için öncelikle perl`ün yüklenmesi gerekmekedir. Daha sonra buraya dönecek ve kılavuz sayfalarını yükleyeceğiz.

Yükleme sırasında buna benzer bir uyarı ile karşılaşırsanız:

***
configure: warning:
*** These auxiliary programs are missing or too old: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.
***

önemsemeyebilirsiniz çünkü bu uyarılar msgfmt olmamasından kaynaklanır. Bunu içeren gettext paketini daha sonra kuracağız. msgfmt, linux`unuzun başka dillerde konuşmasını sağlar. Bununla ilgili işlemler zaten yapılacaktır.

Glibc-2.2.5 içeriği: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump ve zic


Vim-6.1

Tahmini süre: 0.81 SBU Tahmini boyut: 24 MB

Bu paket yüklenmeden önce patch uygulanması gerekmektedir.

Eğer Vim yerine başka bir metin editörü yüklemek isterseniz bununla ilgili bir ipucunu http://beyond.linuxfromscratch.org/view/cvs/postlfs/editors.html adresinde bulabilirsiniz. (İngilizce)

Vim'i yüklemek için bu komutları kullanalım: ---
patch -Np1 -i ../vim-6.1.patch &&
./configure --prefix=/usr &&
make CPPFLAGS=-DSYS_VIMRC_FILE=\\\"/etc/vimrc\\\" &&
make install &&
ln -s vim /usr/bin/vi
---

Eğer X Pencere Sistemini yüklemeyi düşünüyorsanız, Vim`i yeniden derlemenizi tavsiye ederiz. Çünkü Vim çok güzel bir GUI arayüzüne sahiptir. Daha fazla bilgi için Vim`in README dosyasını okuyunuz.

Vim-6.1 içeriği: efm_filter.pl, efm_perl.pl, ex, less.sh, mve.awk, pltags.pl, ref, rview, rvim, shtags.pl, tcltags, vi, view, vim, vim132, vim2html.pl, vimdiff, vimm, vimspell.sh, vimtutor ve xxd


Shadow-4.0.3

Tahmini süre: 0.88 SBU Tahmini boyut: 7 MB

Bu pakedi yüklemeden önce bu konuda biraz bilgi edinmek iterseniz http://hints.linuxfromscratch.org/hints/shadowpasswd_plus.txt (İngilizce) adresindeki yazı size yardımcı olacaktır.

Shadow Password Suite`i aşağıdaki komutlarla yükleyelim:

---
./configure --prefix=/usr \
    --libdir=/usr/lib --enable-shared &&
make &&
make install &&
cp etc/{limits,login.access} /etc &&
sed 's%/var/spool/mail%/var/mail%' \
    etc/login.defs.linux > /etc/login.defs &&
ln -s vipw /usr/sbin/vigr &&
rm /bin/vipw &&
mv /bin/sg /usr/bin &&
mv /usr/lib/lib{shadow,misc}.so.0* /lib &&
ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so &&
ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so
---

Bu aşamalar boyunca Sh-utils ve Shadow Password Suite kendi groups dosyalarını oluşturdular. Eğer shadow`un yarattığını silmek isterseniz:

---
rm /bin/groups
---

Shadow-4.0.3 içeriği: chage, chfn, chpasswd, chsh, dpasswd, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck, grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers, passwd, pwck, pwconv, pwunconv, sg, useradd, userdel, usermod, vigr ve vipw


LFS-Bootscripts-1.10

Tahmini süre: 0.01 SBU Tahmini boyut: 420 KB

Biz daha iyi olduğunu düşündüğümüz için SysV tipi açılış scriptleri kullandık. Fakat siz daha farklı türler kullanmak isteyebilirsiniz. Mesela http://hints.linuxfromscratch.org/hints/bsd-init.txt (İngilizce) adresindeki yazı BSD tipi açılış scriptleri hakkında bilgi sağlayabilir.

Eğer farklı bir açılış scripti tipi kullandıysanız açılışla ilgili bölümü atlayabilirsiniz.

LFS-Bootscript`ini bu komutlarla yükleyelim:

---
cp -a rc.d sysconfig /etc &&
chown -R root:root /etc/rc.d /etc/sysconfig
---

LFS-Bootscripts-1.10 içeriği: checkfs, cleanfs, functions, halt, ifdown, ifup, loadkeys, localnet, mountfs, mountproc, network, rc, reboot, sendsignals, setclock, swap, sysklogd ve template


Gerekli Yazılımların Ayarlanması

Yazılımlar yüklendi. Artık tek yapmamız gereken bazı gerekli ayarları yapmak...


Açılış Scriptlerinin Tanımlanması


Açılış Scriptleri Hakkında Bilgi

Linux SysVinit adı verilen kendine özel bir açılış yöntemini kullanır. Bu yöntem her dağıtımda farklılık gösterebilir bu yüzden "Şu dağıtımda çalışan scriptler LFS`de de çalışır" gibi bir düşünce yanlış olur. LFS`nin kullandığı scriptler çoğu dağıtım tarafından kabul edilmiş özelliklere sahiptir.

SysVinit (bundan sonra init olarak bahsedeceğiz), çalışma seviyelerini baz alarak çalışır. 0 dan 6 ya kadar, toplam 7 tane çalışma seviyesi bulunur ve bunlardan 4 ü genellikle pek kullanılmaz. Mesela öntanımlı çalışma seviyesi 3 tür. Bu seviyeler hakkında biraz bilgi verelim:

0: bilgisayarı kapatır.
1: tek kullanıcılı mod
2: çok kullanıcılı mod (ağ yok)
3: çok kullanıcılı mod (ağ var)
4: Özelliştirilmeye ayrılmıştır. Öntanımlı olarak 3le aynı özelliklere sahiptir.
5: 4 ün aynısıdır fakat genellikle grafik arayüzlü girişler için kullanılır.
6: bilgisayarı yeniden başlatır.

Bu çalışma seviyelerini kullanmak için "init seviye" komutunu kullanacağız. Mesela bilgisayarı yeniden başlatmak için "init 6" komutu kullanılır.

/etc/rc.d altında rc?.d adlı dizinler olduğunu göreceksiniz. Bu dizinler içinde ilgili çalışma seviyesinin çalıştıracağı/durduracağı servislere bağlantılar bulunur. Eğer dikkat ettiyseniz bu dosyaların başında K veya S bulunmaktadır. S ile başlayanlar çalışma seviyesinin çalıştıracakları, K ile başlayanlar ise durduralacak olanlardır. Bu harflerin hemen yanındaki 00 dan 99 a olan kadar sayılar ise çalıştırılma sırasını belirtir. Sırası küçük olanlar daha sonra çalıştırılırlar. Fakat rc6.d dizininde S ile başlayanlar birşeyleri durdurmaya yararlar.

Asıl scriptler /etc/rc.d/init.d altında bulunurlar. Bağlantılar sadece ilgili servise stop veya start sinyali göndermeye yararlar. Örnek olarak S ile başlayanlar servise "start" sinyali verirler. Servislere bu sinyalleri sizde gönderebilirsiniz. İşte gönderebileceğiniz sinyaller:

 start	: Servisi çalıştırır.
 stop 	: Servisi durdurur.
 restart: Önce durdurur, sonra çalıştırır.
 reload : Genellikle değiştirdiğiniz ayarların aktif hale gelmesi için kullanılır.
 status : Servisin çalışıp (PID nosunu verir), çalışmadığını gösterir

Açılış scriptleri ile istediğiniz değişiklikleri yapmakta özgürsünüz. Burada size bu işleri nasıl yapacağınız hakkında bilgi verilmiştir.


LFS Sistemimizin Açılabilir Hale Getirilmesi


BitiŞ

Tebrikler!!! Kendi Linux`unuzun hazırlanmasını bitirdiniz. Uzun bir süreç oldu, umarım buna değmiştir. Ve umarız ki yeni Linux`unuzle bol eğlence yaşarsınız.

Şimdi programlarımızın debugging kısımlarını ayıracağız. Bu işlemle sistemde 10larca MB boş yer açabilirsiniz.

Bu komutları kullanmadan önce dosyalarınızın yedeklerini almalısınız. Her ne kadar %98 oranında hata yaşanmasada bu işlemlerin geri tepme olasılığı her zaman için var. Debugları atarken hatırlanması gereken en önemli kısım kütüphaneler üzerinde --strip-all un kullanılmamasıdır. (Hatta kesin güvence için kütüphaneler üzerinde bu işlemi uygulamayın)

---
find $LFS/{,usr/,usr/local/}{bin,sbin,lib} -type f \
   -exec /usr/bin/strip --strip-debug '{}' ';'
---

$LFS/etc/lfs dosyasını oluşturmak ileriki problemde yaşanacak sorunları çözmede size yardımcı olacaktır. LFS`imizin versiyon numarasını bu dosya içerisine yazalım:

---
echo 4.0 > $LFS/etc/lfs
---

Hatalar,Sorular ve Yardım

LFS karşılaşılan problemler ve sorularla ilgili bir e-posta listelerine (İngilizce) sahiptir. Bunlar,

  lfs-support LFS Kurulumu İle İlgili Sorular    
  lfs-dev LFS Geliştiriclerin Tartışma Listesi
  lfs-announce LFS Duyuruları
  lfs-security LFS Güvenlik Listesi  
  lfs-book LFS Kitap Editörleri Listesi 
  lfs-chat LFS Sohbet Listesi
  alfs-discuss Genel Automated-LFS Tartışma Listesi 
  blfs-dev BLFS Geliştiricilerinin Tartışma Listesi
  blfs-book BLFS Kitabının Editörlerinin Listesi
  blfs-support LFS ile İlgili Herhangi Bir Konuda Yardım

Bu listelerden size hitap edinine katılmak için yapmanız gereken tek şey, adresine şu şekilde bir posta göndermek. Mesela biz aşağıda blfs-support listesine üte olmak için talepte bulunduk:

Kimden: armish@linux-sevenler.de
Kime: listar@linuxfromscratch.org
Konu: (Boş bırakabilirsiniz)
Postanın Gövdesi:

subscribe blfs-support

Bu postayı gönderdikten hemen sonra size bir onay mektubu gelecektir. Bu mektupta anlatılan onay işlemini yaparsanız listeye üye olma işleminiz tamamlanmış olacaktır. Artık bu listeye posta gondermek için adresine ilgili postayı göndermeniz yeterli olacaktır.

İlgili listelerin arşivleri düzenli olarak yedeklenmekte ve saklanmaktadır. Bir soru sormadan önce bu arşivleri karıştırmanızı tavsiye ederiz. ( http://www.linuxfromscratch.org/download/packages.shtml ) Aksi takdirde listedekiler çok irdelenen bir sorunu postaladığınızda cevap yazmayabiliyorlar.

LFS ayrıca bir Sık Sorulan Sorular bölümüne sahiptir. Bir sorununuz olduğunda burayı inceleyebilirsiniz. ( http://www.linuxfromscratch.org/faq/

Ayrıca yardım için LFS nin irc kanalını da kullanabilirsiniz. irc.linuxfromscratch.org serverda #LFS kanalını LFS hakkında yardım için açılmıştır.(İngilizce) Türkçe yardım kanalı olarak irc.linux.org serverındaki #gelecek-linux `ı kullanabilirsiniz.

*LFS ile ilgili bir sorununuz, öneriniz veya şikayetiniz olduğu zaman sitemizdeki forumları kullanabilirsiniz. ( http://lfs.geleceklinux.org )

trLFS ile ilgili sorunlarınızı ise (mesela kitaptaki hatalar) postayla bana bildirebilirsiniz.

--