LFS 安装笔记 (二)
生活随笔
收集整理的這篇文章主要介紹了
LFS 安装笔记 (二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第三部?? 構建LFS系統<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 安裝系統基礎軟件
?
掛載虛擬內核文件系統 ----- 指那些是由內核產生但并不存在于硬盤上(存在于內存中)的文件系統,他們被用來與內核進行通信 mkdir -v $LFS/{dev,proc,sys} 創建初始設備節點 mknod -m 600 /mnt/lfs/dev/console c 5 1 mknod -m 666 /mnt/lfs/dev/null c 1 3 掛載并填充dev目錄 mount -v --bind /dev/ /mnt/lfs/dev/ 掛載虛擬內核文件系統 mount -vt devpts devpts /mnt/lfs/dev/pts mount -vt tmpfs shm /mnt/lfs/dev/shm/ mount -vt proc proc /mnt/lfs/proc/ mount -vt sysfs sysfs /mnt/lfs/sys/?
進入chroot環境 chroot "$LFS" /tools/bin/env -i??? ?HOME=/root TERM="$TERM" PS1='\u:\w\$ '???? PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin???? /tools/bin/bash --login +h?
(報錯: /bin/bash: error while loading shared libraries: libtermcap.so.2: cannot open shared object file: No such file or directory chroot: failed to run command `bash': No such file or directory 缺少模塊等等 可以使用 ldd bash 看依賴關系來解決,然后設置符號鏈接就可以)?
會提示I have no name! 這是正常的,因為 /etc/passwd 還沒有創建?
創建系統目錄結構 mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt} mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0755 /root install -dv -m 1777 /tmp /var/tmp? mkdir –pv /usr/local mkdir -pv /usr/local/{bin,include,lib,sbin,src} mkdir -pv /usr/local/share/{doc,info,locale,man} mkdir -v /usr/local/share/{misc,terminfo,zoneinfo} mkdir -pv /usr/local/share/man/{1..8}?
for dir in /usr? /usr/local/ ;do > ln -sv share/{man,doc,info} $dir > done?
mkdir -v /var/{lock,log,mail,run,spool} mkdir -pv /var/{opt,cache,lib/{misc,locate},local}?
case $(uname -m ) in > x86_64) ln -sv lib /lib64 && ln -sv lib /usr/lib64;; > esac?
創建必須的文件和符號鏈接 ln -sv /tools/bin/{bash,cat,echo,grep,pwd,stty}? /bin/ ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1}? /usr/lib ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib/ ln -sv bash? /bin/sh touch /etc/mtab?
cat > /etc/passwd <<"EOF" > root:x:0:0:root:/root:/bin/bash > nobody:x:99:99:unprivileged User:/dev/null:/bin/false > EOF?
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: > uucp:x:10: > audio:x:11: > video:x:12: > utmp:x:13: > usb:x:14: > cdrom:x:15: > mail:x:34: > nogroup:x:99: > EOF?
exec /tools/bin/bash --login +h (因為passwd 和group文件都已經創建,所以目前顯示應該是root:/#)?
創建一些程序的所需的日志文件,否則這些程序將無法運行: touch /var/run/utmp? /var/log/{btmp,lastlog,wtmp} chgrp -v utmp /var/run/utmp? /var/log/lastlog chmod -v 664 /var/run/utmp /var/log/lastlog?
安裝linux API headers ---將內核的應用程序編程接口(API)提供給 Glibc 使用 cd sources/linux-2.6.32.8 make mrproper make? headers_check (報錯:gcc: error trying to exec 'cc1': execvp: No such file or directory make[1]: *** [scripts/basic/fixdep] Error 1 make: *** [scripts_basic] Error 2 解決辦法:找到cc1 所在位置,并復制到對應位置,cp /mnt/lfs/tools/libexec/gcc/x86_64-unknown-linux-gnu/4.4.3/cc1?? /mnt/lfs/usr/lib/gcc/x86_64-unknown-linux-gnu/4.4.3/cc1 ) (報錯:error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory? 使用ldd 和find 查看所需文件放在在哪里,做符號鏈接或者copy都可以) (報錯: /bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.3/../../../../x86_64-unknown-linux-gnu/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory 解決方法與上面一樣)?
make INSTALL_HDR_PATH=dest headers_install cp -rv dest/include/*? /usr/include/?
安裝manpages ---- 包含多余1900頁的幫助文檔 tar -jxvf man-pages-3.23.tar.bz2 cd man-pages-3.23 make install?
安裝glibc ---包含了主要的 C 語言庫 cd?? cd glibc-2.11.1?? DL=$(readelf -l /bin/sh | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p')???
unset DL sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in?
mkdir? ../glibc-build cd? ../glibc-build cp -v ../glibc-2.11.1/iconvdata/gconv-modules iconvdata make make? install (報錯: ??? 找不到/etc/ld.so.conf文件,這個文件可以直接創建就可以了) 報錯: /bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.3/../../../../x86_64-unknown-linux-gnu/bin/ld: cannot find -lcidn Execution of gcc failed! 解決辦法: 找到cidm.so相關的文件并復制到相應的位置即可)?
mkdir -pv /usr/lib/locale make localedata/install-locales?
cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf EOF?
cp -v --remove-destination /usr/share/zoneinfo/Asia/Chongqing? /etc/localtime?????
cat > /etc/ld.so.conf << "EOF" # Begin /etc/ld.so.conf /usr/local/lib /opt/lib # End /etc/ld.so.conf EOF?
再次調整工具鏈 mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld?
gcc -dumpspecs|sed -e 's@/tools@@g'-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}'???? -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > `dirname $(gcc --print-libgcc-file-name)`/specs?
安裝zlib ---包含 zlib 庫,很多程序中的壓縮或者解壓縮程序都會用到這個庫 tar -jxvf zlib-1.2.3.tar.bz2 ./configure --prefix=/usr --shared --libdir=/lib make make install (報錯: gcc -O3 -DNO_vsnprintf -DUSE_MMAP -o example example.o -L. libz.a /bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.3/../../../../x86_64-unknown-linux-gnu/bin/ld: crtn.o: No such file: No such file or directory 解決方法: 找到crtn.o 并復制到相應的文件夾) ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so make clean ./configure --prefix=/usr make install chmod -v 644 /usr/lib/libz.a?
安裝binutils ---一組開發工具,包括連接器、匯編器和其他用于目標文件和檔案的工具 cd? binutils-build ../sources/binutils-2.20/configure? --prefix=/usr/?? --enable-shared make tooldir=/usr make tooldir=/usr install cp -v ../binutils-2.20/include/libiberty.h /usr/include?
安裝gmp ----包含數學庫。庫中有用于專門計算單精度數值的函數。 cd gmp-5.0.0 ./configure --prefix=/usr --enable-cxx --enable-mpbsd make make install?
安裝mpfr ---包含高精度數學函數 cd mpfr-2.4.2 ./configure --prefix=/usr --enable-thread-safe make make install?
安裝file --- 包含判定文件類型的工具 ./configure --prefix=/usr make make install?
安裝gcc----包含 GNU 編譯器,其中有 C 和 C++ 編譯器 cd gcc-build ../gcc-4.4.3/configure --prefix=/usr???? --libexecdir=/usr/lib --enable-shared???? --enable-threads=posix --enable-__cxa_atexit???? --enable-clocale=gnu --enable-languages=c,c++???? --disable-multilib --disable-bootstrap? --with-gmp=/gmp/?? --with-mpfr=/mpfr/?
make make install?
安裝sed ./configure --prefix=/usr --bindir=/bin --htmldir=/usr/share/doc/sed-4.2.1 make make install?
安裝pkg-config ---在configure 和make 中將include ,library 路徑傳給編譯工具 tar -zxvf pkg-config-0.23.tar.gz cd pkg-config-0.23 ./configure --prefix=/usr make make install?
安裝ncurses ./configure --prefix=/usr --with-shared --without-debug --enable-widec make make install?
安裝Util-linux-ng tar -jxvf util-linux-ng-2.17.tar.bz2 sed -e 's@etc/adjtime@var/lib/hwclock/adjtime@g'???? -i $(grep -rl '/etc/adjtime' .) mkdir -pv /var/lib/hwclock ./configure --enable-arch --enable-partx --enable-write make make install?
安裝E2fsprogs --- 管理ext2、ext3,ext4文件系統 tar -zxvf e2fsprogs-1.41.10.tar.gz mkdir -v build cd build/ ../configure --prefix=/usr --with-root-prefix=""???? --enable-elf-shlibs --disable-libblkid --disable-libuuid???? --disable-uuidd --disable-fsck make install make install-libs?
安裝Coreutils ----包括一套顯示、設置基本系統屬性的工具 cd coreutils-8.4 ./configure --prefix=/usr???? --enable-no-install-program=kill,uptime make make install?
安裝Iana-Etc? ---- 軟件包提供了網絡服務和協議的數據 tar -jxvf iana-etc-2.30.tar.bz2 cd iana-etc-2.30 make make install?
安裝M4 ----包含一個宏處理器 ./configure --prefix=/usr make make install?
轉載于:https://blog.51cto.com/linuxlab/315277
總結
以上是生活随笔為你收集整理的LFS 安装笔记 (二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows域内的时间同步
- 下一篇: IPSec逻辑体系架构