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 /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-.md5 << "EOF"
c5ba432dd1514d858053ffe9f4737dd8 xtrans-1.3..tar.bz2
6b0f83e851b3b469dd660f3a95ac3e42 libX11-1.6..tar.bz2
52df7c4c1f0badd9f82ab124fb32eb97 libXext-1.3..tar.bz2
d79d9fe2aa55eb0f69b1a4351e1368f7 libFS-1.0..tar.bz2
addfb1e897ca8079531669c7c7711726 libICE-1.0..tar.bz2
499a7773c65aba513609fe651853c5f3 libSM-1.2..tar.bz2
eeea9d5af3e6c143d0ea1721d27a5e49 libXScrnSaver-1.2..tar.bz2
8f5b5576fbabba29a05f3ca2226f74d3 libXt-1.1..tar.bz2
41d92ab627dfa06568076043f3e089e4 libXmu-1.1..tar.bz2
20f4627672edb2bd06a749f11aa97302 libXpm-3.5..tar.bz2
e5e06eb14a608b58746bdd1c0bd7b8e3 libXaw-1.0..tar.bz2
07e01e046a0215574f36a3aacb148be0 libXfixes-5.0..tar.bz2
f7a218dcbf6f0848599c6c36fc65c51a libXcomposite-0.4..tar.bz2
802179a76bded0b658f4e9ec5e1830a4 libXrender-0.9..tar.bz2
58fe3514e1e7135cf364101e714d1a14 libXcursor-1.1..tar.bz2
0cf292de2a9fa2e9a939aefde68fd34f libXdamage-1.1..tar.bz2
0920924c3a9ebc1265517bdd2f9fde50 libfontenc-1.1..tar.bz2
b7ca87dfafeb5205b28a1e91ac3efe85 libXfont2-2.0..tar.bz2
331b3a2a3a1a78b5b44cfbd43f86fcfe libXft-2.3..tar.bz2
1f0f2719c020655a60aee334ddd26d67 libXi-1.7..tar.bz2
0d5f826a197dae74da67af4a9ef35885 libXinerama-1.1..tar.bz2
28e486f1d491b757173dd85ba34ee884 libXrandr-1.5..tar.bz2
5d6d443d1abc8e1f6fc1c57fb27729bb libXres-1.2..tar.bz2
ef8c2c1d16a00bd95b9fdcef63b8a2ca libXtst-1.2..tar.bz2
210b6ef30dda2256d54763136faa37b9 libXv-1.0..tar.bz2
4cbe1c1def7a5e1b0ed5fce8e512f4c6 libXvMC-1.0..tar.bz2
d7dd9b9df336b7dd4028b6b56542ff2c libXxf86dga-1.1..tar.bz2
298b8fff82df17304dfdb5fe4066fe3a libXxf86vm-1.1..tar.bz2
d2f1f0ec68ac3932dd7f1d9aa0a7a11c libdmx-1.1..tar.bz2
8f436e151d5106a9cfaa71857a066d33 libpciaccess-0.14.tar.bz2
4a4cfeaf24dab1b991903455d6d7d404 libxkbfile-1.0..tar.bz2
42dda8016943dc12aff2c03a036e0937 libxshmfence-1.3.tar.bz2
EOF

下载并校验所有软件包

mkdir lib &&
cd lib &&
grep -v '^#' ../lib-.md5 | awk '{print $2}' | wget -i- -nc \
-B https://www.x.org/pub/individual/lib/ &&
md5sum -c ../lib-.md5

切换root用户并配置as root脚本

su
as_root()
{
if [ $EUID = ]; 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-.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-[-]* )
./configure $XORG_CONFIG --disable-devel-docs
;; libXt-[-]* )
./configure $XORG_CONFIG \
--with-appdefaultdir=/etc/X11/app-defaults
;; * )
./configure $XORG_CONFIG
;;
esac
make -j8
#make check >& | 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-.md5 << "EOF"
3b9b79fa0f9928161f4bad94273de7ae iceauth-1.0..tar.bz2
c4a3664e08e5a47c120ff9263ee2f20c luit-1.1..tar.bz2
18c429148c96c2079edda922a2b67632 mkfontdir-1.0..tar.bz2
987c438e79f5ddb84a9c5726a1610819 mkfontscale-1.1..tar.bz2
e475167a892b589da23edf8edf8c942d sessreg-1.1..tar.bz2
2c47a1b8e268df73963c4eb2316b1a89 setxkbmap-1.3..tar.bz2
3a93d9f0859de5d8b65a68a125d48f6a smproxy-1.0..tar.bz2
f0b24e4d8beb622a419e8431e1c03cd7 x11perf-1.6..tar.bz2
f3f76cb10f69b571c43893ea6a634aa4 xauth-1.0..tar.bz2
d50cf135af04436b9456a5ab7dcf7971 xbacklight-1.2..tar.bz2
9956d751ea3ae4538c3ebd07f70736a0 xcmsdb-1.0..tar.bz2
b58a87e6cd7145c70346adad551dba48 xcursorgen-1.0..tar.bz2
8809037bd48599af55dad81c508b6b39 xdpyinfo-1.3..tar.bz2
480e63cd365f03eb2515a6527d5f4ca6 xdriinfo-1.0..tar.bz2
249bdde90f01c0d861af52dc8fec379e xev-1.2..tar.bz2
90b4305157c2b966d5180e2ee61262be xgamma-1.0..tar.bz2
f5d490738b148cb7f2fe760f40f92516 xhost-1.0..tar.bz2
6a889412eff2e3c1c6bb19146f6fe84c xinput-1.6..tar.bz2
12610df19df2af3797f2c130ee2bce97 xkbcomp-1.4..tar.bz2
c747faf1f78f5a5962419f8bdd066501 xkbevd-1.1..tar.bz2
502b14843f610af977dffc6cbf2102d5 xkbutils-1.0..tar.bz2
938177e4472c346cf031c1aefd8934fc xkill-1.0..tar.bz2
5dcb6e6c4b28c8d7aeb45257f5a72a7d xlsatoms-1.1..tar.bz2
4fa92377e0ddc137cd226a7a87b6b29a xlsclients-1.1..tar.bz2
e50ffae17eeb3943079620cb78f5ce0b xmessage-1.0..tar.bz2
723f02d3a5f98450554556205f0a9497 xmodmap-1.0..tar.bz2
eaac255076ea351fd08d76025788d9f9 xpr-1.0..tar.bz2
4becb3ddc4674d741487189e4ce3d0b6 xprop-1.2..tar.bz2
ebffac98021b8f1dc71da0c1918e9b57 xrandr-1.5..tar.bz2
96f9423eab4d0641c70848d665737d2e xrdb-1.1..tar.bz2
c56fa4adbeed1ee5173f464a4c4a61a6 xrefresh-1.0..tar.bz2
70ea7bc7bacf1a124b1692605883f620 xset-1.2..tar.bz2
5fe769c8777a6e873ed1305e4ce2c353 xsetroot-1.1..tar.bz2
558360176b718dee3c39bc0648c0d10c xvinfo-1.1..tar.bz2
11794a8eba6d295a192a8975287fd947 xwd-1.0..tar.bz2
9a505b91ae7160bbdec360968d060c83 xwininfo-1.1..tar.bz2
79972093bb0766fcd0223b2bd6d11932 xwud-1.0..tar.bz2
EOF

创建app目录并下载包到app目录

mkdir app &&
cd app &&
grep -v '^#' ../app-.md5 | awk '{print $2}' | wget -i- -nc \
-B https://www.x.org/pub/individual/app/ &&
md5sum -c ../app-.md5

切换root用户并配置as root脚本

su
as_root()
{
if [ $EUID = ]; 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-.md5 | awk '{print $2}')
do
packagedir=${package%.tar.bz2}
tar -xf $package
pushd $packagedir
case $packagedir in
luit-[-]* )
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-.md5 << "EOF"
23756dab809f9ec5011bb27fb2c3c7d6 font-util-1.3..tar.bz2
0f2d6546d514c5cc4ecf78a60657a5c1 encodings-1.0..tar.bz2
6d25f64796fef34b53b439c2e9efa562 font-alias-1.0..tar.bz2
fcf24554c348df3c689b91596d7f9971 font-adobe-utopia-type1-1.0..tar.bz2
e8ca58ea0d3726b94fe9f2c17344be60 font-bh-ttf-1.0..tar.bz2
53ed9a42388b7ebb689bdfc374f96a22 font-bh-type1-1.0..tar.bz2
bfb2593d2102585f45daa960f43cb3c4 font-ibm-type1-1.0..tar.bz2
6306c808f7d7e7d660dfb3859f9091d2 font-misc-ethiopic-1.0..tar.bz2
3eeb3fb44690b477d510bbd8f86cf5aa font-xfree86-type1-1.0..tar.bz2
EOF

下载包并校验md5

mkdir font &&
cd font &&
grep -v '^#' ../font-.md5 | awk '{print $2}' | wget -i- -c \
-B https://www.x.org/pub/individual/font/ &&
md5sum -c ../font-.md5

切换root用户并配置as_root脚本

su
as_root()
{
if [ $EUID = ]; 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-.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.-.diff.gz

#tar -xvf vbetool_1..orig.tar.gz 

3.进入vbetool的解压目录并添加补丁文件

cd vbetool_1.

#patch -i ../vbetool_1.-.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后的效果

blfs(systemv版本)学习笔记-为桌面环境构建xorg服务的更多相关文章

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

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs准备使用桌面环境,首先需要构建xorg服务 xorg服务项目地址:http://www.linuxfromscratch. ...

  2. Nutch1.7学习笔记:基本环境搭建及使用

    Nutch1.7学习笔记:基本环境搭建及使用 作者:雨水,时间:2013-10-31博客地址:http://blog.csdn.net/gobitan 说明:Nutch有两个主版本1.x和2.x,它们 ...

  3. Django:学习笔记(1)——开发环境配置

    Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...

  4. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  5. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  6. 【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件

    目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.n ...

  7. 【转】 Pro Android学习笔记(七六):服务(1):local和remote

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Android提供服务,服务是运行在后台的 ...

  8. [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设

    [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设 敲黑板!! <q>元素添加短引用,<blockquote>添加长引用 在段落里添加引用就使用< ...

  9. 【自动化学习笔记】_环境搭建Selenium2+Eclipse+Java+TestNG_(一)

    目录 第一步  安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下 ...

随机推荐

  1. Do More With These Great Plugins for Windows Live Writer(old)

    This article is out of day,now we use open live wirter, but we don’t have so much works great plugin ...

  2. google guava Multimap的学习介绍

    1.https://blog.csdn.net/gongxinju/article/details/53634434

  3. We FALL ASleep At Night, We Do REST Right

    We Do Sleep At Night, We Do REST Right 前言 REST 起源 REST 约束 客户端 - 服务端 无状态 缓存 统一接口 分层系统 按需代码 统一接口约束 资源识 ...

  4. 使用netstat命令查看端口的使用情况

    Windows如何查看端口占用情况操作步骤如下: 开始--运行--cmd 进入命令提示符,输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管 ...

  5. Android开发 - ImageView加载Base64编码的图片

    在我们开发应用的过程中,并不是所有情况下都请求图片的URL或者加载本地图片,有时我们需要加载Base64编码的图片.这种情况出现在服务端需要动态生成的图片,比如: 二维码 图形验证码 ... 这些应用 ...

  6. python之发送邮件~

    在之前的工作中,测试web界面产生的报告是自动使用python中发送邮件模块实现,在全部自动化测试完成之后,把报告自动发送给相关人员 其实在python中很好实现,一个是smtplib和mail俩个模 ...

  7. 比较List和ArrayList的性能及ArrayList和LinkedList优缺点

    List和ArrayList的性能比较 在使用ArrayList这样的非泛型集合的过程中,要进行装箱和拆箱操作,会有比较大的性能损失,而使用泛型集合就没有这样的问题.List是泛型,而ArrayLis ...

  8. (转)linux中nmcli命令的使用及网络配置

    原文:https://blog.51cto.com/groot/1847482 http://www.178linux.com/44076----CentOS7中nmcli网络管理及使用详解 http ...

  9. Django --ORM常用的字段和参数 多对多创建形式

    1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型 ...

  10. Eclipse 项目导入 Android Studio 导致的乱码问题

    最近有一个 Eclipse 项目导入 Android Studio 1.4 时出现乱码,Build 提示 Error:(38, 5) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?. 源代码是 GB ...