lfs(systemv版本)学习笔记第3页:http://www.javashuo.com/article/p-nlhwuvjo-g.htmlhtml
安装lfs启动脚本node
1.进入sources目录,解压并进入lfs-bootscripts包目录linux
tar -xvf lfs-bootscripts-20180820.tar.bz2 cd lfs-bootscripts-20180820
2.参照书中说明安装web
make install
3.返回sources目录并删除软件包目录shell
cd $LFS/sources/ rm -rf lfs-bootscripts-20180820
管理设备windows
1.建立udev规则并查看输出找到网卡设备名称(name后面的输出为网卡设备名字)bash
bash /lib/udev/init-net-rules.sh cat /etc/udev/rules.d/70-persistent-net.rules
2.找到重复设备并建立符号连接规则文件网络
udevadm info -a -p /sys/class/video4linux/video0 cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF" # Persistent symlinks for webcam and tuner KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \ SYMLINK+="webcam" KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \ SYMLINK+="tvtuner" EOF
网络配置dom
1.建立网络接口配置文件async
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 这里的etch0 更换为上一章节查看的网卡设备名字
2.建立dns解析文件
cat > /etc/resolv.conf << "EOF" # Begin /etc/resolv.conf domain <Your Domain Name> nameserver 8.8.8.8 nameserver 8.8.4.4 # End /etc/resolv.conf EOF
这里使用书中注意里面提供的谷歌dns地址
3,配置系统主机名字
echo "<lfs>" > /etc/hostname <lfs>更换为主机名字
4.建立/etc/hosts文件
cat > /etc/hosts << "EOF" # Begin /etc/hosts 127.0.0.1 localhost 127.0.1.1 <FQDN> <HOSTNAME> <192.168.1.1> <FQDN> <HOSTNAME> [alias1] [alias2 ...] ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters # End /etc/hosts EOF
System V Bootscript使用和配置
1.配置Sysvinit
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
2.配置系统时钟
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock UTC=1 # Set this to any options you might need to give to hwclock, # such as machine hardware clock type for Alphas. CLOCKPARAMS= # End /etc/sysconfig/clock EOF
若是电脑上面是多系统,而且有windows系统,要把UTC设置为0,也就是不使用系统硬件时间做为系统时间。若是没有windows系统不须要更改。
由于大多数使用的都是美国键盘,因此本章节剩余内容可忽略
配置语言环境
运行如下命令获取Glibc支持的全部语言环境的列表:
locale -a
结果:
C
en_US.utf8
POSIX
zh_CN.utf8
这里咱们选择en_US.utf8
如下是对对所选择的语言的测试
LC_ALL=<locale name> locale charmap
LC_ALL=<locale name> locale language LC_ALL=<locale name> locale charmap LC_ALL=<locale name> locale int_curr_symbol LC_ALL=<locale name> locale int_prefix
肯定正确的区域设置后,建立 /etc/profile
文件:
cat > /etc/profile << "EOF"
# Begin /etc/profile export LANG=en_US.utf8 (这里替换为所选择的语言环境) # End /etc/profile EOF
1.建立/etc/inputrc配置文件
cat > /etc/inputrc << "EOF" # Begin /etc/inputrc # Modified by Chris Lynn <roryo@roryo.dynup.net> # 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
1.建立/etc/shells文件
cat > /etc/shells << "EOF" # Begin /etc/shells /bin/sh /bin/bash # End /etc/shells EOF
1.更改成lfs所建立的分区到相应位置便可(这个文件是配置lfs开机自动挂载的分区)
cat > /etc/fstab << "EOF"
# Begin /etc/fstab # file system mount-point type options dump fsck # order /dev/sda9 /boot ext4 defaults 1 1 /dev/sda10 / ext4 defaults 1 1 /dev/sda11 /home ext4 defaults 1 1 /dev/sda12 swap swap pri=1 0 0 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
配置编译安装linux内核
1.首先进入sources目录
cd /sources
2.解压内核文件压缩包
tar -xvf linux-4.20.12.tar.xz
3.进入内核包目录
cd linux-4.20.12
4.准备编译
make mrproper
5.设置默认内核配置状态
make defconfig
6.设置内核
make menuconfig
7.找到如下选项
Device Drivers --->
Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] Kernel hacking ---> Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER]
8.第一项设置以下
[ ] Support for uevent helper │ │ │ │ [*] Maintain a devtmpfs filesystem to mount at /dev │ │ │ │ [*] Automount devtmpfs at /dev, after the kernel mounted the ro│ │ │ │ [*] Select only drivers that don't need compile-time external fir│ │ │ │ [*] Disable drivers features which enable custom firmware buildin│ │ │ │ Firmware loader ---> │ │ │ │ [ ] Driver Core verbose debug messages │ │ │ │ [*] Managed device resources verbose debug messages │ │ │ │ [ ] Test driver remove calls during probe (UNSTABLE) │ │ │ │ < > Build kernel module to test asynchronous driver probing
9.第二项设置以下
┌────^(-)─────────────────────────────────────────────────────────────┐ │ │ │ [ ] x86 instruction decoder selftest │ │ │ │ IO delay type (port 0x80 based port-IO delay [recommended]) │ │ │ │ [*] Debug boot parameters │ │ │ │ [ ] CPA self-test code │ │ │ │ [*] Allow gcc to uninline functions marked 'inline' │ │ │ │ [ ] Debug low-level entry code │ │ │ │ [ ] NMI Selftest │ │ │ │ [*] Debug the x86 FPU code │ │ │ │ < > ATOM Punit debug driver │ │ │ │ Choose kernel unwinder (Frame pointer unwinder) --->
10.若是您的主机硬件使用UEFI,请自行添加此项设置
Processor type and features --->
[*] EFI stub support [CONFIG_EFI_STUB]
11.设置调整完保存退出便可
12.编译内核映像和模块
make -j8
13.安装配置模块
make modules_install
14.复制一些内核的启动文件到boot分区
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-4.20.12-lfs-8.4
cp -iv System.map /boot/System.map-4.20.12 cp -iv .config /boot/config-4.20.12
15.安装Linux内核的文档:
install -d /usr/share/doc/linux-4.20.12
cp -r Documentation/* /usr/share/doc/linux-4.20.12
16.配置linux模块加载顺序
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
17.返回sources目录并删除包目录
cd $LFS/sources rm -rf linux-4.20.12
安装配置grub引导
1.安装grub引导到MBR
grub-install /dev/sda
2.建立grub配置文件
cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod ext2 set root=(hd0,2) 括号里面更改成你所安装lfs的分区或boot分区 例如/dev/sda2为(hd0,2) menuentry "GNU/Linux, Linux 4.18.5-lfs-8.3" { linux /boot/vmlinuz-4.18.5-lfs-8.3 root=/dev/sda2 ro(这里的/dev/sda2更改成你所安装lfs的分区号 例如/dev/sda2) } (若是boot单独分区,则把这里的/boot删除。)
EOF
多系统引导文件示例:
cat > /boot/grub/grub.cfg << "EOF" # Begin /boot/grub/grub.cfg set default=0 set timeout=5 menuentry "GNU/Linux, Linux 4.18.5-lfs-8.3" { insmod ext2 set root=(hd0,5) linux /vmlinuz-4.18.5-lfs-8.3 root=/dev/sda6 ro } menuentry 'Manjaro Linux'{ insmod ext2 set root='hd0,msdos9' linux /vmlinuz-4.19-x86_64 root=/dev/sda10 ro initrd /intel-ucode.img /initramfs-4.19-x86_64.img } menuentry 'Windows 7 (on /dev/sda1)'{ insmod ntfs set root='hd0,msdos1' chainloader +1 } EOF
设置系统版本及版本号
echo 8.4 > /etc/lfs-release
cat > /etc/lsb-release << "EOF" DISTRIB_ID="Linux From Scratch" DISTRIB_RELEASE="8.4" DISTRIB_CODENAME="<your name here>"(括号里改成本身起的名字) DISTRIB_DESCRIPTION="Linux From Scratch" EOF
运行下面的命令,退出chroot,卸载lfs的分区
exit
umount -v $LFS/dev/pts umount -v $LFS/dev umount -v $LFS/run umount -v $LFS/proc umount -v $LFS/sys umount -v $LFS umount -v $LFS/usr umount -v $LFS/home umount -v $LFS
重启进入lfs系统
reboot
若是须要本机的grub引导lfs则在root用户下运行如下命令建立lfs的引导项
须要安装os-prober软件包,并挂载lfs的分区,在运行下面命令,添加lfs的启动项
grub-mkconfig -o /boot/grub/grub.cfg
肯定添加完lfs引导项后,重启机器进入lfs选项,便可进入lfs操做系统。