重走LFS之路:(七) 基礎系統編譯準備
準備虛擬核心檔案系統
建立系統掛載目錄
mkdir -pv $LFS/{dev,proc,sys,run}
建立初始裝置節點
sudo mknod -m 600 $LFS/dev/console c 5 1 sudo mknod -m 666 $LFS/dev/null c 1 3
掛載並填充裝置目錄
sudo mount -v –bind /dev $LFS/dev
掛載虛擬核心檔案系統
mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620 mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys mount -vt tmpfs tmpfs $LFS/run
建立一個符號連結
if [ -h $LFS/dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm) fi
這時候就可以chroot到lfs的工具環境裡面來進行基礎系統的編譯,但是在這之前需要先在$LFS中建立root目錄,然後再chroot進去編譯。
進入chroot環境
sudo chroot “$LFS” /tools/bin/env -i / HOME=/root / TERM=”$TERM” / PS1=’${debian_chroot:+($debian_chroot)}/[/033[01;31m/][/A]/[/033[01;33m/]/u/[/033[00m/]@/[/033[01;32m/]/h:/[/033[01;34m/]/w/[/033[00m/]$ ‘ / PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin / /tools/bin/bash –login +h
建立必要目錄、符號連結與檔案
mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt} mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -v /usr/libexec mkdir -pv /usr/{,local/}share/man/man{1..8} case $(uname -m) in x86_64) ln -sv lib /lib64 ln -sv lib /usr/lib64 ln -sv lib /usr/local/lib64 ;; esac mkdir -v /var/{log,mail,spool} ln -sv /run /var/run ln -sv /run/lock /var/lock mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}
建立基本檔案和符號連結
ln -sv /tools/bin/{bash,cat,echo,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 sed ‘s/tools/usr/’ /tools/lib/libstdc++.la > /usr/lib/libstdc++.la ln -sv bash /bin/sh ln -sv /proc/self/mounts /etc/mtab
建立使用者儲存檔案passwd
cat > /etc/passwd << “EOF” root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/dev/null:/bin/false daemon:x:6:6:Daemon User:/dev/null:/bin/false messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false nobody:x:99:99:Unprivileged User:/dev/null:/bin/false EOF
建立使用者組檔案group
cat > /etc/group << “EOF” root:x:0: bin:x:1:daemon sys:x:2: kmem:x:3: tape:x:4: tty:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11: video:x:12: utmp:x:13: usb:x:14: cdrom:x:15: adm:x:16: messagebus:x:18: systemd-journal:x:23: input:x:24: mail:x:34: nogroup:x:99: users:x:999: EOF
這時候可以把使用者名稱位置那討厭的“I have no name!”去掉了
exec /tools/bin/bash –login +h
使用者名稱成功變身root
再建立一些必要的日誌檔案,就可以進行系統編譯啦
touch /var/log/{btmp,lastlog,wtmp} chgrp -v utmp /var/log/lastlog chmod -v 664 /var/log/lastlog chmod -v 600 /var/log/btmp
相關文章
- 重走LFS之路:(九) 基礎系統編譯-2編譯
- 重走LFS之路:(八) 基礎系統編譯-1編譯
- 重走LFS之路:(四) 工具鏈編譯-1編譯
- 重走LFS之路:(五) 工具鏈編譯-2編譯
- 重走LFS之路:(六) 工具鏈編譯-3編譯
- 重走LFS之路:(二) 儲存裝置準備
- 重走LFS之路:(三) 磁碟初始化與原始碼準備原始碼
- 重走JAVA之路(一):覆盤ButterKnife-編譯時註解Java編譯
- 重走JS之路JS
- 【譯】給小白準備的Web架構基礎知識Web架構
- linux LFS 編譯成功記錄Linux編譯
- 基於Fedora Core 5的核心編譯的準備工作(轉)編譯
- 基於Fedora Core 3的核心編譯的準備工作(轉)編譯
- C編譯: makefile基礎編譯
- C 編譯: makefile 基礎編譯
- scala_準備_spark_基礎Spark
- 彙編作業系統MenuetOS準備釋出1.0版作業系統
- FFmpeg開發筆記(七)尤拉系統編譯安裝FFmpeg筆記編譯
- 編譯系統概要編譯
- 編譯系統核心編譯
- 重走機器學習之路——形而上者謂之道機器學習
- (七)系統通用元件編寫元件
- css預編譯--sass基礎篇CSS編譯
- Python基礎之七:編碼詳解Python
- PHP基礎教程-02 搭建環境準備PHP
- 重走JAVA程式設計之路(三)反射Java程式設計反射
- Linux系統下自行編譯安裝MySQL及基礎配置全過程解析Linux編譯MySql
- 免費OA系統所具備的基礎功能
- uboot-2012.04.01移植編譯前準備boot編譯
- OpenJFX編譯填坑之路編譯
- 零基礎學Java需要做哪些準備?Java
- 【學習】SQL基礎-001-前期準備SQL
- vsphere實戰攻略1:基礎準備篇
- 容器編排系統之Kubectl工具的基礎使用
- 逆向基礎(七)
- 重走JAVA程式設計之路(一)列舉Java程式設計
- 重走JAVA程式設計之路(二)註解Java程式設計
- 編譯最小linux系統編譯Linux