最近心头一热,开始搞起了LFS,我使用的手册是由linux中国翻译的LFS-BOOK-7.7-systemd,发现其中略有错误,顺便把一路过来自己纠结的地方都记下来备忘。
Linux中国LFS页面:https://linux.cn/article-5865-1.html
勘误
100页 跨页复制的时候会导致多出左侧目录的内容(有些会有这个问题,有些则没有)
for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_STARTFILE_PREFIX_1 #undef STANDARD_STARTFILE_PREFIX_2 #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done
113页 include-fixed少了个-(pdf中有,但是复制的时候就没了)
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
113页 跨页复制的时候会导致多出左侧目录的内容
for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_STARTFILE_PREFIX_1 #undef STANDARD_STARTFILE_PREFIX_2 #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done
141页 跨页复制的时候会导致多出左侧目录的内容
make -C gnulib-lib make -C intl pluralx.c make -C src msgfmt make -C src msgmerge make -C src xgettext
195页 应该为一行,或者行尾添加\
install -v -Dm644 ../glibc-2.21/nscd/nscd.tmpfiles \ /usr/lib/tmpfiles.d/nscd.conf install -v -Dm644 ../glibc-2.21/nscd/nscd.service \ /lib/systemd/system/nscd.service
223页 应该为一行,或者行尾添加\
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/4.9.2/liblto_plugin.so \ /usr/lib/bfd-plugins/
234页 应该为一行,或者行尾添加\
ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) \ /usr/lib/libncursesw.so
255页 跨页复制的时候会导致多出左侧目录的内容
LIBS=-L/tools/lib \ CFLAGS=-I/tools/include \ PKG_CONFIG_PATH=/tools/lib/pkgconfig \ ../configure --prefix=/usr \ --bindir=/bin \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck
257页 应该为一行,或者行尾添加\
install-info --dir-file=/usr/share/info/dir \ /usr/share/info/libext2fs.info
278页 应该为一行,或者行尾添加\
mv -v /usr/lib/lib{readline,history}.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) \ /usr/lib/libreadline.so ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) \ /usr/lib/libhistory.so
321页 全角括号
ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so
334页 全角括号
sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
334页 复制的时候disable-vlock就变成disablevlock了
PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock
347页 全角括号
sed -i "s:blkid/::" $(grep -rl "blkid/blkid.h")
355页 全角括号
mv -v /usr/lib/libdbus-1.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so
415页 跨页复制的时候会导致多出左侧目录的内容
cat > /etc/fstab << "EOF" # Begin /etc/fstab /dev/sda5 / ext4 defaults 1 1 # End /etc/fstab EOF
421页 跨页复制的时候会导致多出左侧目录的内容
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
经验
VMWare
如果使用VMWare做实验,建议配置的时候使用SATA硬盘(默认是SCSI),如果使用SCSI在配置Kernel的时候要记得编译进VMWare的SCSI与和SCSI有关的驱动
配置Kernel
在选择Device Drivers的时候,可以按M选择编译成模块或者Y编译进内核。
区别是模块是后加载的。
Grub
为了防止挂掉,可以修改"宿主机"的grub.cfg添加lfs的启动项,要不万一启动失败,还得回退快照