ãŸããã
Linuxãã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããç¹å®ã®ã¿ã¹ã¯ã«Linuxã䜿ãå§ããã«ã¯å€ãã®æ¹æ³ããããŸãã ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®éžæã¯ãã䞻婊åãããšäžçŽãŠãŒã¶ãŒåãã®äž¡æ¹ã®ãããã奜ã¿ãšè²ã«å¯ŸããŠéåžžã«åºããç¹å®ã®ããŒããŠã§ã¢ã®ãœãŒã¹ããã®ã¢ã»ã³ããªãå«ããããããã¬ãã«ã®ã«ã¹ã¿ãã€ãºãå¯èœã§ãã ã·ã¹ãã ã®ã€ã³ã¹ããŒã«ã«ã¯ãååãšããŠãå€å°ãªããšãèªã¿æžãã®ã§ããPCãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããŸãã ãããŠããLinux vs Other OSããšãããããã¯ã«é¢ããä»æ¥ã®äººæ°ããªããŒã«æ²¡é ããŠããªãå Žåããã®ã·ã¹ãã ã䜿çšããããšã¯ã10幎åã«æ°ããäœãããLinuxoidã«å¿
é ã®ç¥èãå¿
èŠãšããŸããã ç§ã®æ·±ã䞻芳çãªèŠ³ç¹ããããã®ã·ã¹ãã ã®éçºã芳å¯ããŠãã10幎以äžã«ããã£ãŠãLinuxã¯åå¿è
ã«ãšã£ãŠãã芪ãã¿ããããªããéå»ã«åºæã®å€ãã®åé¡ãåãé€ããŸããã ãããŠããã¯è¯ãããšã§ãã
æäœããã³ã®ã³...
Habréã§ã¯ãLFSã®ããŒãã«é¢ãã2ã3ã®èšäºãæ¢ã«ã¡ãã€ããŸãããããšãã°
thisã
thisã§ãã åŸè
ã«ã€ããŠã®ã³ã¡ã³ãã¯è«ççãªã¢ã€ãã¢ã瀺åããŠããŸã-Linuxãã€ã³ã¹ããŒã«ããŠèª¿æ»ããããã®äžé£ã®å¯èœæ§ããã§ã«åŸ¹åºçã«åºãŸã£ãŠããå ŽåããªãLFSãå¿
èŠãªã®ã§ããããïŒ
ãå®å®è¹ãã©ã®ããã«èããã®ã...ãããŠå°çãç«ã®çã ã£ãã®ã...ãã«ã€ããŠã®è©±ã¯ããŸããã ç§ã¯èªåã®ç«å Žã«åºã¥ããŠè³ªåã«çããŸã-ç§ã¯ããã«èå³ãããã ããªã®ã§ãLFSãåéããŸãã ãã®ããã»ã¹ã§ã¯ãã·ã¹ãã ã®ãå
éšãã確èªããè¯ãæ©äŒã ãšæããŸãã ãã®ãã¹ã¯æé©ãšã¯èšãé£ãããšãèªããŸãã ãã ãããã®èšäºãšãã以éã®èšäºã§ã¯ãLinuxã·ã¹ãã ãæåã§çµã¿ç«ãŠãããã»ã¹ã«ã€ããŠèª¬æããŸãã ãããã®èšäºã¯ã¢ã»ã³ããªã®ããã¥ã¡ã³ãã翻蚳ããŸãã-ããã¯ç¹ã«å¿
èŠãããŸããã èè
ãå人çã«çŽé¢ããªããã°ãªããªãã£ãããã»ã¹ã®è©³çŽ°ãšãã¥ã¢ã³ã¹ã«éç¹ã眮ãããŸãã ãã®ãµã€ã¯ã«ãåå¿è
ã®æ¥èšã®ãããªãã®ãšèããŸãã
1.ã·ã¹ãã èŠä»¶
LFSããã«ãããã«ã¯ãGNU / Linux OSãã€ã³ã¹ããŒã«ãããã³ã³ãã¥ãŒã¿ãŒãå¿
èŠã§ãã ååãšããŠãä»»æã®ååžãé©ããŠããŸãã ç§ã®ãã·ã³ã§Arch Linuxã䜿çšãããšããŸãã DebianããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒLinux MintãUbuntuãªã©ïŒã«ã€ããŠãããã¡ããé©åã§ãããäœæ¥ã®åæ段éã®1ã€ã§ãç°å¢å€æ°ãåæåãããšãã®ã³ãã³ãã·ã§ã«èŠå
$ source ~/.bash_profile dircolors: no SHELL environment variable, and no shell type option given
Linux Mint 17ã§åãåã£ããã®èŠåã¯ããŠãŒã¶ãŒãå床ãã°ã€ã³ããç°å¢å€æ°ãsourceã³ãã³ãã§æŽæ°ããããšãã®/ etc / profileããã®dircolorsïŒç«¯æ«ãçè²ããã³ãã³ãïŒã®éæ¥åŒã³åºãã«é¢é£ããŠããŸãã ããã¯éèŠã§ã¯ãªããç¡èŠã§ããŸãã
ãã¹ãLinuxã·ã¹ãã ã«ã¯ã
å
¬åŒã®ã·ã¹ãã èŠä»¶ã«ãªã¹ããããŠããããã±ãŒãžãã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸãã ãããã®ããã±ãŒãžã®ã»ãšãã©ã¯ãã·ã¹ãã ã«ããã®ãŸãŸãå«ãŸããŠããããéçºè
ããŒã«ã«ãã£ãŠè¿œå ã€ã³ã¹ããŒã«ãããŸãã ãããã«ããŠãããããã¯ç¹å®ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å
¬åŒãªããžããªããç°¡åã«ã€ã³ã¹ããŒã«ã§ããŸãã
Knoppixã¿ã€ãã®LiveCDã䜿çšããããšããå§ãããŸããOSãå«ãŸããŠããªããã·ã³ã«LFSãã€ã³ã¹ããŒã«ã§ããŸãã ãã®æå³ã§ãéžæã¯ããªã次第ã§ãã
éãšOSã«å ããŠãå¿èãšå¿èãå¿
èŠã§ãã çµã¿ç«ãŠãšæ§æã®ããã»ã¹ã¯éåžžã«é·ããæéãããããŸãã æ¬ãã端æ«ã«ã³ãã³ããã³ããŒïŒããŒã¹ãããªãã§ãã ããããŸããããªãã®ã±ãŒã¹ã¯ãŠããŒã¯ãããããŸããã 第äºã«ãç§ãã¡ã®ç®æšã¯ããœãŒã¹ããã³ã³ãã€ã«ãããå®è¡å¯èœãªOSãæ§ç¯ãããšããååã«å¯ŸåŠããããšã§ããã€ãŸããè¡ãããŠããããã»ã¹ã®æå³ãæãäžããå¿
èŠããããŸãã äœæ¥ã®å段éã«ã¯ãæ¥ãã§ããã«ææ矩ã«ã¢ãããŒãããå¿
èŠããããŸãã
2.æå°ã·ã¹ãã ã¢ã»ã³ããªããã¥ã¡ã³ã
å¿
èŠãªãã¹ãŠã®ããã¥ã¡ã³ãã¯
Linux Form Scratchããã¯ã«ãŸãšããããŠããŸãïŒãªã³ã¯ããææ°ã®å®å®çãªãªãŒã¹ã®ãªã³ã©ã€ã³ããŒãžã§ã³ã«ã¢ã¯ã»ã¹ã§ããŸãïŒã ç§ãåå¿è
ã«äžãããæåã®ã¢ããã€ã¹ã¯ãè±èªã®ææ°ã®å®å®çã䜿çšããããšã§ãã ãã·ã¢èªã®ç¿»èš³ããããŸãããåžžã«çŸåšã®ããŒãžã§ã³ããé
ããŠããŸãã ããã«ãææ°ã®
ãã·ã¢èªçã®LFS 6.0ãžã®ãªã³ã¯ã¯ç¡å¹ã«ãªããå
¬åŒãµã€ãããå
¥æã§ããå¯äžã®ç¿»èš³ã¯
LFS 5.0ã«é¢ä¿ããŸããã
æ§ããã«èšã£ãŠãæ代é
ãã§ãã GNUãããžã§ã¯ãã·ã¹ãã ãšãœãããŠã§ã¢ã®ã«ãŒãã«ã¯å®æçã«å€æŽãããŸããããã«ãLFSã®å€ãããŒãžã§ã³ã§èª¬æãããŠããããã±ãŒãžã®ããŒãžã§ã³ã¯åžžã«ããŠã³ããŒãã§ããããã§ã¯ãªããå©çšå¯èœãªå Žåã¯æåã§æ€çŽ¢ããå¿
èŠããããŸãã ãã®ãããçŸåšã®è±èªçã®LFSãéžæããŸãã
泚 ïŒãã®èšäºã®å·çäžã«ã
LFS 7.3ã®ç¿»èš³ãžã®ãªã³ã¯ã
LFS ã®wikièšäºã§èŠã€ãã
ãŸãã ãããã¯çå®ã«è¿ããã®ã§ãã ãããããã®ç¿»èš³ã¯ãŸã å®å
šã§ã¯ãããŸãã-æ¬ã®ã»ãšãã©ã¯è±èªã§ãã
ãŸããæ¬ã®äžã§çŸåšã®éçºã䜿çšãããšäºæãã¬å°é£ã«ã€ãªããå¯èœæ§ãããããšãèªè
ã«èŠåããããšæããŸãã ãã®ããŒãžã§ã³ã¯ãæ¯æ¥æŽæ°ãããSVNãªããžããªããååŸã§ããŸãã æ¬ã¯ããŒã ã«ãã£ãŠããŠã³ããŒããããŸã
$ mkdir ~/LFS && cd ~/LFS $ svn co svn://svn.linuxfromscratch.org/LFS/trunk/BOOK/
ãããŠããã®ããã«çµã¿ç«ãŠãã®ã¯ç°¡åã§ãïŒhtmlããŒãžã§ã³ããã«ãããã«ã¯tidyhtmlããã±ãŒãžãå¿
èŠã§ãïŒ
$ cd BOOK $ mkdir ../html $ make BASEDIR=../html
ãã®ããŒãžã§ã³ã¯ææ°ã§ãæè¿ãªãªãŒã¹ãããLinux 4.0ã«ãŒãã«ã®ãã¹ã«ã€ãããããŒãžã§ã³ãã®äœ¿çšã«çŠç¹ãåœãŠãŠããŸãã
SkyNetã¯ã©ãã«ãããŸããïŒãããïŒ

ããŠã³ããŒãããããã±ãŒãžã®ãã§ãã¯ãµã ããã§ãã¯ãããšãã«æåã®åé¡ãçºçããŸã
$ md5sum -c md5sums . . lfs-bootscripts-20150222.tar.bz2: . . md5sum: : 1
æå®ãããã¢ãŒã«ã€ãã¯è§£åããããã¡ã€ã«ãµã€ãºã¯çå®ã«å¯Ÿå¿ããŸãã ãããããCRSãªã¹ããå«ãmd5sumsãã¡ã€ã«ã«ãšã©ãŒãå¿ã³èŸŒãã§ããã®ã§ãããã ãã ãããªã¹ã¯ãåããªãããã«ã¯ãæ¬ã®å®å®çã䜿çšããããšããå§ãããŸãã
3.åå£ã®æºå
ãŸããLFSãå±éããã«ã¯ããã£ã¹ã¯é åãå¿
èŠã§ãã HDDäžã®1ã€ã®ããŒãã£ã·ã§ã³ïŒãŸãã¯è€æ°ã®ããŒãã£ã·ã§ã³ïŒã«ããããšãããã¹ããã¡ã€ã«ã·ã¹ãã å
ã®ãã£ã¬ã¯ããªã«ããããšãã§ããŸãã 64ãããã®Arch Linuxã以åã«ã¢ããããŒããããä»®æ³ãã·ã³ã®HDDäžã®ããŒãã£ã·ã§ã³ã§ãªãã·ã§ã³ã決å®ããŸããã
æäœéå¿
èŠãªãã£ã¹ã¯å®¹éã¯4 GBã§ãã EXT4ã§ãã©ãŒãããããŠ40 GBã®è«çããŒãã£ã·ã§ã³ãäœæããŸããã ãã®ã»ã¯ã·ã§ã³ã¯ããã¹ãã·ã¹ãã ã«ããŠã³ãããå¿
èŠããããŸãã ããŠã³ããã€ã³ããç¹å¥ãªç°å¢å€æ°ã«ä¿åãããšäŸ¿å©ã§ã
# export LFS=/mnt/lfs
ãã®éã«æ²¿ã£ãŠãéåžžã«é »ç¹ã«æ²ãããªããã°ãªããŸããã ã³ãã³ãã§ããŒãã£ã·ã§ã³ãããŠã³ãããŸãïŒç§ã®å Žåãããã¯sda6ããŒãã£ã·ã§ã³ã§ãããã¡ãããããªãã®ããŒãã£ã·ã§ã³ã¯ç°ãªããŸãïŒ
# mkdir -v $LFS # mount /dev/sda6 $LFS
次ã«ã2ã€ã®ãã£ã¬ã¯ããªãäœæããå¿
èŠããããŸãã$ LFS / sources-tarballããœãŒã¹ãšãšãã«ä¿åããããã $ LFS / tools-äžæçãªã·ã¹ãã æ§ç¯ããŒã«ã®é
眮çš
# mkdir -v $LFS/sources # mkdir -v $LFS/tools
$ LFS / sourcesãã£ã¬ã¯ããªã«æš©éãèšå®ããŸãããã¹ãŠã®ãŠãŒã¶ãŒã¯æžã蟌ã¿ãèš±å¯ãããŸãïŒ+ wïŒïŒaïŒãã£ã¬ã¯ããªã®ææè
ã®ã¿ãåé€ã§ããæ©èœïŒtïŒ
2ã€ã®ãã¡ã€ã«ã$ LFS / sourcesãã£ã¬ã¯ããªã«ã¢ããããŒãããŸã-ããŠã³ããŒãå¯èœãª
wget-listããã±ãŒãžã®ãªã¹ããš
md5sumsããã±ãŒãžã®
ãã§ãã¯ãµã ã®ãªã¹ã
# wget http://www.linuxfromscratch.org/lfs/view/stable/wget-list
--directory-prefixã¹ã€ããã¯ãããŠã³ããŒããããã¡ã€ã«ãé
眮ãããã¹ãæå®ããŸãã ãã®åŸããã¹ãŠã®ãœãŒã¹ãšã€ã³ã¹ããŒã«ããå¿
èŠããããã¹ãŠã®ãœãŒã¹ã®ããŠã³ããŒããéå§ããŸã
# wget --input-file=$LFS/sources/wget-list --continue --directory-prefix=$LFS/sources
--input-fileã¹ã€ããã¯ãããŠã³ããŒããããããã±ãŒãžã®URLã®ãªã¹ããå«ããã¡ã€ã«ãæããŸãã
--continue-ãããã¯ãŒã¯ãžã®æ¥ç¶ãäžæãããå Žåãéšåçã«ããŠã³ããŒãããããã¡ã€ã«ã®ããŠã³ããŒããæå¹ã«ããŸãã å¿
èŠãªãœãããŠã§ã¢ã®ãœãŒã¹ã³ãŒããå«ãçŽ325 MBã®ã¢ãŒã«ã€ããšãã¢ã»ã³ããªã«å¿
èŠãªããããããŠã³ããŒããããŸãã ããŠã³ããŒãåŸãããŠã³ããŒãããããã±ãŒãžã®æŽåæ§ã確èªããå¿
èŠããããŸã
# pushd $LFS/source # md5sum -c md5sums # popd
ãã§ãã¯èªäœã¯md5sumãŠãŒãã£ãªãã£ã®åŒã³åºãã§ãããã®ãŠãŒãã£ãªãã£ã¯ããã©ã¡ãŒã¿ãšããŠæž¡ãããmd5sumsãªã¹ãã«å«ãŸãããã¹ãŠã®ãã¡ã€ã«ã®åèšããã§ãã¯ããåããªã¹ãã§æå®ãããå€ãšçµæãæ¯èŒããŸãã æåããå Žåãçµæã¯æ¬¡ã®ããã«ãªããŸã
ããã±ãŒãžã®æŽåæ§ãã§ãã¯çµæacl-2.2.52.src.tar.gzïŒãŽãŒã«
attr-2.4.47.src.tar.gzïŒãŽãŒã«
autoconf-2.69.tar.xzïŒãŽãŒã«
automake-1.15.tar.xzïŒãŽãŒã«
bash-4.3.30.tar.gzïŒãŽãŒã«
bc-1.06.95.tar.bz2ïŒç®æš
binutils-2.25.tar.bz2ïŒç®æš
bison-3.0.4.tar.xzïŒãŽãŒã«
bzip2-1.0.6.tar.gzïŒç®æš
check-0.9.14.tar.gzïŒãŽãŒã«
coreutils-8.23.tar.xzïŒãŽãŒã«
dejagnu-1.5.2.tar.gzïŒç®æš
diffutils-3.3.tar.xzïŒãŽãŒã«
eudev-2.1.1.tar.gzïŒç®æš
eudev-2.1.1-manpages.tar.bz2ïŒãŽãŒã«
e2fsprogs-1.42.12.tar.gzïŒç®æš
expat-2.1.0.tar.gzïŒãŽãŒã«
expect5.45.tar.gzïŒãŽãŒã«
file-5.22.tar.gzïŒãŽãŒã«
findutils-4.4.2.tar.gzïŒç®æš
flex-2.5.39.tar.bz2ïŒç®æš
gawk-4.1.1.tar.xzïŒç®æš
gcc-4.9.2.tar.bz2ïŒç®æš
gdbm-1.11.tar.gzïŒãŽãŒã«
gettext-0.19.4.tar.xzïŒç®æš
glibc-2.21.tar.xzïŒç®æš
gmp-6.0.0a.tar.xzïŒç®æš
gperf-3.0.4.tar.gzïŒç®æš
grep-2.21.tar.xzïŒç®æš
groff-1.22.3.tar.gzïŒãŽãŒã«
grub-2.02ãbeta2.tar.xzïŒãŽãŒã«
gzip-1.6.tar.xzïŒãŽãŒã«
iana-etc-2.30.tar.bz2ïŒãŽãŒã«
inetutils-1.9.2.tar.gzïŒãŽãŒã«
intltool-0.50.2.tar.gzïŒãŽãŒã«
iproute2-3.19.0.tar.xzïŒãŽãŒã«
kbd-2.0.2.tar.gzïŒç®æš
kmod-19.tar.xzïŒç®æš
less-458.tar.gzïŒãŽãŒã«
lfs-bootscripts-20150222.tar.bz2ïŒç®æš
libcap-2.24.tar.xzïŒãŽãŒã«
libpipeline-1.4.0.tar.gzïŒãŽãŒã«
libtool-2.4.6.tar.xzïŒãŽãŒã«
linux-3.19.tar.xzïŒãŽãŒã«
m4-1.4.17.tar.xzïŒç®æš
make-4.1.tar.bz2ïŒãŽãŒã«
man-db-2.7.1.tar.xzïŒç®æš
man-pages-3.79.tar.xzïŒç®æš
mpc-1.0.2.tar.gzïŒç®æš
mpfr-3.1.2.tar.xzïŒç®æš
ncurses-5.9.tar.gzïŒç®æš
patch-2.7.4.tar.xzïŒãŽãŒã«
perl-5.20.2.tar.bz2ïŒç®æš
pkg-config-0.28.tar.gzïŒãŽãŒã«
procps-ng-3.3.10.tar.xzïŒç®æš
psmisc-22.21.tar.gzïŒç®æš
readline-6.3.tar.gzïŒç®æš
sed-4.2.2.tar.bz2ïŒç®æš
shadow-4.2.1.tar.xzïŒãŽãŒã«
sysklogd-1.5.1.tar.gzïŒãŽãŒã«
sysvinit-2.88dsf.tar.bz2ïŒãŽãŒã«
tar-1.28.tar.xzïŒãŽãŒã«
tcl8.6.3-src.tar.gzïŒãŽãŒã«
texinfo-5.2.tar.xzïŒç®æš
tzdata2015a.tar.gzïŒç®æš
udev-lfs-20140408.tar.bz2ïŒç®æš
util-linux-2.26.tar.xzïŒãŽãŒã«
vim-7.4.tar.bz2ïŒç®æš
XML-Parser-2.44.tar.gzïŒãŽãŒã«
xz-5.2.0.tar.xzïŒç®æš
zlib-1.2.8.tar.xzïŒç®æš
bash-4.3.30-upstream_fixes-1.patchïŒãŽãŒã«
bc-1.06.95-memory_leak-1.patchïŒãŽãŒã«
bzip2-1.0.6-install_docs-1.patchïŒãŽãŒã«
coreutils-8.23-i18n-1.patchïŒãŽãŒã«
glibc-2.21-fhs-1.patchïŒãŽãŒã«
kbd-2.0.2-backspace-1.patchïŒãŽãŒã«
mpfr-3.1.2-upstream_fixes-3.patchïŒãŽãŒã«
readline-6.3-upstream_fixes-3.patchïŒãŽãŒã«
sysvinit-2.88dsf-consolidated-1.patchïŒãŽãŒã«
ããã€ãã®pushd / popdã³ãã³ãã«ç¹å¥ãªæ³šæãæããŸããã ç§ã¯é·ãéãã®ã·ã¹ãã ã䜿çšããŠãããšç¢ºä¿¡ããŠããLinuxoidã§ããããããã®å
éšbashã³ãã³ãã¯ç§ã«ãšã£ãŠæ°ãããã®ã§ãã ããã§ãããã¡ã€ã«ã·ã¹ãã ã®ããŸããŸãªãã€ã³ãã«ããŠã³ããŒãããŠããæ»ãå¿
èŠãããå Žåã«éåžžã«äŸ¿å©ã§ãã pushdã³ãã³ãã¯ããã©ã¡ãŒã¿ãŒã§æå®ããããã£ã¬ã¯ããªã«äžæçã«ç§»åããŸãã æ»ãã«ã¯ãpopdã³ãã³ãã䜿çšããŸãã ãã®å Žåããžã£ã³ãããã«ãŒãã¯ã¹ã¿ãã¯ã®åœ¢åŒã§ç·šæãããæ»ãå¿
èŠããããã¹ãåå
¥åããå¿
èŠã¯ãããŸããã
ããã§ãã¢ã»ã³ããªãéå§ããããã«å¿
èŠãªãã®ã¯ãã¹ãŠæããŸããããæåŸã®æºåäœæ¥ãå®äºããå¿
èŠããããŸã
4.äœæ¥ç°å¢ã®ã»ããã¢ãã
ãŸãããã¹ãã·ã¹ãã ã®ã«ãŒãã«ãã$ LFS / toolsãã£ã¬ã¯ããªãžã®ã·ã³ããªãã¯ãªã³ã¯ãäœæããŸãã
# ln -sv $LFS/tools /
ãªããããå¿
èŠãªã®ã§ããïŒ äžè¬ã«ããªãã·ã³ããªãã¯ãªã³ã¯ãå¿
èŠãªã®ã§ããïŒ ãã¡ã€ã«ã·ã¹ãã å
ã®ç¹å®ã®ãã€ã³ããžã®åäžãªã¢ã¯ã»ã¹ãä¿èšŒããããã«äœæãããŸãã çŸåšãã·ã¹ãã ãã¹ãã§ã¯ããã®ãã£ã¬ã¯ããªãžã®ãã¹ã¯/ mnt / lfs / toolsã®ããã«ãªããŸãã ã«ãŒããpath / mnt / lfsã«ããäžæã·ã¹ãã ã«ç§»åãããšããã®äžæã·ã¹ãã ã§ã¯ããã£ã¬ã¯ããªã®å
容ãpath / toolsã§å©çšå¯èœã«ãªããŸãã åéããäž»ãªããŒã«ã¯ãå®è¡å Žæã«é¢ä¿ãªãã/ toolsãã¹ã«æ²¿ã£ãŠãã®ãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ããŸã-ãã®ãã¹ã¯ã³ã³ãã€ã«åŸã«ãã€ããªã«çµã¿èŸŒãŸããŸãã ãããã£ãŠãæå®ããããªã³ã¯ãäœæãããšãã·ã¹ãã ã«ãŒãã®çŸåšã®å Žæã«é¢ä¿ãªãã/ toolsãã¹ã«æ²¿ã£ãŠãã®ãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã ããããªããšãäžæã·ã¹ãã ãžã®ç§»è¡çŽåŸã«ãæåã®ã³ã³ãã€ã«ã§ãšã©ãŒãçºçããŸãã
次ã«ãæ°ããã°ã«ãŒããšæ°ãããŠãŒã¶ãŒãäœæããŸãããããã®ãŠãŒã¶ãŒã«ä»£ãã£ãŠãäžæçãªã·ã¹ãã ã¢ã»ã³ããªã®æåã®æ®µéã§äœæ¥ããŸãã 絶察ã«rootãšããŠäœæ¥ããã¹ãã§ã¯ãããŸãã-äŸãã°ãã€ã³ã¹ããŒã«ãããããã±ãŒãžãæ§æãããšãããã¹ãã·ã¹ãã ã«ã¢ã»ã³ãã«ãããããã±ãŒãžãã€ã³ã¹ããŒã«ããããšã«ãããã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã®ãã¬ãã£ãã¯ã¹ãèšå®ããããããã±ãŒãžãå£ãïŒãŸãã¯ããã±ãŒãžãããŒãžã£ãŒã®äœæ¥ãè€éã«ããïŒããšãæ··åãããå¿ãããããå¯èœæ§ããããŸãã ãã©ãã«ãé¿ããããã«ãç¹å®ã®ãã£ã¬ã¯ããªã®ã¿ãžã®æžã蟌ã¿æš©éãæã€éç¹æš©ãŠãŒã¶ãŒããã®äœæ¥ãèšå®ãããŠããŸãã
# groupadd lfs # useradd -s /bin/bash -g lfs -m -k /dev/null lfs
æåã®ã³ãã³ãã¯ãlfsã°ã«ãŒããäœæããŸãã 2çªç®-ãŠãŒã¶ãŒlfsãäœæããŸãã ãã©ã¡ãŒã¿ãŒã®æå³ã¯æ¬¡ã®ãšããã§ãã
- -s / bin / bash-ãŠãŒã¶ãŒã»ãã·ã§ã³ã§äœ¿çšãããã³ãã³ãã·ã§ã«
- -g lfs-ãŠãŒã¶ãŒãã¡ã³ããŒã«ãªã£ãŠããã°ã«ãŒã
- -m-ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããª/ home / lfsãäœæããããšã瀺ããŸã
- -k / dev / null-空ã®ãã³ãã¬ãŒããã£ã¬ã¯ããªã ããã©ã«ãã§ã¯ãããŒã ãã£ã¬ã¯ããªãäœæãããšã/ etc / skelã«ãããã¡ã€ã«ãšãã©ã«ããããã«é
眮ãããŸãã å¿
èŠã«å¿ããŠããã®ãã³ãã¬ãŒããå€æŽã§ããŸããã空ã®ãã£ã¬ã¯ããª/ home / lfsãäœæãããã³ãã¬ãŒããšããŠãŒããã¡ã€ã«ãæž¡ããŸãã
ãŠãŒã¶ãŒlfsã®ãã¹ã¯ãŒããèšå®ããŸã
# passwd lfs
$ LFS / sourcesããã³$ LFS / toolsãã£ã¬ã¯ããªã®ææè
ã«ããŸã
# chown -v lfs $LFS/sources # chown -v lfs $LFS/tools
lfsãšããŠãã°ã€ã³
# su - lfs
ã³ãã³ããã©ã¡ãŒã¿ãŒã®ããã·ã¥ïŒ
-lãŸãã¯
--loginã¹ã€ããã®çç¥åœ¢ïŒã¯ããã®ãŠãŒã¶ãŒã«å¯ŸããŠã以åã®ã»ãã·ã§ã³ããç°å¢å€æ°ã®å€ãç¶æ¿ããªããã¯ãªãŒã³ãã»ãã·ã§ã³ãäœæããå¿
èŠãããããšã瀺ããŸãã ãã®ã»ãã·ã§ã³ã§ã¯ãç¬èªã®ç°å¢å€æ°ã»ãããäœæããŸã
ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«ãã¡ã€ã«ãäœæãã
ã/ .bash_profile [lfs@arch-guest ~]/$ cat > ~/.bash_profile << "EOF" > exec env -i HOME=$HOME TERM=$TERM PS1='\u:w\$ ' /bin/bash > EOF
ã/ .bashrc [lfs@arch-guest ~]/$ cat > ~/.bashrc << "EOF" > set +h > umask 022 > LFS=/mnt/lfs > LC_ALL=POSIX > LFS_TGT=$(uname -m)-lfs-linux-gnu > PATH=/tools/bin:/bin:/usr/bin > export LFS LC_ALL LFS_TGT PATH > EOF
ã/ .bash_profileãã¡ã€ã«ã¯ãç°å¢å€æ°ã®åã
ã®ãŠãŒã¶ãŒèšå®ãå®çŸ©ããŸãã ããŒã
exec env -i HOME=$HOME TERM=$TERM PS1='\u:W\$ ' /bin/bash
ç°å¢å€æ°ã«å€ãå²ãåœãŠãããšã«ããããã¯ãªãŒã³ãªããŠãŒã¶ãŒç°å¢ãäœæããŸãïŒ
-iã¹ã€ããã¯ä»¥åã®èšå®ãç¡èŠããŸãïŒ
- HOME-ããŒã ãã£ã¬ã¯ããªãå€æ°ã®çŸåšã®å€ã/ home / lfsã«å²ãåœãŠãŸã
- TERM-䜿çšããã端æ«ã¿ã€ããçŸåšã®ãŸãŸ
- PS1ã¯ã³ãã³ãã©ã€ã³ããã³ãã圢åŒã§ãã ãã®å Žåããã©ãŒã ãŠãŒã¶ãŒåã®åœ¢åŒãèšå®ãããŸããçŸåšã®äœæ¥ãã£ã¬ã¯ããª$ãç¹æ®æå\ uã¯ãŠãŒã¶ãŒåã\ Wã¯çŸåšã®äœæ¥ãã£ã¬ã¯ããªã§ãã
- / bin / bash-ã·ã§ã«ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãéå§ããã³ãã³ã
ã/ .bashrcãã¡ã€ã«ã¯ãæå®ããããŠãŒã¶ãŒã®ã»ãã·ã§ã³ã«ãã°ã€ã³ãããšãã«ã©ã®èšå®ãè¡ãå¿
èŠããããã決å®ããŸã
- set + h-bashã®ããã·ã¥ãç¡å¹ã«ããŸãã ã·ã§ã«ã¯ã以åã«èµ·åãããå®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ãèšæ¶ããŠãããããã·ã¹ãã ã確å®ã«é«éåãããŸãã ãã ããç°ãªãæ¹æ³ã§é
眮ãããåãããã°ã©ã ã®ç°ãªãããŒãžã§ã³ãåŒã³åºããããããã·ã¥ã¯ç§ãã¡ã«å®³ãäžããã ãã§ãã
- umask 022-æ°ãããã¡ã€ã«ãšãã£ã¬ã¯ããªã®ããã©ã«ãèš±å¯ãèšå®ããŸãã å€022ã¯ããã¡ã€ã«ãæš©å©644ïŒrw- r-- r--ïŒã§äœæããããã£ã¬ã¯ããªãæš©å©755ïŒrwx rx rxïŒã§äœæãããããšãæå³ããŸãã ã³ãã¯ãããåumaskãããã¯ãæš©å©ã®å±æ§ã®å¯Ÿå¿ãããããã®ãªã»ãããæå³ããŸã
- LFS = / mnt / lfs-ãã«ãã·ã¹ãã ã®ã«ãŒã
- LC_ALL = POSIX-å®è¡äžã®ããã°ã©ã ã®ããŒã«ã©ã€ãºã決å®ããŸãã POSIXã¯ãæåãšã³ã³ãŒãæ¹åŒã«é¢ä¿ãªã衚瀺æšæºãèšå®ããŸãã
- LFS_TGT-äžæçãªã·ã¹ãã ã¢ã»ã³ããªããŒã«ãæ§ç¯ãããšãã«äœ¿çšãããã¿ãŒã²ãããã·ã³ã®èª¬æãèšå®ããŸã
- PATH-å®è¡å¯èœãã¡ã€ã«ã®æ€çŽ¢ãã¹
- export-äžèšã®å€ãæå®ãããå€æ°ã«å²ãåœãŠãŸã
ãããšã¯å¥ã«ããã¡ã€ã«ã®äœææ¹æ³ã«æ³šæããå¿
èŠããããŸãã catã³ãã³ãã䜿çšããçç±ããæ°ã«å
¥ãã®ã³ã³ãœãŒã«ãšãã£ã¿ãŒã䜿çšã§ããªãçç± ãã¹ãã·ã¹ãã ã«ããéã¯ãããã¹ããšãã£ã¿ãŒã䜿çšã§ããŸãã ããããäžæã·ã¹ãã ã«ç§»è¡ãããšãã«ã¯ããšãã£ã¿ãŒã¯ãããŸããã ãããã£ãŠãcatã³ãã³ãã䜿çšããå¿
èŠããããŸãããã®ã³ãã³ãã¯ãåºåã¹ããªãŒã ããããã¡ã€ã«ããå¥ã®ãã¡ã€ã«ã«ãªãã€ã¬ã¯ãããŸãã å
¥åãã¡ã€ã«ã¯ããã§ã¯æå®ãããŸãã-ããã¯æšæºå
¥åã¹ããªãŒã ã䜿çšãããããšãæå³ããŸãã åºåãã¡ã€ã«ã¯ãäœæãããã¡ã€ã«ã§ãããçµäºæ¡ä»¶ã¯ããã¡ã€ã«ã®çµããã®æåã·ãŒã±ã³ã¹ïŒEOFïŒã®å
¥åã¹ããªãŒã ã§ã®åºçŸã§ãã ã³ãã³ããå
¥åãããšãäœæããããã¡ã€ã«ã®ããã¹ããã¿ãŒããã«ã«çŽæ¥å
¥åã§ããŸãã ããã»ã¹ãçµäºããã«ã¯ãEOFè¡ãå
¥åããŸãã ãã®ããã«ããŠãã·ã§ã«ãããªããã£ãããã¹ããšãã£ã¿ãŒã«å€ããŸãã
äœæãããã¹ã¯ãªããã¯ãlfsã«ä»£ãã£ãŠãã°ã€ã³ããšã«å®è¡ãããŸãã 次ã®ã³ãã³ãã§ãŠãŒã¶ãŒç°å¢ãæŽæ°ããŸã
[lfs@arch-guest ~]/$ source ~/.bash_profile
å¿
èŠãªç°å¢å€æ°ãèšå®ãããŠããããšã確èªããŸã
[lfs@arch-guest~]/$ set
5.ããŒã«ã®äžæã»ããã®çµã¿ç«ãŠïŒäžæã·ã¹ãã ïŒ
ã·ã¹ãã ã®çµã¿ç«ãŠãéå§ãããšããé¶ãšåµããšããå€å
žçãªåé¡ã«çŽé¢ããŸãã ã·ã¹ãã ãæ§ç¯ããã«ã¯ãã³ã³ãã€ã©ããªã³ã«ãããã³ã©ã€ãã©ãªãå¿
èŠã§ãã ãã ããäžèšã®ãœãŒã¹ã³ãŒãã¯ãããŸããã ãã¹ãã·ã¹ãã ã«ã³ã³ãã€ã©ãããããããã«å¿
èŠãªãœãããŠã§ã¢ã®åéãéå§ããŸãã ãã ããåãgccãããã©ã«ãèšå®ã§åçŽã«æ§ç¯ããå Žåãæ§ç¯ã®åæ段éã§ã¯LFSã·ã¹ãã ã§åäœããŸãã-æäœã«å¿
èŠãªã©ã€ãã©ãªã®åçãªã³ã¯ã䜿çšããŸãã äœæ¥ã«å¿
èŠãªãã¹ãŠã®ã³ãŒãã¯ãéçã«ãã«ãããå¿
èŠããããŸããã€ãŸããå®è¡å¯èœãã¡ã€ã«ã«æ瀺çã«å«ããå¿
èŠããããŸãã
ãããã£ãŠãæåã«ãæçµããŒãžã§ã³ãã¢ã»ã³ãã«ãããšãã«ãããã䜿çšã§ããããã«ãå°æ¥ã®ã·ã¹ãã ã®äžéšãã¯ãã¹ã³ã³ãã€ã«ããŸãã
äžæã·ã¹ãã ã®æ§ç¯ã«é¢ãããã¹ãŠã®äœæ¥ã¯ã$ LFS / sourcesãã£ã¬ã¯ããªã§è¡ããããããããã«è¡ããŸã
[lfs@arch-guest ~]/$ cd $LFS/sources
ã³ã³ãã€ã«ããããã¹ãŠã®ããã±ãŒãžã«ã€ããŠãã¢ã»ã³ããªã®é åºã«ã¯æ¬¡ã®äžé£ã®ã¢ã¯ã·ã§ã³ãå«ãŸããŸãïŒç¹ã«æå®ãããŠããªãå ŽåïŒã
ããã±ãŒãžã®ã¢ã»ã³ããªæéã¯ããŸããŸã§ã-ã»ãŒç¬æãã2æéåã§ãïŒãæªéãã®åŸã«gccããã«ããããšããã¹ãŠã®ãã¹ããã»ãŒåãæéç¶ããŸãïŒã ã³ã³ãã¥ãŒã¿ãŒã®ããã©ãŒãã³ã¹ã¯ããŸããŸã§ãããããæšæºãã«ãåäœïŒSBUïŒãšåŒã°ããçžå¯Ÿçãªåäœãã¢ã»ã³ããªæéã®åäœãšããŠéžæãããŸãã 1ã€ã®SBUã¯binutilsããã±ãŒãžã®ãã«ãæéã«çãããæåã«ã³ã³ãã€ã«ãããŸãã 1.0 SBUã®ç¶ç¶æéã¯ã·ã¹ãã ã§èŠç©ããããšãã§ããŸããããã®è©³çŽ°ã¯ä»¥äžã®ãšããã§ãããçŸæç¹ã§ã¯
æšå¥šäºé
ïŒã·ã¹ãã ãè€æ°ã®ã¹ã¬ããã«ã¢ã»ã³ãã«ããªãã§ãã ããã ãã«ãã³ã¢ããã»ããµã䜿çšããŠããå Žåã-jã¹ã€ããã䜿çšãããšäœæ¥ãé«éåãããŸãããåŸã§éèŠãªãã¹ãã倱æããããã¢ã»ã³ãã«ããããœãããŠã§ã¢ã®åäœãäžå®å®ã«ãªã£ããããå ŽåããããŸãã 1ã€ã®ã¹ã¬ããã§ã®ã¢ã»ã³ããªã¯ããã»ã©é·ãã¯ãããŸããããã«ãã¹ã¬ããã¢ã»ã³ããªã«ãã£ãŠç²åŸãããåé¡ã解決ããããã«ãããå€ãã®æéãè²»ããããŸãã
åããã±ãŒãžã®ã¢ã»ã³ããªã¯èæ
®ããŸãããããã¯LFSããã¯ãã®ãã®ã§ãã ãã ããæãéèŠãªããã±ãŒãžã®ã³ã³ãã€ã«ãèæ
®ããŠãã¢ã»ã³ããªã®ãã¥ã¢ã³ã¹ã«çŠç¹ãåœãŠãŸã
6. Binutilsã®ãã«ã-æåã®ãã¹ã SBU枬å®
Binutilsã¯ããœãããŠã§ã¢ãæ§ç¯ããããã®ãŠãŒãã£ãªãã£ããŒã«ãå«ãããã±ãŒãžã§ãã ãããã«ã¯ãã¢ã»ã³ãã©ãŒïŒasïŒããã³ãªã³ã«ãŒïŒldïŒãå«ãŸããŸãã glibcãšgccã¯ããã€ãã®ãã¹ãã«åæ Œããããã«å¿
èŠãªã®ã§ããã®ããã±ãŒãžãæåã«ãã«ããããŸãã
ã¢ãŒã«ã€ãã解åãããã®å
容ãå«ãŸãããã£ã¬ã¯ããªã«ç§»åããŸã
$ tar -pxf binutils-2.25.tar.bz2 $ cd binutils-2.25
ãã®ããã±ãŒãžããã«ãããã«ã¯ãå¥ã®ãã£ã¬ã¯ããªãäœæããŠäœæããããã«è¡ãããšããå§ãããŸã
$ mkdir -v ../binutils-build $ cd ../binutils-build
次ã«ãæ£ããMakefileãçæããããã«ããã±ãŒãžãæ§æããå¿
èŠããããŸãã
$ ../binutils-2.25/configure \ > --prefix=/tools \ > --with-sysroot=$LFS \ > --with-lib-path=/tools/lib \ > --target=$LFS_TGT \ > --disable-nls \ > --disable-werror
ããŒãžã®ç¹å¥ãªæ³šæïŒ
- --prefix = / tools-åéãããããã±ãŒãžããäžæã·ã¹ãã ãé
眮ããã/ toolsãã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ãããããšã瀺ããŸã
- --with-sysroot = $ LFS-ã·ã¹ãã ã®ã«ãŒããã£ã¬ã¯ããªãããã«å¯ŸããŠãäžæã·ã¹ãã ã§ããã°ã©ã ãåäœããããã«å¿
èŠãªã©ã€ãã©ãªããã³ãã®ä»ã®ãªãœãŒã¹ãæ€çŽ¢ãããŸãã
- --with-lib-path = / tools / lib -ldãªã³ã«ãŒã«æå®ãããã©ã€ãã©ãªæ€çŽ¢ãã¹
- --target = $ LFS_TGT-ã¿ãŒã²ãããã·ã³ã®èª¬æãèšå®ããŸã
- --disable-nls-ã³ã³ãã€ã«æžã¿ããã±ãŒãžã®åœéåãç¡å¹ã«ããŸãã çŸæç¹ã§ã¯ãããã¯äžèŠã§ããããã®ååšã¯å€ãã®é害ãåŒãèµ·ããå¯èœæ§ããããŸã
- --disable-werror-ãã¹ãã³ã³ãã€ã©ããèŠåãåãåã£ããšãã«ã³ã³ãã€ã«åæ¢ãç¡å¹ã«ããŸã
ã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒãæ©èœããåŸãåºåã§ããã±ãŒãžããã«ãããã³ã€ã³ã¹ããŒã«ããããã«èšèšãããMakefileãååŸããŸãã ããã±ãŒãžãåéããSBUã枬å®ããŸã
$ time { make; }
time {...}ãŠãŒãã£ãªãã£ã䜿çšããŠæéã枬å®ããŸãããã®ãŠãŒãã£ãªãã£ã¯ãäžæ¬åŒ§ã§å²ãŸããã³ãã³ãã®å®è¡æéãè¿ããŸãã ããã«ãããæ®ãã®ããã±ãŒãžã®ãã«ãæéãææ¡ããããã«ãSBUã
æ«å®çã«è©äŸ¡ããæ©äŒãæäŸãããŸãã
泚 ïŒLFSã§ã¯ãã¢ã»ã³ããªãšã€ã³ã¹ããŒã«ã®æ§ææéã枬å®ããããšããå§ãããŸãã ãããããã®æšå¥šäºé
ã¯èšå€§ã§ãã ãã·ã³ãã¡ã€ã¯ãšãã¹ãã«è²»ããæéã®ã»ãšãã©ã ããã«ãmakeãšmake installã®éã«ãæãäžããªããã°ãªããªãä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã ããã§ãä»ã®äœæ¥ã«ããã·ã¹ãã ã®å
šäœçãªè² è·ã«ãã£ãŠæ±ºå®ããã枬å®ã®è¿äŒŒçãªæ§è³ªãèæ
®ããŠãäžèšã®ããã«è©äŸ¡ãå®è¡ããããšã«ããŸããã
ç§ã®ã·ã¹ãã ã®å Žå-4096 MBã®RAMãæèŒãã4ã€ã®Intel Core i7ã³ã¢ãš16 GBã®RAMãæèŒããåãIntel Core i7-2600KïŒãã€ããŒãã¬ãŒãã£ã³ã°ãåãã4ã€ã®ã³ã¢ïŒã§ãã¹ãäžã§å®è¡ãããä»®æ³ãã·ã³-SBUã¯çµã¿èŸŒã¿æã«2å32ç§ã§ãã1ã€ã®ã¹ã¬ãããæ®ãã®ããã±ãŒãžã®ãã«ãæéã¯SBUã®äžéšã§æ¬ã«ç€ºãããŠããããããã®æ¹æ³ã§èšç»ããŠãä»ã®ãã¹ãŠã®æŠç®ãã«ãæéãèŠç©ããããšãã§ããŸãïŒããšãã°ããã¹ããšäžç·ã«gccã®æçµãã«ããéå§ãã63 SBUãèŠãããããä»ã®ããšãããããã«åºçºããŸã-ãããïŒç»é¢ãèŠã€ããªããåžæãæããïŒã¢ã»ã³ããªãå®äºããããã©ã€ãã©ãªãã£ã¬ã¯ããªãžã®ã·ã³ããªãã¯ãªã³ã¯ãäœæããŸããã·ã¹ãã ã64ãããã®å Žåããã®æäœãå¿
èŠã§ãããããã£ãŠã次ã®ã³ãã³ãã¯æåã«ã·ã¹ãã ã®å®¹éããã§ãã¯ããå¿
èŠãªå Žåã«ã®ã¿ã·ã³ããªãã¯ãªã³ã¯ãäœæããŸãã $ case $(uname -m) in > x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; > esac
ãã®åŸãçµã¿ç«ãŠããã $ make install
äžãã£ãŠäžèŠãªãã£ã¬ã¯ããªãåé€ããŸã $ cd .. $ rm -r binutils-2.25 $ rm -r binutils-build
7. GCCã¢ã»ã³ããª-æåã®ãã¹
ã·ã¹ãã ã®æ§ç¯ããã»ã¹ã§ã¯ãã³ã³ãã€ã©ã3åçµã¿ç«ãŠãå¿
èŠããããŸããæåã®2ã€ã®ãã¹ã¯ããã¹ãã·ã¹ãã ãšã¯ç¬ç«ããŠåäœã§ããã³ã³ãã€ã©ãååŸããããã«å¿
èŠã§ããæåã®ãã¹ã§ã¯ãå¿
èŠãªãã¹ãŠã®ã³ãŒãã®éçã¬ã€ã¢ãŠãã䜿çšããããã€ãã®è¿œå èšå®ãå®è¡ããŸããæåã«ããœãŒã¹ã§ã¢ãŒã«ã€ãã解åããäœæããããã£ã¬ã¯ããªã«ç§»åããŸã $ tar -pxf gcc-4.9.2.tar.bz2 $ cd ../gcc-4.9.2
ã³ã³ãã€ã«ãæåãããã«ã¯ãGMPãMPFRãMPCã®3ã€ã®ããã±ãŒãžã®ãœãŒã¹ã³ãŒããå¿
èŠã§ããããããã³ã³ãã€ã©ã®ãœãŒã¹ãã£ã¬ã¯ããªã«å±éããgccãœãŒã¹ã§åç
§ãããŠãããã£ã¬ã¯ããªã®ååãå€æŽããŸãã $ tar -pxf ../gmp-6.0.0a.tar.xz $ tar -pxf ../mpfr-3.1.2.tar.xz $ tar -pxf ../mpc-1.0.2.tar.gz $ mv -v gmp-6.0.0a gmp $ mv -v mpfr-3.1.2 mpfr $ mv -v mpc-1.0.2 mpc
ããã«ãgccãœãŒã¹ãç·šéããå¿
èŠããããŸããå®éããããã®ldãªã³ã«ãŒæ€çŽ¢ãã¹ã¯ãéåžžã®äœæ¥ã·ã¹ãã çšãšããŠå®çŸ©ãããŠããŸãããã®å Žåããªã³ã«ãŒã¯/ toolsãã£ã¬ã¯ããªã«ãããŸãïŒbinutilsã®äžéšãšããŠã³ã³ãã€ã«ãããŸããïŒãäžéšã®ãã¯ãå®çŸ©ã/ toolsãåç
§ããå¿
èŠããããããã¢ã³ã¹ã¿ãŒã³ãã³ãã䜿çšããŠãœãŒã¹ã³ãŒããå€æããŸãã $ for file in \ > $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) > do > cp -uv $file{,.orig} > sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ > -e 's@/usr@/tools@g' $file.orig > $file > echo ' > #undef STANDARD_STARTFILE_PREFIX_1 > #undef STANDARD_STARTFILE_PREFIX_2 > #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" > #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file > touch $file.orig > done
ããŒã...ãã®ããŒã ã®æåã®å€èŠ³ã¯ç§ãæããããŸãããå®éãããã§ãã¡ã€ã«inux64.hãlinux.hãsysv4.hã¯ãgcc / configãã£ã¬ã¯ããªã«ããå Žåãã«ãŒãã§ãœãŒããããŸãããããã¯ãããããæ¥å°ŸèŸ* .origïŒãœãŒã¹ã®ãªãªãžãã«ãä¿åããŸã-ãã®åŸãsedã®å
¥åã¹ããªãŒã ãšããŠèšå®ãããŸãïŒã§æ°ãããã¡ã€ã«ã«ã³ããŒãããèŠã€ãã£ãåãã¡ã€ã«ã§/ tools眮æãldãªã³ã«ãŒæ€çŽ¢ãã¹ã«å¯ŸããŠå®è¡ããã/ usrã眮ãæããããŸã/ããŒã«ãããã«ããã¯ãã¯ãSTANDARD_STARTFILE_PREFIX_1ããã³STANDARD_STARTFILE_PREFIX_2ããªãŒããŒã©ã€ãããŠãæ£ããã©ã€ãã©ãªãã¹ãæãããã«åãã¡ã€ã«ã®æ«å°Ÿã«è¿œå ãããŸãã次ã«ãtouchã³ãã³ãã¯ãåŠçããããã¹ãŠã®ãã¡ã€ã«ã®æåŸã®å€æŽæå»ãçŸåšã®ãã¡ã€ã«ã«å€æŽããcpã³ãã³ãã®-uã¹ã€ããïŒãœãŒã¹ãã¡ã€ã«ãå®å
ãã¡ã€ã«ãããæ°ããå Žåã¯ã³ããŒïŒãšçµã¿åãããããšã§ãã³ãã³ããç¹°ãè¿ãå®è¡ãããå Žåã«äžèŠãªå€æŽãé²ããŸãããã®äŸã®sedæ§æã«é¢ããããã€ãã®èšèsed â , , .
LFS, sed , .
- "/", sed "@"
- "\(64\)\?" "\(32\)\?" sed-, , «64» «32» â .
- "&" , /tools ( "&" )
's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' â , "/lib", "/lib64" "/lib32" "/tools", 's@/usr@/tools@g' â , "/usr" "/tools"
äžè¬ã«ãäžæçãªã·ã¹ãã ïŒããã³ã¡ã€ã³ã·ã¹ãã ïŒã®ã¢ã»ã³ããªã¯ããã®ãããªæ§é ã®äœ¿çšã§æåéã飜åããŠããŸãããããã®æå³ãç解ããããŒã ãæã§æºããããšããå§ãããŸãã次ã«ãã¢ã»ã³ããªããã»ã¹ãçµäºãããŸã§ã«ãã¯ãŒãããã»ãã·ã³ã°æè¡ãš* nixã³ã³ãœãŒã«ã§ã®äœæ¥ã«é¢ããå€ãã®åé¡ã«ã€ããŠç解ããŸãã次ã®ã³ãã³ãïŒ $ sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
configuratorã¹ã¯ãªãããä¿®æ£ããŸãããç§ã®å Žåã¯å€æŽããŸããã§ãããæ¬ã«ãããšãã¹ã¿ãã¯ä¿è·ã§gccã®æ§è³ªãå€ããããšãç®æããŠããŸãã次ã«èšå®ããå¿
èŠããããŸã $ ../gcc-4.9.2/configure \ > --target=$LFS_TGT \ > --prefix=/tools \ > --with-sysroot=$LFS \ > --with-newlib \ > --without-headers \ > --with-local-prefix=/tools \ > --with-native-system-header-dir=/tools/include \ > --disable-nls \ > --disable-shared \ > --disable-multilib \ > --disable-decimal-float \ > --disable-threads \ > --disable-libatomic \ > --disable-libgomp \ > --disable-libitm \ > --disable-libquadmath \ > --disable-libsanitizer \ > --disable-libssp \ > --disable-libvtv \ > --disable-libcilkrts \ > --disable-libstdc++-v3 \ > --enable-languages=c,c++
ããŒã«ã¯æ¬¡ã®æå³ããããŸãã- --with-newlib -libcãµããŒããå¿
èŠãšããã³ãŒãã®ã³ã³ãã€ã«ãé²ããŸã-ãããã®ã©ã€ãã©ãªã¯ãŸã ãããŸãããåŸã§ã³ã³ãã€ã«ãããŸã
- --without-headers â ,
- --with-local-prefix=/tools â GCC . /usr/local
- --with-native-system-header-dir=/tools/include â
- --disable-shared â ,
- --disable-decimal-floatã-disable-threadsã-disable-libatomicã-disable-libgompã-disable-libitmã-disable-libquadmathã-disable-libsanitizerã-disable-libsspã --disable-libvtvã-disable-libcilkrtsã-disable-libstdc ++-v3-ãã®æ®µéã§äžå¿
èŠãªã³ã³ãã€ã©æ¡åŒµæ©èœããã¹ãŠç¡å¹ã«ããŸã-æµ®åå°æ°ç¹æŒç®ããã«ãã¹ã¬ããã䞊è¡åŠçãããã³æšæºC ++ã©ã€ãã©ãªãªã©ã
- --disable-multilib -64ãããç°å¢ã§32ãããã³ãŒãã®ãã«ãã®ãµããŒããç¡å¹ã«ããŸã
- --enable-languages = cãc ++ -C / C ++ãµããŒãã«éå®ããŸã
ãã®æ¹æ³ã§ã¢ã»ã³ããªãæ§æãããããããå®è¡ããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããŸã $ make $ make install
ãã®åŸãç§ãã¡ã¯èªåã®åŸããããã«ããŸã $ cd .. $ rm -r gcc-build && rm -r gcc-4.9.2
8.äžæã·ã¹ãã ã®æ®ãã®ããã±ãŒãžããã«ãããŸã
äžæã·ã¹ãã ã®ä»¥éã®ã¢ã»ã³ããªããã»ã¹ã«ã€ããŠã¯ã説æã¯äžèŠã§ããèªè
ã«LFSããã¯ãåç
§ããŠãã ããã泚ç®ã«å€ããå¯äžã®ããšã¯ãããã»ã¹å
šäœãéããŠãœãŒã¹ãç·šéããç¹å¥ãªã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒãªãã·ã§ã³ãã€ã³ã¹ããŒã«ããå¿
èŠãããããšã§ãããã®ããã»ã¹ã¯ææ
®æ·±ãããã£ãããšããå¿
èŠããããŸãããã®æ®µéã§ã®ééãã¯éåžžã«è²»çšããããå¯èœæ§ããããæºåãã§ããŠããªãNewfagã§ãããããèŠã€ããããšã¯éåžžã«å°é£ã§ããäžæçãªã·ã¹ãã ã®æå°éã®ãã±ããã»ããã®èª¬æãšããã€ãã®éèŠãªèª¬æã«éå®ãããŸããgccã«ç¶ããŠãã€ã³ã¹ããŒã«ããå¿
èŠããããŸã- Linux-3.19ã«ãŒãã«ããããŒ-GLibcã©ã€ãã©ãªã«å¿
èŠ
- Glibc-2.21 â C, , , .
Glibc .
$ echo 'main(){}' > dummy.c $ $LFS_TGT-gcc dummy.c
$ readelf -f a.out | grep ': /tools'
:
[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
. 32- , 64-, .
, ,
$ rm -v dummy.c a.out
- Libstdc++-4.9.2 â C++ g++
- Binutils-2.25 â , . , ar ( binutils), , CC, AR RANLIB
$ CC=$LFS_TGT-gcc \ > AR=$LFS_TGT-ar \ > RANLIB=$LFS_TGT-ranlib \ >../binutils-2.25/configure \ > --prefix=/tools \ > --disable-nls \ > --disable-werror \ > --with-lib-path=/tools/lib \ > --with-sysroot
- GCC-4.9.2 â ,
$ CC=$LFS_TGT-gcc \ > CXX=$LFS_TGT-g++ \ > AR=$LFS_TGT-ar \ > RANLIB=$LFS_TGT-ranlib \ > ../gcc-4.9.2/configure \ > --prefix=/tools \ > --with-local-prefix=/tools \ > --with-native-system-header-dir=/tools/include \ > --enable-languages=c,c++ \ > --disable-libstdcxx-pch \ > --disable-multilib \ > --disable-bootstrap \ > --disable-libgomp
, , -.
$ echo 'main(){}' > dummy.c $ cc dummy.c $ readelf -l a.out | grep ': /tools' $ [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2] $ rm -r dummy.c a.out
- Tcl-8.6.3 â Tcl, .
- Expect-5.45 â , Tcl
- DejaGNU-1.5.2 â
- Check-0.9.14 â unit- C-
- Ncurses-5.9 â UI, ( Linux) mc.
- Bash-4.3.30 â . ã³ã¡ã³ãã¯ãããŸããã
- Bzip2-1.0.6 â bzip2.
- Coreutils-8.23 â GNU-, , cat, ls, rm
- Diffutils-3.3 â .
- File-5.22 â .
- Findutils-4.4.2 â . , , find
- Gawk-4.1.1 â GNU- awk â .
- Gettext-0.19.4 â .
- Grep-2.21-å
¥åã¹ããªãŒã ã®ããã¹ãæ€çŽ¢ãŠãŒãã£ãªãã£
- Gzip-1.6-å¥ã®ã¢ãŒã«ã€ã
- M4-1.4.17-ãœãããŠã§ã¢æ§æããã³ã¢ã»ã³ããªããŒã«ã§äœ¿çšããããã¯ãããã»ããµ
- Make-4.1-èªåãœãããŠã§ã¢æ§ç¯ãŠãŒãã£ãªãã£
- Patch-2.7.4-ãœãŒã¹ã³ãŒãããããæäœããããã®ãŠãŒãã£ãªãã£
- Perl-5.20.2-Perlèšèªã€ã³ã¿ãŒããªã¿ãŒ
- Sed-4.2.2-ã¹ããªãŒãã³ã°ããã¹ããšãã£ã¿ãŒ
- Tar-1.28-ãããªãã§
- Texinfo-5.2-ããã¥ã¡ã³ãæ
å ±ããŒãžãæäœããããã®ãŠãŒãã£ãªãã£
- Util-linux-2.26ã¯ãLinuxã·ã¹ãã çšã®ãŠãŒãã£ãªãã£ã®ã¡ã€ã³ããã±ãŒãžã§ããããšãã°ãããŠã³ããå«ãŸããŸã
- Xz-5.2.0ã¯å¥ã®ã¢ãŒã«ã€ãã§ãã
9.ãããã°æ
å ±ã®ããªãã³ã°
ãã¹ãŠãåéããããã¹ããŒã¹ãç¯çŽããããã«ãåéãããã€ããªãããããã°æ
å ±ãåé€ããããšããå§ãããŸããããŒã ã§ãã $ strip --strip-debug /tools/lib
ããã«ãã€ã³ã¹ããŒã«ãããããã¥ã¡ã³ããåé€ã§ããŸããããŸã å¿
èŠã§ã¯ãããŸãã-ãšã«ãããããã¯åéãããåã³ã€ã³ã¹ããŒã«ããããã§ã«æçµçã« $ rm -rf /tools/{,share}/{info,man,doc}
ãŸãšã
ãã®çµæãäžæçãªã·ã¹ãã ã$ LFS / toolsãã£ã¬ã¯ããªã«é
眮ãããŸãããããã¯ãGNUç°å¢ãšã·ã¹ãã æ§æã®æçµçãªã¢ã»ã³ããªã®æ¬¡ã®ã¹ãããã«é²ã¿ãŸãããã ããããã«ã€ããŠã¯åŸã§èª¬æããŸããç§ã®èäœã«ã泚ç®ããã ãããããšãããããŸãïŒç¶è¡ããã«ã¯...