分类 通用知识 下的文章

视频点此

又到了激动人心的看板回复环节了!

今天来看这个.

我早就做过一个视频,就是说Steam已经开始针对类Unix系统开发Proton套件了,很多Windows专属的游戏都不再是Win专属的东西了。所以如果你是正版的Wallpaper Engine,直接从Steam里边安装呗…

然后就能发现,它依然用不了。因为它没有模拟Aero的组件。

所以,借着这个机会,来简单盘点一下Linux下的这些Wallpaper Engine。

注意哦,我是Archlinux,所以这其中的一些软件在其他的发行版下面可能需要自己手动编译安装,就没有这么方便了。


一、KDE壁纸

没想到吧,KDE自带动态壁纸插件。你只需在桌面轻点右键—配置桌面,在壁纸标签下点击获取新插件…,安装Smart Video Wallpaper或者Animated Image Wallpaper,待安装完成后将壁纸类型选择二者之一,调好设置即可。

同理,Gnome下应该也有类似的壁纸插件,自己找寻吧。找不到也别来我,因为我也不用Gnome,我也不是很清楚。

二、komorebi

一个强大的动态壁纸,具体可以参考它的github

在其他分支可能需要你对照github来自己编译安装,不过如果你是Arch分支的用户,那么通过AUR或者archlinuxcn源来直接获取。完成后启动,自己调整吧。


图片来自github

三、Variety

这个应该已经收录在很多发行版上了,所以基本上都是一键安装的状态。

但相对于上面的,这个动态壁纸会显得逊色一些。不过它的自定义性却更高。但我感觉它的原理是固定间隔合成壁纸,然后再切换桌面的壁纸。因为在KDE上你会发现,如果启用了桌面时钟,那么每当时间变更时,桌面壁纸都会有一个黑场过渡。


还有一些其他的软件可以时间动态桌面,包括这个工具,根据教程可以实现将Wallpaper Engine的壁纸移植到linux下应用。不过我没有测试过,有兴趣的可以尝试一下。

以前就听说过这个工具。但当时整体看上去部署好麻烦,而且我的工具又并不是不稳定,再加上当时看这玩意儿要想做到只转发境外又很麻烦,所以也就一直没在意过它。但最近越来越发现,我的努比亚仿佛天生就屏蔽ss的流量,所以感觉可能还是换一换工具能好一些。说干就干,开始迁移

介绍

V2Ray是近几年十分流行的网络工具,其功能强大,用途不限于如此,但因其能有效跨越而广为人知。有如下大放异彩的特点:

  • 开源。是Project V的核心工具,源代码开源;
  • 多协议支持。传输层支持TCP、mKCP、WebSocket等,上层协议支持Socks、ss、以及自定义的VMess等;
  • 可同时支持多个入站和出站协议,每个协议独立工作;
  • 多平台支持。原生支持Windows、Linux、MacOS三大常用平台,安卓、iOS两大移动平台有丰富的第三方工具;
  • 隐蔽性。流量可伪装成网页流量,更难被检测和干扰。

一句话总结:更好更强大,但更难上手和用好。

部署

现在已经有一键脚本。直接使用即可(Linux)。

curl -L -s https://install.direct/go.sh | bash

安装完成后,配置文件为/etc/v2ray/config.json,其中,”inbounds”下的这几项信息需要记录:port(端口)、clients中的id(用户id)和alterId(额外id),它们将在配置客户端时用到。

在VPS中放行上面提到的port,然后启动服务:

systemctl enable v2ray
systemctl start v2ray

即可使用。

但当前是没有什么伪装措施的,或者说,仅仅是使用了默认的vmess方法进行“混淆”。一旦检测到,那么必然就会露馅。所以接下来进行进一步的“打扮”。

伪装

通过一个正常的网站进行伪装,一来可以合理的解释为什么会有数据传送到这个ip上;二来可以走一层cdn,进一步伪装服务器ip和真实的作用;三来可以套上一层https,数据包就又加密了一次;四来,如果你的vps被屏蔽了,套上cdn还能让你的vps起死回生。

但这需要你有一个域名。

至于解析和cdn,我选择通过cloudflare来实现。当然也可以用其他的,比如直接使用域名商的域名解析。使用cf的好处在于可以直接提供cdn和https,省去了另行配置cdn和申请域名签名的步骤。

当然,如果有更好的cdn服务商就不要用cloudflare了…都快用烂了。

先将域名解析配置好。一级域名肯定是你自己的(比如是123.com)至于使用哪个二级域名无所谓(比如v.123.com,接下来以这个域名为例),或者直接使用主域名也可以。注意把cf的小云彩点亮以使用cdn功能——嫌慢的话就点灭,但https需要你为域名申请一个证书。

切换到SSL/TLS标签,将加密模式切换到Flexible;切换到Edge Certificates子标签,启动Always user HTTPS

至此,cf设置完成,接下来设置服务器。

进入到你服务器的宝塔面板(我一直在用宝塔面板,如果你使用单纯的环境,相信接下来的东西你也是会配置的),进行如下操作:

  1. 新建上述域名的网站。静态站还是动态站无所谓,反正有一个网站就行,这个网站也可以正常使用。比如说浏览器访问是你公司的wiki站点,实际上在提供v2ray服务
  2. 确定后,打开该站点的设置页—配置文件,在结尾的}前增加下述代码(开头是location 不知道为啥l总是显示不出来)

    location /v2ray { #使用软件访问v.123.com/v2ray,会连接到v2ray服务,浏览器访问则返502错误。这里的路径可以自定义
           proxy_redirect off;
        proxy_pass http://127.0.0.1:12345;   #v2ray的端口。应该与前边提到的port相同
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $Host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    其实就是反代,直接在网站设置的反向代理标签设置也可以。

  3. 修改前边生成的config.json,在inbounds下增加相关的配置,最终类似于这样:

     "inbounds": [{
        "port": 12345,
        "protocol": "vmess",
        "settings": {
          "clients": [
            {
              "id": "xxxxx",
              "level": 1,
              "alterId": 64
            }
          ]
        },   #上面的都是自动生成的,不必修改
        "streamSettings": {     # 载体配置段,设置为websocket
            "network": "ws",
            "wsSettings": {
              "path": "/v2ray"  # 与nginx中的路径保持一致
            }
          },
        "listen": "127.0.0.1" # 出于安全考虑,建议只接受本地链接
      }],

    注意:json文件不支持注释,上述配置中”#”号及后续内容都要删掉。

  4. 配置无误后,重启v2ray服务:systemctl restart v2ray

接下来浏览器访问域名,确定是https访问,并且出现首页内容,而URL输入映射到v2ray的地址(如前面假设的 v.123.com/v2ray),返回 Bad Request,则几乎可以说明配置完成了。接下来就到客户端了。

使用

Win和手机端的软件网上有很多,所以这里只说设置的内容

  • 地址/address:前边设置的域名(这里的例子应该写 v.123.com)
  • 端口/port:443
  • id:inbounds中的id
  • 额外id/alterId:inbounds中的alterId
  • 加密方式/Security:auto
  • 传输协议/network:ws
  • 伪装类型/type:none
  • 伪装域名留空
  • path:前边在nginx中设置的路径(这里的例子应该写/v2ray)
  • 启用tls传输

至于Linux,archlinuxcn源提供qv2ray,自带流量区分,即只处理出境流量。安装使用这个软件即可,设置同上。

视频点此

对Windows 7 的支持已结束,然后就有不少的Linux发行版想蹭一波热度,趁机把Windows 7 用户拉过来。不过,用户真的就适合过渡到Linux吗?

其实作为一个纯Linux用户来说,我倒也挺希望能多点儿用户的

一、“钻空子”的软件商

如果你关注的话,会发现不少的发行版都在趁机拉拢,无论这些公司推出的发行版到底出不出名。比如Tmax推出的TmaxOS、Hancom推出的Gurem、Invesume推出的HamoniKR,你可能挺逗没听说过,但没关系,我也头回听说。不过也有一些知名的比如Ubuntu、Linux lite这些。

不过,真能如它们所愿吗?

二、为什么值得换

你可以翻我过往的内容,涉及到用什么操作系统的话题,我从来都讲因人而异。可能Linux有堆积如山的优点,但因为一个关键的软件不适配,那么就说明它并不适合。所以说,先让我们来看看Ubuntu的产品经理说的这些理由

  • 原本的程序在Linux依旧可以使用,包括谷歌Chrome、Spotify、Blender和微软自己的Skype

    With these apps, most PC users will be able to function as normal. You can continue to search the web, listen to music, watch films, talk with your friends and download new apps.
  • Linux安装软件更容易

    For general users, there is still a preconception that Linux is complicated... Plus, installing software on Ubuntu is actually easier than on Windows... On Ubuntu users install apps using the Software Centre and the Snap Store. Both are similar to the android and ios app stores you are used to but have been around much longer. And then installing is just a case of clicking install. Without needing to click through Windows asking to make changes to your computer.
  • Web app提供更多样的体验,如Microsoft Office Suite
  • 强大的社区支持

    It is free for anyone in the world to use, for anyone to contribute to, and so anyone can suggest or request new things. Even Microsoft is contributing in order to have their say.
  • 安全

    Every line of code is thoroughly reviewed and vetted by Canonical or a member of the community... If a bug in your system is found the update rolls out automatically to fix it without you needing to do anything. It’s done in the background to keep your computer secure by default.

至于Linux Lite,则直接模仿了Win7的界面,让用户感受到一种亲切感。

三、为什么不值得

纵使有各种优势摆到用户前面,也并不足以说服用户去更换他们的操作系统。就像Ubuntu的产品经理提到的:

Though to be clear, there are things that do not hold up. The two biggest stand out differences at the moment are gaming, and Microsoft Office.

...For example, installing Steam on Linux is really easy and there are lots of popular games available (Dota 2, Counter-Strike: Global Offensive, Hitman, Dota) to play. However, a lot of other popular games are not yet available to run natively. To play, they require work which could present a big challenge for the average user.

这是老生常谈的两个问题,也是一直在改善的两个问题,我之前有聊过,这里也就不多说了。

四、我的观点

现在回到开头的问题:这股热情到底能不能为Linux带来用户量激增的现象呢?

我认为并不能,有这么几个理由。

1、用户习惯

还在使用Win7的用户中,大多数人都不喜欢Win10的强制更新策略。因此坚持使用Windows 7是保留传统Windows体验的唯一途径。也就是说,这些用户只想要一个看起来和感觉像家一样亲切的东西,并不想做任何导致需要他们重新学习如何使用电脑的改变。因此这些用户不太可能迁移到Linux,反而可能会迁移到不再强制推送更新的WIn10上(我记得Win10应该可以了吧…)

2、安全不重要

就像前边那位产品经理提到的,Windows 7可以转移到Ubuntu,从而在无需硬件升级的情况下获得额外的安全保障。(Install Linux on any computer you like.

但话又说回来,既然支持已经结束了,而这些用户还在使用,那安不安全大概也不是这些用户看中的东西。

3、技术控

可能有人感觉喜欢折腾电脑的会更有可能换到Linux。诚然,这些人可能确实对探索非Windows世界感兴趣,但如果感兴趣,那么这些人应该早就开始使用Linux了,不感兴趣的话,那应该早就跑到Win10上了,Win7结束不结束的,关他们啥事?

4、盗版用户

曾经我买过一张Win7的安装盘,家庭高级版、专业版、旗舰版三合一的,5块钱。当年这种5块钱安装盘遍地都是。那你想想,你有关注过它能不能进行Windows update吗?

5、老软件使用者

还有那些使用老程序的用户,比如电车go通勤篇,这游戏在Windows XP上面都不一定跑得起来。假如说就有这么一个职业的电车go通勤篇玩家,那微软结束Win7的支持与运行Win98的他能有什么关系?

所以,尽管Windows7结束支持相比Windows Vista结束支持话题更热——或者说,Vista在去年4月份结束支持时候根本没人在意——但是我感觉Linux这边对此的期望确实过大了。Linux在技术行业中有自己的位置,使用它的人也有自己的理由。但说到底,到底怎么选择是用户自己的事情,就像推销员无论怎么说,我也不会买一款翡翠打造的担架的。所以Linux会因为Windows世界的变化而能吸引许多新用户吗?有人过来应该还可以,但大规模过渡,我觉得不行。

视频点此

之前留下了一个问题:为什么现在不用传统的三维寻址了呢?

因为不好用了呗。但为什么不好用了呢?这就说到今天介绍的问题了:碟片上的扇区都有哪些划分方式。注意哦,我说的是碟片,所以这就包括了硬盘、CD在内的很多圆盘样的存储设备了。慢慢说。

在正式开始之前,先用这种方式来简单理解一下扇区:固定时间间隔,读写头一时间单位在碟片上面划过的长度。再记住线速度与角速度关系的公式:v=Ω·r. 好了,可以开始了。

1、CLV

一开始的技术叫做CLV:恒定线速度。核心:整张盘的线速度都相同。根据刚才说到的公式:如果v一定,则r同Ω成反比。也就是说,磁头越接近内圈,需要的转速越高。所以这种技术需要马达不断的调整转速,寿命自然也非常短,通常用在低于12倍速光驱中。

2、CAV

CLV因为不停的更改机器的转速,会对机器的寿命造成一定的影响,而且磁盘转速也不能无限制的加快。所以后来又有了一种磁盘技术叫做CAV:恒定角速度,即马达的转速恒定。显然这对马达有了很不错的保护。而根据公式,角速度一定时,线速度同半径是成正比的。所以越靠近外圈,碟片的线速度就越快。再根据前边提到的扇区定义,很轻易就能得到一个结论:越靠近外圈,一个扇区的面积会越大。但这为硬盘带来了几个优势:一个扇区的面积越大,对应的磁介质就会越稀疏,而相互之间干扰出错的可能性就会越小。因此硬盘留下了一个传统:靠前的分区在磁盘外圈。

换一个角度来看:角速度一定,Ω/t就是一个定值(记为k),进而可以得出,360°/k是一个定值。因此CAV模式下,不仅越外圈的扇区密度越小,每个磁道拥有的扇区数还是相同的。这就让CHS有了极大地用武之地:磁头、柱面、扇区,这三个量每个量都是从0到一个固定值的,管理起来就能方便很多。

3、ZDR

但随后的ZDR——区域数据记录技术——让CHS疑惑了。

简单来说,ZDR就是分区CAV:每个区域内为恒定角速度,而各个区域内的角速度不同。从磁盘的最外圈到内圈划分出若干个区域,每个区域内的每磁道扇区一致,但靠内的区域比外侧的区域的每磁道扇区数要少,从而可以根据不同的磁道长度来合理设定扇区的数量,以达到充分利用磁盘存储空间的目的。

可以想象,虽然磁头和磁道还是可确定的范围,但扇区却根据磁道所处区域的不同而有不同的范围,这种情况下的CHS显然就没那么好用了。而由于密度可以做到内外圈类似,所以越靠近外圈读写可以越快,因此第一个分区放在最外圈依旧是一个好的习惯。

还有一些其他的划分方式,比如P-CAV(内圈CAV外圈CLV)、Z-CLV(划块线速度)就不详细介绍了,这些都是在上面的基础之上进行的组合和改良。

正是ZDR的出现,让传统CHS变的不再那么好用了。所以也催生了LBA的产生。而现在的SSD,更是进一步舍弃了CHS三元素,让物理CHS更彻底的成为了历史。

视频点此

一、尽量在Linux下做所有的工作

我感觉,先将自己置身在Linux是最重要的一步。我党有句话:从群众中来,到群众中去。学习Linux就有这么一个思路:先去用Linux,遇到问题时就去学习,然后返回到Linux中解决它。其实也不止Linux,学数学物理这种也是这么个路子,只不过从现实抽象这一步骤放到了前人的身上了而已。

而在使用的过程中,坚持一个原则:避免提问,善用搜索——尤其是刚接触Linux的一大拦路虎:软件缺失。我不止一次的说过,现在的Linux有绝大多数可以对应Windows专属的软件,仅仅是你不会使用搜索引擎而已。就像很多人说的CAD。说实话,每次看到这种说法我就觉得这人“学傻了”。但是转念一想,检索技巧在大学也是一门课,所以不会用百度也是正常的。至于搜索这部分,我一会儿再细说。

二、阅读帮助文档

使用中针对出现的问题学习无疑能学到对于你自己最实用的一些知识,但是想要系统的学习还是需要一些资料来阅读。其中,帮助文档就是最容易得到的——无论是Windows还是Linux。只需要鼠标轻点,loading一下即可万事大吉。对于命令行的指令,Linux下也可通过在命令前加一个man来获得手册。

但是这有一个问题:受限于汉化程度的不同,有些手册你可以无痛理解,有些可能需要你配备一本英汉词典来使用。而且这对于解决问题往往没什么帮助——因为它平铺直叙了所有可能的操作方法,但并不能告诉你出现什么错误可能会是哪里导致的。这时候,Wiki或官方网站可能就是一个更好地选择了。

三、Wiki/官网

不只是发行版,一些开源项目,wiki或官网也是很有用的工具。这个的优势很明显:

内容完整。对于一个项目来说,wiki作为知识库的存在,可以拥有最完善的介绍体系。

步骤细致。作为作者发布的教程,wiki通常会写出这个项目需要的所有依赖、可配置的参数和所有可行的部署方法。所以很多时候只需要无脑复制粘贴命令即可,甚至不需要理解这些指令都在做什么。

官方的疑难解答,这是相对于帮助文档突出的一点。一些常见问题在wiki中会有详细的解决方案,比盲目的网上检索针对性更强。

实时更新。任何新版本的改动,作为与作者关系最近的wiki自然会得到最先的调整。

但缺点也存在:

很多wiki可能使用英文编写,或根本不存在。

对于学习Linux,我会推荐两个Wiki:ArchWiki和DebianWiki。

Archwiki,内容全面而完善,所有的发行版都可以将Archwiki作为参考资料使用。而且有些内容会附带常见问题的可能的解决方案,很有参考性。即使不是为了查找出错的解决方法,单独当做ArchLinux入门来看也是个不错的“教材”。但部分页面的中文翻译跟最新的英文原版内容有脱节的现象,所以有的时候可能需要查看英文原版的页面。而且因为Arch的包比较多,包管理器又跟Debian、RHEL之类的不一样,所以对于Debian分支,Debianwiki也是个不错的工具。

DebianWiki,很显然是根据Debian分支的命根子——Debian而出现的百科,所以这个wiki下面的内容通常可以对应到各个基于Debian的发行版中。只不过Debian的包往往比较老旧,所以如果有些东西编写的年代比较早了,那配合着ubuntuwiki来看会是一个不错的方法。但我可能不会单独推荐ubuntuwiki。一来,Ubuntu相对Debian有很多改动的地方,所以其他的Debian发行版不一定能通过Ubuntuwiki适配上,二来感觉Ubuntuwiki的内容不是很多的样子,但这可能是我不会用吧…

四、社区

在此之下的路子,就是各个开源社区了。社区这个概念具体我就不介绍了,总之社区就是一个由相同兴趣的人聚齐而成的一个讨论区。因此往往会有一些歪门邪道但很好用的小技巧能学到,对于疑难解答也是不错的地方。这里主要列举几个还不错的位置。

Discord。虽然更主要的是用在了游戏讨论或联机语音上,但作为Linux社区,同样有相关的分类。而正因为其最本质的功能,所以这里的实时性很不错。但语言基本就是英语确定了,而且可能访问上面有点儿问题。

Reddit。所谓美版天涯+贴吧。用户基数很大,相关的问题也很多且基本都有很有效的解决方法。如果你注意过的话,百度一些Linux或者开源相关的问题经常会引导到Reddit的帖子上,且很有效。但是跟Discord一样,语言基本就是英语了,可访问性也有点儿飘忽不定。

项目GitHub的issue。这自然是针对特定开源项目的一个“社区”。因为所有话题都围绕着一个软件产生,所以更容易看到与自己类似的情况,且能获得作者的解答。但不一定每一个项目都把issue维护的那么好,而且可能看到世界各地的各种各样的语言。

放眼国内,Linux相关的综合社区不算太多。我注意到的就是Linux社区和Linux中国。这俩都是老牌的Linux相关“发布站”,有时候也有一些其他的开源项目的使用教学。不过交流性不强,更适合作为信息获取平台而非解答平台。

开源中国也很出名,内容覆盖的多而广。但针对Linux的内容就有些不好找了。

与开源社区对应的,就是以独立单位发布的自媒体了。这包括博客和视频两类。

博客,可以说层出不穷,而且经常有很多实用的解决方案和操作技巧的文章出现。但受限于SEO的问题,除了CSDN这种博客外,很多个人博客有可能很难找到。且由于是个人维护,时效性便得不到保证了。因此如果使用个人博客的内容,建议先看一看文章的发布时间和最后修改时间。

视频,其实针对Linux的自频道在国内可以说是很罕见了。放眼全球,中文语言的Linux自频道数量也不多。所以虽然视频演示的话相比博客会更容易理解,但想寻找到关于这类的中文自频道就比较困难了。所以视频这方面我就直接推荐几个英语频道吧。有兴趣的可以看一看。

Chris Titus Tech,也是我一直在看的一个频道。围绕Linux的包括但不限于基本操作教学的各种内容,也有一小部分Windows的视频。总体来说质量还挺好的。

DistroTube,一个倾向于介绍各种发行版的频道。跟随它可以第一时间跟进各种热门发行版的新特性以及发行版之间的各种比拼。这是一个很纯粹、完全不涉及其他类型系统的频道。

TLG // Technology · Linux · Gaming,看频道名也明白了,这个频道专门发布Gaming on Linux内容的视频。我认为看过这个频道之后,就能破除很多人对Linux的那种停留在十多年前的印象了。

ExplainingComputers,诺丁汉大学教授运营的一个频道。内容涉及从Linux系统到计算机硬件层面的内容。对于学习Linux来说,可能不如前面三个频道来得快,不过这个频道能很好的拓宽你的视野。

五、检索

想要聚合上面说到的所有资源,搜索自然是最好的一个聚合工具了。显然,综合了各种可能的资源,一起展现是搜索引擎最大的优势。而且都是根据你搜索的内容筛选的结果,针对性更高。但大量的结果也对应一些问题:结果掺杂广告是一方面,由于Linux及开源的性质,越有用的信息,英文占比越大是一方面,需自行对有价值的结果进行筛选才是最有难度的一个问题。而为了最大程度优化初筛的结果(也就是输入了搜索条件后点击搜索按钮后得到的页面结果),这里不得不提一些检索相关的技巧了。

第一,使用关键词搜索而不是一句话,关键词用空格隔开。

这是最应记住的基本的检索技巧。通过关键词检索,你的检索条件有用信息占比可以达到最高水平,自然就能最大程度命中最符合你的检索需求的内容了。

第二,不管你信不信,国外在开源方面的讨论更有技术性,通常也更有帮助。所以寻找解决方案的时候,使用英语关键词在必应国际版或谷歌上搜索,效率会更高。

至于中文方面,个人博客通常更有参考性。因此如果实在不想读英语,使用中文关键词在必应国内版或谷歌上进行检索,也会有还算不错的结果展现。

最后,才应该想到提问这个路子。就我本人来说,从09年开始用Linux到现在,我一直没有提出过问题,仅仅检索到的东西就足够应对出现的问题了。事实也是这样。毕竟Linux出现了半个世纪了,啥可能的坑都有前人踩过了,因此很难出现一直到现在还没有人问过的问题。所以如果用作日常使用的话,可以检索到的内容应该足以解决问题。解决不了只能说明是检索技巧出现了差错。

所以说,提问仅仅在你竭尽所能的利用检索技巧但仍没有有用的信息时的一个解决方案。而去社区提问是最佳选择,所谓人多力量大。

反之,最下策才是向个人提问。一来个人不可能拥有那么多那么全的经验,而且时延太没谱了。

可能有人不明白:上学时候总说不懂的要问,怎么这里反而不推荐了呢?

首先,问到的结果一来自己不容易记住,二来得到的解答无脑照着操作,得不到任何提升,最后,Linux的自定义性太高了,所以如果不自己理解的话,往往会把本身是解决方案的解答判断成无效的方案。也正因最后一点,如果提问的时候仅仅描述了出现了什么问题,那么这个提问可以被称作是一个无效问题了。所以,一个最容易得到有效解答的提问最好包含下面几点:

想干什么的时候出现了什么错误;

出现此问题前都对系统进行过哪些调整;

尝试过了哪些方案;

与此出错操作有关系的组件都处在什么状态,部署在了什么文件夹中;

用户配置文件是什么样的;

用的哪个发行版;

相关的软/硬件环境如何

如果不了解自己的Linux的这些内容,那么最好的解决方案还是重装吧…不知道这些内容说明对Linux还不是很熟悉,而解答者不知道这些内容,也就只能给出通用方案。而面对这个通用方案,提问者往往又不能根据自己的电脑做对应的修改,也就成了死结了。

以上就是我学习Linux的一些来源和方法了。总结一下,核心是使用,在使用中自然会遇到不知道的问题,这时候针对问题来查找解决方法,而一个解决方法往往连带出一些基本的操作,所以慢慢的,对Linux的理解自然就提升上来了。

视频点此

半个月前,我提到了硬盘的一些单位。那今天,借着这些单位,来看一个问题:打开文件时,你的硬盘是怎么找到文件的。

一、“古典概型”

没什么特别的意思。我就突然想起来这个词了。我想说的意思就是,在若干年前,硬盘要如何定位文件呢?

正如之前的内容所说,一块硬盘里有多张碟片,每个碟片有两个磁头,在磁道上读写着它所对应的碟片面的扇区,而所有碟片的相同半径的磁道就构成了柱面。想一想,磁头可以确定一个扇区所在的碟片面,碟片切柱面便得到了扇区所在的磁道,再加上扇区号,这三个维度便可以确定一个扇区了。

这就是传统的三维寻址,学名叫C(Cylinder,柱面)H(Head,磁头)S(Sector,扇区)寻址方式。注意,这种方式下,磁头和柱面从0开始计算,而扇区数则是从1开始算的。至于为什么这么定义,标准。因为当年的IBM兼容机就是这么规定的,你要想兼容,那按要求做就行了。

规定的这一部分稍微的扩展一些吧:在IBM兼容机中,INT 13H中断被用作硬盘操作。如果调用这个中断来读写硬盘,就需要一组CHS参数来定位一个扇区。其中,C用10个二进制位存储,最大到1023;H用8个二进制位存储,最大255;S用6个二进制位存储,最大63. 而一个扇区的大小一般是512B,所以调用了INT 13H中断的程序,只能读写到1023 * 255 * 63 * 512字节大小的硬盘区域,核算过来就是可以读写到硬盘前8G左右的扇区。但现在的硬盘肯定远远大于8G,所以为了照顾使用INT 13H的老程序,微软等几家公司制定了扩展INT 13H标准,又出现了采用线性寻址方式来操作硬盘,从而突破了这个限制。

而线性寻址,也是当今机械硬盘主要的寻址方式。全称逻辑块寻址,缩写LBA(Logical Block Address)。

二、LBA

这种寻址方式就简单粗暴了很多。从0柱面0磁头1扇区开始,一直到最后一个柱面最后一个磁头最后一个扇区结束,每一个扇区都有一个独一无二的序号,这个序号是从0开始记录的。也就是说,0柱面0磁头1扇区转换到线性地址上就是逻辑0扇区,这便是“扇区从0还是从1开始的”这种矛盾症结所在,知道就行了。

再来看LBA本身。它其实也有一个进化的过程。

CHS寻址,就像之前所说,一共用了24个二进制位来存储了坐标的3个量,LBA一开始也用了24位。区别只限于CHS将这24位分成了3份,LBA则用来保存一个数。那这个数有多大呢?16777215. 算上可以用0了,一个可以编号16777216个扇区。这有多大?8589934592字节。注意哦,单位是字节,换算过来只有8.6G多一些。很明显,啥用都没有。因此,LBA扩大了一次存储的二进制位数,达到了28位。这时候能编号多少扇区了呢?268435456。核算过来最大容量137.4G左右。很明显还是不够啊,因此LBA再次进行了扩展,用48位来保存。此时不考虑其他的情况下,按512字节一扇区来计算,可以访问到144PB的位置,这个数量级,一段时间内应该够用了。

容量问题解决了,再来看一个问题:我已经知道逻辑0扇区对应的CHS坐标了,那么之后的序号按什么顺序排列呢?我是把0柱面1磁头1扇区编号为逻辑1扇区,还是把0柱面0磁头2扇区编号为逻辑1扇区呢?在了解了磁盘使用扇区的顺序之后,你应该就能知道了。

现在的多碟片硬盘,虽然有多个磁头,但往往都是由一个轴统一带动的。因此很容易想象出来,同一时刻,各个磁头会处在同一个磁道——或者说柱面上面。而移动磁头到其他柱面是硬盘读写过程中最消耗时间的一个步骤,所以尽最大可能让磁头不动才能确保有更高的执行效率。因此,编号从0柱面0磁头1扇区开始,到0柱面0磁头这一圈都编好序号之后,才会切换到0柱面1磁头1扇区继续编号,从而保证了效率最高。

你可能会有一个疑问:移动磁头最耗时间,那磁盘转动同样要消耗时间。这么一看,好像不需要任何机械动作的切换读写磁头这个动作才是最快的。那为什么我不先把所有柱面同一位值的扇区都写完,再切换到下一个扇区的位置呢?换句话说,为什么不按照0柱面0磁头1扇区 - 0柱面1磁头1扇区 - 0柱面2磁头1扇区这个顺序给扇区编号呢?另外,就像前边我说到的,其实扩展INT 13H也打破了8G界限。如果你想计算的话,在28位LBA的时候,CHS28位同样可以记录到136G多的位置(CHS寻址下,28位分成这三份:柱面使用两个寄存器共16位,扇区用一个寄存器共8位,磁头用一半寄存器共4位)。但为什么好好地CHS就被抛弃了,硬要造一个线性寻址方式呢?以后再说。