标签 Debian 下的文章

视频点此

我曾经说过如何在Windows下屏蔽笔记本键盘的教程。现在,来看看Linux下面如何实现屏蔽笔记本键盘。

Linux屏蔽需要安装一个工具xinput。arch系的包名为xorg-xinput,debian系的包名为xinput

之后,通过命令xinput找到自带键盘设备的ID号。这个设备的名字为AT Translated Set 2 Keyboard。找到以这个名字开头的一行,记录后面id=字段的数字。我这里是11.

最后,通过命令xinput set-prop ID 'Device Enabled' 0来完成设备的仅用。其中,ID区域替换为前面找到的数字。

如果想恢复使用,将结尾的0更改为1即可。

视频点此

在Windows下,很多用户都会考虑清理系统垃圾这个问题。除了一堆软件管家提供的垃圾清理功能外,Windows自己也提供了磁盘清理小工具。那么,在Linux下,垃圾清理工作要如何完成呢?

一、需不需要清理

不知道是不是我的习惯问题,在Linux下面,我对系统垃圾问题关注的格外少。也许是不影响操作效率导致的吧。所以,到底需不需要清理垃圾就要看个人的使用情况了。至于我唯一能想到的清理时机,就是磁盘空间不足的时候了……

1、查看占用情况

但是通常来讲,Linux对垃圾的控制还是很不错的,所以即使是磁盘空间不足,更大的可能性也只是装的东西太多了。为了判断到底是不是垃圾占用了太多的空间,可以来分析一波分区的占用情况。

Linux下,这个操作十分简单。只需要通过命令sudo du -h --max-depth=1 [路径]来查看。比如查看根挂载点的占用情况,只需要通过sudo du -h --max-depth=1 /即可。不过到底是不是垃圾导致的空间占满,这就需要看到底是哪些文件夹占用了很大的空间了。所以这里简单介绍一下根挂载点下一些关键的文件夹。

  • etc:配置文件目录
  • boot:引导目录
  • opt:第三方软件的一个安装位置
  • root:root的家——没错,root的家目录并不是/home/root/
  • tmp:临时文件
  • usr:存储了所有命令、程序库、文档以及诸如帮助文档等其他文件
  • var:存储运行时不断变化的文件
  • proc:存储了所有的虚文件(如CPU、分区、内存等)。这个应该是最能体现一切皆文件精髓的文件夹

这下面还有一些其他的文件夹,就不一一介绍了,通过文件夹名称都能理解存储的内容是什么。

在上面的文件夹中,usr以及usr的部分子目录(如share等)也会以隐藏目录的形式出现在用户的家目录下面。这其实只是全局和用户的区别而已,功能是相同的。

而在上述的文件夹中,有两个文件夹是比较特殊的:

  • tmp:其中的文件通常会自动清理
  • proc:其挂载在内存中,永远不会被保留。因为它只是描述了这台电脑在当前时间节点拥有的所有属性

2、何时需要清理

所以,可以发现,能出现垃圾文件的文件夹只可能是tmp或者var。所以,如果这两个文件夹有较高的空间占用,那么就意味着你可能需要进行磁盘整理了。

但,为什么说是可能呢?因为var大不一定就是垃圾多。具体可以浏览一下var这个文件夹。

这个文件夹的名称都比较简单明了,便不再过多解释了。不过总的来讲,你不能一股脑的把var里的内容全都删掉就对了。

二、如何清理

1、手工清理

其实,不只是var,其他文件夹我也不建议直接删除掉——即使其他文件夹确实也可能出现垃圾文件。因此通过下面步骤进行一下瘦身是最保险的。

首先,清除无用的依赖。

很多时候,由于依赖更新等各种原因,部分包会变成孤包——我的意思是那些谁也不再需要它的孤儿们。因此先对这部分进行一下清理。

apt系列很容易,直接使用autoremove参数即可。

pacman系列虽然也可以一句话解决,不过为了方便记忆,这里将其拆分为两个简单句。

首先:pacman -Qdt即可列出作为依赖安装的但现在已经没有人再依赖它的包

然后:正常删除这些包即可

其次,清理软件包缓存。

这个缓存指的是安装软件时保留在系统的安装包。有些桌面或商店会自动清理,所以这部分的占用大的很大,小的几乎没有。

apt系列,使用clean参数完成清理。

pacman系列,使用paccache -r完成清理(需安装pacman-contrib

之后,考虑清理日志。

如果你的/var/log占用了比较大的空间,可能是有些程序的日志文件太大了。看看最大的,删掉就好了。

2、软件清理

如此做完,如果空间没有特别明显的改观,或者不想这么麻烦,那么就直接使用软件进行垃圾清理吧。

使用软件还有一个好处:用户家目录下面的垃圾文件保存的位置没有根目录那么规律,很多都在以软件名为名称的隐藏文件夹下的某个子文件夹中。所以通过软件清理避免了手工进入这些文件夹进行删除操作。

使用的软件叫做BleachBit。安装好后启动,勾选想要清理的内容,点击清空等待完成即可。

其中,有一些勾选是比较有危险性的。正如Windows下面软件管家的垃圾清理一样,你可以阅读每一项的说明,然后自己决定到底清理哪些。如果仍然不确定,可以在勾选之后点击预览,待分析完成后便可以浏览将要删除哪些文件,以确保不会进行危险的动作。

没有错,从软件清理来看,你并没有必要了解我前面的那一大堆东西,只需要装好软件,然后让它自己分析删除即可。前面的那一大堆,只是让你体会一下一款垃圾清理软件都在干什么——Windows下的垃圾清理软件也是一样的。

视频点此:第一期第二期第三期

一、红酒?

红酒,英文wine。当然,电脑界的wine并不能喝,而是一套组件,这个组件可以使得windows程序运行在Linux和MacOS上。可以说,如果需要在Linux上运行windows程序,那一定会利用wine或者通过wine的一些组件来实现——无论游戏还是应用。

那么wine到底是什么东西呢?按照官方的说法,wine是一个兼容层而不是一个模拟器,也就是说,wine与虚拟机不同,而是直接让linux拥有执行windows指令的能力。有些观点认为wine这个东西是在最近一些年里边出现的,确切的说应该是wine在最近几年才真正的易用起来。它的金主——CodeWaver早在25年就开始了wine的研发进程。而wine的商业版——Crossover,则是CodeWaver的一个收入来源。与wine需要用户自己配置的区别在于,wine商业版可以以自动完成运行应用程序需要做的准备工作,从而构建起了在Linux和Mac中一键安装windows程序的能力。很好用,如果你需要wine,自己又不会配置,那么可以尝试购买一份crossover来使用。

二、版本?

当然,如果不想花钱,可以使用crossover的开源版本——wine,同样可以完成crossover相同的功能——当然,很多步骤需要手动操作才能完成。但是因为它开源,所以各种大神为了解决各种应用场景制作了各种版本的wine。接下来就简单介绍一下wine的这些版本。

1、正统

你可以从你的Linux仓库中直接获取到正统的版本。它包含三个后缀:wine-stablewine-stagingwine-devel。就像Chrome在for Linux的官方仓库中拥有的三个版本:stable、unstable、beta,wine的这三个版本稳定性是逐渐下降的,而新特性取得的时间是逐次上升的。一般来说,会推荐使用wine的stable版本。不过随着wine越来越多的可喜的变化,我逐渐的开始推荐使用staging版本了。因为它既不像devel这种开发版那么的不稳定和多变,又不像stable版本过于保守的增加新特性,staging保证了在尽量早的获得新特性的同时,又有着不错的稳定性。

2、不正统

不过,在正统版本之外,还有一些不错的第三方版本推荐一用。这里,你可以前往lutris的wiki来简单浏览一下。

它记录了两个主要的第三方版本:GE——Glorious Eggroll和tkg——TK-Glitch。而这两个第三方版本又有很多不同的衍生版,不同的衍生版针对不同的问题有着对应的修复,具体的修复你可以自己到这里来看一看。至于lutris,我曾经单独说过这个可以集合包括steam和gog在内的游戏库软件,这里就不再多说,只是来演示一下如何在lutris里使用不同版本的wine。

它对wine版本的管理很清晰,只需要点击Wine旁边的Manage Version,你就可以在这里选择各种版本的wine了。可以看到,除了通用的第三方版本,lutris还提供了针对游戏的版本,就比如lutris-lol,很明显,这个版本专门针对lol进行了优化,那用这个版本来运行lol显然是最好的选择。获取和设置也很简单,只需要勾选需要的版本,lutris就会自动安装部署,然后点击游戏的设置图标—启动器选项,就可以自由的选择已经安装的wine了。注意啊,这是可以多版本并存的。你要做的仅仅是勾选即可。

而对于Steam,它自己的Steam play项目和针对这个项目推出的第三方wine版本——proton我曾经也说过。所以这里同样只是介绍一下如何使用自定义的proton套件。

这个第三方套件同样有两个衍生,前边提到的GE和TKG。不同的是,这里的版本是基于steam的proton衍生得到,所以它更主要的目的在于解决使用Steam play官方版本游玩有问题的游戏。也因此,这个组件只能使用在Steam中。

先来看看tkg的自定义版,被称为proton-tkg

  1. 前往https://github.com/Frogging-Family/wine-tkg-git/releases获取最新版本
    因为tkg对于arch分支更加友好,所以对于arch分支的用户,只需要下载前两个;而Debian系的用户,就需要下载源码自行编译了。我是arch用户,所以我下载前两个,接下来也以arch演示
  2. 下载后,两者在同一个文件夹下,使用pacman -U zst结尾的那个文件名来安装
  3. 解压刚刚下载的zip后缀的文件,复制到~/.steam/root/compatibilitytools.d/

    如果没有这个文件夹,则新建一个。同时,复制过来的这些文件用一个文件夹包裹起来。所以最终这些文件所在的位置应该类似于~/.steam/root/compatibilitytools.d/proton-tkg/

    对于Debian分支系统,可能不需要root这一层目录

然后,你就可以在steam的steam play设置界面看到刚刚安装的自定义版本了。不过对于自定义版本,针对游戏进行设置可能是更好的选择。只需要在特定游戏的设置界面选择需要的版本保存即可。

第三方的改动是很有必要的。虽然我没遇到过——因为我的很多游戏都可以原生支持linux,不能支持的使用官方版本proton也能完美运行——不过个别游戏使用第三方会有更好的体验。比如warframe,只有使用tkg版本才能显示更新的进度条和下载信息。

再来看看GE的自定义版,被称为protonGE

  1. 前往https://github.com/GloriousEggroll/proton-ge-custom
  2. Release页面下载tag.gz文档并解压
  3. 将其中的文件夹复制到~/.steam/compatibilitytools.d/下,完成

不过,有实验表明,对于自定义的Proton,因为wine研发和新版本释放时候新功能的不稳定性,对于游戏的流畅度来说也并不是版本越新越好,因此有些游戏可能需要使用旧版本的自定义proton才能更好的游玩。但就像我前边提到的,我自己的这些游戏只需要用官方版本便可流畅运行,所以可能轮到你用的时候才会感觉麻烦的很吧。

聊过了这些全球流行的自定义版本,接下来看看国内定制版本:deepin-wine。

这是深度为了国内的应用特意魔改的一个wine版本,基于wine2.18版本开发——很老的wine版本了,我个人猜测,从2过渡到如今的5可能需要耗费很大的精力,所以现在deepin-wine的开发也几乎是一个停滞的状态了。不过对于国内的一众应用,使用deepin-wine来运行可能反而会比使用正版wine运行问题来的要少——所以也不知道南极大鸟家族在它们的产品里到底使用了什么拥有黑科技的库文件。

不过整体来说,deepin-wine的版本还是太老了一些,而且也不是所有发行版都可以安装这个版本的wine。所以这里也不再多说了,只是知道它的包名叫做deepin-wine就好了。如果想安装,就尝试找到这个包来安装就行了。

三、几个容易被忽略的小技巧

1、使用32位容器

虽然wine默认是64位的,但是使用32位容器会使得程序运行的更可靠。只需要在使用wine命令前增加变量WINEARCH=win32即可。

推荐将这个变量写入到.xprofile,这样每次执行wine命令时默认就是32位的了

2、指定容器位置

在wine命名前增加变量WINEPREFIX=路径即可指定容器创建的位置。默认是在~/.wine

通过这个变量可以实现一容器一软件,保证针对不同软件使用不同的wine环境配置。

3、初始化容器/调整容器设置

使用命令winecfg即可打开wine的容器设置。若当前位置没有容器则会自动初始化一个而不安装任何windows程序。

4、补充wine的组件

安装使用winetricks可以方便的增删容器内的支持组件(.NET等)。

5、中文模糊/乱码

字体问题可通过注册表设置字体替换解决。具体可参考wine字体 - Archwiki解决中文乱码 - Archwiki

最近我笔记本的SSD出现了坏块,而且日渐增多,看样子好像是要挂的节奏。

正好,毕设也搞完了,树莓派又要开始吃灰了。我就寻思着把我新买的一个3T机械盘挂在树莓派上,当作一个备份盘来用,顺便做成家庭共享的那种。

树莓派搭建samba这种教程网上一搜就有,我也就不再赘述,实际做好之后速度也还可以接受——关键在于要用有线来连接树莓派和路由器,wifi连接的速度有点问题(顺便一提,我是树莓派3b+)。但当我想把这个samba磁盘设置开机挂载时候,出大问题了。网上也找不到什么人说这个,所以决定自己记录一下。

如果你在网上搜索fstab挂载samba或者类似的问题,会看到各式各样的fstab写法。

比如Archwiki的://SERVER/sharename /mnt/mountpoint cifs _netdev,username=myuser,password=mypass 0 0

又比如csdn某博客的//shwde7xxx.ccr.corp.xxxxx.com/SE_DailyBuild /home/12/345 cifs auto, username=gli16,password=xxxxx 0 0

等等,就不一一列举了。

但我一一试下来,都不行。因为系统在启动过程中是没有启动网络连接的,这就导致了当fstab打算加载这个samba设备时,由于找不到地址进而挂载失败。如此一来,我还是要在系统启动后,手动在终端进行挂载操作。

当时越搜越气,这帮博主真的就这么不负责任的?还是就我的系统有这个问题?

最终,我决定自己尝试。

尝试的过程就不多说了,难倒是不难,只是fstab各种可能的参数都加上去试一下,但操作还是挺麻烦的:因为问题出现在启动时不能联网,所以我必须重新启动系统来验证参数是否有效。如果按一般方法通过umountmount -a来测试的话,不管什么参数都是成功的(因为这种操作是在有网络连接的情况下进行的)。

最终我的fstab是这样的:

//SERVER/sharename /mnt/samba cifs username=xxx,password=xxx,comment=systemd.automount,nofail,rw,uid=1000,gid=1000

简单解释几点

  • rw:使有读写权限
  • uid=1000,gid=1000:这两个参数让非root用户也可对这个磁盘进行读写
  • nofail:最关键的参数。无论其他参数怎么写,只要有这个,就可以保证即使开机时挂载失败,在进入桌面后还可以直接挂载上而无需用户再通过终端进行操作。

不多说了,也许这也是我头一次遇到比较冷门的问题吧……

大多数现代Linux桌面系统都预装了Nvidia驱动程序——一种新的开源图形设备驱动程序。因此,一般不需要安装闭源驱动——只要没有那么强烈的独显性能需求。

但如果想完全发挥独显的性能,闭源驱动 便派上用场了。一些Linux发行版提供了预打包的专有驱动程序放在了源中,使得安装驱动程序非常容易。

也可以自行前往英伟达官网获取驱动,然后手动安装。但这样可能需要更多的手工干预,所以只要硬件不是特别的新 ,通常源中的版本已经足够了。

再次警告

从第三方源(如Nvidia.com或通过PPA存储库的专有Nvidia驱动)安装Nvidia驱动程序可能会导致系统不稳定。因此,如果不是必须的,建议继续使用开源的新版本驱动程序。

如何逐步安装最新的Nvidia专有驱动

1、检查Nvidia VGA型号

第一步是检查Nvidia VGA卡型号。对于大多数Linux发行版,通过下述代码获得

$ lspci -vnn | grep VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1) (prog-if 00 [VGA controller])

从上面的输出可以看出我们的系统配备了 GTX 1060 6GB 显卡。

2、检查当前安装的VGA驱动程序

使用下面的命令查看当前加载的VGA驱动程序以及VGA卡型号的信息:

$ lspci -k | grep -EA3 'VGA|3D|Display'
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
        Subsystem: ASUSTeK Computer Inc. GP106 [GeForce GTX 1060 6GB]
        Kernel driver in use: nouveau
        Kernel modules: nvidiafb, nouveau

可以看到,目前使用的是nouveau 驱动程序和内核模块。如果安装有专有驱动,则上述命令的输出可能如下所示:

$ lspci -k | grep -EA3 'VGA|3D|Display'
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
        Subsystem: ASUSTeK Computer Inc. GP106 [GeForce GTX 1060 6GB]
        Kernel driver in use: nvidia
        Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

3、检查当前的Nvidia驱动程序版本:

在继续进行最新的驱动程序安装之前,请检查当前版本的位置:

$ nvidia-settings --version
nvidia-settings:  version 430.50

4、接下来安装专有驱动:

暂不讨论手工安装和GUI安装

几乎所有操作都要求sudo权限

对于Intel和NVIDIA双显卡,可能需要额外配置(bumblebee/xrandr等)

接下来的方法适用于

完成后重启,安装结束。

视频点此

先说结果:在官网将Win10对应驱动更改为DCH版本后,Windows对比Arch系就一样了;更改之前或更早的Windows版本,Arch系更容易;对于其他Linux分支,何时都是更困难的。

这次的内容主要是回答之前有朋友问到的问题。所以主要来看Manjaro和Debian 10。

不过,为了回答这个题目,先来简单解释一下Windows要怎么装。

装好Win10后,Windows Update会自动安装DCH版本驱动。待驱动安装完毕,去往Windows应用商店搜索安装英伟达控制面板。安装结束。

其他版本的WIndows,则需要去往英伟达官网,在驱动中心下载后安装。

好了,Windows的安装方法说完了,现在来看Manjaro。

问我这个问题的朋友的原话是

nvidia-dkms装不上

可能是因为用了自定义内核吧所以需要这个。不过manjaro同Arch是不同的,它优化并维护着自己的驱动仓库,所以不需要也没必要考虑nvidia-dkms。Manjaro安装只需三步:

  1. 打开终端
  2. 输入:sudo mhwd -a pci nonfree 0300
  3. 回车

不必嫌难,因为不需要你理解什么意思。只需照着敲进去,回车,你的驱动和控制面板便安装好了。

哦,当然,也可以使用图形界面,但是可能没有终端直接:

  1. 打开设置
  2. 找到Manjaro设置管理器,打开
  3. 切换到硬件配置
  4. 对NVIDIA项目,勾选non-free
  5. 点击Install

好了,简单地操作到此结束。接下来看困难的Debian10。这是另一位朋友问的,原话如下

1.nVidia开源驱动与闭源驱动的bumblebee配置及xrandr配置

2.运行nvidia-xconfig后重启黑屏的原因及解决办法

3.显卡切换面板支持怎么弄? (目前Debian10,i5-8250u+MX250,一直无法切换显卡,只能用显卡运行程序(optirun))

先来说闭源驱动安装。

  1. 启用闭源源——我没写错。Debian的源分为开源和闭源两类,默认情况下用户只能检索到开源程序。所以这里需要启用“闭源”源

    1. sudo模式编辑/etc/apt/sources.list
    2. 在每一行后面增加contrib non-free
    3. 保存后,更新缓存:sudo apt update && sudo apt upgrade
  2. 安装头文件——黑屏的一个可能就因为这里:sudo apt-get install module-assistant
  3. 编译它们:sudo m-a prepare
  4. 安装探测程序查看自己需要装哪个驱动包

    1. 安装nvidia-detect:sudo apt -y install nvidia-detect
    2. 运行nvidia-detect,得到推荐选项。如:

      # nvidia-detect
      Detected NVIDIA GPUs:
      01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1)
      
      Checking card:  NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
      Your card is supported by the default drivers and legacy driver series 390.
      It is recommended to install the
          nvidia-driver
      package.
  5. 根据推荐,输入命令完成驱动的安装:sudo apt install nvidia-driver

然后,bumblebee我以前专门说过,这里便不赘述了;而xrandr、nvidia-xconfig与bumblebee是一种“互斥”的状态,如果bumblebee配置好了则不需调整xrandr及nvidia-xconfig,否则需要。而xrandr的写法我以前同样提过,所以请参考安装KDE桌面的内容,出现在大概在12分钟位置。

这也是我现在宁可挖坑也不把一次的内容做的很多的原因:标题表现不出来涉及到的所有内容,就很麻烦。

至于nvidia-xconfig,只要xrandr配置正常,nvidia-xconfig可能不需要单独生成。如果不行,也只需终端sudo运行一次便会自动生成配置文件,此时应该就不会有什么问题了。

如果xrandr和nvidia-xconfig都配置过了但还是黑屏,那么问题可能出现在gdm上面因为这里貌似有一个bug但没有解决。尝试换成sddm或lightdm,或者使用bumblebee去代替xrandr和nvidia-xconfig

第三件事儿,很不幸,Debian现在是没有切换面板的。也就是说,要么完全使用闭源驱动提供的PRIME,即无论何时都使用独显驱动,要么就是大黄蜂,在需要使用独显的时候通过optirun实现独显加载。

到这里,问题便说完了。顺便呢,也希望能让你发现Linux和你印象中的差别吧。同时呢,也希望你能意识到:发行版的选择其实也是门学问。