天天看點

重走LFS之路:(七) 基礎系統編譯準備重走LFS之路:(七) 基礎系統編譯準備

重走LFS之路:(七) 基礎系統編譯準備重走LFS之路:(七) 基礎系統編譯準備

(題圖來自: techradar.com)

<a target="_blank"></a>

建立系統挂載目錄

<code>mkdir -pv $lfs/{dev,proc,sys,run}</code>

建立初始裝置節點

<code>sudo mknod -m 600 $lfs/dev/console c 5 1</code>

<code>sudo mknod -m 666 $lfs/dev/null c 1 3</code>

挂載并填充裝置目錄

<code>sudo mount -v –bind /dev $lfs/dev</code>

挂載虛拟核心檔案系統

<code>mount -vt devpts devpts $lfs/dev/pts -o gid=5,mode=620</code>

<code>mount -vt proc proc $lfs/proc</code>

<code>mount -vt sysfs sysfs $lfs/sys</code>

<code>mount -vt tmpfs tmpfs $lfs/run</code>

建立一個符号連結

<code>if [ -h $lfs/dev/shm ]; then</code>

<code>mkdir -pv $lfs/$(readlink $lfs/dev/shm)</code>

<code>fi</code>

這時候就可以chroot到lfs的工具環境裡面來進行基礎系統的編譯,但是在這之前需要先在$lfs中建立root目錄,然後再chroot進去編譯。

<code>sudo chroot “$lfs” /tools/bin/env -i \</code>

<code>home=/root \</code>

<code>term=”$term” \</code>

<code>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\]$ ‘ \</code>

<code>path=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \</code>

<code>/tools/bin/bash –login +h</code>

<code>mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}</code>

<code>mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}</code>

<code>install -dv -m 0750 /root</code>

<code>install -dv -m 1777 /tmp /var/tmp</code>

<code>mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}</code>

<code>mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}</code>

<code>mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}</code>

<code>mkdir -v /usr/libexec</code>

<code>mkdir -pv /usr/{,local/}share/man/man{1..8}</code>

<code>case $(uname -m) in</code>

<code>x86_64) ln -sv lib /lib64</code>

<code>ln -sv lib /usr/lib64</code>

<code>ln -sv lib /usr/local/lib64 ;;</code>

<code>esac</code>

<code>mkdir -v /var/{log,mail,spool}</code>

<code>ln -sv /run /var/run</code>

<code>ln -sv /run/lock /var/lock</code>

<code>mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}</code>

建立基本檔案和符号連結

<code>ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin</code>

<code>ln -sv /tools/bin/perl /usr/bin</code>

<code>ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib</code>

<code>ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib</code>

<code>sed ‘s/tools/usr/’ /tools/lib/libstdc++.la &gt; /usr/lib/libstdc++.la</code>

<code>ln -sv bash /bin/sh</code>

<code></code>

<code>ln -sv /proc/self/mounts /etc/mtab</code>

建立使用者存儲檔案passwd

<code>cat &gt; /etc/passwd &lt;&lt; “eof”</code>

<code>root:x:0:0:root:/root:/bin/bash</code>

<code>bin:x:1:1:bin:/dev/null:/bin/false</code>

<code>daemon:x:6:6:daemon user:/dev/null:/bin/false</code>

<code>messagebus:x:18:18:d-bus message daemon user:/var/run/dbus:/bin/false</code>

<code>nobody:x:99:99:unprivileged user:/dev/null:/bin/false</code>

<code>eof</code>

建立使用者組檔案group

<code>cat &gt; /etc/group &lt;&lt; “eof”</code>

<code>root:x:0:</code>

<code>bin:x:1:daemon</code>

<code>sys:x:2:</code>

<code>kmem:x:3:</code>

<code>tape:x:4:</code>

<code>tty:x:5:</code>

<code>daemon:x:6:</code>

<code>floppy:x:7:</code>

<code>disk:x:8:</code>

<code>lp:x:9:</code>

<code>dialout:x:10:</code>

<code>audio:x:11:</code>

<code>video:x:12:</code>

<code>utmp:x:13:</code>

<code>usb:x:14:</code>

<code>cdrom:x:15:</code>

<code>adm:x:16:</code>

<code>messagebus:x:18:</code>

<code>systemd-journal:x:23:</code>

<code>input:x:24:</code>

<code>mail:x:34:</code>

<code>nogroup:x:99:</code>

<code>users:x:999:</code>

這時候可以把使用者名位置那讨厭的“i have no name!”去掉了

<code>exec /tools/bin/bash –login +h</code>

使用者名成功變身root

再建立一些必要的日志檔案,就可以進行系統編譯啦

<code>touch /var/log/{btmp,lastlog,wtmp}</code>

<code>chgrp -v utmp /var/log/lastlog</code>

<code>chmod -v 664 /var/log/lastlog</code>

<code>chmod -v 600 /var/log/btmp</code>

原文釋出時間:2015-04-10

本文來自雲栖合作夥伴“linux中國”

繼續閱讀