lfs准备使用桌面环境,首先需要构建xorg服务
xorg服务项目地址:http://www.linuxfromscratch.org/blfs/view/stable/x/xorg7.html
一.制作构建xorg包的自动化脚本
1.需要完成书中bash shell启动文件章节
bash shell启动文件项目地址:http://www.linuxfromscratch.org/blfs/view/stable/postlfs/profile.html
我的相应的操作笔记:https://www.cnblogs.com/renren-study-notes/p/10287905.html
2.在blfs-sources目录下创建xc工作目录
# mkdir xc && cd xc
3.创建安装前缀这里使用linux通用的/usr目录
export XORG_PREFIX="/usr"
4.创建引用设置的变量
export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \ --localstatedir=/var --disable-static"
5.切换root用户创建变量脚本文件
cat > /etc/profile.d/xorg.sh << EOF XORG_PREFIX="$XORG_PREFIX" XORG_CONFIG="--prefix=\$XORG_PREFIX --sysconfdir=/etc --localstatedir=/var --disable-static" export XORG_PREFIX XORG_CONFIG EOF chmod 644 /etc/profile.d/xorg.sh
重启后开始编译安装xorg的每一个包
主要编译过程概述(详细步骤参照blfs总页笔记)
blfs学习笔记总页链接:https://www.cnblogs.com/renren-study-notes/p/10214504.html
1.进入xc目录 2.下载包 3.校验md5 4.解压包 5.进入包目录 6.参照书中说明编译安装配置 7.退出目录删除解压的包的文件
2.xorg常规库章节操作步骤
fontconfig包在我的这篇笔记中有相关内容:https://www.cnblogs.com/renren-study-notes/p/10288321.html
首先创建一个用于验证md5的文件
cat > lib-7.md5 << "EOF" c5ba432dd1514d858053ffe9f4737dd8 xtrans-1.3.5.tar.bz2 6b0f83e851b3b469dd660f3a95ac3e42 libX11-1.6.6.tar.bz2 52df7c4c1f0badd9f82ab124fb32eb97 libXext-1.3.3.tar.bz2 d79d9fe2aa55eb0f69b1a4351e1368f7 libFS-1.0.7.tar.bz2 addfb1e897ca8079531669c7c7711726 libICE-1.0.9.tar.bz2 499a7773c65aba513609fe651853c5f3 libSM-1.2.2.tar.bz2 eeea9d5af3e6c143d0ea1721d27a5e49 libXScrnSaver-1.2.3.tar.bz2 8f5b5576fbabba29a05f3ca2226f74d3 libXt-1.1.5.tar.bz2 41d92ab627dfa06568076043f3e089e4 libXmu-1.1.2.tar.bz2 20f4627672edb2bd06a749f11aa97302 libXpm-3.5.12.tar.bz2 e5e06eb14a608b58746bdd1c0bd7b8e3 libXaw-1.0.13.tar.bz2 07e01e046a0215574f36a3aacb148be0 libXfixes-5.0.3.tar.bz2 f7a218dcbf6f0848599c6c36fc65c51a libXcomposite-0.4.4.tar.bz2 802179a76bded0b658f4e9ec5e1830a4 libXrender-0.9.10.tar.bz2 58fe3514e1e7135cf364101e714d1a14 libXcursor-1.1.15.tar.bz2 0cf292de2a9fa2e9a939aefde68fd34f libXdamage-1.1.4.tar.bz2 0920924c3a9ebc1265517bdd2f9fde50 libfontenc-1.1.3.tar.bz2 b7ca87dfafeb5205b28a1e91ac3efe85 libXfont2-2.0.3.tar.bz2 331b3a2a3a1a78b5b44cfbd43f86fcfe libXft-2.3.2.tar.bz2 1f0f2719c020655a60aee334ddd26d67 libXi-1.7.9.tar.bz2 0d5f826a197dae74da67af4a9ef35885 libXinerama-1.1.4.tar.bz2 28e486f1d491b757173dd85ba34ee884 libXrandr-1.5.1.tar.bz2 5d6d443d1abc8e1f6fc1c57fb27729bb libXres-1.2.0.tar.bz2 ef8c2c1d16a00bd95b9fdcef63b8a2ca libXtst-1.2.3.tar.bz2 210b6ef30dda2256d54763136faa37b9 libXv-1.0.11.tar.bz2 4cbe1c1def7a5e1b0ed5fce8e512f4c6 libXvMC-1.0.10.tar.bz2 d7dd9b9df336b7dd4028b6b56542ff2c libXxf86dga-1.1.4.tar.bz2 298b8fff82df17304dfdb5fe4066fe3a libXxf86vm-1.1.4.tar.bz2 d2f1f0ec68ac3932dd7f1d9aa0a7a11c libdmx-1.1.4.tar.bz2 8f436e151d5106a9cfaa71857a066d33 libpciaccess-0.14.tar.bz2 4a4cfeaf24dab1b991903455d6d7d404 libxkbfile-1.0.9.tar.bz2 42dda8016943dc12aff2c03a036e0937 libxshmfence-1.3.tar.bz2 EOF
下载并校验所有软件包
mkdir lib && cd lib && grep -v \'^#\' ../lib-7.md5 | awk \'{print $2}\' | wget -i- -nc \ -B https://www.x.org/pub/individual/lib/ && md5sum -c ../lib-7.md5
切换root用户并配置as root脚本
su
as_root() { if [ $EUID = 0 ]; then $* elif [ -x /usr/bin/sudo ]; then sudo $* else su -c \\"$*\\" fi } export -f as_root
创建一个出错时退出的bash
#bash -e
运行以下命令安装所有软件包
#for package in $(grep -v \'^#\' ../lib-7.md5 | awk \'{print $2}\') do packagedir=${package%.tar.bz2} tar -xf $package pushd $packagedir case $packagedir in libICE* ) ./configure $XORG_CONFIG ICE_LIBS=-lpthread ;; libXfont2-[0-9]* ) ./configure $XORG_CONFIG --disable-devel-docs ;; libXt-[0-9]* ) ./configure $XORG_CONFIG \ --with-appdefaultdir=/etc/X11/app-defaults ;; * ) ./configure $XORG_CONFIG ;; esac make -j8 #make check 2>&1 | tee ../$packagedir-make_check.log as_root make install popd rm -rf $packagedir as_root /sbin/ldconfig done
退出之前启动的bash
exit
3. Mesa的依赖关系图
4.编译安装curl最后的小测试运行提供的命令查看有没有下载文件
5.编译安装cmack测试时的命令bin / ctest -j <N>
-O cmake-3.12.1-test.log(<N>参数为cpu核心数)
6.安装mesa时选择对应自己显卡型号的驱动程序
i915:intel显卡
r300,r600,radeonsi:amd显卡
nouveau:n卡
二.安装xorg应用程序
创建md5目录
su cat > app-7.md5 << "EOF" 3b9b79fa0f9928161f4bad94273de7ae iceauth-1.0.8.tar.bz2 c4a3664e08e5a47c120ff9263ee2f20c luit-1.1.1.tar.bz2 18c429148c96c2079edda922a2b67632 mkfontdir-1.0.7.tar.bz2 987c438e79f5ddb84a9c5726a1610819 mkfontscale-1.1.3.tar.bz2 e475167a892b589da23edf8edf8c942d sessreg-1.1.1.tar.bz2 2c47a1b8e268df73963c4eb2316b1a89 setxkbmap-1.3.1.tar.bz2 3a93d9f0859de5d8b65a68a125d48f6a smproxy-1.0.6.tar.bz2 f0b24e4d8beb622a419e8431e1c03cd7 x11perf-1.6.0.tar.bz2 f3f76cb10f69b571c43893ea6a634aa4 xauth-1.0.10.tar.bz2 d50cf135af04436b9456a5ab7dcf7971 xbacklight-1.2.2.tar.bz2 9956d751ea3ae4538c3ebd07f70736a0 xcmsdb-1.0.5.tar.bz2 b58a87e6cd7145c70346adad551dba48 xcursorgen-1.0.6.tar.bz2 8809037bd48599af55dad81c508b6b39 xdpyinfo-1.3.2.tar.bz2 480e63cd365f03eb2515a6527d5f4ca6 xdriinfo-1.0.6.tar.bz2 249bdde90f01c0d861af52dc8fec379e xev-1.2.2.tar.bz2 90b4305157c2b966d5180e2ee61262be xgamma-1.0.6.tar.bz2 f5d490738b148cb7f2fe760f40f92516 xhost-1.0.7.tar.bz2 6a889412eff2e3c1c6bb19146f6fe84c xinput-1.6.2.tar.bz2 12610df19df2af3797f2c130ee2bce97 xkbcomp-1.4.2.tar.bz2 c747faf1f78f5a5962419f8bdd066501 xkbevd-1.1.4.tar.bz2 502b14843f610af977dffc6cbf2102d5 xkbutils-1.0.4.tar.bz2 938177e4472c346cf031c1aefd8934fc xkill-1.0.5.tar.bz2 5dcb6e6c4b28c8d7aeb45257f5a72a7d xlsatoms-1.1.2.tar.bz2 4fa92377e0ddc137cd226a7a87b6b29a xlsclients-1.1.4.tar.bz2 e50ffae17eeb3943079620cb78f5ce0b xmessage-1.0.5.tar.bz2 723f02d3a5f98450554556205f0a9497 xmodmap-1.0.9.tar.bz2 eaac255076ea351fd08d76025788d9f9 xpr-1.0.5.tar.bz2 4becb3ddc4674d741487189e4ce3d0b6 xprop-1.2.3.tar.bz2 ebffac98021b8f1dc71da0c1918e9b57 xrandr-1.5.0.tar.bz2 96f9423eab4d0641c70848d665737d2e xrdb-1.1.1.tar.bz2 c56fa4adbeed1ee5173f464a4c4a61a6 xrefresh-1.0.6.tar.bz2 70ea7bc7bacf1a124b1692605883f620 xset-1.2.4.tar.bz2 5fe769c8777a6e873ed1305e4ce2c353 xsetroot-1.1.2.tar.bz2 558360176b718dee3c39bc0648c0d10c xvinfo-1.1.3.tar.bz2 11794a8eba6d295a192a8975287fd947 xwd-1.0.7.tar.bz2 9a505b91ae7160bbdec360968d060c83 xwininfo-1.1.4.tar.bz2 79972093bb0766fcd0223b2bd6d11932 xwud-1.0.5.tar.bz2 EOF
创建app目录并下载包到app目录
mkdir app && cd app && grep -v \'^#\' ../app-7.md5 | awk \'{print $2}\' | wget -i- -nc \ -B https://www.x.org/pub/individual/app/ && md5sum -c ../app-7.md5
切换root用户并配置as root脚本
su
as_root() { if [ $EUID = 0 ]; then $* elif [ -x /usr/bin/sudo ]; then sudo $* else su -c \\"$*\\" fi } export -f as_root
启动一个出错时自动退出的bash
bash -e
运行以下命令安装所有app包
for package in $(grep -v \'^#\' ../app-7.md5 | awk \'{print $2}\') do packagedir=${package%.tar.bz2} tar -xf $package pushd $packagedir case $packagedir in luit-[0-9]* ) sed -i -e "/D_XOPEN/s/5/6/" configure ;; esac ./configure $XORG_CONFIG make -j8 as_root make -j8 install popd rm -rf $packagedir done
退出之前创建的bash
exit
删除已损坏的未记录脚本
as_root rm -f $XORG_PREFIX/bin/xkeystone
三.安装xorg字体
添加MD5文件
cat > font-7.md5 << "EOF" 23756dab809f9ec5011bb27fb2c3c7d6 font-util-1.3.1.tar.bz2 0f2d6546d514c5cc4ecf78a60657a5c1 encodings-1.0.4.tar.bz2 6d25f64796fef34b53b439c2e9efa562 font-alias-1.0.3.tar.bz2 fcf24554c348df3c689b91596d7f9971 font-adobe-utopia-type1-1.0.4.tar.bz2 e8ca58ea0d3726b94fe9f2c17344be60 font-bh-ttf-1.0.3.tar.bz2 53ed9a42388b7ebb689bdfc374f96a22 font-bh-type1-1.0.3.tar.bz2 bfb2593d2102585f45daa960f43cb3c4 font-ibm-type1-1.0.3.tar.bz2 6306c808f7d7e7d660dfb3859f9091d2 font-misc-ethiopic-1.0.3.tar.bz2 3eeb3fb44690b477d510bbd8f86cf5aa font-xfree86-type1-1.0.4.tar.bz2 EOF
下载包并校验md5
mkdir font && cd font && grep -v \'^#\' ../font-7.md5 | awk \'{print $2}\' | wget -i- -c \ -B https://www.x.org/pub/individual/font/ && md5sum -c ../font-7.md5
切换root用户并配置as_root脚本
su
as_root() { if [ $EUID = 0 ]; then $* elif [ -x /usr/bin/sudo ]; then sudo $* else su -c \\"$*\\" fi } export -f as_root
创建一个出错时自动退出的bash
bash -e
自动编译安装所有包
for package in $(grep -v \'^#\' ../font-7.md5 | awk \'{print $2}\') do packagedir=${package%.tar.bz2} tar -xf $package pushd $packagedir ./configure $XORG_CONFIG make -j8 as_root make install popd as_root rm -rf $packagedir done
退出之前启动的bash
exit
配置fontconfig
install -v -d -m755 /usr/share/fonts && ln -svfn $XORG_PREFIX/share/fonts/X11/OTF /usr/share/fonts/X11-OTF && ln -svfn $XORG_PREFIX/share/fonts/X11/TTF /usr/share/fonts/X11-TTF
四.xorg-service依赖关系图
构建xorg-service过程中,pm-utils包的构建安装问题
1.首先它的第一个运行时的依赖vbetool很让人头疼,书籍中没有安装说明,资料也不完整
vbetool的官方网站:http://www.codon.org.uk/~mjg59/vbetool/
官方只介绍了他使用的两个依赖:libx86和libpci
libx86的官方地址:http://www.codon.org.uk/~mjg59/libx86/
首先解决这两个依赖
一.libx86包,它的作者不更新了,所以直接在这个包的官网下载的包,不能顺利编译安装,报出各种错误,我的解决思路有两个:
https://pkgs.org/这个linux包的检索网站可以找到一些linux发行版本所使用的包
1.在以上网站找到它的源码包,在它的源码包里面找patch文件,也就是这些发行版本为这个包写的补丁文件,把他加载到官方包里面,在对官方包进行编译安装
2.在以上网站找到它的二进制包,对照官方包里面Makefile文件里面,install一项,看都需要那几个二进制文件,并在发行版本的二进制包中找到,放在官方包里面安装
我只找到了二进制包,这些发行版本并没有提供源码包的补丁,下面贴出我找到的二进制文件打包完的链接
https://files.cnblogs.com/files/renren-study-notes/libx86.tar
具体操作步骤:
1.下载libx86官方包,解压,进入官方包
#wget http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-1.1.tar.gz
#tar -xvf libx86-1.1.tar.gz cd libx86-1.1
2.下载并解压我提供的二进制包
#wget https://files.cnblogs.com/files/renren-study-notes/libx86.tar #tar -xvf libx86.tar
3.执行安装命令
#make install
第二个依赖libpci的问题
首先blfs中提供了pciutils这个包,而需要的依赖包时libpci,这个原因是libpci是一些linux发行版本将pciutils包的静态库文件libpci.a单独构成的一个包
所以即使安装了blfs的pciutils包,在编译安装vbetool的过程中也会报错如下
/usr/lib/libpci.a 缺少构建此文件的工具
这里我并没有查到构建libcpi.a文件的工具是哪个,但是我查到了rpm包中构建vbetool所需的依赖
pciutils-devel (blfs书中的pciutils包) pciutils -devel-static (rpm包中libpci.a的二进制文件) libx86-devel (前文中的libx86)
于是我就下载了rpm包中的libpci.a文件,放到/usr/lib目录下,没有lib目录可以手动创建,继续编译vbetool包就会提示已经有libpci.a这个文件了,就可以继续安装vbetool包了。
具体操作步骤如下:
libpci.a文件的下载链接:https://files.cnblogs.com/files/renren-study-notes/libpci.tar
pciutils项目地址:http://www.linuxfromscratch.org/blfs/view/stable/general/pciutils.html
1.根据blfs书中的pciutils项目内容编译安装pciutils包(书中都有介绍,节省篇幅不写了)
2.下载我提供的libpci.a文件,创建/usr/lib目录,将下载的文件解压后放到该目录
3.编译安装vbetool
1.下载vbetool包及补丁包
#wget http://ftp.de.debian.org/debian/pool/main/v/vbetool/vbetool_1.1.orig.tar.gz #wget http://ftp.de.debian.org/debian/pool/main/v/vbetool/vbetool_1.1-2.diff.gz
2.解压vbetool包及补丁包
#gunzip vbetool_1.1-2.diff.gz #tar -xvf vbetool_1.1.orig.tar.gz
3.进入vbetool的解压目录并添加补丁文件
cd vbetool_1.1 #patch -i ../vbetool_1.1-2.diff
4.编译安装vbetool包
#./configure --prefix=/usr #make #make install
编译安装ethtool包
1.下载包,解压包,进入包目录
# wget https://mirrors.edge.kernel.org/pub/software/network/ethtool/ethtool-4.19.tar.xz #tar -xvf ethtool-4.19.tar.xz cd ethtool-4.19
2.配置,测试,编译,安装
#./configure --prefix=/usr #make #make check #make install
编译安装pm-utils包
它的内核设置不用更改,已经存在于默认配置了
只需要在grub.cfg中加入内核配置项
#vim /boot/grub/grub.cfg
在root=xxx ro 后面加入resume = / dev / <swap_partition>这里更换为你的swap的地址
五.选择编译安装xorg驱动程序
这个章节需要自己选择适合自己计算机的驱动程序
以下是我制作的xorg驱动的依赖关系图,标注红色1的是需要更改内核配置的包
建议此图使用方法:
1.找到自己机器需要的驱动
2.看自己需要的驱动需不需要重新编译内核,如果有,把需要重新编译内核的几个配置列出来,重新编译加入这些配置并安装内核
3.按照依赖关系安装包
4.这里使用查看固件加载命令查看加载错误的固件
dmesg | grep -i firmware
这里提示我缺少的固件是
failed to load firmware "radeon/HAINAN_pfp.bin
所以参照这个网站的表格
https://wiki.gentoo.org/wiki/Radeon#Firmware
将这个显卡的几个固件加载进内核,具体操作参考我的blfs笔记首页注意事项中的固件加载
blfs笔记首页链接:https://www.cnblogs.com/renren-study-notes/p/10214504.html
六.xterm中的等宽字体处理方法
1.下载字体包
# wget https://files.cnblogs.com/files/renren-study-notes/dejavu-fonts-ttf-2.37.tar.gz
2.解压并进入包
# tar -xvf dejavu-fonts-ttf-2.37.tar.gz cd dejavu-fonts-ttf-2.37
3.复制fontconfig和ttf文件夹下的内容至/usr/share/fontconfig和/usr/share/fonts/X11-TTF文件夹下
# cp ttf/* /usr/share/fonts/X11-TTF/ # cp fontconfig/* /usr/share/fontconfig/
七.启动测试配置xorg
1.重建库并启动xorg服务
这里要退出远程连接使用实体机运行下面的命令
#startx
运行startx后的效果