The Last
你最近有快照吗? 没有, 那么赶紧来一张吧, 那么多软件重新编译一次也是很费时间的。
- 编译完最后一个
vim
,LFS 的编译已经进入了尾声,不要着急,剩下的也就是几条命令的事,认真点,很快的
现在先logou
出去。
这之后的登录就不用先前的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
这是现在将要用到的
chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash --login
而后是删除tools
文件夹, 不过避免出现问题, 我没有删而是
mv tools tools-bak
想删想留都可以
而后安装LFS-Bootscript
进入sources
目录, 解压什么的,大家都懂
make install
就行了
因为我是在虚拟机中编译的,书上的好多模块的安装跳过了,大家有需求自己看吧
IP
cd /etc/sysconfig/
cat > ifconfig.eth0 << "EOF"
ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
EOF
这是书上的配置文件
不能照搬啊,要根据实际情况改
子网掩码就是PREFIX
,24 代表的就是255.255.255.0
换成2进制就是24位
而后是DNS
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
# End /etc/resolv.conf
EOF
这样就可以了
主机名
echo lfs > /etc/hostname
我的就叫lfs
hosts
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost
# End /etc/hosts (network card version)
EOF
就这样就可以了
init
cat > /etc/inittab << "EOF"
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc S
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab
EOF
照写就可以
修改rc.site
文件
它在/etc/sysconfig/rc.site
中
要把其中的SYSKLOGD_PARMS
参数设置为空
也就是像下面这样
# Optional sysklogd parameters
SYSKLOGD_PARMS=
已经有vim了, 修改一下这个文件还是很简单的
设置语言
cat > /etc/profile << "EOF"
# Begin /etc/profile
export LANG=en_US.UTF-8
# End /etc/profile
EOF
设置特殊字符支持
cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <[email protected]>
# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off
# Enable 8bit input
set meta-flag On
set input-meta On
# Turns off 8th bit stripping
set convert-meta Off
# Keep the 8th bit for display
set output-meta On
# none, visible or audible
set bell-style none
# All of the following map the escape sequence of the value
# contained in the 1st argument to the readline specific functions
"\eOd": backward-word
"\eOc": forward-word
# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line
# End /etc/inputrc
EOF
cat > /etc/shells << "EOF"
# Begin /etc/shells
/bin/sh
/bin/bash
# End /etc/shells
EOF
而后是fstab文件
cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
/dev/sdc1 / ext4 defaults 1 1
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
# End /etc/fstab
EOF
设置挂载点
我的电脑上是sdc1
最后编译内核
make mrproper
make defconfig
make LANG=en_US LC_ALL= menuconfig
就进入配置界面
有东西要修改的
Device Drivers --->
Generic Driver Options --->
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
认真找一找, 放心,绝对有
make
make modules_install
cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-3.19-lfs-7.7
cp -v System.map /boot/System.map-3.19
cp -v .config /boot/config-3.19
install -d /usr/share/doc/linux-3.19
cp -r Documentation/* /usr/share/doc/linux-3.19
我的是64位系统所以是x86_64
install -v -m755 -d /etc/modprobe.d
cat > /etc/modprobe.d/usb.conf << "EOF"
# Begin /etc/modprobe.d/usb.conf
install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
# End /etc/modprobe.d/usb.conf
EOF
而后是grub的安装
grub-install /dev/sdc
cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5
insmod ext2
set root=(hd0,2)
menuentry "GNU/Linux, Linux 3.19-lfs-7.7" {
linux /boot/vmlinuz-3.19-lfs-7.7 root=/dev/sda2 ro
}
EOF
echo 7.7 > /etc/lfs-release
cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Linux From Scratch"
DISTRIB_RELEASE="7.7"
DISTRIB_CODENAME="<your name here>"
DISTRIB_DESCRIPTION="Linux From Scratch"
EOF
其实写到这里,大家不要一味着追求速度,头脑清醒些,引导安装不是开玩笑,
很可能把主系统的引导覆盖了,本系统也未能成功,
这才是让人难过的事,我的主系统用的是Ubuntu-server
,
用过Ubuntu
的都知道,修复引导之后登录进系统首先要做的是
update-grub2
现在logout
出去, 把ubuntu
的引导更新一下,
也是完全没问题的, 不过永远不要忘记两个字–快照, 小心驶得万年船啊。
回顾LFS
的安装, 新的东西确实不少, 不过只要有一定的基础,
接受起来蛮快的,还有一点便是坚持, 我这次编译LFS
用了
差不多两星期, 失败了3次,虽然归根到底是我不认真的问题,
但我想提醒大家一句,好好看LFS-BOOK
, 命令输过之后要记得检查,
否则错误都不知是哪出现的问题。
加油吧, 努力就会成功的,而前方只是个LFS
而已。