blfs(systemv版本)学习笔记-为桌面环境构建xorg服务

时间:2024-02-21 20:53:08

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后的效果