标签 Debian 下的文章

视频点此
第一期第二期

一、为什么需要

举个形象的例子:你的Linux装在一个50G的硬盘中。就是说,能用的空间就只有50G。现在,加入了一个100G的硬盘。

要知道:Linux中任何分区都需要映射到某一个文件夹上面才能使用。这个映射过程叫做“挂载”,而这个显示分区内容的文件夹就是“挂载点”。一旦文件夹变成了挂载点,这个文件夹下的内容便不能被显示出来了。而Linux的很多文件放置的位置都是统一的,你不能更改。所以这100G你要怎么加入到系统中使用?

仔细想想,挺不好搞的吧?

新建一个文件夹当作挂载点:你只能存储你自己的东西到这上面,大多数内容还是在50G的硬盘中;

挂载到内容多的文件夹下:不但需要先将所有东西移动过去,还需要调整fstab文件。而且容量是事先定死的,如果其他文件夹占用也高了,还需要经历无损调整分区—新建分区—移动数据—设置挂载点这样繁琐的步骤。不好。

这时候,lvm的作用便显现出来了。

二、优势

lvm把任何你想的分区整合成一个大的虚拟硬盘,使你可以在这上面进行分区操作。而任何事后加入的硬盘,都可以在不关机的情况下进行整合操作。

就像Windows的跨区卷,可以将不同硬盘的空闲空间整合成一个分区使用,容量等于空闲空间之和。但lvm更灵活的地方,在于它整合之后,出现的是一个新的“硬盘”,用户可以在这个“硬盘上面”再分区。

三、方法

总是有人认为Linux需要用命令,一般人用不懂。我也不知道这种印象是怎么来的,大概是因为网上能找到的教程都是命令形式?那我就用图形化的来展示一下。参见这里

视频点此

大概是从去年,Linux阵营的改善仿佛充了会员一般……越来越多的公司开始贴近Linux。比如说微软的Linux子系统、WPS重启了Linux版本的维护、Steam开始Steam Play项目,使得非Linux阵营可以运行Windows专属游戏、百度网盘的Linux版、NVIDIA开始在Linux的驱动中加入双显卡支持……

到现在,连QQ for Linux都诈尸了

现在,在电脑版的QQ下载页的其他产品中,赫然放着 QQ for Linux 的下载入口

点进去,提供了几乎各个主流分支的安装包,直接下载安装即可。

但是,请永远记住:

Arch的源永远不会让你失望。如果没有,那么请使用AUR

至于体验如何,可以看我的视频。我在这里只想展示一下linux中国对于这次复活的一段评价


在 10 月 24 日这个程序员节上发布了 Linux QQ 2.0 版本让人觉得有点无厘头,甚至让人觉得可能仅仅是一个快闪活动,频繁的断线都让人担心是不是到了 25 日,可能 Linux QQ 就又不能用了。在 1024 程序员节的释出,使得 Linux QQ 可以以一个怀旧的形态重新出现在人们的眼前。但是,同样的,在这个节日的释出,也让人觉得这件事似乎并没有相信中的那么重视,对于 Linux QQ 的前景蒙上了一层阴影。

而且,腾讯并非一个慈善组织,对于腾讯这样的一个企业,是否会长期为一个很难产生现金流,而且小众的操作系统提供长期维护还尚未可知,更是让人无法相信 Linux QQ 的未来。

近两年来,自主研发的操作系统不断的刷屏,我们也一次次为自主研发的操作系统而欢呼。但是,高潮之后,还能剩下来的是什么?

我一直强调,操作系统卖的不是系统本身,而是卖因其产生的生态,由生态倒逼用户为系统本身付费。就如同我尝试很多次从 iPhone 转回 Andorid ,从 macOS 转回 Windows,但是,也正如我自己每次失败后的总结一样,我没有办法完全抛弃掉 iPhone 、macOS,因为其所带来的生态是我无法迁移到 Android 上的,被操作系统所挟裹,不得不去面对的现实是:最终,我还是回到了 iPhone 所构建的生态。

对于 Linux 也是一样的,Linux 的服务端的用户诉求是明确的、简单直接的、绝大多数场景都可以被覆盖掉的。而桌面端的产品可能会有数万种不同类型的需求,这使得产品经理在进行设计时预见不了需求的问题,也就很正常的问题。

我们回过头去看,Linux 想要占领桌面市场还需要什么呢?需要的不仅仅是一个 Linux QQ,我们需要给更多人提供 Linux 上的微信、办公套件等等一系列软件。没有这些软件,我们就很难让用户迈过入门的第一关:我如何登录 QQ /微信和我的同事、家人沟通。如果他发现,我用了 Linux ,但是我却没有办法使用 QQ /微信进行沟通,那么我用 Linux 还有什么意义呢?

对于 Linux 来说,除了去适配这些我们所熟悉的软件以外,更是需要有厂商能够面向 Linux 开发出独占的杀手级用户,这样,才能够更好的去推动一个操作系统的发展。

如果 Linux QQ 仍然继续更新,那对于 Linux 来说,是一大利好消息,一些做的好的、做的不好的应用,都可能会重新考虑创建自己的 Linux 版本。而过去,可能没有这样的机会。


我个人还是比较认同这种观点的。不只是腾讯QQ,算上之前发布的百度网盘,我也觉得是为了顺应国家政策而不得不开发出的产品。所以说,很多国内Linux用户一看到QQ for Linux复活了,就好像多大的喜事一般欢呼雀跃,奔走相告,甚至乐观的认为腾讯良心发现……

谈不上,甚至对提出这种观点的人有一股愚昧的印象。目光真的就只能看这么近吗?如果说,腾讯在之后发布了更多的迭代版本,功能上不求跟上Windows,能跟上OSX,再说它“良心发现”也还算过得去(虽然我不认为发布Linux版本软件能跟所谓“良心”挂上钩)。现在仅仅发布了一版便如此兴奋,正所谓“希望越大,失望越大”。

所以,请保持平常心。就仿佛Windows又新出了一个软件一样的心态来看待QQ for Linux的复活吧…

视频点此

霍金说2032年是世界末日——当然怹老人家到底说没说过咱也不知道。到底是不是真的咱也不敢问。只是那一年有个小行星会跑到地球附近,碰撞概率是千分之一。概率虽高,但仍有很大的不确定性因素。所以当下的人们,更重视并着手解决着另一个世界末日——Unix世界的末日。因为它已经不可避免的会发生,并且发生时间已经明确了:格林尼治2038年1月19日3点14分7秒,北京时间11点14分7秒。这一点可以跟Siri证实一下。

为什么?


就像世纪初的千年虫,2038年是属于Unix的“千年虫”——使用 POSIX 时间的 32 位计算机应用程序在到达2038年1月19日3点14分7秒后,将会跳到1901年12月13日20点45分52秒继续。怎么会这样?

在Unix世界中,时间是通过一个秒数——从Unix创世元年(1970.1.1 0:0:0)到现在经过的秒数——记录的。所以在Unix里边看到的时间,都是通过创世纪时间+秒数得到的。而这个秒数,被保存在了一个32位有符号整形中,通过正负号表示0时刻之前和之后。

如果你学过编程,你应该就知道32位有符号整形是什么意思:32位的二进制数,其中最高位表示正负。位数有限,则可以表示的数字便也会有极值。这个最大值取在01111111 11111111 11111111 11111111这个二进制数上,对应的十进制就是2^31-1=2147483647。这么多秒换算成时间,就是68年零18天3小时14分7秒。加上创世纪的1970年1月1日0时刻,便得到了这种记录方式的最大时间——2038年1月19日3点14分7秒。再往后,二进制的数字进位,首位变成了1。而首位为1意味着是负数而不是+1,所以时间跳回,Y2038问题便出现了。


这个问题有什么影响吗?至少使用time_t函数的C语言程序会导致时间溢出,Unix系统也不例外。但几乎可以肯定的是,不会有千年虫的影响大。因为OpenBSD直接粗暴的把变量换到64位有符号整形来保存,Linux内核虽然不能这么干,但一直在致力于解决这个问题。而截止到5.1内核版本,其已经开始引入2038年安全的系统调用了。最终目的是让老程序能转换到正确时间,新程序则直接用64位保存时间,这便可以让时间正确运行到大约2920亿年以后。也就是说,64位的“千年虫”将在2920亿年以后出现。而你的电脑硬盘则在38年后的几十年便转秃噜轴了,太阳也早在两千八百多亿年前就变成了红巨星并一点点的冷却了,所以64位的“千年虫”,我们怕是见不到了。

视频点此

先来假设一个场景。

众所周知,Steam的软件一定是保存在某一个文件夹下面的。假如说,我有一个分区专门保存我的游戏,那么我如何才能将Steam的游戏都直接放在分区下面而不是在Steam库文件夹下面呢?

在看过我今天这个神奇的快捷方式之后,你就知道要怎么做了。


要注意,今天这个功能,Win、Linux、Mac都是可以使用的。只是Win与另外两者的命令有些不同。而Linux对文件之类的快捷方式本身就会用到这种。所以为了对比,我这次在Win下进行演示。直接上演示让你感受一下。

一、文件

我事先已经安装好了{{7z这个压缩软件:C:\Program Files\7-Zip}},是可以正常使用的。现在,我把安装目录下的7z.dll剪切到{{桌面:C:\Users\gameb\Desktop}}。显然,由于缺少了7z.dll这个库,尝试运行时候会提示出错。

如果我们把7z.dll复制一份普通的快捷方式放到安装目录下面,它可以运行吗?很明显,快捷方式只是一个很弱鸡的快捷方式,并不能行使dll文件本身的职能,所以还是出错的。顺便请你记住这个快捷方式的大小:1KB.

现在,用管理员身份打开命令提示符,使用mklink "C:\Program Files\7-Zip\7z.dll" C:\Users\gameb\Desktop\7z.dll的形式来召唤那个更强大的快捷方式。

可以看到,它的大小占用为0K. 然而,虽然体积近似于没有,但当我们尝试运行7z的时候,你会惊奇的发现:它可以运行了!这个比弱鸡快捷方式的体积还小的快捷方式竟然可以履行dll本身的职能!

二、文件夹

现在,我们在把目光转移到文件夹上。我事先在桌面建立了一个名字叫temp的文件夹。现在我们创建一个普通的快捷方式,放到这个文件夹内,双击,资源管理器的路径会显示到哪里?

没有错,还是它本身的位置没有动。

但是,通过命令mklink /D C:\Users\gameb\Desktop\test\test C:\Users\gameb\Desktop\test,为它创建那个强大的快捷方式,放到它自身目录下面。如果我们双击这个,资源管理器的路径会如何变化?

正如你所见,它真的多了一层!不断的双击还会不断的加多!这个快捷方式真的行使了文件夹的职能了!

这个快捷方式,叫做符号连接

至于它太细节的东西我不打算多说了,因为说了也没啥用。只通过这个图来给你简要说明一下符号连接与快捷方式的不同之处就好了。

正如你所见,一个文件被存放的时候,它会对应一个名称保存在分区开始的内容表中。而快捷方式其实是一个类型为快捷方式的文件。当我们双击快捷方式的时候,其实是访问了快捷方式这个文件,然后它再给引导到它所对应的文件上面。本质上快捷方式和它所对应的文件是不一样的。

但符号连接就不同了,它其实是文件的另一个名字,所以我们双击符号连接和双击文件本身的效果是相同的。

形象一点来说。假如我是用户,你是文件,我直接访问文件就是我直接找的你;而快捷方式就是你公司的传达室大爷,我通过快捷方式访问文件,就是我去找这个老大爷,让他帮我传个话;那么符号连接,就好比是你的电话号码。我通过符号连接访问文件就是我用电话来联系你。虽然看起来多了一层,但我还是直接找到你的。

通过这个比喻,我们还可以顺带着说明另一个问题:你只有一个,而且位置确定。所以直接访问文件必须到存放文件的位置;传达室大爷可以有很多个,可以被放在公司不同的门口。所以快捷方式可以有很多个,也可以放在不同的位置;电话号码同样可以有很多个,我只需要找到任何一个电话号码就行了。所以符号连接也可以有很多个,存放在任何位置。

现在,你应该对符号连接有一个大概的认识了吧。对于应用来讲,符号连接和文件本身是同一个东西。所以借助这个,我们可以很轻易的实现我开头说到的问题——将Steam的游戏直接放在分区下面而不是在Steam库文件夹下面:只需要把游戏文件夹剪切到分区下面,然后在Steam库文件夹建立对应的符号连接就可以了。

最后,说一下Linux和OSX的命令如何书写吧——这个命令很常用所以我觉得你应该挺熟悉的:ln -s 需要创建连接的目标 创建的位置

如果你翻看过Linux系统的根目录,你会发现很多符号连接。所以这个在Linux下面的用处是很大的。当然,对于Windows也一样。只要你有足够的创造力。

视频点此

随意选择。


这可能是很多刚接触Linux的用户的一个疑问。全世界600+发行版,我到底该怎么选择我要用的发行版呢?

随着Linux各种支持的完善、稳定性和易用性的提升,现在各个发行版之间的差异性已经愈发的不明显了,因此开头所说的随意选择并不是玩笑。但发行版之间的差异确实依旧存在,加之每个发行版的用户数量、用户质量都不尽相同,所以我相信在每一名Linux用户的心中都有一份自己的Linux发行版排名。一个很明显的例子:如果你在Youtube上面搜索Linux相关的视频,你会看到很多标题为“Top x Best Linux Distros”之类的,给发行版做一个排名的视频。当其他人询问“我该装哪个发行版”这种问题的时候便会根据自己心目中的排名来推荐。因此为了最大化的公正,在这个视频里边,我分为两部分向你介绍怎么选择:第一部分,根据我心中的排名,完全主观的向你推荐;第二部分,向你介绍几种相对客观的选择方法。

是的,这礼拜的投稿没有什么技术性的干货。所以如果你是想看服务器的,下礼拜再来。你应该能看出来,我的服务器系列是半月刊的吧?好,那么现在就开始今天的茶话会。

我的Linux推荐

不要看发行版众多,但本质上来说,Linux出名的就那么几种:Debian系、RedHat系、Archlinux系、OpenSUSE系。其他的发行版基本都是从这几个Linux衍生出来的——当然,也有一些可以说是独自建立的发行版比如英特尔的Clear Linux这种。它们的唯一区别就在于包管理器的不同。所以一份自己的Llinux名单建立只有两个因素:基于什么的发行版、使用体验怎么样。

一般来讲,求推荐的都是刚接触Linux的用户,所以核心问题就是易用,有问题可以很快的找到解决方法。如果放在几年前,我一定会向你推荐烂大街的Ubuntu这个占有率遥遥领先的发行版。但现在,Deepin这个基于Debian的发行版可能会是我最先向你推荐的一个。这是一个国内推出的发行版,所以相对于多数发行版来说,其本地化体验会有相当的提升。一个最简单的例子:它的软件商店包含了很多国内常用的软件,QQ、微信、百度云这种在其他发行版之下可能得配置一番的软件,在Deepin下都不是问题。只需要在应用商店里边点一下安装按钮,便可自动配置完成使用。其社区的中文用户量也算是比较庞大的,这使得如果在使用中遇到一些问题,也可以很方便的寻求答案。

图片来源深度论坛

但正所谓金无足赤人无完人,Deepin同样有一些问题需要你关注。

软件版本较旧。这可以肯定是因为最近的大概导致的。你可以理解成为了稳定做出的牺牲。但偏偏现在的系统整体又不是很稳定。这在社区中的也是反馈比较多的问题。可能是最新版本进行了重大改变的原因造成的。

社区的中文用户虽然庞大,但平均质量不高。当然,因为确实存在较高质量的用户,所以你不必担心自己的问题无人解答。但可以肯定的是,中文社区有用的信息不及国际社区有用的信息多。一些中文用户总是会充当一些莫名其妙的云CEO、时事观察员这类角色,看起来仿佛很积极的在帮助深度发展,但无疑,这种顶多能表现出自己的爱国情怀,对深度的发展、社区的质量起不到什么作用。

总的来说,Deepin在日常办公方面完全足够,其不稳定也是体现在个别的硬件或者极限工况下。但如果你确实对不稳定和软件老旧有所顾忌,或者你并不是特别需要国内常用的软件,那么Deepin可能并不是最理想的发行版。这时候,你就可以考虑烂大街的Ubuntu了。

图片来源oschina

你可以把Ubuntu理解成Linux中的Windows:技术成熟、社区庞大,开箱即用。即使有一些软件在自带的软件商店找不到,同样可以去官方网站搜索。如果这个软件支持Linux,那么它一定会提供deb格式的安装包。但这个deb很大可能只能装在Ubuntu上而不能装在Ubuntu的父亲Debian上。因为Ubuntu虽然基于Debian,但它拥有自己的软件仓库,相对于Debian同样软件的版本要新。同时,Ubuntu拥有自己的显卡驱动方案,在英伟达和英特尔核显双显卡的笔记本上技术是比较成熟的。

要我说它的缺点,首先一点,就是Deepin移植的一些国内软件Ubuntu没有,即使有,其安装过程也比较麻烦。再者,Ubuntu经常会出现恼人的“发送错误报告”窗口。主要是由于国内发送会大概率失败导致每次登陆都会询问你是否发送。你可以手动删掉它,或者你也可以听它的意见尝试发送,保不齐就发送成功了。另外,因为Ubuntu不是滚动更新,如果不是用长期支持版本的话,每半年就会有新的版本推送。这个更新是较为危险的,很可能会更新失败而无法使用。所以如果你没有能力解决这个问题,那么你可以使用长期支持的版本,或者使用我下面推荐的这个——Manjaro

图片来源lulinux

Manjaro是基于Archlinux的发行版,最大的特点就在于完全图形化和自动化了ArchLinux的安装过程,并且拥有一系列图形化的驱动和内核配置软件,这使得用户既可以享受到ArchLinux分支的各种优势,又可以一键设置驱动,亦能根据不同的使用条件而部署不同类型的内核,还不必花费大量时间阅读ArchWiki来安装系统,并从全文本界面逐步配置起图形界面来。

刚刚我说到可以享受到ArchLinux分支的各种优势,那么它的优势在哪儿呢?

软件相比其他分支的发行版总是最新的。得益于Arch近乎简陋的包管理工具,没有版本范围限制的Arch系总是可以毫无顾忌的把软件包更新到最新。但最新同样可能出现一些意料之外的bug,所以Manjaro调慢了更新速度,一般是在Archlinux更新的两个礼拜后Manjaro才会跟进这个版本的更新,如果这过程中出现了问题,Manjaro还会暂停版本的跟进。所以,可以说Manjaro消除了Archlinux用户“滚挂”的顾虑。

另外一个优势,Archlinux特有的AUR软件仓库,使得几乎所有你能想到的软件都可以通过一条命令完成安装,而这条命令Manjaro还给图形化了。所以这相对于Ubuntu还需要去网上下载来讲简单了太多。

但我为什么只给它拍到了第三位呢?首先,我自己是Debian起家,最后不留神入了Arch邪教就出不来的用户。所以我还是偏爱Debian系发行版的;其次,装好的时候中文环境不佳,这对新手来说设置可能有些难度;最后,使用了wayland显示服务。虽然相对于xserver有很多改善,但由于现阶段软件兼容性的问题,所以我最终没有去选择它,而是选择了它的父亲ArchLinux。但我并不推荐新手选择Archlinux,它纯命令行的安装过程可能会让你没入门就放弃。

最后,如果有较多的游戏需求,pop!OS这个基于Ubuntu的发行版可能个不错的选择。相对于前边三个发行版,pop! OS开箱即配置好了游戏环境——我指的是Windows游戏。要知道,自己在Linux下配置一个完善的Windows游戏环境是很困难的。此时这个系统的优势便体现了出来:通过内置软件一键装好显卡驱动后便可直接运行。

图片来源linux公社


相对客观的发行版推荐

这就是我推荐作为刚入门的你的四个发行版。你可能会发现我没有推荐RedHat系的发行版以及openSUSE。主要是因为我很少接触这两个分支,仅仅在服务器上面使用CentOS这个RedHat分支的系统而已,其他的包括我的树莓派、我的笔记本 和台式机上面全都是Debian和Arch的发行版。这也是每个Linux用户心中对发行版的排名不一样的原因所在。所以,想要较为客观的选择发行版,可以尝试通过我现在要介绍的这两种方法决定一下。

第一种,查看distrowatch.com。这个网站聚合了几乎所有的类Unix发行版,并且根据点击量有一个排名列在这里。自然排名越高就说明热度越高,进而也能有一定的参考价值。但可以肯定的是,这里边肯定会有刷榜的情况出现,而且它也仅仅是展现了distrowatch用户的一个倾向,所以对你来说可能仅仅是一个参考作用,大概看看就好。想更有针对性的选择一款发行版,可以尝试Distro Chooser这个在线调查。它拥有中文页面,只需要根据自己的情况回答好16个问题,便可以给出一些适合你的发行版。相对来说可以得到一个比较客观的结果可以供你参考一下。如果你不喜欢听别人的主观意见,自己又不好决定,那么可以来这个网站来试一试。


其实,关于如何选择发行版这个问题可能仅仅对刚刚接触的人有参考价值。只要你真正试用过一段时间Linux了就应该能明白,在发行版上面纠结其实并没有什么太大的用处。得益于Linux的高度自定义性,你可以把任何一个发行版改造成你想要的样子,提前选择仅仅是为了省去改造的这个过程而已。但如果是初次接触,那么选择一个适合自己的发行版来使用,也许能体会到“一见钟情”的感觉吧。我是没法体会这感觉了,都用了十年Linux了,它再不好使的时候我都经历过,这进步的过程是自己经历的,必然也是感觉不到惊艳之处了。

闲来去读DDE-Dock的代码,发现了一点儿东西,可以把颜色换成亮色,很简单。

从GitHub上下载DDE-Dock源码包

前往GitHub,搜索 DDE-dock ,可以找到 linuxdeepin/dde-dock 项目,进入之后下载即可。

修改代码

将下载的源码包解压,进入其中的 frame 文件夹。

  • 打开 main.cpp ,查找 dark ,将找到的文本改为light,保存退出。
  • 进入 panel 文件夹,打开 mainpanel.cpp ,查找 DarkColor ,将找到的更改为 LightColor
  • 在下一行,应该有一个设置颜色的函数,其参数为 55,63,71 .将这个值更改为 248,248,255 ,保存退出。

安装编译环境

该环境需要的包比较多,推荐在虚拟机中进行。

需要安装的包如下(通过apt命令安装即可):

cmake g++ qt-sdk qt-base5-dev libqt5x11extras5-dev libdtkwidget-dev libxcb-ewmh-dev libdframeworkdbus-dev libgsettings-qt-dev libdde-network-utils-dev libxcb-image0-dev libxcb-composite0-dev libxtst-dev libxcb-icccm4-dev libdbusmenu-qt5-dev qtbase5-private-dev

构建过程

在源码的根目录下打开终端,依次输入如下命令:

mkdir build
cd build
cmake ..
make

可能有一些插件报错,可以将报错的语句注释掉再进行构建,在接下来的安装过程中排除掉这些插件即可。

安装

  • build/frame 文件夹下可以找到 dde-dock 文件,用其替换掉 /usr/bin/dde-dock
  • build/plugin 文件夹下可以找到一些基本的dde-dock插件,用这些对应的替换掉 /usr/lib/dde-dock 下的同名文件(在这下面还有一些子文件夹,如果有对应的也一并替换掉)

重启电脑,DDE-dock的底色就变成Mac OS的模样了。