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

lfs准备使用桌面环境,首先需要构建xorg服务

xorg服务项目地址:http://www.linuxfromscratch.org/blfs/view/stable-systemd/x/installing.html

一.制作构建xorg包的自动化脚本

1.需要完成书中bash shell启动文件章节

bash shell启动文件项目地址:http://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/profile.html

我的相应的操作笔记:https://www.cnblogs.com/renren-study-notes/p/10390598.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/10385413.html

1.进入xc目录 2.下载包 3.校验md5 4.解压包 5.进入包目录 6.参照书中说明编译安装配置 7.退出目录删除解压的包的文件

2.xorg常规库章节操作步骤

fontconfig包在我的这篇笔记中有相关内容:https://www.cnblogs.com/renren-study-notes/p/10390874.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的依赖关系图

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

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依赖关系图

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

构建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 https://files.cnblogs.com/files/renren-study-notes/libx86.tar
# tar -xvf     libx86-1.1.tar.gz
cd libx86-1.1

2.下载并解压我提供的二进制包

https://files.cnblogs.com/files/renren-study-notes/libx86%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6.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驱动程序

这个章节需要自己选择适合自己计算机的驱动程序

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

建议此图使用方法:

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

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

上一篇:solution to E: failed to fetch .......


下一篇:PHP array_filter() 函数