|
![]() 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> -- |