ÞíèêñîèäÕÀÊÅÐ\¹45\Cåíòÿáðü\2002ÑÎÇÄÀÅÌ ÑÂÎÉ ËÈÍÓÊÑ-ÄÈÑÒÐÈÁÓÒÈÂÊèðèëë Òèõîíîâ (aka_shaman@mailru)ÑÎÇÄÀÅÌ ÑÂÎÉ ËÈÍÓÊÑ-ÄÈÑÒÐÈÁÓÒÈÂÏðèâåò, ìíîãîóâàæàåìûé ëþáèòåëü Ëèíóêñà Íàâåðíÿêà òû óæå äàâíî ïîñòàâèë ñâîåãî Ïèíãâèíà è òåïåðü ðàäóåøüñÿ æèçíèÍî ïîçâîëü-êà ñïðîñèòü, êàêîé äèñòðèáóòèâ òû èñïîëüçóåøü? Îòâåò î÷åâèäåí: â ïðåîáëàäàþùåì áîëüøèíñòâå ñëó÷àåâ ýòîáóäåò Red Hat, Mandrake, ASP, SuSe, â áîëåå ðåäêèõ ñëó÷àÿõ - Debian èëè Slackware Ïî÷òè âñå ýòè è ìíîãèå äðóãèåäèñòðèáóòèâû, êîèõ â ïîñëåäíåå âðåìÿ ïîÿâèëîñü íåâèäàííîå ìíîæåñòâî, îáúåäèíÿåò îäíî îáùåå ñâîéñòâî - â íèõ ìíîãîíåíóæíîãî ëè÷íî òåáå: áîëüøèíñòâî ïðîãðàìì, èäóùèõ â ïîñòàâêå, òû è èñïîëüçîâàòü íå áóäåøü Ñåãîäíÿ ÿ ðàññêàæó î òîì,êàê ñîáðàòü ñâîé äèñòðèáóòèâ Ëèíóêñà, çàòî÷åííûé êîíêðåòíî ïîä ñâîè íóæäû À ïîìîæåò íàì â ýòîì ïðîåêò LFS×òî åñòü LFSÝòà àááðåâèàòóðà ðàñøèôðîâûâàåòñÿ êàê Linux FromStarch, ÷òî åñòü íå ÷òî èíîå, êàê ïðîåêò ñáîðêè ÎÑËèíóêñ ñ íóëÿ èç èñõîäíèêîâ Ïîñëåäíÿÿ âåðñèÿ (íàìîìåíò íàïèñàíèÿ ñòàòüè - 33) ñ ïîøàãîâûì ðóêîâîäñòâîìïî óñòàíîâêå äîñòóïíà íà ñàéòå http://wwwlinuxfromscratchorgÒåáå ñëåäóåò ñêà÷àòü LFS-book èÊîíå÷íî, óñòàíàâëèâàòü ñ äèñòðèáóòèâà óäîáíåå èáûñòðåå - íà òî îí è äèñòðèáóòèâ, ÷òîáû ðàáîòàòü íàëþáîé ìàøèíå Íî ïðè êîìïèëÿöèè ñâîåé âåðñèèËèíóêñà, ïðè ïîìîùè ôëàãîâ îïòèìèçàöèè, ìîæíîäîáèòüñÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè â ñðåäíåìíà 30%, òå ïðàêòè÷åñêè íà òðåòü!LFS-packages-33 (ìîæíî êà÷àòü êàê îäíèì àðõèâîì,òàê è ïî ÷àñòÿì) Ñèñòåìà ñîáèðàåòñÿ íà óæå óñòàíîâëåííîìËèíóêñå, â êà÷åñòâå êîòîðîãî ïîäîéäåò ëþáîéäèñòðèáóòèâ, ãëàâíîå, ÷òîáû â íåì áûëè êîìïèëÿòîðè íåîáõîäèìûå ñèñòåìíûå óòèëèòû Ñáîðêà LFS ïîìîæåòòåáå â ïîëíîé ìåðå ðàçîáðàòüñÿ â ðàáîòå Ëèíóêñàè, ÷òî íàèáîëåå âàæíî, â òîì, êàê íàñòðîèòü åãî äëÿòâîèõ ñîáñòâåííûõ íóæä è çàäà÷ LFS çàíèìàåò î÷åíüìàëî ìåñòà, ïîâòîðþ, ýòî ñâÿçàíî ñ òåì, ÷òî ïðè óñòàíîâêåñ îáû÷íîãî äèñòðèáóòèâà îáû÷íî ñòàâÿòñÿ ïðîãðàììû,êîòîðûå òû íèêîãäà íå áóäåøü èñïîëüçîâàòüèëè î÷åíü ðåäêî À LFS íåòðóäíî óñòàíîâèòü íà 100Ìá, ÷òî íå ÿâëÿåòñÿ ïðåäåëîì: LFS ñ âåá-ñåðâåðîìApache, íà êîòîðîì ðàáîòàåò wwwlinuxfromscratchorg,çàíèìàåò 8 Ìá!  äàëüíåéøåì îíè ïëàíèðóþò óìåíüøèòüðàçìåð ñâîåãî ñåðâåðà äî 5 Ìá Ïîïûòàéñÿ-êàñäåëàòü ýòî ñ Red Hat èëè ñ Mandrake =)ÏðèñòóïèìÊàê ÿ óæå ãîâîðèë, ñáîðêà ïðîèçâîäèòñÿ íà óæåèìåþùåìñÿ Ëèíóêñå Äëÿ íà÷àëà íàäî ïîäãîòîâèòüðàçäåë äèñêà, êóäà òû áóäåøü óñòàíàâëèâàòü LFSÐåêîìåíäóåòñÿ îòäåëüíàÿ ïàðòèöèÿ ðàçìåðîì 1 GBÑòàíäàðòíàÿ ôàéëîâàÿ ñèñòåìà Ëèíóêñ - ext2fs, îäíàêîâñå áîëüøóþ ïîïóëÿðíîñòü çàâîåâûâàþò òíæóðíàëèðóåìûå ôàéëîâûå ñèñòåìû, è äëÿ LFS òûìîæåøü âûáðàòü ëþáóþ äîñòóïíóþ íà ñåãîäíÿøíèéäåíü Êñòàòè, ñàì ÿ èñïîëüçóþ ReiserfsÏîñëå ýòîãî ïðèñòóïàåì íåïîñðåäñòâåííî ê ñáîðêå,êîòîðàÿ ñîñòîèò èç 2 ýòàïîâÝòàï ïåðâûéÍà ýòîì ýòàïå ìû äîëæíû ñòàòè÷åñêèñêîìïèëèðîâàòü áàçîâûå óòèëèòû,íåîáõîäèìûå äëÿ ðàáîòû LFSÏðè êîìïèëÿöèè ïðîãðàììà èñïîëüçóåòñòàíäàðòíûå ôóíêöèè, òàêèå,êàê îòêðûòèå ôàéëà, âûâîä èíôîðìàöèèíà ýêðàí è îáåñïå÷åíèå âçàèìîäåéñòâèÿñ ïîëüçîâàòåëåì Ýòèôóíêöèè ñîäåðæàòñÿ â áèáëèîòåêàõÁèáëèîòåêà glibc, êîòîðóþ ìû óñòàíîâèì ïîçæå, îäíàèç ãëàâíûõ áèáëèîòåê, ñîäåðæàùèõ ýòè èñïîëüçóåìûåïðîãðàììàìè ôóíêöèè Ýòè áèáëèîòåêè î÷åíüáîëüøèå, íàïðèìåð, libca èìååò ðàçìåð 2,5 ìáÏÎ×ÅÌÓ ÌÛ ÈÑÏÎËÜÇÓÅÌ ÑÒÀÒÈ×ÅÑÊÓÞ ÊÎÌÏÈËßÖÈÞ?Ïðè ñòàòè÷åñêîé êîìïèëÿöèè êîä áèáëèîòåêè äîáàâëÿåòñÿê êîäó ïðîãðàììû, ñóùåñòâåííî óâåëè÷èâàÿåå ðàçìåð, íî òàêèì îáðàçîì íå íàðóøàåòñÿ öåëîñòíîñòüÊîãäà æå ïðîèñõîäèò äèíàìè÷åñêàÿ êîìïèëÿöèÿ,áèáëèîòåêà õðàíèòñÿ â îòäåëüíîì ôàéëå, à ïðîãðàììûïî ìåðå íàäîáíîñòè îáðàùàþòñÿ ê íåìó Âðåçóëüòàòå ÷åãî âñå ïðîãðàììû ðàáîòàþò ñ îäíîé êîïèåéáèáëèîòåêè è èìåþò ñðàâíèòåëüíî ìåíüøèéðàçìåð Íî ïîñëå óñòàíîâêè íîâîãî êîðíåâîãî êàòàëîãàíàøåé íîâîé ñèñòåìû áèáëèîòåêè, íàõîäÿùèåñÿâ êàòàëîãàõ /lib, /usr/lib, /usr/local/lib è òä, áóäóòíåäîñòóïíû, ïîýòîìó äèíàìè÷åñêè ñêîìïèëèðîâàííûåïðîãðàììû íå áóäóò ðàáîòàòüÂîò ïî÷åìó ïðè êîíôèãóðèðîâàíèè ïðîãðàìì íàäîóêàçûâàòü ôëàãè --enable-static-link, --disablesharedè --static ïðîöåññå óñòàíîâêè íà ýêðàíå ìîãóò ïîÿâëÿòüñÿïðåäóïðåæäåíèÿ êîìïèëÿòîðà Íà ýòî íå íóæíîîáðàùàòü âíèìàíèÿ, âñå èäåò ïó÷êîì Âáîëüøèíñòâå ñëó÷àåâ ýòî ïðîèñõîäèò èç-çà ñèíòàêñèñàÑ èëè Ñ++, òå íåêîòîðûå èñõîäíûåòåêñòû èñïîëüçóþò ñòàðûé ñòàíäàðò ýòèõ ÿçûêîâ,÷òî íå êðèòè÷íî Õàðàêòåðíàÿ îñîáåííîñòü:ïðè êîìïèëÿöèè ïðîãðàìì ïîä ðóòîì ìîãóò âîçíèêíóòüïðîáëåìû Ýòî ñâÿçàíî ñ òåì, ÷òî íåêîòîðûåñòàðûå ôàéëû â ñèñòåìå ìîãóò áûòü ïåðåïèñàíûíîâûìè Äàáû ýòîãî èçáåæàòü, ìû áóäåìêîìïèëèðîâàòü ïðîãðàììû èç-ïîä íåïðèâèëåãèðîâàííîãîïîëüçîâàòåëÿ Ïóñòü ðàçäåë äëÿLFS áóäåò ïîäìîíòèðîâàí â /mnt/lfs Äëÿ íà÷àëàîïðåäåëèì ïåðåìåííóþ LFS:export LFS=/mnt/lfsÒåïåðü ñàìîå âðåìÿ ñîçäàòü ïîëüçîâàòåëÿ lfs,èç-ïîä êîòîðîãî áóäåì íåïîñðåäñòâåííî óñòàíàâëèâàòüLFS:useradd -s /bin/bash -m lfs &&passwd lfsÏîñëå ñîçäàíèÿ ïîëüçîâàòåëÿ èçìåíèì/ñìåíèìâëàäåëüöà íàøåé íîâîéïàðòèöèè:chown -R lfs $LFSÒåïåðü çàõîäè â ñèñòåìó êàê lfs èñîçäàâàé íîâûé ïðîôèëü äëÿ óäîáíîéðàáîòû:cat > ~/bash_profile
Tips&TricksÒû äàâíî çàãëÿäûâàë â/var/log? Ãîâîðèøü òàìà íè÷åãîíå ïîíÿòü? Õî÷ó òåáå íåìíîãîïîìî÷ü, ÷òîá õîòü ÷àñòüëîãîâ òåáå óäàâàëîñü ïîíÿòüÒàê âîò, ãëàâíûì ñèñòåìíûìëîããåðîì â *nix'àõ ÿâëÿåòñÿäåìîí syslogd /etc/syslogconf - ôàéë êîíôèãóðàöèè äëÿýòîãî äåìîíà Äàâàé ðàññìîòðèìåãî ïîáëèæå Ïðàâèëà çàäàþòñÿäâóìÿ ïîëÿìè: ÷òî ïèñàòüè êóäà  ñâîþ î÷åðåäüïåðâîå ïîëå äåëèòñÿ íà [òèïñîîáùåíèÿ][è åãî ïðèîðèòåò]Òèïîâ íåìíîãî:auth/authpriv/cron/daemon/kern/mail/news/uucp Ïðèîðèòåòïîêàçûâàåò äåìîíó, ÷òî ïèñàòü,à ÷òî îòïðàâëÿòü â êîñìîñÂñåãî ïðèîðèòåòîâ âîñåìü,âîò îíè â ïîðÿäêå óáûâàíèÿâàæíîñòè:emerg - îçíà÷àåò, ÷òî ñèñòåìàïî÷òè (èëè óæå :) ðóõíóëà;alert - î÷åíü îïàñíàÿ îøèáêà,êîòîðóþ ñòîèò íåìåäëåííîóñòðàíèòü;cirt - êðèòè÷åñêàÿ îøèáêà,ïðîáëåìû ñ ñîôòîì èëè æåëåçîì;err - ñîîáùåíèå îá îøèáêå;warning - îáûêíîâåííîå ïðåäóïðåæäåíèå;notice - óâåäîìëåíèå;info - ñîîáùåíèå îò ïðîãðàììûïîëüçîâàòåëþ;debug - îòëàäî÷íàÿ èíôîðìàöèÿ;none - èñïîëüçóåòñÿ äëÿ èñêëþ÷åíèÿñîîáùåíèé;Âòîðîå ïîëå óêàçûâàåò syslog,÷òî åìó äåëàòü ñ ñîîáùåíèÿìèÎáû÷íî âñå îòñûëàåòñÿ âopt &&for dirname in $LFS/usr $LFS/usr/localdomkdir $dirnamecd $dirnamemkdir bin etc include lib sbin share srcln -s share/manln -s share/docln -s share/infocd $dirname/sharemkdir dict doc info locale man nls misc terminfo zoneinfocd $dirname/share/manmkdir man{1,2,3,4,5,6,7,8}done &&cd $LFS/var &&mkdir -p lock log mail run spool tmp opt cache lib/misclocal &&cd $LFS/opt &&mkdir bin doc include info lib man &&cd $LFS/usr &&ln -s /var/tmpÒåïåðü ñàìîå âðåìÿ óñòàíîâèòü bash Ñíà÷àëà íàäîïðîâåðèòü, åñòü ëè ó òåáÿ ôàéëû /usr/lib/libcursesaè /usr/lib/libncursesa Åñëè îòñóòñòâóþò îáà ôàéëà,òåáå íóæíî óñòàíîâèòü ïàêåò ñ íàçâàíèåì ncursesdevÅñëè ýòîò ïàêåò óñòàíîâëåí èëè ïîñëå óñòàíîâêè,ïðîâåðü åùå ðàç íàëè÷èå ôàéëîâ Åñëè ôàéëlibcursesa îòñóòñòâóåò, òî íàäî ñîçäàòü ññûëêó:cd /usr/lib &&ln -s libncursesa libcursesaÏîñëå ýòîãî ìîæíî óñòàíàâëèâàòü bash:/configure --enable-static-link --prefix=$LFS/usr --bindir=$LFS/bin --with-curses &&make &&make install &&cd $LFS/bin &&ln -sf bash shÒî÷íî òàêèì æå îáðàçîì óñòàíàâëèâàþòñÿ è îñòàëüíûåïðîãðàììû: binutils, bzip2, diffutils, fileutils,gawk, gcc, grep, gzip, linux kernel, make, patch, sed,sh-utils, tar, texinfo, textutils Èíñòðóêöèè ïî óñòàíîâêåâñåãî ýòîãî åñòü â LFS-bookÏîñëå ýòîãî ñîçäàåì ôàéëû passwd è group, ìîíòèðóåìôàéëîâóþ ñèñòåìó procÂñå Ïåðâûé ýòàï óñòàíîâêè çàêîí÷åíïàïêó /var/log/ â ðàçëè÷íûåôàéëû (mail, messages,segure) Äàâàé òåïåðü ðàññìîòðèìíåáîëüøîé ïðèìåð÷èê:*info;mailnone;authprivnone;cronnone /var/log/messagesïîëó÷àåòñÿ, ÷òî ñîîáùåíèÿ ñîâñåõ èñòî÷íèêîâ ðàâíûå èëèáîëüøèå óðîâíÿ info ïèøóòñÿâ ôàéë /var/log/messages, íîñîîáùåíèÿ îò êàòåãîðèè mail,authpriv è cron òóäà íå ïîïàäàþòÑ ñîîáùåíèÿìè îòauthpriv ñòîèò îáðàùàòüñÿ îñòîðîæíåå,òå ïèñàòü èõ â íåäîñòóïíûéïðîñòîìó ñìåðòíîìóôàéë, ïîòîìó ÷òî îíèìîãóò ñîäåðæàòü äàæå ïàðîëèâ îòêðûòîì âèäåÍó âîò è âñå, óäà÷è òåáå âñëåæêå çà ñâîèì ïèíãâèíîìmioni mioni@mailkzÝòàï âòîðîéÍà ýòîì ýòàïå ìû äîëæíû óñòàíîâèòü îäíó èç ñàìûõãëàâíûõ áèáëèîòåê - glibc, è ïîñëå ýòîãî óæå äèíàìè÷åñêèïåðåêîìïèëèòü óæå óñòàíîâëåííûå ïðîãðàììûè äîáàâèòü íåêîòîðûå íîâûå Äëÿ íà÷àëàñîçäàäèì ïðîôèëü ðóòà:cat > $LFS/root/bash_profile malloc/Makefile &&cp login/Makefile login/Makefilebackup &&sed 's/root/0/' login/Makefilebackup > login/Makefile&&mkdir /glibc-build &&cd /glibc-build &&/glibc-225/configure --prefix=/usr --enable-add-ons--libexecdir=/usr/bin &&echo "cross-compiling = no" > configparms &&make &&make install &&make localedata/install-locales &&exec /bin/bash --loginÏîñëå ýòîãî â ñòðîêå ïðèãëàøåíèÿ ïîÿâëÿåòñÿ çàâåòíîåroot, è ìû ìîæåì äèíàìè÷åñêè ïåðåêîìïèëèòüóæå óñòàíîâëåííûå ïðîãðàììû è íåêîòîðûåíîâûå: install-log, makedev, man-pages, findutils,gawk, ncurses, vim, gcc, bison, less, groff, man, perl,m4, texinfo, autoconf, automake, bash, flex, file,libtool, bin86, binutils, bzip2, ed, gettext, kbd, diffutils,e2fsprogs, fileutils, grep, gzip, lilo, make, modutils,netkitbase, patch, procinfo, procps, psmisc, reiserfsprogs,sed, sh-utils, net-tools, shadow, sysklogd,sysvinit, tar, textutils, util-linux, lfs-bootscriptsÎáðàùàþ âíèìàíèå, ÷òî ïîñëå êîìïèëÿöèè glibc óñòàíàâëèâàåìinstall-log Ýòî ÿ äîáàâèë îò ñåáÿ, âLFS-book ýòîãî íåò, íî â äàëüíåéøåì ýòî ñèëüíîîáëåã÷èò æèçíü Âçÿòü åãî ìîæíî çäåñü:http://prdownloadsourceforgenet/install-log/installlog-19tarbz2Ñìåëî óñòàíàâëèâàåì:make &&cp install-log /usr/bin &&cp install-log1 /usr/share/man/man1 &&cp install-logrc /etc &&mkdir /var/install-logs &&touch /var/install-logs/timestampÏîñëå óñòàíîâêè êàæäîé ïðîãðàììû âûçûâàé installlogfilename, è â äèðåêòîðèè /var/install-logs ïîëó÷àåìâ äèðåêòîðèè /var/install-logs òåêñòîâûé ôàéë ñèìåíåì filename, ñîäåðæàùèé èìåíà óñòàíîâëåííûõôàéëîâ Òåïåðü ñîçäàåì ïðîôèëü ðåäàêòîðà vim,êîíôèãóðèðóåì glibc, óñòàíàâëèâàåì ñèñòåìíîå âðåìÿ,êîíôèãóðèðóåì äèíàìè÷åñêóþ çàãðóçêó áèáëèîòåê,äåìîí syslogd, shadow, sysvinit, êëàâèàòóðó,ñåòü è òä Ïîñëå ýòîãî êîìïèëèðóåì ÿäðî, äîáàâëÿåìåãî â LILO è ïîëó÷àåì ñâåæåóñòàíîâëåííûé èâïîëíå ðàáîòîñïîñîáíûé Linux Èíñòðóêöèÿ ïîñáîðêå íàïèñàíà íîðìàëüíî, è ïðè ìèíèìàëüíîìçíàíèè àíãëèéñêîãî ÿçûêà åå ìîæíî ïîíÿòü È åùå:ïî óìîë÷àíèþ LFS ñîâåðøåííî íåáåçîïàñåí =/, ïîýòîìóýòîìó àñïåêòó íàäî óäåëèòü ïîâûøåííîåâíèìàíèåÍó âîò, âðîäå è âñå Áóäóò âîïðîñû - ïèøè,÷åì ñìîãó - ïîìîãó5 6 7 8 9Õ-Ñòèëü Êîäèíã JoyStick Þíèòû Quit> 55