<<
ÇOKLU TRLFS
ANA SAYFA
>>

 
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.

 

Neden LFS ?


LFS`i kullanmak için birçok nedeniniz olabilir. Bu sistemi kullanan kişilerin çoğunun bahanesi ise hali hazırda piyasada bulunan dağıtımları beyenmemeleri ve sistemlerini optimum bir seviyede çalıştırmak istemeleridir. Buna biraz da merak eklenince LFS`i kullanmamak için hiçbir sebep kalmıyacaktır.

 

Neler Yapacağız?

 

Size biraz kendi Linux`umuzu nasıl yaratacağımızdan söz edeyim; Öncelikle LFS sistemimiz için sabit diskimizde boş bir bölüme gerek vardır. LFS`e paketleri derlemek için sistemimizde yüklü olan Linux Dağıtımını kullanacağız. İlk aşamada LFS`imize geçici olarak paketleri yükleyeceğiz, daha sonra ise bunlardan yararlanarak sistem için gerekli temel paketleri derleyeceğiz. Son aşamada ise çekirdeğimizi derleyecek ve yeni sistemimizin başlatılabilir ve kullanılabilir olması için gerekli ayarlamaları yapacağız. Size garanti ediyorum ki bu yolun sonuna geldiğinizde Linux hakkında pek çokşey öğrendiğinizi göreceksiniz. Bu işlemlerin hepsi sisteminizin gücüne bağlı olarak değişik sürelerde bitebilir, fakat kendimden örnek vermek gerekirse bu projeyi uygulamam 4-5 günümü aldı. Peki LFS bittikten sonra herşeyimiz hazır olacak mı? Hayır, bu kitabı bitirdiğinizde önünüzde sadece temel bir Linux olacaktır. Bundan sonra yapılacaklar ise bLFS adını alır ve bLFS LFS`den sonra çeşitli paketleri yüklemeniz için izlenmesi gereken yolları anlatan dökümanlardan oluşmuş bir projedir. Bununla ilgili dökümanları da elimizden geldiğince çevirerek size yardımcı olacağız. Eh, sanırım yeterince bilgi aldınız ve artık başlamaya hazırsınız.

 

Hangi Platform?

 

Bu proje x86 sistemler için hazırlanmıştır fakar basşka bir platformda bu projeyi deniyorsanız ve hatalarla karşılaştıysanız bize danışabilirsiniz. Tabii bazı hatalara çözüm bulunursanız bunları bize iletmeyi de unutmayın.

 

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 < armish@linux-sevenler.de >


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

 

Kurulumun Yapılacağı Bölümü Hazırlamak

 

Tabiiki LFS için sisteminizde boş bir bölümün bulunması gereklidir. Bu bölümün büyüklüğü tamamen sizin keyfinizle alakalıdır. İşlemler bittikten sonra arşivlerin açılmış hali ile sisteminiz 1 GB dolaylarında olacaktır. Bu arşivleri silerseniz Linux`unuzun 400-500Mb yer kapladığını görebilirsiniz. Eğer sisteminizde boş bir bölüm yok ve bölümlendirme hakkında pek fazla bilgiye sahip değilseniz size **** adresindeki yazıyı okumanızı öneririm. Gerekli olan bolumu ayırdıktan sonra bu aygıt üzerine bir dosya sistemi yaratmamız gerekecektir. Dosya tipi ise yine sizin isteğinize bağlıdır. Ben ext2 kullandım ve bu sistemi oluşturmak için

---

mke2fs /dev/xxx

 ---

komutunu kullandım. buradaki xxx tahmin edebileceğiniz gibi sizin aygıtınızın adı olacaktır.

 Not:

Bütün yazı içinde --- arasında olan eğik yazilar kullanacağınız komutlardır. Bu komutlar arasında && kullanılmaktadır, böylece bütün komutları kopyala yapıştır yöntemiyle çalıştırabilirsiniz. Tek yapmanız gereken --- arasındaki herşeyi kopyalayıp konsola kopyalamaktır.


 Eger komutları tek tek ve elle vermek isterseniz & kullanmayabilirsiniz. Programların derlenmesi sırasında kullanılan bazı opsiyonlarin açıklamasını ilgili paketin README, INSTALL veya configure --help içinde bulabilirsiniz...

 

Takas Alanın Hazırlanması

 

Takas alanı oluşturmanıza gerek yoktur çünkü zaten kullandığınız Linux`un bir takas alanı bulunmaktadır. Bu takas alanını ortak kullanabilirsiniz.


Bölümün mount edilmesi

 

mount dizini olarak biz /mnt/lfs kullandık. Önce bu dizini olşuturalım ve aygıtımızı mount edelim

 ---

mkdir -p /mnt/lfs &&
mount /dev/xxx /mnt/lfs

 ---

xxx yerine siz kendi aygıtınızın ismini koyun. Eğer /usr, /boot, /home vs vs. gibi dizinleri ayri bir aygıt üzerinden kullanmak istiyorsanız bunları tek tek mount etmeniz gerekmektedir.Örn:

 ---

mkdir -p /mnt/lfs/usr &&
mount /dev/xxx /mnt/lfs/usr

 ---
 

Kullanıcının Hazırlanması

 

LFS`i kurarken kolaylık olması amacıyla lfs adlı bir kullanıcıyla işlemlerimizi gerçekleştireceğiz. Bunun için root hakları ile bunları uygulayın:

 ---

useradd -s /bin/bash -m lfs &&
passwd lfs

 ---
 

$LFS Değişkeni Hakkında

 

Derleme işlemleri süresince LFS dizinimizin konumunu $LFS değişkeni ile belirteceğiz. Bunun için işlemlere başlamadan önce $LFS değişkenini atamalıyız.

 ---

export LFS=/mnt/lfs

 ---

Bu değişken çok önemlidir ve asla atanması unutulmamalıdır. Bu hatanın engellenmesi için bundan sonraki adimda bir yöntem uygulayacağız.

 

Gerekli İzinlerin Verilmesi ve Bash Profile Dosyası

 

Bundan sonraki işlemleri lfs adlı kullanıcıyla yapacağımız için bu kullanıcıya işlem yapacağız dizinler üzerinde hak vermeliyiz. (root olarak)

 ---

chown -R lfs $LFS

 ---

Eğer lfs-packages paketine ve onun bulunduğu dizine de izin vermediyseniz şimdi verelim.

 ---

chown -R lfs /konum
chown lfs /konum/lfs-packages-4.0.tar.gz

 ---

Artık lfs kullanıcısı ile login olabilirsiniz.

 ---

su lfs

 ---

Şimdi bu işlemleri uygulayın

 ---

cat > ~/.bash_profile << "EOF"
umask 022

LFS=/mnt/lfs
LC_ALL=POSIX
export LFS LC_ALL
EOF
source ~/.bash_profile

 ---

Artik lfs kullanıcısıyla giriş yaptığımızda bize gerekli olan değişkenler atanacak. Bunların şu anda atanmasını source komutuyla belirtmiş olduk. umask komutu ile oluşturlacak dizinlerin doğru izinlere sahip olmasını sağlayacağız.

Not:

Bundan sonraki işlemleri lfs kullanıcısıyla takip edin...

 

Geçici Dizin

 

Burada paketlerimizi yükleyeceğimiz dizini oluşturalım:

 ---

mkdir $LFS/static

 ---

Paketlerin Açılması

 

İndirdiğimiz dosyaları açmak için kullanacağımızı bazı komutları da gösterelim *.tar.gz şeklinde ise

 ---

tar zxf *.tar.gz

 ---

*.tar.bz2 şeklinde ise

 ---

tar jxf *.tar.bz2

 ---

sadece *.bz2 şeklinde ise ( mesala patchler )

 ---

bunzip2 *bz2

 ---

sadece *.gz şeklinde ise

 ---

gunzip *.gz

 ---

tar ile arşivlenmiş dizinleri açtıktan sonra kendi adlarıyla bir dizin yaratırlar. Bizim size verdiğimiz komutları bu yaratılan dizin içinde uygulayın. Eğer uygulanması gereken bir patch var ise bu patchin zipini açın ve konumunu değiştirmeyin. Verilen patch komutunu ilgili programın dizininden uygulayın.


SBU Hakkında

 

Birçok insan sistemlerine LFS`i yüklüyor ve bu sistemler farklı donanımlara sahip. Bu yüzden bir paketin derlenmesi herkeste aynı olmuyor. Bu yüzden bizde tahmini bir dakika vermek yerine bu birimi kullanmaya kara verdik ve bu birimin temelini ilk derlenecek paket olan bash`in derlenme süresi olarak aldık. Yani artık SBU ile bir paketin ne kadar sürede derleneceğini tahmin edebilirsiniz.

 

 Paketlerin Geçici Olarak Yüklenmesi

 

Bash-2.05a

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

Bu paketi yüklemeden önce dağıtımınızda /usr/lib/libncurses.a ve /usr/libcurses.a dosyalarının bulunduğundan emin olun. Genellikle eksik olan dosya /usr/lib/libcurses.a dır. Bu dosyayı diğerine bir bağlantı oluşturarak yaratalım.

 ---

ln -s /usr/lib/libncurses.a /usr/libcurses.a

 ---

Eğer her iki dosya da yoksa Ncurses development paketini yüklemeniz gerekmektedir. Artık devam edebiliriz. Bash`in yüklenmesini şu komutlarla gerçekleştirelim:

 ---

./configure --enable-static-link \
    --prefix=$LFS/static --with-curses &&
make &&
make install

 ---

Eğer kurulum sırasında şu hataya rastlarsanız

 ***

install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir'
usage:< install-info [--version] [--help] [--debug] [--maxwidth=nnn]
        [--section regexp title] [--infodir=xxx] [--align=nnn]
        [--calign=nnn] [--quiet] [--menuentry=xxx]
        [--info-dir=xxx]
        [--keep-old] [--description=xxx] [--test]
        [--remove] [--] filename
make[1]: *** [install] Error 1
make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc'
make: [install] Error 2 (ignored)

 ***

umursamayın çünkü bu hata bilgi sayfalarının yüklenemediğini göstermektedir. Bu sayfalar bash`in asıl kurulumunda yüklenecektir.

 

Bash-2.05a içeriği: bash, sh, bashbug


Binutils-2.13

 Tahmini süre: 2.05 SBU Tahmini boyut: 160 MB

Bu paketin normal kurulumu etkileyen durumlarda kötü davrandığı bilinir. Bu yüzden eğer kurulum ile ilgili bir değişken atamışsanız bunları kaldırın. (Mesala CCFLAGS,CXXFLAGS) Bu komutlarla kurulumu yapın:

 ---

mkdir ../binutils-build &&
cd ../binutils-build &&
../binutils-2.13/configure --prefix=$LFS/static --disable-nls &&
make LDFLAGS=-all-static &&
make install

 ---

Bin-utils-2.13 içeriği: addr2line, ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, strip


Bzip2-1.0.2

 Tahmini süre: 0.07 SBU Tahmini boyut: 6 MB

Bu paketi yüklemek için aşağıdaki komutları kullanın:

---

make CC="gcc -static" &&
make PREFIX=$LFS/static install

 ---

Her nekadar LFS`nin bir parçası olmasada tar`a uygulanan bir patch ile bzip2`li dosyaların açılabilmesinin sağlandığını belirtmeliyim. Biz buna daha sonra deyineceğiz.

 

Bzip2-1.0.2 içeriği:bzip2, bunzip2, bzcat, bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzless, bzip2recover, bzmore


Diffutils-2.8.1

 Tahmini süre: 0.39 SBU Tahmini boyut: 10 MB

Bu komutları kullanarak diffutils`ı yükleyin:

 ---

LDFLAGS=-static CPPFLAGS=-Dre_max_failures=re_max_failures2 \
    ./configure --prefix=$LFS/static --disable-nls &&
make &&
make install

 ---

Diffutils-2.8.1 içeriği: cmp, diff, diff3, sdiff


Fileutils-4.1

 Tahmini süre: 0.94 SBU Tahmini boyut: 40 MB

Eğer sisteminiz bir AMD vede glibc-2.2.3 kullanıyorsanız büyük bir ihtimal ile statik yükleme yüzünden "Segmention Fault" hatasını alacaksınızdır. Bunun çözümü olarak aşağıdaki komutla programı patchleyin.

---

patch -Np1 -i ../fileutils-4.1.patch

 ---

Fileutils paketini bu komutlarla yükleyin:

 ---

LDFLAGS=-static \
    ./configure --disable-nls --prefix=$LFS/static &&
make &&
make install

 ---

Yükleme sonrasında hata olup olmadığını kontrol etmek için $LFS/static/bin/ls i çalıştırın. Eğer bir hata aldıysanız, yüklemeyi patch uyguladıysanız yeninden paketi açın ve patchi uygulamadan yükleme yapın. Eğer patchi uygulamamışsanız ve bu hatayı alıyorsanız patchi uygulayarak yeniden yüklemeyi deneyiniz.


Fileutils-4.1 içeriği: chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, shred, sync, touch ve vdir


Findutils-4.1

 Tahmini süre: 0.12 SBU Tahmini boyut: 8 MB

Bu paketi yüklemeden önce bir patch uygulamamız gerekli. Aşağıdaki komutlarla yüklemeyi gerçekleştirebilirsiniz.

 ---

patch -Np1 -i ../findutils-4.1.patch &&
CPPFLAGS=-Dre_max_failures=re_max_failures2 \
    ./configure --prefix=$LFS/static &&
make LDFLAGS=-static &&
make install

 ---

Findutils-4.1 içeriği: bigram, code, find, frcode, locate, updatedb ve xargs


Gawk-3.1.1

 Tahmini süre: 0.39 SBU Tahmini boyut: 17 MB

Yüklemek için aşağıdaki komutları kullanın:

 ---

CPPFLAGS=-Dre_max_failures=re_max_failures2 \
    ./configure --prefix=$LFS/static --disable-nls &&
make LDFLAGS=-static &&
make install

 ---

Gawk-3.1.1 içeriği: awk, gawk, gawk-3.1.1, grcat, igawk, pgawk-3.1.1 ve pwcat


GCC-3.2

 Tahmini süre: 9.48 SBU Tahmini Boyut: 326 MB

GCC`i yüklemeden önce patch uygulamamız gerekmektedir. Bu paketin öntanımlı yükleme ayarlarında değişikilk yapıldığı zaman kötü davrandığı bilinir. Bu yüzden eğer daha önceden CCFLAFS veya CXXFLAGS gibi değişkenlere değerler atadıysanız bunları kaldırın. Bu komutlarla gcc yüklenmesini gerçekleştirin:

 ---

patch -Np1 -i ../gcc-3.2.patch &&
patch -Np1 -i ../gcc-3.2-nofixincludes-2.patch &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-3.2/configure --prefix=/static --enable-languages=c \
   --disable-nls --disable-shared &&
echo "#define HAVE_GAS_HIDDEN 1" >> gcc/auto-host.h &&
make BOOT_LDFLAGS=-static bootstrap &&
make prefix=$LFS/static install &&
ln -s gcc $LFS/static/bin/cc

 ---

GCC-3.2 içeriği: c++, c++filt, cc, cc1, cc1plus, collect2, cpp, cpp0, g++, gcc, gccbug, gcov ve tradcpp0


Grep-2.5

 Tahmini süre: 0.26 SBU Tahmini boyut: 5 MB

Bu komutlarla grep`i yükleyelim:

 ---

LDFLAGS=-static CPPFLAGS=-Dre_max_failures=re_max_failures2 \
    ./configure --prefix=$LFS/static --disable-nls \
    --disable-perl-regexp &&
make &&
make install

 ---

Grep-2.5 içeriği: egrep, fgrep, grep


Gzip-1.2.4a

 Tahmini süre: 0.04 SBU Tahmini boyut: 2 MB

Gzip`i bu komutlarla yükleyin:

 ---

./configure --prefix=$LFS/static &&
make LDFLAGS=-static &&
make install

 ---

Gzip-1.2.4a içeriği: gunzip, gzexe, gzip, uncompress, zcat, zcmp, zdiff, zforce, zgrep, zmore ve znew


Make-3.79.1

 Tahmini süre: 0.26 SBU Tahmini boyut: 8 MB

Bu komutlarla make`i yükleyin:

 ---

./configure --prefix=$LFS/static --disable-nls &&
make LDFLAGS=-static &&
make install

 ---

Yükleme sırasında bu uyarıyı görürseniz,

 ***

chgrp: changing group of `/mnt/lfs/static/bin/make': Operation not permitted
/mnt/lfs/static/bin/make needs to be owned by group kmem and setgid;
otherwise the `-l' option will probably not work. You may need special
privileges to complete the installation of /mnt/lfs/static/bin/make.

 ***

aldırmayın çünkü make`in, kmem ve setgid gruplarına ait olması gerekmez.

 

Make-3.79.1 içeriği: make


Patch-2.5.4

 Tahmini süre: 0.10 SBU Tahmini boyut: 3 MB

Bu komutları kullanarak Patch`i yükleyebilirsiniz:

 ---

CPPFLAGS=-D_GNU_SOURCE \
    ./configure --prefix=$LFS/static &&
make LDFLAGS=-static &&
make install

 ---

Patch-2.5.4 içeriği: patch


Sed-3.02

 Tahmini süre: 0.09 SBU Tahmini boyut: 2 MB Bu komutları kullanarak sed`i yükleyelim: ---

CPPFLAGS=-Dre_max_failures=re_max_failures2 \
    ./configure --prefix=$LFS/static &&
make LDFLAGS=-static &&
make install

 ---

Sed-3.02 içeriği: sed


Sh-Utils-2.0

 Tahmini süre: 0.47 SBU Tahmini boyut: 42 MB

Bu paketi yüklemeden önce glibc dosyalarında oluşan bir çakışmayı yok etmek için patch uygulamamız gerekmektedir. Eğer glibc-2.1.x kullanıyorsanız bu patchi uygulayabilirsiniz. Eğer bu konuda kararsızsanız bu patchi uygulayın:

 ---

patch -Np1 -i ../sh-utils-2.0.patch

 ---

Bu komutlarla Sh-utils`i yükleyelim:

 ---

./configure --prefix=$LFS/static \
    --disable-nls &&
make LDFLAGS=-static &&
make install

 ---

Eğer "make install" sırasında şu uyarılarla karşılaşırsanız:

 ***

WARNING: insufficient access; not installing su
NOTE: to install su, run 'make install-root' as root

 ***

gönül rahatlığı ile umursamayabilirsiniz çünkü su`nun root olarak yüklenmesi gerekmektedir. Bunu biz asıl yükleme sırasında yerine getireceğiz...

 

Sh-utils-2.0 içeriği: basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami ve yes


Tar-1.13

 Tahmini süre: 0.25 SBU Tahmini boyut: 10 MB

Tar`a bzip2 dosyalarını açma desteğini kazandırmak için öncelikle bu patchimizi uygulayalım:

 ---

patch -Np1 -i ../tar-1.13.patch

 ---

Daha sonra bu komutlarla tar`ı yükleyelim

 ---

./configure --prefix=$LFS/static --disable-nls &&
make LDFLAGS=-static &&
make install

 ---

Tar-1.13 içeriği: tar ve rmt


Texinfo-4.2

 Tahmini süre: 0.47 SBU Tahmini boyut: 19 MB

Bu komutları kullanarak texinfo`yu yükleyelim:

 ---

LDFLAGS=-static ./configure --prefix=$LFS/static \
    --disable-nls &&
make &&
make install

 ---

Texinfo-4.2 içeriği: info, infokey, install-info, makeinfo, texi2dvi ve texindex


Textutils-2.1

 Tahmini süre: 0.95 SBU Tahmini boyut: 49 MB

Textutils`i yüklemek için bu komutları kullanın:

 ---

CPPFLAGS=-Dre_max_failures=re_max_failures2 \
    ./configure --prefix=$LFS/static \
    --disable-nls &&
make LDFLAGS=-static &&
make install

 ---

Textutils-2.1 içeriği: cat, cksum, comm, csplit, cut, expand, fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, tac, tail, tr, tsort, unexpand, uniq ve wc


Util-Linux-2.11u

 Tahmini süre: 0.09 SBU Tahmini boyut: 9 MB

Burada bize lazim olan sadece iki program var; mount, umount. Bu yüzden tüm paketi yüklemeyeceğiz:

 ---

./configure &&
make -C lib &&
make -C mount LDFLAGS=-static mount umount &&
cp mount/{mount,umount} $LFS/static/bin

 ---
 

 Asıl Yüklemeler

 

Debugging


Kısaca özetlemek gerekirse şimdiye kadar derlediğimiz programlar debugging desteği ile derlendi. Fakat debugging özelliği hataları anlamamızı kolaylıştırdığı kadar programı da şişirir. Eğer yer konusunda pek cömert davranamıyorsanız bu komutla debugging özelliklerinden kurtulabilirsiniz:

 ---

strip --strip-debug $LFS/static/bin/*

 ---

Chroot Ortamı

 

Artık chroot yaparak asıl yazılımları yüklemenin zamanı geldi. chroot`u sadece root olarak çalıştırabilirsiniz bu yüzden root kullanıcısı olun ve bu komutu çalıştırın:

 ---

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

 ---

Burada -i nin kullanılmasını sebebi bütün değişkenlerin kaldırılmasındır. Bu komuttan hemen sonra elimizde sadece 4 değişken olacak : PATH, PS1, HOME ve TERM. Bundan sonra LFS değişkenine ihtiyaç duymayacağız çünkü bunun yerine / kullanacağız. Eğer kurulumda geçerli olmasını istediğiniz değişiklikler varsa CCFLAGS ve CXXFLAGS gibi değişkenleri tekrar atayın. Artık bu noktadan sonra kullanacağımız bütün komutları chroot tan sonra yapacağız. Eğer sistemi herhangi bir nedenden dolayı kapatırsanız işlemlere devam etmek için chroot yapmayı ve proc u mount etmeyi unutmayın (proc`a daha sonra değinilecektir).


Sahip Değişimi

 

Burada /static dizinin haklarını root`a vereceğiz çünkü daha sonra ekliyeceğimiz kullanıcıların buradaki programları kullanmasına izin vermek pek akıl karı olmaz.

---

chown -R 0:0 /static

 ---

Burada root:root yerine 0:0 kullandık çünkü daha adları çözümleyecek olan glibc`i yüklemedik.


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.


PROC Dosya Sistemini Bağlamak

 

Programların düzgün bir şekilde yüklenmesi/çalışması için proc dosya sisteminin de chroot`la birlikte bağlanması gerekir. Kullandığınız linux sisteminizde daha önceden proc`un bağlı olması sorun yaratmaz çünkü proc sanal bir dosya sistemidir. Bu komutla proc`u /proc dizine bağlıyalım:

 ---

mount proc /proc -t proc

 ---

Bu işlem sırasında buna benzer hatalar alırsanız:

 ***

warning: can't open /etc/fstab: No such file or directory not enough memory

 ***

umarsayın çünkü bunların sebebi sistemin daha tam olarak yüklenmiş olmaması ve eksik dosyaların bulunmasıdır.


MTAB Bağlantısının Yaratılması

 

Şimdi yapmamız gereken ise /proc/mount u belirten /etc/mtab bağlantısını oluşturmak.

 ---

ln -sf /proc/mounts /etc/mtab

 ---

Böylece /et/mtab ın güncel olmasını ve sadece-okunur şekilde bağlanmalarda oluşacak sorunları çözmüş oluyoruz.


Proc dosya sisteminin bağlanabilmesi için kernelinize bu desteğin verilmiş olması lazım. Eğer öntanımlı ayarlarda bir dieğişiklik yapmadıysanız bu konuda bir probleminiz olmayacaktır.


Bash ve sh Bağlantılarının Yaratılması


Programları daha tam olarak yüklemediğimiz için sh ve bash dosyalarının statik dizinimizde olduğunu göstermemiz gerekibiliyor. Aşağıdaki komutlarla bağlantılarımızı oluşturalım:

 ---

ln -s /static/bin/bash /bin/bash &&
ln -s bash /bin/sh

 ---

passwd ve group Dosyalarının Oluşturulması


root kullanıcısının sisteme giriş yapabilmesi bunu passwd dosyasında belirtmemiz gerekir:

 ---

echo "root:x:0:0:root:/root:/bin/bash" > /etc/passwd

 ---

Bu dosyada şifre yerine "x" i sadece öylesine yazdık. root un şifresi daha sonra koyulacaktır. Şimdi de group dosyamızı oluşturalım:

 ---

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
EOF

 ---

Buradaki gruplar herhangi bir standardın parçası değildir. Ekstra grupları sadece bir sonraki bölümde kuracagığımız MAKEDEV için belirtiyoruz. Burada sadece 1 hakki ile bin`e karışılmamasını öneriyoruz. Diğer grupların (tabii ki root un dışında) haklarını(GID) kendi isteğinize göre verebilirsiz, bu grupların adlarının olması yeterlidir.


Aygıtların Oluşturulması (Makedev-1.7)

 Tahmini süre: 0.07 SBU Tahmini boyut: 50KB

Makedev-1.7.bz2 paketi kendine ait bir dizin yaratmadığı için bu komutları kullanacağız:

 ---

cp MAKEDEV-1.7 /dev/MAKEDEV &&
cd /dev &&
chmod 754 MAKEDEV

 ---

Çoğu kişi aygıtları oluşturmak için bu komutu kullanır:

 ---

./MAKEDEV -v generic

 ---

Eğer devts kullanmak istiyorsanız o zaman bu komutu tercih etmelisiniz:

 ---

./MAKEDEV -v generic-nopty

 ---

Eğer hangisini kullanacağınızdan emin değilseniz 1.sini kullanmanızı öneririm çünkü bu komutla sadece ihtiyacınız olan aygıtların kurulumu yapılır. Devpts seçeneğini ise geliştiriciler için öneriyoruz çünkü bu komutla sisteme gerek olmayan fakat ekstra aygıtlar kurulur.


MAKEDEV hda[1-20] den hdh[1-20] e kadar olan disk aygıtlarını oluşturur. Fakat bunların hepsini kullanılamaz çünkü kernelin bazı maksimum limitleri bulunmaktadır.

 

MAKEDEV-1.7 içeriği: MAKEDEV


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.


Man-pages-1.52

 Tahmini süre: 0.01 SBU Tahmini boyut: 6 MB

Bu komutla man-pages i yükleyelim:

 ---

make install

 ---

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


GCC-3.2

 Tahmini süre: 13.26 SBU Tahmini boyut:221 MB

Bu paketi yüklemeden önce patch uygulayacağız.

 

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. Not:Diğer derleyiciler daha LFS ile test edilmemiştir.


GCC`i yüklemek için kullanacağımız komutlar:

 ---

patch -Np1 -i ../gcc-3.2.patch &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-3.2/configure --prefix=/usr --enable-shared \
    --enable-languages=c,c++ --enable-threads=posix \
    --with-slibdir=/lib --enable-__cxa_atexit \
    --enable-clocale=gnu &&
make bootstrap &&
make install &&
ln -s ../usr/bin/cpp /lib &&
ln -s ../bin/cpp /usr/lib &&
ln -s gcc /usr/bin/cc

 ---

GCC-3.2 içeriği: c++, c++filt, cc, cc1, cc1plus, collect2, cpp, cpp0, g++, gcc, gccbug, gcov ve tradcpp0


Zlib-1.1.4

 Tahmini süre: 0.07 SBU Tahmini boyut: 1 MB

Bu komutlarla zlib`i yükleyelim:

 ---

./configure --prefix=/usr --shared &&
make LIBS="libz.so.1.1.4 libz.a" &&
make LIBS="libz.so.1.1.4 libz.a" install &&
mv /usr/lib/libz.so.* /lib &&
ln -sf ../../lib/libz.so.1 /usr/lib/libz.so &&
cp zlib.3 /usr/share/man/man3

 ---

Findutils-4.1

 Tahmini süre: 0.10 SBU Tahmini boyut: 3 MB

Bu paketi yüklemeden önce patchlememiz gerektiğinden patch dosyasını açtığınızdan emin olun.

 

Kullanılacak komutlar:

---

patch -Np1 -i ../findutils-4.1.patch &&
./configure --prefix=/usr &&
make libexecdir=/usr/bin &&
make libexecdir=/usr/bin install

 ---

FHS notları

 

Öntanımlı olarak updatedb`nin konumu /usr/var dır. Eğer FHS standartlarına uygun bir şekilde konum olarak /var/lib/misc/locatedb kullanmak isterseniz yükleme için bu komutları kullanın :

 ---

patch -Np1 -i ../findutils-4.1.patch &&
./configure --prefix=/usr &&
make localstatedir=/var/lib/misc libexecdir=/usr/bin &&
make localstatedir=/var/lib/misc libexecdir=/usr/bin install

 ---

Eğer çelişkideyseniz ilk komutları tercih edebilirsiniz.

 

Findutils-4.1 içeriği: bigram, code, find, frcode, locate, updatedb ve xargs


Gawk-3.1.1

 Tahmini süre: 0.39 SBU Tahmini boyut: 15 MB

Bu pakedi yüklemeden önce patchlememiz gerekmektedir.

 

Uyarı: Patch`i uyguladıktan sonra sakın make uninstall`u kullanmayın çünkü kütüphane dizini değiştiğinden tüm kütüphane dosyalarının silinmesine neden olabilirsiniz!

 

Bu komutlarla Gawk`ı yükleyelim:

 ---

patch -Np1 -i ../gawk-3.1.1-2.patch &&
./configure --prefix=/usr --libexecdir=/usr/bin &&
make &&
make install

 ---

Gawk-3.1.1 içeriği: awk, gawk, gawk-3.1.1, grcat, igawk, pgawk, pgawk-3.1.1 ve pwcat


Ncurses-5.2

 Tahmini süre: 1.88 SBU Tahmini boyut: 22 MB

Paketin yüklenmeden önce patchlenmesi gerektiği için patchi açtığınızdan emin olun.

 

Ncurses`ı yüklemek için bu komutları kullanalım:

 ---

patch -Np1 -i ../ncurses-5.2-2.patch &&
./configure --prefix=/usr --with-shared &&
make &&
make install &&
chmod 755 /usr/lib/*.5.2 &&
mv /usr/lib/libncurses.so.5* /lib &&
ln -s libncurses.a /usr/lib/libcurses.a &&
ln -sf ../../lib/libncurses.so.5 /usr/lib/libncurses.so &&
ln -sf ../../lib/libncurses.so.5 /usr/lib/libcurses.so

 ---

Ncurses-5.2 içeriği: captoinfo, clear, infocmp, infotocap, reset, tack, tic, toe, tput ve tse


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


Bison-1.35

 Tahmini süre: 0.27 SBU Tahmini boyut: 6 MB

Bison`u yüklemek için bu komutları kullanalım:

 ---

./configure --prefix=/usr &&
make &&
make install

 ---

Bazı programlar bison yerine yacc`ı ararlar. Bu yüzden yacc adında, bison`u çağıran bir bash scripti yazacağız:

 ---

cat > /usr/bin/yacc << "EOF"
#!/bin/sh
# Begin /usr/bin/yacc

exec /usr/bin/bison -y "$@"

# End /usr/bin/yacc
EOF
chmod 755 /usr/bin/yacc

 ---

Bison-1.35 içeriği: bison ve yacc


Less-374

 Tahmin süre: 0.13 SBU Tahmini boyut: 2 MB

Less`i yüklemek için bu komutları kullanalım:

 ---

./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc &&
make &&
make install

 ---

Less-374 içeriği:less, lessecho ve lesskey


Groff-1.18

 Tahmin süre: 1.08 SBU Tahmini boyut: 18 MB

Bu paketi yüklemek için kullanmamız gereken komutlar:

 ---

./configure --prefix=/usr &&
make PROCESSEDEXAMPLEFILES="" &&
make PROCESSEDEXAMPLEFILES="" install &&
ln -s soelim /usr/bin/zsoelim &&
ln -s eqn /usr/bin/geqn &&
ln -s tbl /usr/bin/gtbl

 ---

Groff-1.18 içeriği: addftinfo, afmtodit, eqn, geqn, grn, grodvi, groff, grog, grolbp, grolj4, grops, grotty, gtbl, hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff ve zsoelim


Textutils-2.1

 Tahmini süre: 0.83 SBU Tahmini boyut: 17 MB

Textutils`i yüklemek için bu komutları kullanacağız:

 ---

./configure --prefix=/usr &&
make &&
make install &&
mv /usr/bin/{cat,head} /bin

 ---

Textutils-2.1 içeriği: cat, cksum, comm, csplit, cut, expand, fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, tac, tail, tr, tsort, unexpand, uniq ve wc


Sed-3.02

 Tahmini süre: 0.09 SBU Tahmini boyut: 2 MB

Yükleme yapmak için kullanacağımız komutlar:

 ---

./configure --prefix=/usr --bindir=/bin &&
make &&
make install

 ---

Sed-3.02 içeriği: sed


Flex-2.5.4a

 Tahmini süre:0.05 SBU Tahmini boyut: 3 MB

Flex`i bu komutları kullanarak yükleyelim:

 ---

./configure --prefix=/usr &&
make &&
make install

 ---

Bazı programlar flex yerine lex`i ararlar. Flex ise lex için daha iyi bir alternatiftir. Bu sorunu çözmek için aşağıdaki scripti kullancağız:

 ---

cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex

exec /usr/bin/flex -l "$@"

# End /usr/bin/lex
EOF
chmod 755 /usr/bin/lex

 ---

Flex-2.5.4a içeriği: flex, flex++ ve lex


Binutils-2.13

 Tahmini süre: 2.48 SBU Tahmini boyut: 94 MB

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.

 

Bu komutları kullanarak Binutils`i yükleyelim:

 ---

mkdir ../binutils-build &&
cd ../binutils-build &&
../binutils-2.13/configure --prefix=/usr --enable-shared &&
make tooldir=/usr &&
make tooldir=/usr install &&
make tooldir=/usr install-info &&
cp ../binutils-2.13/include/libiberty.h /usr/include

 ---

Binutils-2.13 içeriği: addr2line, ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings ve strip


Fileutils-4.1

 Tahmini süre: 0.68 SBU Tahmini boyut: 17 MB

Fileutils`i yüklemek için bu komutları kullanalım:

 ---

./configure --prefix=/usr --bindir=/bin &&
make &&
make install &&
ln -s ../../bin/install /usr/bin

 ---

Fileutils-4.1 içeriği: chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, shred, sync, touch ve vdir


Sh-utils-2.0

 Tahmini süre: 0.42 SBU Tahmini boyut: 12 MB

Sh-utils`e yüklenmenden önce hostname-patch`i nin uygulanmasını gerekmektedir. Bu komutlarla Sh-utils`i yükleyelim:

 ---

patch -Np1 -i ../sh-utils-2.0-hostname.patch &&
./configure --prefix=/usr &&
make &&
make install &&
mv /usr/bin/{basename,date,echo,false,pwd} /bin &&
mv /usr/bin/{sleep,stty,su,test,true,uname} /bin &&
mv /usr/bin/chroot /usr/sbin

 ---

FHS notları

 

Bu paketle birlikte linux`unuza test adlı bir program yüklenecektir. Shell scriptlerde test yerine daha çok " [ Koşul ] " kullanılmaktadır. Bu yüzden [ çalıştırılabilir dosyasını yaratmanızı öneririz:

 ---

ln -s test /bin/[

 ---

Sh-utils-2.0 içeriği: basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami ve yes


Gettext-0.11.5

 Tahmini süre: 0.99 SBU Tahmini boyut: 39 MB

Gettext`i yüklemek için bu komutları kullanacağız:

 ---

./configure --prefix=/usr &&
make &&
make install

 ---

Gettext-0.11.5 içeriği: config.charset, config.rpath, gettext, gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, project-id, team-address, trigger, urlget, user-email ve xgettext


Net-tools-1.60

 Tahmini süre: 0.16 SBU Tahmini boyut: 5 MB

Bu komutlarla Net-tools`u yükleyelim:

 ---

make &&
make update

 ---

Eğer öntanımlı olarak bütün değerlere "evet" cevabını verecekseniz :

 ---

yes "" | make &&
make update

 ---

komutlarını tercih edebilirsiniz. Eğer make süresince sorulacak sorulara ne cevap vereceğiniz bilmiyorsanız ikinci komutu kullanmanızı tavsiye ederiz. Öntanımlı değerlerle size gerekli olacak protokoller yüklenecektir (TCP,PPP vs vs.). Fakat hala bunları aktifleştirmek için kernel`e destek vermeniz gerekmektedir. (Kernel derlenmesi sırasında)


Net-tools-1.60 içeriği:

 arp, dnsdomainname (link to hostname), domainname, hostname, ifconfig, nameif, netstat, nisdomainname, plipconfig, rarp, route, slattach ve ypdomainname

Perl-5.8.0

 Tahmini süre: 3.81 SBU Tahmini boyut: 52 MB

Bu komutlara Perl`ü yükleyelim:

 ---

./configure.gnu --prefix=/usr &&
make &&
make install

 ---

Eğer perl`ün yüklenme şeklinde değişiklik yapmak istiyorsanız configure scriptini çalıştırabilirsiniz. Fakat bununla ilgilenmiyorsanız yukarıdaki komutları kullanabilirsiniz.

 

Perl-5.8.0 içeriği: a2p, c2ph, dprofpp, find2perl, h2ph, h2xs, perl, perl5.6.1, perlbug, perlcc, perldoc, pl2pm, pod2html, pod2latex, pod2man, pod2text, pod2usage, podchecker, podselect, pstruct, s2p ve splain

 

Linux threads-2.2.5 Kılavuz Sayfaları

 Tahmini süre: 0.01 SBU Tahmini boyut: 1.5 MB

glibc-linuxthreads arşivini açtığınızda karşınıza iki dizin çıkacaktır. Burada biz linuxthreads dizinine gireceğiz (linuxthreads_db değil!).


Daha sonra bu komutları kullanın:

 ---

make -C man &&
make -C man install

 ---

M4-1.4

 Tahmini süre: 0.08 SBU Tahmini boyut: 3 MB

M4`ü yüklemek için bu komutları kullanacağız:

 ---

./configure --prefix=/usr &&
make &&
make install

 ---

M4-1.4 içeriği: m4


Texinfo-4.2

Tahmini süre: 0.43 SBU Tahmini boyut: 12 MB

Bu pakedi yüklemek için kullanacağımız komutlar:

 ---

./configure --prefix=/usr &&
make &&
make install &&
make TEXMF=/usr/share/texmf install-tex

 ---

Texinfo-4.2 içeriği: info, infokey, install-info, makeinfo, texi2dvi ve texindex


Autoconf-2.53

 Tahmini süre: 0.05 SBU Tahmini boyut: 6 MB

Autoconf`u yüklemek için bu komutları kullanacağız:

 ---

./configure --prefix=/usr &&
make &&
make install

 ---

Autoconf-2.53 içeriği: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate ve ifnames


Automake-1.6.2

 Tahmini süre: 0.03 SBU Tahmini boyut: 6 MB

Automake`i yüklemek için kullanacağımız komutlar:

 ---

./configure --prefix=/usr &&
make install

 ---

Automake-1.6.2 içeriği: acinstall, aclocal, aclocal-1.6, automake, automake-1.6, compile, config.guess, config.sub, depcomp, elisp-comp, install-sh, mdate-sh, missing, mkinstalldirs, py-compile ve ylwrap


Bash-2.05a

 Tahmini süre: 0.82 SBU Tahmini boyut: 14 MB

Bash`i yüklemek için bu komutları kullanmamız gerekli:

 ---

./configure --prefix=/usr --bindir=/bin &&
make &&
make install &&
exec /bin/bash --login

 ---

Bash-2.05a içeriği: bash, sh ve bashbug


File-3.39

 Tahmini süre: 0.21 SBU Tahmini boyut: 2 MB

Bu pakedi yüklemek için kullanacağımız komutlar:

 ---

./configure --prefix=/usr --datadir=/usr/share/misc &&
make &&
make install

 ---

File-3.39 içeriği: file


Libtool-1.4.2

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

Libtool`u yüklemek için bu komutları kullanacağız:

 ---

./configure --prefix=/usr &&
make &&
make install

 ---

Libtool-1.4.2 içeriği: libtool ve libtoolize


Bin86-0.16.3

 Tahmini süre: 0.07 SBU Tahmini boyut: 2 MB

Bin86`yı şimdilik sadece lilo yükleyecekseniz derleyin. Grub veya bir başkasını kullanacaksınız bu paketi yüklemeyebilirsiniz.

 

Fakat şunu da unutmamak gerekir ki en sonunda yükleyeceğiniz bir paket buna bağımlılık gösterebilir.

 

Bu paketi yüklemek için kullanılacak komutlar:

---

make &&
make PREFIX=/usr install

 ---

Bin86-0.16.3 içeriği: as86, as86_encap, ld86, nm86, objdump86 ve size86


Bzip2-1.0.2

 Tahmini süre: 0.09 SBU Tahmini boyut: 3 MB

Bzip2`i bu komutlarla yükleyelim:

 ---

make -f Makefile-libbz2_so &&
make &&
make install &&
cp bzip2-shared /bin/bzip2 &&
ln -s libbz2.so.1.0 libbz2.so &&
cp -a libbz2.so* /lib &&
rm /lib/libbz2.so &&
ln -s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so &&
rm /usr/bin/{bunzip2,bzcat,bzip2} &&
mv /usr/bin/{bzip2recover,bzless,bzmore} /bin &&
ln -s bzip2 /bin/bunzip2 &&
ln -s bzip2 /bin/bzcat

 ---

Bzip-2.1.0.2 içeriği: bunzip2, bzcat, bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless ve bzmore


Ed-0.2

 Tahmini süre: 0.06 SBU Tahmini boyut: 3 MB

Ed, direk sizin kullanacağınız bir program değildir. Patch işlemi sırasında kullanılır, büyük bir ihtimal ile buna da gerek kalmıyacaktır çünkü son günlerde daha çok diff patchler tercih edilmeye başlandı.

 

Ed`i yüklemek için bu komutları kullanacağız: (Patch`i açmayı unutmayın)

 ---

patch -Np1 -i ../ed-0.2.patch &&
./configure --prefix=/usr &&
make &&
make install &&
mv /usr/bin/{ed,red} /bin

 ---

Ed-0.2 içeriği: ed ve red


Kbd-1.06

 Tahmini süre: 0.12 SBU Tahmini boyut: 8 MB

Bu pakedi yüklemeden önce bir patch uygulamamız gerekmektedir. Bu yüzden ilgili patch`i açmayı unutmayın.

 

Kbd`i yüklemek için kullanacağımız komutlar:

 ---

patch -Np1 -i ../kbd-1.06-3.patch &&
./configure &&
make &&
make install

 ---

Kbd-1.06 içeriği: chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, psfaddtable, psfgettable, psfstriptable, psfxtable, resizecons, setfont, setkeycodes, setleds, setlogcons, setmetamode, setvesablank, showfont, showkey, unicode_start ve unicode_stop


Diffutils-2.8.1

 Tahmini süre: 0.31 SBU Tahmini boyut: 6 MB

Bu pakedi yüklemek için kullanacağımız komutlar:

---

./configure --prefix=/usr &&
make &&
make install

 ---

Diffutils-2.8.1 içeriği: cmp, diff, diff3 ve sdiff


E2fsprogs-1.27

 Tahmini süre: 0.80 SBU Tahmini boyut: 13 MB

Bu komutlarla E2fsprogs`u yükleyelim:

 ---

mkdir ../e2fsprogs-build &&
cd ../e2fsprogs-build &&
../e2fsprogs-1.27/configure --prefix=/usr --with-root-prefix="" \
    --enable-elf-shlibs &&
make &&
make install &&
make install-libs &&
install-info /usr/share/info/libext2fs.info /usr/share/info/dir

 ---

E2fsprogs-1.27 içeriği: badblocks, chattr, compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label, fsck, fsck.ext2, fsck.ext3, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mklost+found, resize2fs, tune2fs ve uuidgen


Grep-2.5

 Tahmini süre: 0.22 SBU Tahmini boyut: 5 MB

Grep`i yüklemek için bu komutları kullanacağız:

 ---

./configure --prefix=/usr --bindir=/bin &&
make &&
make install

 ---

Grep-2.5 içeriği: egrep, fgrep ve grep


Gzip-1.2.4a

 Tahmini süre: 0.03 SBU Tahmini boyut: 2 MB

Gzip`i yüklemek için kullanacağımız komutlar:

 ---

patch -Np1 -i ../gzip-1.2.4b.patch &&
./configure --prefix=/usr &&
cp gzexe.in{,.backup} &&
sed 's%"BINDIR"%/bin%' gzexe.in.backup > gzexe.in &&
make &&
make install &&
mv /usr/bin/gzip /bin &&
rm /usr/bin/{gunzip,zcat} &&
ln -s gzip /bin/gunzip &&
ln -s gzip /bin/zcat &&
ln -s gunzip /bin/uncompress

 ---

Gzip-1.2.4a içeriği: gunzip, gzexe, gzip, uncompress, zcat, zcmp, zdiff, zforce, zgrep, zmore ve znew


Man-1.5k

 Tahmini süre: 0.05 SBU Tahmini boyut: 2 MB

Man`ı yüklemek için aşağıdaki komutları kullanın:

 ---

patch -Np1 -i ../man-1.5k.patch &&
PATH=$PATH:/usr/bin:/bin \
    ./configure -default -confdir=/etc &&
make &&
make install

 ---

Not: Eğer SGR çıkış özellğini kullanmak istemiyorsanız, man.conf da nroff`a -c opsiyonunu eklemelisiniz.


Eğer Manla ilgili daha ayrıntılı bilgi edinmek iterseniz http://hints.linuxfromscratch.org/hints/man.txt (İngilizce) adresine bir göz atabilirsiniz...

 

Make-1.5k içeriği: apropos, makewhatis, man, man2dvi, man2html ve whatis


Lilo-22.2

 Tahmini süre: 0.08 SBU Tahmini boyut: 3 MB

Biz, kendimizi lilo`yu, rahat ettiğimizden dolayı açılış yöneticisi olarak seçtik. Bu adreste Grub la ilgili bir ipucu bulabilirsiniz : http://hints.linuxfromscratch.org/hints/grub-howto.txt


Lilo`yu yüklemek için kullanacağımız komutlar:

 ---

make &&
make install

 ---

Bu pakedin yüklenmesi bazı makinelerde hatayla sonuçlanıyor. Eğer siz de yükleme sırasında hata aldıysanız Makefile içindeki CFLAGS`tan -g i silerek yeniden yüklemeyi deneyin.

 

Eğer standart lilo menüsünü değiştirmek ve bunun yerine bir resim kullanmak isterseniz buradaki ipucuna bir göz atın: http://hints.linuxfromscratch.org/hints/bootlogo.txt


Lilo-22.2 içeriği: lilo, mkrescue ve keytab-lilo.pl


Make-3.79.1

 Tahmini süre: 0.22 SBU Tahmini boyut: 6 MB

Bu komutları kullanarak Make`i yüklemek için kullanabilirsiniz:

 ---

./configure --prefix=/usr &&
make &&
make install &&
chgrp root /usr/bin/make &&
chmod 755 /usr/bin/make

 ---

Make-3.79.1 içeriği: make


Modutils-2.4.19

 Tahmini süre: 0.13 SBU Tahmini boyut: 3 MB

Bu paketi yüklemek için kullanmamız gereken komutlar:

 ---

./configure &&
make &&
make install

 ---

Modutils-2.4.19 içeriği: depmod, genksyms, insmod, insmod_ksymoops_clean, kallsyms, kernelversion, ksyms, lsmod, modinfo, modprobe ve rmmod


Netkit-base-0.17

 Tahmini süre: 0.03 SBU Tahmini boyut: 1 MB

Netkit-base`i yüklemek için bu komutları kullanacağız:

 ---

./configure &&
make &&
make install &&
cp etc.sample/{services,protocols} /etc

 ---

Netkit-base-0.17 içeriği: inetd ve ping


Patch-2.5.4

 Tahmini süre: 0.10 SBU Tahmini boyut: 2 MB

Patch`i bu komutlarla yükleyelim:

 ---

CPPFLAGS=-D_GNU_SOURCE \
    ./configure --prefix=/usr &&
make &&
make install

 ---

Patch-2.5.4 içeriği: patch


Procinfo-18

 Tahmini süre: 0.02 SBU Tahmini boyut: 168 KB

Bu pakedi yüklemek için kullanacağımız komutlar:

 ---

make LDLIBS=-lncurses &&
make install

 ---

Proc-18 içeriği: lsdev, procinfo ve socklist


Procps-2.0.7

 Tahmini süre: 0.14 SBU Tahmini boyut: 2 MB

Bu pakedi yüklemeden bir patch uygulamamız gerekiyor. Bu yüzden ilgili patch i açtığınızdan emin olun.

 

Procps-2.0.7 i yüklemek için bu komutları kullanacağız:

 ---

patch -Np1 -i ../procps-2.0.7.patch &&
make &&
make XSCPT="" install &&
mv /usr/bin/kill /bin

 ---

Procps-2.0.7 içeriği: free, kill, oldps, pgrep, pkill, ps, skill, snice, sysctl, tload, top, vmstat, w ve watch


Psmisc-21

 Tahmini süre: 0.11 SBU Tahmini boyut: 2 MB

Pakedi yüklemek için kullanmamız gereken komutlar:


---


./configure --prefix=/usr --exec-prefix=/ &&
make &&
make install

 ---

Bu aşamada Psmisc`in pidof programı yüklenmez. Bunun pek bir önemi yok çünkü daha sonra bu program sysvinit yüklenirken kurulacaktır. Burada sizin yapmanız gereken ise Sysvinit paketini kullanıp, kullanmayacağınıza karar vermenizdir. Eğer kullanacaksını pidof`un man sayfasını kaldırmamız gerek:

 ---

rm /usr/share/man/man1/pidof.1

 ---

Eğer Sysvinit kullanmayacaksınız /bin/pidof bağlantsını oluşturmamız gereklidir:

 ---

ln -s killall /bin/pidof

 ---

Eğer bu konuda kararsızsanız size Sysvinit`i kullanmanızı öneririz.


Psmics-21 içeriği: fuser, killall ve pstree


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

 

Sysklogd-1.4.1

 Tahmini süre: 0.03 SBU Tahmini boyut: 472 KB

Bu komutlarla Sysklogd`i yükleyelim:

 ---

make &&
make install

 ---

Sysklogd-1.4.1 içeriği: klogd ve syslogd


Sysvinit-2.84

 Tahmini süre: 0.06 SBU Tahmini boyut: 1 MB

Çalışma seviyeleri değiştirildiğinde bütün çalışan programlara bununla ilgili sinyaller gönderilir ve ekrana "Sending processes the TERM signal" mesajı basıtırılır. Eğer bu mesajı değiştirmek isterseniz bunu init.c dosyası içinden yapabilirsiniz. Eğer gerek duymuyorsanız geçin gitsin... Bizim yaptığımız değişiklik:

 ---

cp src/init.c{,.backup} &&
sed 's/Sending processes/Sending processes started by init/g' \
    src/init.c.backup > src/init.c

 ---

Bu değişiklikten sonra ekrana "Sending processes started by init the TERM signal" basılacaktır."

 

Sysvinit`i yüklemek için uygulamamız gereken komutlar:

 ---

make -C src &&
make -C src install

 ---

Sysvinit-2.84 içeriği: halt, init, killall5, last, lastb, mesg, pidof, poweroff, reboot, runlevel, shutdown, sulogin, telinit, utmpdump ve wall


Tar-1.13

 Tahmini süre: 0.26 SBU Tahmini boyut: 6 MB

Eğer tarla beraber bzip2 dosyalarinin da desteğinin sağlanmasını istiyorsanız ( -j opsiyonu ) aşağıdaki komutla patch`i uygulayın:

 ---

patch -Np1 -i ../tar-1.13.patch

 ---

Tar`ı yüklemek için bu komutları kullanalım:

 ---

./configure --prefix=/usr \
    --libexecdir=/usr/bin --bindir=/bin &&
make &&
make install

 ---

Tar-1.13 içeriği: rmt ve tar


Util-linux-2.11u

 Tahmini süre: 0.38 SBU Tahmini boyut: 10 MB

Biz LFS de normalde /etc olan dizini, /var/lib/hwclock olarak kullanıyoruz. Hwclock`u kullanmak için bu komutları uygulayın:

 ---

cp hwclock/hwclock.c{,.backup} &&
sed 's%etc/adjtime%var/lib/hwclock/adjtime%' \
    hwclock/hwclock.c.backup > hwclock/hwclock.c &&
mkdir -p /var/lib/hwclock

 ---

Util-linux`u bu komutlarla yükleyelim:

 ---

./configure &&
make HAVE_SLN=yes &&
make HAVE_SLN=yes install

 ---

Util-linux-2.11u içeriği: agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock, ipcrm, ipcs, isosize, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash, parse.tcsh, pg, pivot_root, ramsize, raw, rdev, readprofile, rename, renice, rev, rootflags, script, setfdprm, setsid, setterm, sfdisk, swapoff, swapon, test.bash, test.tcsh, tunelp, ul, umount, vidmode, whereis ve write


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


Vim

 

Öntanımlı olarak vi "compatible' dediğimiz modda çalışır. Bazıları bunu sever fakat bizim size önerimiz yüksek performans için aşağıdakileri uygulamanızdır. Bu komutları kullanarak /root/.vimrc dosyasını oluşturalım:'"

 ---

cat > /root/.vimrc << "EOF"
" Begin /root/.vimrc

set nocompatible
set bs=2

" End /root/.vimrc
EOF

 ---

Glibc

 

Her ne kadar glic dosyaları bulamadığında öntanımlı değerleri kullansa da bazı durumlarda başarılı olamaz(mesala ağda). Bu yüzden aşağıdaki komutlarla bir /etc/nsswitch.conf dosyası oluşturacağız:

 ---

cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf

passwd: files
group: files
shadow: files

publickey: files

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: db files

# End /etc/nsswitch.conf
EOF

 ---

Bundan sonra "tzselect' i çalıştırın ve zamanla ilgili ayarlarınız yapın. Ayarlar tamamlandığında size bulunduğuz konumu verecektir. Bu konumu aşağıdaki komutta "konum' yerine yazın.'"'"

 ---

ln -sf ../usr/share/zoneinfo/konum /etc/localtime

 ---

mesela konum değeri EST5EDT veya Canada/Eastern benzeri birşey olabilir. Bunlara örnek vermek gerekirse :

 ---

ln -sf ../usr/share/zoneinfo/EST5EDT /etc/localtime

veya

ln -sf ../usr/share/zoneinfo/Canada/Eastern /etc/localtime

 ---

Dinamik Yükleyici

 

Öntanımlı olarak dinamik yükleyici(/lib/ld-linux.so.2) gerekli kütüphaneler için /usr/lib ve /lib dizinlerine bakar. Eğer bundan farklı bir dizinde kütüphane dosyalarınız bulunuyorsa bunları /etc/ld.so.conf a eklemelisiniz. Yeni bir dosya yaratalım:

 ---

cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF

 ---

Sysklogd

 

Aşağıdaki komutları uygulayın:

 ---

cat > /etc/syslog.conf << "EOF"
# Begin /etc/syslog.conf

auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *

# End /etc/syslog.conf
EOF

 ---

Shadow Password Suite


Burada şifrelemeyle ilgili bilgi verilmeyecektir. Bu konuda geniş bir bilgiyi ilgili pakedin yardım dosyalarında bulabilirsiniz. Fakat şunu bilmeniz gerekir ki pop3,ftp,httpd gibi servislerin çalışması için şifrelerin gizlenmesi gerekmektedir.

 

Gizlenmiş şifreleri aktif hale getirmek için:

 ---

/usr/sbin/pwconv

 ---

Sysvinit

 

Yeni bir /etc/inittab dosyası oluşturalım:

 ---

cat > /etc/inittab << "EOF"
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab
EOF

 ---

Klavye

 

Linux`u yanlış bir klavye ayarı ile kullanmak çok zordur. Eğer US klavye kullanıyorsanız bu bölümü atlayabilirsiniz.

 

Öntanımlı klavyenizi belirtmek için kendi klavyenizin *.map.gz dosyasını aşağıdaki gibi bağlantılayın.

 ---

ln -s /klavye/konumu /usr/share/kbd/keymaps/defkeymap.map.gz

 ---

Mesela

 ---

ln -s i386/qwerty/nl.map.gz /usr/share/kbd/keymaps/defkeymap.map.gz

 ---

Yapabileceğiniz bir diğer yöntem ise klavye dosyanızı direk olarak çekirdeğin içine derlemektir ki böylece ne şekilde kullanırsanız kullanın klavyede sorun yaşamayacaksınızdır. Çekirdeğe klavyeyi yamamak için kullanacağınız komut:

 ---

loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz > \
    /usr/src/linux/drivers/char/defkeymap.c

 ---

/var/run/utmp, /var/log/wtmp ve /var/log/btmp Oluşturulması

 

login, shutdown ve uptime gibi programlar çalışırken bu dosyalardan bilgi okurlar. Bu dosyalar kimin ne zaman giriş yaptığı, hatalı girişler ve bilgisayarın ne zaman açıldığı gibi bilgileri barındırırlar. Aşağıdaki komutlarla ilgili dosyaları oluşturalım:

 ---

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} &&    
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}

 ---

Root Şifresinin Tanımlanması

 

Root için bir şifre seçin ve aşağıdaki komutla bunu geçerli hale getirin:

 ---

passwd root

 ---

 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.


Setclock Ayarlanması

 

Setclock, donanımızdan saati okuyarak bunu yerel saat olarak ayarlar.


Eğer sisteminiz GMT zamanını kullanıyorsa aşağıdaki komutlarla /etc/sysconfig/localtime ayar dosyasını oluşturalım:

 ---

cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock

UTC=1

# End /etc/sysconfig/clock
EOF

 ---

Eğer GMT kullanmıyorsanız yukarıdaki UTC değerini "0" yapın. İsterseniz bu konuda daha ayrıtılı bilgiye http://hints.linuxfromscratch.org/hints/time.txt (İngilizce) adresinden ulaşabilirsiniz.


Loadkeys Scriptine İhtiyacım var mı?

 

Daha önceden klavyenizini çekirdek içine derlediyseniz bu scripti çalıştırmanıza gerek kalmayacaktır. Bu yüzden etc/rc.d/rcsysinit.d/S70loadkeys bağlantısını kaldırabilirsiniz. Eğer her çekirdeğin içine klavyenizi derlemek istemiyorsanız bu scripti kaldırmayın, işinize yaracaktır.


Sysklogd Ayarlanması


Bu servis her 20 dakikada bir sistemle ilgili bir kayıt dosyası oluşturur. Eğer bunu iptal etmek isterseniz öncelikle size "man sysklogd" komutuyla ilgili bilgileri okumanızı tavsiye ederim.


Localnet Scriptinin Ayarlanması

 

Bu servis sistemin hostname ismini atar. Bununla ilgili ayar dosyası ise /etc/sysconfig/network`dür. Aşağıdaki komutla ayar dosyamızı oluşturalım:

 ---

echo "HOSTNAME=lfs' > /etc/sysconfig/network'"

 ---

Buradaki "lfs' sistemin hostname`idir. Siz bunu kendi isteğinize göre değiştirmelisiniz.'"


/etc/hosts Dosyasının Oluşturulması

 

Eğer bir ağ yapılandırmayı düşünüyorsanız ip adresinize arar vermeniz gerekmektedir. Ayar dosyasına gireceğimiz değerler genellikle bu formatta olacaktır:

 ---

IP adresi hostum.domainim.org takmaadlar

 ---

Size bazı ip adreslerini verelim:

 ---

Tip  (Ağ)
        A     10.0.0.0
        B     172.16.0.0 - 172.31.0.0
        C     192.168.0.0 - 192.168.255.0

 ---

Eğer bir ağ kartı tanıtmayacaksanız ayar dosyanız bunun gibi olmalı:

 ---

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (no network card version)

127.0.0.1 www.domainim.com "HOSTNAME değeri" localhost

# End /etc/hosts (no network card version)
EOF

 ---

Eğer bir ağ kartı kullanacaksanız ise :

 ---

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)

127.0.0.1 localhost.localdomain localhost
192.168.1.1 www.domainim.org "HOSTNAME değeri"

# End /etc/hosts (network card version)
EOF

 ---

Tabii ki burada 192.168.1.1 ağdaki ipimiz oluyor. Buradaki değerleri kendinize göre ayarlamanız gerekmektedir.


Network Scriptinin Ayarlanması

 

Bu bölüm yalnızca ağ kartı yapılandırması ile ilgilidir.

 

Öntanımlı Ağ Geçidinin Ayarlanması

 

Eğer bir ağda istemciyseniz bu ayarları girmeniz gerekecektir:

 ---

cat >> /etc/sysconfig/network << "EOF"
GATEWAY=192.168.1.2
GATEWAY_IF=eth0
EOF

 ---

Bu dosyadaki değerler kendi sisteminize göre değişiklik gösterebilir. GATEWAY = Ağ geçidinin ipsi GATEWAY_IF = ağ yüzü için kullanılacak aygit


Ağ Ayar Dosyalarının Oluşturulması

 

Hangi ağ arayüzünün kullanılacağı/durdurulacağı ile ilgili bilgiler /etc/sysconfig/network-devices dizinde bulunur. Buradaki dosyalar "ifconfig.xyz" şeklindedir. (xyz yerine ağ kartının ismi gelecektir. Mesela: eth0 , eth0:1 )

 

Eğer /etc/sysconfig/network-devices dizinin yerini değiştirmek isterseniz /etc/sysconfig/rc deki network_devices`i değiştirmeyi unutmayın.

 

Şimdi örnek bir ifconfig.eth0 dosyası oluşturalım:


---


cat > /etc/sysconfig/network-devices/ifconfig.eth0 << "EOF"
ONBOOT=yes
IP=192.168.1.1
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
EOF

 ---

Tabii ki buradaki değerler de duruma göre değişitirilecektir.


 LFS Sistemimizin Açılabilir Hale Getirilmesi

 

/etc/fstab Dosyasının Oluşturulması

 

Hangi bölümlerin nereye mount edilmesi ile ilgili bilgiler için /etc/fstab dosyası kullanılır. Aşağıdaki komutları uygulayarak yeni bir fstab dosyası oluşturalım:

 ---

cat > /etc/fstab << "EOF"
# Begin /etc/fstab

# filesystem   mount-point fs-type    options     dump    fsck-order

/dev/*LFS*     /           *fs-type*  defaults    1       1
/dev/*swap*    swap        swap       pri=1       0       0
proc           /proc       proc       defaults    0       0

# End /etc/fstab
EOF

 ---

*LFS*, *swap* ve *fs-type* değelerini siz kendinizinkilerle değiştirmelisiniz.


Eğer bir reiserfs ekliyecekseniz sondaki 1 1 değerini 0 0 yapmanız gerekmektedir. fstab dosyasında kullanabileceğiniz değişik opsiyonlar bulunmaktadır. Mesela:

---

devpts         /dev/pts    devpts     gid=4,mode=620 0    0

 ---

Mesela bir usb aygıtına örnek vermeniz gerekirse:

 ---

usbdevfs       /proc/bus/usb usbdevfs defaults    0       0

 ---

Son iki verdiğimiz örnek sadece çekirdekte gerekli destekler sağlanırsa uygulanabilir.


Linux-2.4.19

 Tahmini süre: Tüm öntanımlı ayarlarla: 4.20 SBU Tahmini boyut: Tüm öntanımlı ayarlarla: 181 MB

Yeni bir çekidek derlerken uygulamamız gereken ekstra bir adım bulunmaktadır. Çekirdeğin ayarlarını yapmak ve derlemek. Çekirdek derlerken birkaç farklı yöntem bulunmaktadır. Eğer bu kitabın uyguladığı yolu beğenmiyorsanız README dosyasını bir gözden geçirmenizi tavsiye ederim.

 

Eğer daha önceden çekirdek derlediyseniz, .config dosyasını $LFS/usr/src/linux-2.4.19 altına kopyalayın. Eğer bunu yaparsanız make menuconfig adımını atlayabilirsiniz. Size önerim derleme sırasında emin olmadığınız seçeneklerde HELP bölümüne bakmanızdır.


Eğer çekirdekle birlikte modülleri de kullanmak istiyorsanız bir /etc/modules.conf dosyasına ihtiyacınız vardır. Bununla ilgili geniş bilgiyi http://www.tldp.org/HOWTO/Kernel-HOWTO.html (İngilizce) adresinden edinebilirsiniz.


Çekirdeği derlemek için aşağıdaki komutları kullanın:

 ---

make mrproper &&
make menuconfig &&
make dep &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/lfskernel &&
cp System.map /boot

 ---

Not: Eğer sisteminizin platformu farklıysa arch/i386/boot/bzImage dosyasının konumu da farklı olabilir.


Lilo`nun Ayarlanması

 

Sistemimizi açılır hale getirebilmek için liloyu ayarlamamız gerekmektedir. Lilo`yu chroot ortamından çalıştırmak bazı sorunlara neden olabilir. Bu yüzden öncelikle varolan lilo`yu kullanacağız.


Öncelikle lfskernel dosyamızı kopyalayalım. Bunun için chroot ortamından çıkmamız gerekli:

 ---

logout
cp $LFS/boot/lfskernel /boot

 ---

Uygulayacağımız ikinci adım ise lilo.conf dosyasına bazı eklemeler yapmak:

 ---

cat >> /etc/lilo.conf << "EOF"
image=/boot/lfskernel
        label=lfs
        root= aygıt
        read-only
EOF

 ---

aygıt yerine siz kendi aygıtınızı yazın. Mesela "root=/dev/hda1". Eğer ana dizinin dosya tipi reiserfs ise read-only değerini read-write olarak değiştirmeniz gerecektir.


Şimdi ise açılış yöneticimizi güncelleyelim:

 ---

/sbin/lilo -v

 ---

Sonuncu adımda ise dağıtımımızın nin ayar dosyası ile LFS ninkini senkronize edelim: ($LFS değişkenin doğru olduğundan emin olun)

 ---

cp /etc/lilo.conf $LFS/etc &&
cp $(grep "image.*=" /etc/lilo.conf | cut -f 2 -d "=") $LFS/boot

 ---
 

 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

 ---

LFS Sayacı


Kitabı bitirdiniz ve bir LFS kullanıcısı olarak sayılmak mı istiyorsunuz? O zaman http://linuxfromscratch.org/cgi-bin/lfscounter.cgi (İngilizce) adresine gidin ve kayıt olun.


Sistemi Yeniden Başlatmak


Herşeyimiz hazır. Sırada yeniden başlatma işlemi var. Bu işlemden önce bazı aygıtları ayırmak isteyebilirsiniz:

 ---

umount $LFS/proc &&
umount $LFS

 ---

Eğer çeşitli dizinler için ayrı aygıtlar kullanıyorsanız bunları ayrı ayrı ayırmanız gerekmektedir:

 ---

umount $LFS/proc &&
umount $LFS/usr &&
umount $LFS/home &&
umount $LFS

 ---

Artık yeniden başlatabilirsiniz:

 ---

/sbin/shutdown -r now

 ---

LFS`inizi başlattıktan sonra, LFS nin lilo sunu etkinleştirmek için :

 ---

/sbin/lilo

 ---

komunutunu uygulayın.


Artık yapacaklarımız bittiği için static dizinini de kaldırabiliriz :

 ---

rm -rf /static

 ---

Eğer bazı işlemleri yeniden yapmanız gerektiğini düşünüyorsanız, bu dizinin yedeğini alabilirsiniz.

 

Artık herşey hazır ve yeni Linux`unuz yazılım yüklenmek için sabırsızlanıyor...

 

İyi Eğlenceler

 

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, <listar@linuxfromscratch.org> 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 <blfs-support@linuxfromscratch.org> 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. <armish@linux-sevenler.de>

 --