登录
  • 人们都希望被别人需要 却往往事与愿违
  • 要在自己的代码里找出一个bug是十分困难的。而当你认为你的代码没有错误时, 那就更难了@《代码大全》Steve McConnel

Linux From Scratch 7.7 systemd 勘误、国内软件源

Linux Benny小土豆 7392次浏览 3173字 4个评论
文章目录[显示]

最近心头一热,开始搞起了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的启动项,要不万一启动失败,还得回退快照


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/lfs.html
喜欢 (3)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(4)个小伙伴在吐槽
  1. 假设,你无法控制防火墙去进行端口映射,但是,公司在公网上有另外一台服务器ServerA,ServerA有自己的公网IP,你有权控制ServerA,这时,我们就可以利用ServerA达到我们的目的,聪明如你,一定想到了解决方案,没错,我们可以在ServerA与ServerB之间创建一条SSH隧道,利用这条隧道将ServerA中的某个端口(假设仍然使用9906端口)与ServerB中的3306端口连接起来,这样,当我们访问ServerA的9906端口时,就相当于访问到内网ServerB中的mysql服务了,那么,我们能不能使用之前的"本地转发"的方式,在ServerA中创建SSH隧道呢?注意:浏览器中输入的是在端口转发属性中配置的"本地"的映射信息。
  2. 站长,有啥国外的VPS好推荐的吗?要弄SS,平时用facebook,youtube,INS跟韩服游戏的。
    iceliquid2016-08-24 19:11 回复
    • 看你对价格的敏感程度啦,5美元的有vultr(你拉到最下面,用我的ref我不会介意的),DigitalOcean,便宜点的还有hostus,budgetvm,berry vps,博文里有个三块五三年的,或者你可以淘宝买个匿名卡激活下aws,能用一年~我只知道这么多了。韩服游戏的话,我觉得还是用什么网游加速器更靠谱。
      Benny小土豆2016-08-24 19:17 回复
      • 好,谢谢介绍,我参考一下。
        iceliquid2016-08-24 21:08 回复