-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
453 lines (243 loc) · 270 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>white blog</title>
<subtitle>Not perfect but enough</subtitle>
<link href="https://whitecodes.github.io/atom.xml" rel="self"/>
<link href="https://whitecodes.github.io/"/>
<updated>2025-01-07T01:54:48.776Z</updated>
<id>https://whitecodes.github.io/</id>
<author>
<name>white</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>Amazfit T-REX 2</title>
<link href="https://whitecodes.github.io/2023/07/amazfit-t-rex-2/"/>
<id>https://whitecodes.github.io/2023/07/amazfit-t-rex-2/</id>
<published>2023-07-02T07:32:30.000Z</published>
<updated>2025-01-07T01:54:48.776Z</updated>
<content type="html"><![CDATA[<p>原本用的小米手环,但是某天晚上黑屏了,就动了换设备的念头。</p><!---more---><p>一开始用的是小米3,单色屏的;后来用的小米6,有彩屏了。外型基本没变,都不是圆形的。现在换新的就想要一个圆形的,就冲着外观为目的挑的。<br>另外现在在用的软件是<code>Notify for Mi Band</code>,新买的最好是这个软件适配的。<br>京东的商品列表中挑了下,外观不一样的就是<code>Amazfit T-REX</code>系列了。咸鱼上看了,买了<code>Amazfist T-REX 2</code>。<br>拿到手之后经过几次升级,新增了血压检测,这个算是以外惊喜。</p><p>实际大半年用下来,槽点不少。</p><ul><li>外观各种角落,表盘上的螺丝和外壳之间的缝隙很难清理</li><li>适配的<code>Zepp</code>应用不好用,特别是手机的通知不能同步。手机上新出现通知,手表上也弹出来,这个没问题。但是手机上通知被标记为已读,手表上弹出来的不会消掉,这个就很烦。另外手表上的通知也不会出现在手机上。</li></ul>]]></content>
<summary type="html"><p>原本用的小米手环,但是某天晚上黑屏了,就动了换设备的念头。</p>
<!---more--->
<p>一开始用的是小米3,单色屏的;后来用的小米6,有彩屏了。外型基本没变,都不是圆形的。现在换新的就想要一个圆形的,就冲着外观为目的挑的。<br>另外现在在用的软件是<cod</summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
<category term="App" scheme="https://whitecodes.github.io/tags/App/"/>
</entry>
<entry>
<title>索多玛天空的群星/Stars above the sky of Sodom</title>
<link href="https://whitecodes.github.io/2023/02/Stars-above-the-sky-of-Sodom/"/>
<id>https://whitecodes.github.io/2023/02/Stars-above-the-sky-of-Sodom/</id>
<published>2023-02-12T11:19:19.000Z</published>
<updated>2025-01-07T01:54:48.776Z</updated>
<content type="html"><![CDATA[<p>微博上看到的一篇<code>流浪地球</code>的<a href="https://weibo.com/ttarticle/p/show?id=2309404865409169096992">同人</a>:</p><blockquote><p>关于为什么杜勒斯这个唯一的地上基站填进去四队人死了一半在阿美丽卡独特国情下很难不让人怀疑是不是打成了黑鹰坠落这件事*</p></blockquote><span id="more"></span><h2 id="卷首语:"><a href="#卷首语:" class="headerlink" title="卷首语:"></a>卷首语:</h2><blockquote><p>“耶和华说:‘索多玛和蛾摩拉罪恶深重,人们怨声载道。我现在要下去看看他们的所作所为是否如所说的那样邪恶,如果不是,我也会知道。’”<br>“亚伯拉罕又说:‘求主不要发怒,让我问最后一次,倘若在那里只找到十个义人呢?’耶和华说:‘为了那十个人的缘故,我也不会毁灭那城。’”</p><p>——(创:18-20)(创:18-21)(创:18-32)</p></blockquote><h2 id="0"><a href="#0" class="headerlink" title="0."></a>0.</h2><p>当本杰明·斯皮尔斯确认了自己的存活,他首先反应过来的是吸进肺部的寒冷空气。他的防寒作战服肯定破了个口子,沉重的四肢尚有感觉,但不知是来自失血还是破损的外骨骼。而当这位自太空电梯被破坏那年便开始服役的游骑兵试图抓起面前的Noveske N4卡宾枪,他伸出的右手被一个满脸万字、狼锁与黑太阳纹身的暴民踩在地上。叛军已经摧毁了挡在互联网名称与数字地址分配机构杜勒斯中心门前的最后一道防线,一发和本杰明那早早离世的祖父同龄的AT-4在他身前的悍马引擎盖上炸开。现在周遭响起的零星的枪声,是那些杀戮者们在给和本杰明一样奄奄一息的幸存者们补枪,克里斯蒂安·赫克托少校还没来得及抽出手枪,他的头颅便在一名暴民枪口下炸开。</p><p>他花了不到一秒的时间准备接受自己头顶上的枪声,但他的脑子随即带动胃部如教堂的钟摆般晃荡不止,一口吐在了眼前踩着他右手的靴子上。随即那靴子抬起来一脚朝他脸上踹来令他仰面朝天。那名新纳粹蹲下来,一把堪称百年古董的M1911A1手枪指着本杰明的额头。</p><p><strong>“给我一个为那些躲进地下的蜥蜴人买命的理由,阿兵哥。”</strong></p><p>和那声音一起引起他注意的还有那人伸到自己面罩上的枪口,身边开始在数据中心大门上安装炸药的“索多玛营”武装分子,以及更远的天空中不时撕开那层不再蔚蓝的幕布的月球残骸。在这片记载着阿波罗11号那英雄的轨迹的天空下,寒风中飘扬的星条旗正熊熊燃烧。</p><p>本杰明·斯皮尔斯突然想起来上一次他见到这番景象是什么时候——那时因为内华达州停在晨线外的缘故,从父亲的病房那结上一层厚厚冰霜的窗户向外看,已经无法望见因距离的遥远而小了很多的月亮。军队难得的假期对他而言便和弥留之际的父亲等同,那时他回到里诺市那家挤满了辐射病人的小小医院,站在至少能保证不断供暖气的病房里,右手插在军大衣衣兜里无助地攥着手机,手机上刚刚发来与他无关的第三十五次地下城抽签结果。他望着躺在轮椅上堆成山的毯子里的父亲不知该如何开口,后者却先笑了笑。</p><p><font color='red'><em><strong>“别比我先走,不然到时没人记得先给我穿上那件老伙计。”</strong></em></font></p><p>那位曾参与拉斯维加斯地下城建设的工人指着衣架上泛黄的工作服说道。</p><p>窗外是本杰明一路上熟悉得不得了的枪声,警笛声,以及带着西海岸口音的叫骂声。医院门口的星条旗被一个赤裸着针眼遍布的上身,纹着燃烧地球的变性人点燃并用力挥舞。谁也不知道那个生物磕的药能让此人在停转期的温度下发疯多久,但本杰明知道,那燃烧的星条旗正在这晨昏线附近永恒的黄昏中解体,崩坏,直到再也没有人记得它原本的颜色与意义。</p><p><strong>“说话啊,阿兵哥,该不会你也是个进不去的可怜虫吧?”</strong></p><p>那个拿手枪指着他的武装分子带着戏谑的口吻喊道,仿佛苏丹宫廷里遭阉割的弄臣,引来周遭其他叛军的一阵笑声。但本杰明自然顾不上这些,他的耳机里是后备三队即将抵达杜勒斯以及“断箭”已经得到响应的讯息。今天无论是和先遣队一同出发的DEVGRU红队,还是他与他的游骑兵战友,加上后来160航空团送来的各个军种的志愿者,以及中国人和俄国人,都至少肃清了半座城市的叛徒。他记得这些装满了各种他所叫不上来的致幻剂和毒品的头盖骨在自己的瞄准镜中飞起来的模样,似乎够本了。但对于大门内争分夺秒重启互联网的科学家们而言他还可以做得更多。</p><p>本杰明·斯皮尔斯左手抓住抵在自己脑门上的手枪套筒,右手拽开背心上手榴弹的保险,拽过身上之人的衣领用尽外骨骼的最后一点电源将其压在身下。</p><p><font color='red'><em><strong>“为了让我家里那老东西死得有点意义。”</strong></em></font></p><h2 id="I"><a href="#I" class="headerlink" title="I."></a>I.</h2><blockquote><p>“兵者,诡道也。”</p><p>——孙武《孙子兵法》</p></blockquote><p><img data-src="/asset/2023/02_time_0635.jpg" alt="internet recovery in 755 minutes"><br><img data-src="/asset/2023/02_location_dulles.jpg" alt="dulles"></p><p><font color='grey'><em><strong>“Пыль глотаю теряю сознанье”</strong></em></font><br><font color='grey'><em><strong>“吞下沙尘 我失去了知觉,”</strong></em></font><br><font color='grey'><em><strong>“Воды не осталось совсем…”</strong></em></font><br><font color='grey'><em><strong>“水一点不剩…”</strong></em></font></p><p>“去你妈的波兰佬,我说了一百遍别在公频上放你那种能让奶牛原地旋转的波兰音乐了。”<br>“但这是俄语歌。”<br>“我让你找点阿富汗战争时期的音乐,不是苏联人打阿富汗时期的!”</p><p>美国海军特种作战开发团第4战术开发与评估中队”Red/红队”-“Calvin/加尔文”分队的波兰裔指挥官扬·瓦考夫斯基海军上尉耸了耸肩,看着自己的同僚,“Mayflower/五月花”分队指挥官马克·李海军上尉把前车车窗摇下朝自己伸出一个国际友好手势。然后想象这个典型的美国乡巴佬为了出这口恶气啃了一嘴沙子和雪的模样。五辆悍马组成的车队在7号高速公路上奔驰,寒风裹挟着无尽的沙尘和雪花朝孤独的车队席卷而来,让人不禁担心车顶自动炮塔上.50重机枪和40mm榴弹发射器会不会卡壳成栓动。当然比起这些向来可靠的老伙计,两个上尉还有更多东西需要担心。四台掠夺者无人机的遥感画面尚未在他们四周捕捉到任何热源,与之相连的平板上无尽的灰色同地平线上杜勒斯镇逐渐清晰的轮廓对比鲜明。</p><p>或许简报中说的没错,能抽到地下城入住资格的辖区居民早就一股脑地涌进了华盛顿特区市中心,那里至少还能保障最基本的治安与食物配给。至于那些上帝的弃儿,要么正组成车匪出现在任何一条公路上,要么紧锁房门等待属于自己的最终审判。</p><p>马克·李揉了揉长时间专注在平板上的眼睛,看了一眼暂时被沙与雪掩埋的天空,他当然知道现在月球还不会撞上来。但就算人类把那些原本用于互相毁灭的力量爆发在那颗不代表任何种族与意识形态的星球上,如果他们没法完成重启全球互联网的任务,无论是月球残骸还是无法统一点火的七千座行星发动机,都意味着人类文明的尽头。</p><p>“派驻东海岸多久没见过月亮了,现在那玩意倒是自己过来啦。”</p><p>耳机里响起瓦考夫斯基上尉的声音。</p><p>“死波兰佬别乌鸦嘴,华沙停在昏线那边几十年了没听你说看腻。”</p><p>“拜托,我自己都不记得华沙长什么样了,海拉,你说呢?”</p><p>马克回头看向后座,趴在特迪·阿曼多博士膝盖上的D-307A型机械犬“Hela/海拉”的液晶屏幕闪了起来,中间的笑脸和右上角的汗滴符号相映成趣。它的多功能平台变成了阿曼多博士的临时塔罗牌桌,他满嘴西班牙语马克听不懂也不想听懂。他身边的卢卡·崔普博士则皱着眉头,望着风雪稍弱后些许放晴的天空出神。李上尉本有不少问题要向这位和他并不处在一个世界的学者求教,可自己现在只能重新把注意力放回平板上的无人机影像。</p><p>崔普博士确实没有和李上尉处在一个世界,因为此时他眼前的并不是沙漠化的东海岸与六月的飞雪,而是晨昏线另一头的群星。地球停转的那年他刚刚从MIT/麻省理工学院拿到博士学位,成为父亲所在的研究所中最年轻的成员。老亨特·崔普博士对此的回应是最后一次家庭旅行,他们的越野车行驶在尚未被涌向两极的海水淹没的公路上,那个曾在2026年抓起AR-15突击步枪朝冲击研究所的暴徒扫射的老学者攥着方向盘,一言不发。当他们经过安克雷奇时卢卡试图谈起“数字生命”的可能性,毕竟亨特·崔普的大名在那个领域未被禁止时人尽皆知。但父亲摇了摇头,让他看一眼车窗外的星星。</p><p>在那被定格的夜空之上,无数星辰仿佛被遗忘的古老王冠。在那永恒的极光织成的帷幔之下,是建设中的安克雷奇行星发动机。那巨大的黑色钢铁轮廓孤独地驻守在世界北方的小小角落。</p><p><em><strong>“你的意思是,在我们选择了这条路以后,我们的荣誉需要为了全人类重新书写。”</strong></em><br><em><strong>“所以,现在我们站在一条起跑线上了,我会做得比你更好。”</strong></em><br><em><strong>“所以现在我得冲在前面,要是我成了,你就下去接着做研究。要是我没成,那我的纪念碑估计顶得上你进所里后发的文章吧。”</strong></em><br><em><strong>“对吧,老爹?”</strong></em></p><p>回答小崔普博士的只有杜勒斯死寂的街道,风沙摇晃着路旁汽车残骸的车门令它不住地拍动车身生锈的骨架,仿佛加勒比海岛殖民地吊在悬崖上的铁笼中,粘着焦油和羽毛的海盗尸体。</p><p><font color='grey'><em><strong>“Dolles SMU,这里Overlord。华盛顿特区一号发动机周边的骚乱目前呈现升级态势,数字生命派叛乱武装与暴民已公开组建数个战斗单位开始进攻杜勒斯国际机场。据线人情报,叛军‘所多玛营’之先头部队已进入杜勒斯,但Stalker并未观察到这一部队调动。保持警惕,尽快完成任务。Falcon1-1与1-2将在5分钟内上线准备提供低空支援,祝好运。”</strong></em></font><br><font color='grey'><em><strong>“杜勒斯先遣队收到。”</strong></em></font></p><p><font color='grey'><em><strong>“这儿哪都不正常。”</strong></em></font></p><p>瓦考夫斯基望着一座仍在燃烧的二层小楼嘟囔道。悍马自动炮塔上的.50机枪流畅地转动起来,如同高草丛中的瞪羚警惕地环顾四周。首都圈的异动已非一日之寒,在这个没法在地下城资格上保证一人一票但基本保证了一人一枪的国家尤甚。“数字生命”计划已经被永久禁止,但那反对“移山”——现在应该叫“流浪地球”计划的91%的民众可不会立马消失,更不用说在地下城资格抽签尚未结束的当下。本已支离破碎的民意掀起暗流,让这片土地从阿拉斯加的永夜雪原到消失的密西西比河口都不得安宁。他和马克·李,以及整个红队都已经是这场秘密内战的老兵,他们的敌人早已不再是在长袍下藏着炸弹的阿拉伯人或者普什图人,而是躲在平平无奇的别墅或地下室中,用精巧而致命的数控机关保护自己的“数字生命军”骇客们。</p><p>他们的意识早就储存在数字生命卡中,在某个无人得知的地方以某台计算机运行着。他们已经在这场战争中把自己的肉体置之度外。</p><p>或者说这也是他们给追随自己的暴民开的空头支票。</p><p>瓦考夫斯基上尉从快拔枪套中抽出G57手枪,其他海豹队员也先后作出了类似的反应。夹在大腿中间的KAC SR-16自动步枪可没法保证车窗一被打碎就能抵在肩膀上,况且他身上正裹着一层防寒作战服和一层轻型外骨骼,本来做了扩大设计的悍马仍显得有些逼仄。区域广播已经要求杜勒斯居民待在家中,任何持枪上街者一出现在无人机或者自动炮塔的遥感视野中就会立马挨一梭子弹。</p><p><em><strong>“Dolles SMU,这里是Stalker,注意你们左前方的教堂,一辆民用载具从教堂后方街道驶出。”</strong></em><br><em><strong>“收到。”</strong></em></p><p>轿车似乎要在车队前横穿主干道,但在路中央停了下来,林肯轿车修长的车身令悍马车队无法通过。一名身着防寒服的男人从驾驶室走下,瘦削的脸印证着他正经受长期营养不良与冻伤的折磨,这与他的座驾格格不入,也招来了车队头车顶上.50机枪和两架无人机的自动瞄准。</p><p>“我的车抛锚了,伙计搭把手吧!”<br>他朝头车喊道,有些虚弱的声音是许久没吃上热菜的后遗症。</p><p><strong>“双手举高!待在原地不动!否则我们会立刻开枪!”</strong></p><p>头车驾驶员戴维中士朝他喊道,马克·李见状把手枪放回并拉开怀中Noveske N4卡宾枪的枪栓。</p><p>“你们听到了吗?我说我的车抛锚了,需要——”</p><p>在与数字生命派叛乱武装多年作战中活下来的DEVGRU成员只会警告一次,戴维中士直接从车窗探出身来,端起步枪往那个男人的小腿扫了一梭子弹。子弹刺穿了男人的身躯也扯开了他小腿的裤管,厚厚的防寒衣物下闪着外骨骼的金属寒光。这原本是UEG作战人员专属的科技造物支撑着男人挺起身子朝车队冲去,只是在他把袖管中滑出的遥控器握在手心前,.50机枪便直接把他撕成了碎片。</p><p><em><strong>“接敌——”</strong></em></p><p>一辆停在主干道右侧的大卡车突然发动,径直朝头车右侧飞撞而来。尽管头车与第二辆车的40mm榴弹发射器迅速调转枪口把整个驾驶室炸成一团铁泥,却没能阻止它以堪比太空电梯的速度将头车撞到教堂旁的街边小屋上。头车里的海豹们还未及时撤出,一发自更前方的视野之外射来的反坦克导弹直接让它化为一团火焰与碎片。四架无人机迅速作出反应,但它们搭载的XR338机枪枪管刚刚开始转动,整个机身便坠落下来,两名上尉手中的平板顿时雪花一片。当李上尉下令全队倒车时,尾车刚发动不久也遭遇了和头车同样的命运,又一辆泥头车从左侧冲上主干道将尾车碾在道路右侧的中餐馆墙上,长长的车身阻断了前后方的道路。余下三辆悍马的自动炮塔飞快运转着试图寻找目标,第一名露头的武装分子很快在道路右侧的购物中心楼顶上被四挺.50一起撕成肉泥——在他把肩上的AT-4射出去之后。</p><p><em><strong>“妈的,彼得博士和德鲁博士死了,进教堂,不然在这都是个死!”</strong></em></p><p>李上尉瞄了一眼平板上四位核心科学家的生命线便把它塞进自己的背心中,指挥剩下的二辆悍马冲过路旁的绿化带直接开到教堂门前。剧烈的颠簸加上爆炸让特迪·阿曼多没收拾好的塔罗牌飞在车厢中,恶魔、塔楼、祭司与皇帝等种种形象如走马灯般在卢卡面前闪过,阿曼多博士口中不住大骂“PUTAPUTAPUTA”的节奏紧跟着头顶上.50机枪的射击声。当这样的颠簸和西班牙语脏话终于结束时,李上尉一脚踹开车门,克里斯·菲茨杰拉德中尉一手持枪指向购物中心楼顶,一手护着两位博士躲在悍马的发动机后。卢卡与特迪一前一后提着重达60磅的550W计算机,咬着牙靠着轮胎蹲下。</p><p>海拉趴在教堂门前,朝门缝中伸出蛇形摄像头,显示屏转过来让李上尉看到了门内挨着长椅或柱子瞄准门口的敌人。他和瓦考夫斯基对视了一眼便完成了任务分配。加尔文分队依托三辆悍马的环形防线阻挡外围的叛军,五月花分队的海豹们折下头盔上的多功能目镜,在马加什·拉斯洛中士引爆自己装在门上的炸药后朝里扔出烟雾弹与震撼弹,照顾着各自的射界依次突入。马克·李凭借轻型外骨骼加持的惊人速度,窜到了第一根承重柱前,先给柱子后的敌人露出的脚来上一枪,第二枪便结果了那摔倒在自己跟前的暴民。</p><p>海拉背上的多功能平台打开,泰瑟枪的电流击倒了两名躲在承重柱后盲射的敌人,他们的头盖骨随即在马克·李的枪口前炸开。跟在他身后的SAW射手爱德华·沙利文中士负责教堂二楼高台上的射界,重型外骨骼支撑着他直接将M250B通用机枪架在肩上,先是将高台上的三名自动步枪手压制而后射穿保护他们的砖石栏杆。五月花分队分作两队沿着两侧的承重柱推进,队尾的队员们不断扔出新的烟雾弹遮蔽着教堂里敌军的视线,海豹们多功能目镜的热成像模式让战斗变成一边倒的屠杀,那些把找来的防寒衣物一股脑往身上裹的武装分子很快被尽数消灭。</p><p>在四处传来的“安全”声和补枪声中,李上尉来到一名垂死敌军的跟前,他肥胖的身躯显然摄入了不少廉价的玉米糖浆饮料与一美元芝士披萨,奇形怪状的脏辫散在自己脖子被击穿后溢出的血泊中,伸出手扯着李上尉的下摆,不断咳出鲜血的嘴艰难地呢喃着“HELP”。</p><p>“喉咙都被打穿了就别想着能要到什么情报了。”李上尉想着,给那纹着一个燃烧球体的额头直接来了一枪。</p><p>“瓦考夫斯基,教堂安全,带着那两个VIP赶紧进来!”</p><p><em><strong>“杜勒斯先遣队汇报,我部已接敌,受困于基督救世主罗马天主教堂,距离目的地1.3英里。已有12人包括两名VIP已经KIA,敌军拥有大量轻武器与反载具武器及反无人机设备,请求立即派遣近距离空中支援并开始派遣后备一队,完毕。”</strong></em><br><em><strong>“Overlord收到,近距离空中支援已就位,后备一队待命中,完毕。”</strong></em><br><em><strong>“Falcon1-1上线。”“Falcon1-2上线。”“准备沿Harry Byrd市内快速路6点至12点方向扫射,注意Danger Close。”</strong></em></p><p>李上尉完成状况汇报后看了看在教堂宣讲台下缩成两团,由克里斯和爱德华两人护着的两位博士,他们都显得有些惊魂未定。阿曼多博士望着教堂中央的耶稣受难像画着十字,而卢卡博士只是呆滞地望着耶稣像脚下溅上鲜血的烛台。自出发以来和爱拌嘴的海豹们不同,两位博士除了其中之一脏话有点多外,好像都没怎么说话。五月花分队指挥官走过去,在他们面前蹲下,抽出保温水壶递了上去。卢卡·崔普博士呆滞了一会,随后一把将其抓来往喉咙猛灌,却被尚有余热的水烫得不住咳嗽。</p><p>“第一次见到这种场面谁都害怕,你算冷静的,你老爹会为你骄傲的。我理解……”<br>“没事——我老爹经常——带我去靶场——”<br>卢卡一边咳嗽一边强作镇定地回答道,只是他发白的嘴唇和把水壶递给特迪时颤抖的手暴露了他的心情。</p><p><em><strong>“我不会给亨特·崔普丢脸,永远不会。”</strong></em><br><em><strong>“这个Chiquito刚进研究所就天天唠叨这句话。”</strong></em><br>特迪·阿曼多博士接过水壶说道,他看起来较卢卡年长不少,可脸色也好不到哪里去。李上尉笑了笑,拍了拍小崔普博士的肩膀:<br><em><strong>“起来吧,我们继续走,你今天还要拯救世界呢。”</strong></em></p><p>“陆军的武装直升机把悍马也弄坏了,剩下的1.3英里只能步行了。”<br>瓦考夫斯基上尉朝他喊道。</p><p>“了解,反正悍马也是跟陆军借来的。对了,你不画个十字么?这里是天主堂。”<br>李上尉回答道。</p><p>瓦考夫斯基上尉看着墙上连壁画和浮雕都难以幸免的涂鸦,墙角散落的针管和一滩滩说不清来源的斑点,再看看李上尉背后被二楼高台上的尸体溅上鲜血的耶稣受难像,只是苦笑着摇了摇头。</p><p><img data-src="/asset/2023/02_action_01.jpg" alt="soldiers on the move"></p><h2 id="II"><a href="#II" class="headerlink" title="II."></a>II.</h2><blockquote><p>“我们不过是战场上的斗士,在这人间炼狱的雨中行军之时,无忧无虑的容貌全遭践踏。”</p><p>——莎士比亚《亨利五世》</p></blockquote><p><img data-src="/asset/2023/02_time_0510.jpg" alt="internet recovery in 310 minutes"></p><p>巴尔的摩/华盛顿瑟古德·马歇尔国际机场早已不再如往日一般接受如织的游人。无论是中央航站楼上指向天空的近防炮与导弹防御系统,还是远处跑道上注视着一架架C-17“全球霸王”运输机起降的一架AC-130空中炮艇,抑或在新建的掠夺者无人机库旁降落的两架AH-64EX“守护神阿帕奇”武装直升机,都在齐心协力地磨灭这里作为民用机场的旧日遗迹。</p><p>第75游骑兵团第一营D连的游骑兵们正四仰八叉地躺在供直升机起降的跑道一边,MC全地形迷彩加上适配的外骨骼虽然提供了不错的保护色,却也让他们在一圈陆军战斗航空旅地勤人员中间格外扎眼。似乎所有人都在合眼享受大战前难得的平静,但只有疯子才想穿着防寒服在机场跑道上睡上几个钟头。本杰明·斯皮尔斯下士已经朝西南方的华盛顿行星发动机看了好一会,不时能听见华盛顿特区方向传来的枪声与爆炸声,周围的直升机起飞时载着意气风发的士兵,归来时却带着伤员或是满满当当的裹尸袋。傻子都知道华盛顿特区周边的事情正越发麻烦——事实上全世界今天都在遭大麻烦,但这些躺在跑道上闭目养神的游骑兵却仿佛与此无关。本杰明把手腕翻过来看了一眼时间,拍了拍靠在自己背上的雷克斯·麦克维尔上士——后者的重型外骨骼上背负的卡尔·古斯塔夫84MM无后坐力炮让被挨着的自己不太舒服。</p><p>“到点了,还没到咱们出发。说好的啊,要是今个能挨过这一遭记得明天你请客。”</p><p>本杰明侧过身来看了看身后人的反应,后者先伸出右手竖了个中指。</p><p>“妈的,老兄你不至于这么抠吧?”<br>雷克斯右手缩了回去,再伸出来时多了一包烟。</p><p>“这才对嘛。”</p><p>本杰明还没来得及把打火机掏出来,雷克斯突然又猛拍了一下他的肩膀,巨大的力道仿佛要拍死一只苍蝇。本杰明转过头去还没来得及开骂,雷克斯便再给他竖了个中指,然后在渐行渐近的MH-60V“胜利者”直升机的螺旋桨声中朝一边指去。</p><p>如果不是他高挺的鼻梁上架着的眼镜和胸前国家网络空间安全和通信集成中心(NCCIC)的工作证,加上岁月在他头发上的白色烙印,人们很难把亨特·崔普博士和他的学术成就联系起来,仿佛有“骑兵队长”之称的保罗·朗之万。他高大的身躯加上腰间临时配发的G57手枪,在套上防寒工作服与外骨骼后很容易融入停机坪上的游骑兵们中间。在他手下工作的新人们一开始总容易被他不怒自威的气质吓到。尤其是当他与大卫·阿曼多博士再次爆发争吵的时候,跟在他们身后的伊兹拉·卡丁和詹森·彼得两位稍年轻些的博士也不打算自讨无趣地插嘴。</p><p>“官大一级压死人是吧,西语佬?我不是跟你说了卢卡那崽子再发疯的时候要拦一拦他?起码说他两句呢?”<br>“你家那崽子啥样你比我清楚,cabrón,我老弟都搭进先遣队了轮得到我来拦他?再说了,所里谁不知道这几个主动请缨的小屁孩家里都有那么一两个没抽中地下城签的?让你没听我的,‘科学的尽头就是神学’,现在要让我拿塔罗牌给你算一卦也来不及喽。”<br>“说得好像你也抽中了一样。算了算了,现在该给这帮小王八羔子擦屁股了……”</p><p><em><strong>“好了女士们都给我起来!”</strong></em></p><p>在外骨骼加持下,迈克·科克伦中尉从地上直接蹦起来的动作稍显滑稽,但他极富号召力的声音直接把这群粘在停机坪上的全地形迷彩色贴纸撕了起来。</p><p><em><strong>“趁着那群鸡奸犯还没掌握制空权,我们要护送后备一队直接在杜勒斯中心上空索降,然后围绕目标构筑防线并派出兵力接应先遣队,一直守到这些Nerdy们把互联网接上,最后咱们明天要么能上黄网要么能上天堂!RANGERS ——”</strong></em></p><p><em><strong>“LEAD THE WAY!!!!!!!”</strong></em></p><p>从MH-60V直升机的舷窗往外看,老崔普博士不仅找不到任何杜勒斯先遣队的痕迹,反而因为长时间站在因气流而颠簸的机舱中而头晕目眩。于是他决定和其他三位博士一起坐下,闭上眼睛回忆自己所见的杜勒斯的景象:“所多玛营”的旗帜在城市西侧飘扬,和那燃烧的地球一起高悬于半空的,是尖木桩上UEG士兵被剥光衣服的冻僵尸体。被喷上万字、狼锁与黑太阳符号的消防车在市区里横冲直撞,巨型水龙头喷出掺杂了巨量大麻粉末的喷雾。偶尔有叛军冲上屋顶,防寒服外套着鲜艳的比基尼,媲美吉尼斯世界纪录的彩虹色长指甲朝直升机编队扣下AR自动步枪甚至是.22猎枪的扳机,但很快便被机载机枪打成肉末。在镇里四处升起火焰,可那浓烟的味道并不是烧轮胎而是烧柴火,更像是在烤某种肉……</p><p>“dixit itaque Dominus clamor Sodomorum et Gomorrae multiplicatus est et peccatum earum adgravatum est nimis…(耶和华说,所多玛和蛾摩拉的罪恶甚重,声闻于我……)”<br>大卫·阿曼多博士在直升机的嘈杂声中默念着《创世纪》古老的文本,亨特·崔普并不知道彼之所言为何。</p><p>“Galaxy-64,两分钟了,准备出发,马上下去,建立LZ。”</p><p>直升机在数据中心上空悬停,一名随机的游骑兵拉开舱门,将自己背心上的挂钩与阿曼多博士的外骨骼相连。与此同时,四架MH-6“小鸟”直升机直接降落在互联网名称与数字地址分配机构杜勒斯中心所在的北弗吉尼亚社区大学的主要建筑上,游骑兵们从其上跳下占据了最近的制高点。</p><p>“两分钟准备……一分钟准备……三十秒准备……出发!”</p><p>“绳索着地。”</p><p>“…si inventi fuerint ibi decem dixit non delebo propter decem.(……他说,为这十个义人的缘故,我也不毁灭那城。)”<br>老阿曼多博士念罢按天主教的顺序捏起无根手指,上下左右画了个十字,回过头来对老崔普博士竖了个拇指,后者点点头作为回应。</p><p>他相信只要他们为之效忠的事业得以存续,人类便不会以他们在杜勒斯看到的景象迎来自己的结局。</p><p>“第一名队员抓住绳索——R——P——G!”</p><p>一枚防空导弹几乎在它的发射器掀开屋顶的作为掩护的太阳能板那一瞬间便射出,飞行员的规避动作保住了大半个机身,但直接把那还没来得及挂上索降绳的游骑兵和老阿曼多博士甩出机舱。亨特下意识地去抓却被安全绳束缚在原地,从机尾处传来的爆炸声和眼前天旋地转的世界,加上飞行员强作镇定的报告声,都在提醒他大事不妙。老崔普博士于是继续闭上眼睛,回忆着自己最后一次双脚离地的感觉,回忆着那场阿拉斯加旅行中妻子带自己在一万英尺的高空看见的极光,那不是茉莉·费雪——啊不,那不是茉莉·崔普第一次带他在天空中看星星……</p><p>“WE ARE GOING DOWN!!!!!!!”</p><p>“他妈的,后备一队情况不妙。”</p><p>此时的先遣队早已被涌入杜勒斯的“所多玛营”从主干道上逼走,穿行在除了海拉谁也不认识方向的小巷中。五月花与加尔文两个分队的剩余人员分成两路纵队,和两边的墙壁保持一定距离走在小巷两侧,不同的枪口警戒着各自的射界,克里斯与爱德华把两名科学家护在整个队伍中间。一架尾桨燃烧,摇晃着坠落的黑鹰直升机引起了警戒上方射界的两位上尉的警惕。随后是第二架机舱被防空导弹直挺挺地命中,在空中爆炸解体。</p><p>分队指挥官们命令队伍停了下来,马克朝瓦考夫斯基问道:<br><em><strong>“我们是继续护送VIP还是前往坠机点?”</strong></em></p><p><font color='grey'><em><strong>“我们的首要任务就是护送先遣队VIP。后备一队的行动资源比我们更多,那是他们的事情。”</strong></em></font></p><p><em><strong>“但现在我们的密码生成器给炸了,单凭一台550W也重启不了互联网。如果坠机者之中有后备一队的VIP和设备……”</strong></em></p><p><font color='blue'><em><strong>“如果是我老爹,他绝不会允许你们更改主要目标。”</strong></em></font></p><p><font color='red'><em><strong>“我跟我那老哥也一样。”</strong></em></font></p><p>和卢卡一起提着550W量子计算机的特迪凑上来说道。</p><p><em><strong>“好的,那我们——”</strong></em></p><p>马克话音未落,海拉的显示屏突然变为红色。他凑上前去调整显示屏的模式,然后看见了显示屏连接的蛇形摄像头所展示的景象:一群“所多玛营”的武装分子堵死了拐角对面的前路,而负责后向警戒的贝齐·克利夫兰与精确射手莱恩·谢菲尔德两位三级军士长带来了更糟的消息:后方拐角后的叛军为数更多。</p><p><em><strong>“下水道,我知道海拉能行。”</strong></em></p><p>正当两个上尉准备开始作战部署,卢卡突然指着自己脚边的井盖开口道。</p><p><em><strong>“因为正是我和老亨特一起把全美城市排水系统导入了部署在美国的D-307A机械犬的云数据中心。”</strong></em></p><p><em><strong>“那还等什么?Overlord,这里是杜勒斯先遣队,目前我们被人数不明的武装分子堵在距离目的地约1300码的别墅区,暂未交火,准备通过下水道接近目的地。”</strong></em><br><font color='blue'><em><strong>“Overlord收到,祝好运。”</strong></em></font><br><font color='blue'><em><strong>“Galaxy-64,这里是Overlord,已观测到你部坠机,约有一个排的敌军步兵向坠机点靠近,已侦测到机上有一名VIP存活,请确认机上VIP状况并及时回报。”</strong></em></font><br><font color='blue'><em><strong>“Galaxy-64,这里是Overlord,已看到你与敌军交火,机上VIP状况如何?”</strong></em></font><br><font color='blue'><em><strong>“Galaxy-64,这里是Overlord……”</strong></em></font><br><font color='red'><em><strong>“什么他妈破烂玩意!”</strong></em></font></p><p>珍妮弗·莱特中尉将因为设备破损只剩下电流音的耳机扔开,狠狠敲下手中MP5冲锋枪的拉机柄,单手将其架在破损的窗口上朝举着电锯冲在残骸前的武装分子扣动扳机,然后朝那具尸体脸上的盖伊·福克斯面具狠啐一口。作为全中队打遍男女的掰手腕冠军,MP5的后坐力对于珍妮弗的右臂而言不值一提。她继续朝挥舞着各种冷兵器朝残骸冲来的暴民扫射,用一整个弹匣的子弹令其他刚刚吸饱了各种毒品的叛军不得不就地寻找掩体。她随后打开折叠枪托将其抵肩,右手卡好拉机柄后抽出新的弹匣装上,再将其复位继续新的射击。</p><p>她断掉的左臂虽然被她手牙并用地缠好了止血带也洒好了止血粉,仍然有不少鲜血正沿着断口外的断骨茬流下。</p><p><font color='red'><em><strong>“崔普博士,醒醒!”</strong></em></font></p><p>她被破损的驾驶舱卡在自己的座位上动弹不得,只能转过头来朝机舱里被安全绳挂好的亨特·崔普喊道,但仍处于昏迷状态的后者已无法作出回应。伊兹拉·卡丁博士身上的安全绳同样完好无损,但他全身的血液早已在脖子上被碎玻璃切开的动脉伤口处流干,而詹森·彼得博士更不幸一些,他的安全绳在坠地时断开,也就是在那时他才被抛出窗外,现在他的一部分正在螺旋桨上挂着。</p><p><font color='purple'><em><strong>“UEG的狗腿子听好了!我知道你们也有不少人没抽中进入地下城的资格!为了这个注定要把你们抛弃的政府买命有什么意义呢?数字军会接纳你们!你们的肉体会在余生中纵享所多玛与蛾摩拉的极乐,你们的精神会在数字生命中永恒!”</strong></em></font><br><font color='red'><em><strong>“我活到现在就是为了趁着还有时间把你们这群强奸犯和妄想症统统杀光!”</strong></em></font><br><font color='purple'><em><strong>“听话,好姑娘,不然我保证不了你今晚是什么下场!”</strong></em></font><br><font color='red'><em><strong>“废话!我今晚就要在下边干翻你们祖宗八辈!”</strong></em></font></p><p>当珍妮弗意识到她已经打光了最后一个弹匣,她只是苦笑着丢开MP5,右手抽出手枪抵在太阳穴上。她好想伸出左手抚摸贴在仪表盘一旁女儿的照片,可尚且能移动的左臂只剩下红黑交杂的模糊血肉与白花花的断骨茬子。仍在流淌的鲜血与一滴清泪落在那张稚嫩的,将会在自己的幸运儿战友抚养下,安全而坚强地在奥斯汀地下城活下去的脸庞之上。</p><p>女儿的面容在逐渐模糊的双眼前难以分辨,但她知道自己的骨肉已代她回家。</p><p><font color='red'><em><strong>“后备二队啊,你们一定要顺利……”</strong></em></font></p><p><em><strong>“Eagle Net,这里是Overlord,后备一队已全员KIA,护送部队已经全面接敌,叛军已经有意识向杜勒斯数据中心集中兵力。同时华盛顿特区周围的暴动与部队叛变局势已进一步升级,各单位均在交战状态,缺乏足够的预备队。现要求你部立即集结所有运力护送后备二队抵达目标点,叛军拥有一定反无人机与大量单兵及少量固定防空火力,运输过程可能出现一定伤亡。目前弗吉尼亚州陆军国民警卫队第29步兵师第116步兵团正从东西两面夹击叛军,可能能够压制叛军一定的防空火力。”</strong></em></p><p><font color='grey'><em><strong>“Eagle Net收到,一小时内我们将抵达杜勒斯。”</strong></em></font></p><p>___“动作快点,所有能挪得动步的都赶紧穿上装备!10分钟内要是停机坪见不着你们的屁股老子把你们全身绑上C4扔给那群鸡奸犯!”___</p><p>___“中尉,你们是留守部队,你们就不需要——”<br><em><strong>“你是怕我没抽到签临场叛变吗?我这有一整个排都没抽到签!但我要让我家里那老头子在下边活得好好的,其他的弟兄就想着穿着军装痛快点死,免得不知道以后哪天给冻死给辐射病折磨死!”</strong></em></p><p><em><strong>“妈的老子豁出去了!今天就算是见到耶和华也要让他认出我是第160特种作战航空团的Night Stalker!”</strong></em></p><p><em><strong>“伙计帮我翻翻我的包,外骨骼套上了没那么方便。对就是那个MARSOC的黑桃魔术贴,老子来这特训不是为了见耶和华的时候跟那帮陆军混在一起!”</strong></em></p><p><font color='red'><em><strong>“赫克托少校,我估摸你们的运力足够给我们四个家伙留个位置,中国人民解放军驻UEG军事参谋团直属紧急任务分队布拉格堡连络小组全体成员请求一同前往!我们中两人来自中国人民武装警察部队,对付这种情况是我们的老本行!”</strong></em></font></p><p><em><strong>“那还不赶紧去把你的外骨骼套上,彭晨涛军士长!等等,先把那顶头盔给老子扔过来!”</strong></em></p><p>无数各种改型的CH-47与UH-60运输直升机的螺旋桨在辽阔的停机坪上掀起海啸般的风浪,第160航空团的持剑人马徽章骄傲地闪耀在铁灰色苍穹下的机身上。包裹在轻重外骨骼下身着不同迷彩防寒作战服的军人们先后冲上直升机,不时有D-307A机械犬与多功能门框机器人冲上直升机与他们为伴。当彭晨涛三级军士长带着自己的三名部下与克里斯蒂安·赫克托少校搭乘的CH-47运输直升机的起落架刚刚离地,一个外骨骼下套着特训期人员迷彩服,连头盔也没戴好的金发姑娘气喘吁吁地跳了上来,她脖子上的红色围巾异常显眼。</p><p><font color='blue'><em><strong>“俄罗斯联邦武装力量驻UEG军事参谋团紧急任务分队特训期成员,</font><font color='grey'>娜塔莉亚·米拉伊洛夫娜·果斯莫杰米扬斯卡娅少尉前来报到!</font><font color='red'>上一次你们美国人没赶上在柏林插旗,这一次你们也别想比俄国人先到杜勒斯!”</strong></em></font><br><img data-src="/asset/2023/02_soldier_01.jpg" alt="soldier"></p><h2 id="III"><a href="#III" class="headerlink" title="III."></a>III.</h2><blockquote><p>“如果你又问:‘那我们的目标是什么?’我想我可以用一个词来回答,那就是‘胜利’,不惜一切代价的胜利,不畏一切恐惧争取最终的胜利,无论这条路有多么漫长和艰难。”</p><p>——温斯顿·丘吉尔于1940年6月18日演讲</p></blockquote><p><img data-src="/asset/2023/02_time_0240.jpg" alt="internet recovery in 160 minutes"><br><img data-src="/asset/2023/02_location_dulles_center.jpg" alt="the internet corporation for assigned names and numbers dulles center"></p><p><em><strong>“班长,你在美国佬面前吹什么牛逼啊?还他妈‘对付这种情况是我们的老本行’,去年咱们在台北发动机旁边处理的那堆杂种要是手里有对面一半的家伙,哥几个怕不是早就去见马克思喽。”</strong></em><br><font color='grey'><em><strong>“老甘你少tm废屁话,懂不懂啷个叫“入乡随俗”?赶紧去给劳资汇报敌情。“</strong></em></font><br><em><strong>“射界内一切正常,周围制高点安全,除了更远处那群杂种的旗子啥都看不到。”</strong></em><br><font color='grey'><em><strong>“那就汇报都是些爪子旗子。”</strong></em></font><br><em><strong>“个板马的,现在又起沙尘暴了,现在杜勒斯西边给他们点着了,热成像模式更看不到。南边主要是一群行为艺术家把俘虏钉在木桩和十字架上充当旗帜。打着燃烧地球的‘所多玛营’旗帜从波托马克小学到新生俄罗斯教堂顶上都能看到,以及,新生俄罗斯教堂顶部的十字架两分钟前被敲掉换成了万字旗。往东边占据蜜糖之地小学的敌人打着万字旗跟狼锁还有黑太阳,东北边近一点的驾校是我们的人。东南边他们没来得及打旗,估计是美国佬的国民警卫队已经打进来了。”</strong></em><br><font color='grey'><em><strong>“妈嘞嘞,这方面他们也比台北那群逼玩意玩的花。”</strong></em></font></p><p>北弗吉尼亚社区大学自然科学馆的楼顶东北侧,四名中国军人已经筑起了自己的临时阵地。东面与北面的围墙除了作为火力点需要凿开的射击口,均由门框机器人所携带的战场临时掩体3D打印设备加固,足以抵挡.50口径以下的子弹射击。甘守城二级上士将CS-LR5狙击步枪的枪口架在一个射击口上,朝自己的的班长彭晨涛汇报着自己所见的敌情。丁然上士则作为观察手协助着他的工作,当然他的工作也不止是观察手——由他和杜岩军士长携带的QJZ-37重机枪架在围墙上,不过这只是最后手段之一,因为一台门框机器人和他们一起部署在科学馆楼顶,“横梁”上的.338口径转轮速射机枪扫视着正北面没有一点掩体的广阔草坪——或者说之前草坪所在的广阔沙地。彭晨涛则与前线指挥官克里斯蒂安·赫克托少校确认着战场情报,然后回过头来顶着横向刮来的尘土与雪花,朝西南方“雷诺楼”楼顶的友军竖了个大拇指,来自美国海军陆战队特种作战司令部的Marine Raider们点点头继续架设自己的固定火力。</p><p><em><strong>“Overlord,这里是Gold Eagle,后备二队两名存活VIP已就位,同时先遣队另外两名VIP已通过下水道进入数据中心,双方设备刚好互补,恢复互联网工作正在开始,随时更新进度,请求Striker单位增援(空中炮艇),完毕。”</strong></em></p><p><font color='grey'><em><strong>“Overlord收到,目前天气状况进一步恶化,我们暂时没法派出Striker,Stalker将于五分钟后下线。祝好运,完毕。”</strong></em></font></p><p><em><strong>“这里是Gold Eagle,所有制高点单位回报情况。”</strong></em><br><font color=blue><em><strong>“Snow Wolf3-1回报,正北方一切安全,完毕。”</strong></em></font><br><font color=orange><em><strong>“Chiron1-1回报,视线内安全,正在通过Chiron1-2的指引攻击Brethour Ct一线的敌军,完毕。”</strong></em></font><br><font color=green><em><strong>“Shaman3-1回报,视线内安全,Potomac View Rd一线未出现敌军,完毕。”</strong></em></font><br><font color=green><em><strong>“Shaman2-1回报,视线内安全,已在西北方向观察到国民警卫队的友军进入主干道,距离约2英里850码,沿途一切安全,完毕。”</strong></em></font></p><p><font color=grey><em><strong>“Overlord收到,保持观察。May Flower指挥官,VIP们状况如何?”</strong></em></font></p><p><font color=blue><em><strong>“May Flower指挥官回报,一切都在正常进行中。”</strong></em></font></p><p>马克·李上尉回复道,看了一眼中央机房中,正紧张地进行各种他所看不懂的运算与设备操作的四位核心科学家。卢卡·崔普与特迪·阿曼多两位博士的防寒服上还挂着不少下水道的秽物,但后备二队的哈德森·约书亚与马修·奥丁博士也顾不上那么多,或许是因为他们在空中看着叛军的行为艺术时就已经把该吐的东西都吐完了。先一步抵达并打开550W进行操作的小崔普博士已经成了这些科学家们的中心,不断给其余三人下达指令解决软件与硬件的问题。在中央机房一言难尽的照明条件下,他瘦削的脸在550W显示器的荧光中闪耀,紧锁的眉头与和缓又能看出一丝被压抑的紧张的语气,在特迪看来像极了年轻时的老崔普博士。</p><p>当然也只有小崔普博士自己知道,他在看见残缺的后备二队抵达时,几乎要冲破自己心中防洪堤的,名为恐惧的滔天大浪。</p><p><font color=purple><em><strong>“亨特·崔普博士,久仰大名,你不知道为了把你从那群刚刚把你剥光的鸡奸犯手里抢过来,我的人差点要跟那些只会用我甚至不知道具体形状的下半身思考的畜生火并。我问那些鸡奸犯和新纳粹的指挥官,‘这人的工作服呢?尤其是能直接检测你的心跳的生命观察设备哪去了?’那帮蠢货居然跟我说和那架黑鹰残骸一起烧了,好可惜啊。原本想看看UEG愿意为你付出几条命,现在他们可是直接把你判为KIA丢掉一边了呢。”</strong></em></font></p><p>当老崔普博士的头罩被摘下,他发现自己正被绑在一张凳子上,身处某个不知名的房间内。全身上下只裹着一条聊胜于无的毯子,寒冷的意义化为无数根刚从木卫二的冰下海洋中取出的钢针,扎穿他身上的每一个细胞直达神经,令他瞬间从坠机的晕眩中清醒过来。无论是眼前审讯者身着去掉标识的UEG工作服,还是三面光秃秃的墙壁,都隔绝着他对杜勒斯镇之堕落景象的记忆。只剩下审讯者背后墙上挂着的,属于“所多玛营”的燃烧地球旗帜提醒着亨特·崔普,自己还没有从这场真实的噩梦中醒来。</p><p><font color=purple><em><strong>“就像他们把我们当成抹布用完即弃那样。”</strong></em></font></p><p>说话者的嘴掩埋在满脸浓密的络腮胡中,亨特看不出他的嘴型,但他的谈吐表现出与将自己弄醒后一路押解于此途中,那两个拖着自己的武装分子完全不一样的气质。这身去掉标识的UEG制服更是暗示着此人背景的非凡。亨特注意到他的姓名条仍然保留着,“DR. ROCKE”的字母老崔普博士一眼就能记住。</p><p><font color=purple><em><strong>“不过你的价值可不小,要不是你的座机停在了杜勒斯数据中心上空,我甚至不知道军方为什么要在杜勒斯镇投入那么多部队,而不是去支撑杜勒斯机场的防御。”</strong></em></font></p><p>这位不知背景的“罗科博士”转过身去,从“所多玛营”的旗帜下扛起一柄大锤。</p><p><font color=purple><em><strong>“所以你现在也得继续发挥价值,告诉我,UEG要在数据中心做什么,在让你疼之前我只问一遍。”</strong></em></font></p><p>亨特·崔普博士轻蔑地笑了笑,许多年前当他在某一天放学后被一群人高马大的“黑果汁”堵在某一条小巷中时,站在他对面的来者同样看上去威压十足,就是居中者眼角的淤青显得有些滑稽。<br>“嘿,书呆子,以后别给茉莉·费雪那个小婊子出头,明白么?”</p><p><em><strong>“我去你妈的。”</strong></em><br><em><strong>那天好像是亨特·崔普人生中第一次骂脏话。</strong></em></p><p><em><strong>“我去你妈的。”</strong></em><br><em><strong>今天估计也不是亨特·崔普人生中最后一次骂脏话。</strong></em></p><p>一记重锤朝他的左膝袭来,就像多年以前打在他脸上的第一拳一样。只是这一次他已经没法再飞起一脚让对手捂着裆部倒在地上。直冲大脑的疼痛感令他几乎瞬间晕厥,可他仍然清醒,仍能感到自己膑骨处传来的疼痛。他下意识地抬起左脚脚板,那里却再也没有知觉。一针肾上腺素早就打进他的体内,放大着他的痛感也清醒着他的神志,让他仿佛又回到了那个被混混们群殴的下午,在他最终被打倒在地奄奄一息之前,他从未放弃抵抗。</p><p><font color=purple><em><strong>“告诉我,UEG到底要在数据中心做什么!”</strong></em></font></p><p><em><strong>“我说我去你妈的!”</strong></em></p><p>他作出了和当年面对混混们最后一次警告时一样的回答,随后第二记重锤砸到他的右膝处。他的牙关几乎咬碎,凸起的青筋仿佛下一秒就要炸开,十个指甲深深地嵌在椅子扶手中,从喉咙中挤出的嘶吼好似一只被围猎的雄狮,塞满了无尽的痛苦和无尽的愤怒的双眼死死瞪着眼前的罗科博士,目眦欲裂。而审问者也意识到自己暴力手段的失败,扔开大锤掐着老崔普博士的喉咙对他嘶嚎起来:</p><p><font color=purple><em><strong>“你告诉我,我们为什么要给UEG和联邦政府那些蹲在夏延山地堡里吃着牛排吹着暖气的政客继续卖命!我父亲停转之后得了辐射病连医院都进不去,最后在自己家后院吞枪自杀!我和母亲、妹妹连一张地下城的门票都抽不到!”</strong></em></font></p><p><font color=purple><em><strong>“明明你也是数字生命领域的权威,明明你也进不去地下城,你给那些把你用完了就抛到一边的官僚和上帝的弃民卖命有什么意义!”</strong></em></font></p><p><em><strong>“我……去……你妈的……”</strong></em></p><p>纵使在肾上腺素的加持下,亨特·崔普的意识也开始在缺氧中涣散。面前罗科博士络腮胡上不输于自己,仿佛下一秒其中血丝就要炸裂开来的双眼变得模糊,幻化成多年前收到自己同样回答后掐着自己脖子的混混。突如其来的一声枪响让那混混惊得从他身上跳起,他咳嗽着大口大口地呼吸仿佛再也无法享受的新鲜空气,看着眼前的混混们惊愕地朝他身后转去,双手高举。“从这里滚开,畜生,否则我将代亨特行使他的正当防卫权。”茉莉·费雪的声音从巷口传来,她手中上了膛的Glock 17手枪指着那些刚才还在耀武扬威的混混。</p><p><font color=purple><em><strong>“算了,既然你这么想做那群衣冠禽兽的耗材,我这就给你一个体面的死法。”</strong></em></font></p><p>罗科博士站起身来,朝在地上喘着粗气,双眼翻白的亨特·崔普啐了一口,吹了个口哨让两名身着白色长袍与只露双眼的尖顶高帽者进入审讯室中。二人扛着一个临时做好的巨大十字架,白色长袍的下摆染着深浅不一,或点或面分布的血迹。他们把亨特从椅子上解开,掀开他身上的毯子,用凿子和大锤将赤身裸体的老崔普博士硬生生地钉在十字架上。然后将其抬出房间沿着一处楼梯拾级而上,沿途无数身着不同衣物,脑子和血管里奔腾着不同毒品的叛军们挥舞手中的武器,疯狂的叫好声淹没了远处的枪炮声。他们把钉着老崔普博士的十字架立在帕克维尔中学的钟楼上,从这里刚好能看见数据中心。</p><p><font color=purple><em><strong>“对了,差点忘了给你介绍个新朋友,道格拉斯·普拉斯基少校,国民警卫队第116步兵团3营指挥官——啊,那是旧时代的称呼了。不过这不要紧,等到他的部队和我们一起攻下杜勒斯中心,我们就知道那群裹着西装的蛆想在那里干什么了……”</strong></em></font></p><p>肾上腺素已无力支撑失血过多的亨特·崔普在风雪交加的钟楼上,对自己脚下弹冠相庆的叛徒们骂出一句话。在他已经无法看得更真切的视线尽头,自西面驶入城市主干道的国民警卫队的M1A2主战坦克,已经朝拱卫着数据中心南面的制高点北弗吉尼亚社区大学高等教育中心开了第一炮。</p><p><font color=green><em><strong>“Shaman2-1回报!西部主干道上的国民警卫队不是友军!重复一遍,西部主干道上的国民警卫队不是友军!他妈的那帮叛徒把坦克开来了!距离我部800码!”</strong></em></font><br><font color=bule><em><strong>“Snow Wolf回报,正在同抵近校区西北侧路德教堂的叛军交火,我部仍能压制敌方火力。”</strong></em></font><br><font color=orange><em><strong>“Chiron1-2回报!敌人已突入驾校中!我部正往斯特灵早教中心收缩兵力,需要预备队增援!”</strong></em></font><br><font color=orange><em><strong>“Chiron1-1收到,已向你部派出预备队。”</strong></em></font></p><p><em><strong>“Overlord,这里是Gold Eagle,国民警卫队第116步兵团3营已叛变,基本可判定杜勒斯西部已完全沦陷,目前我部仍能控制北弗吉尼亚社区大学及其东北面的斯特灵早教中心,正逐步向校区中心收缩防线,我部会死守至最后一人,届时将呼叫断剑。请让后备三队做好准备。”</strong></em></p><p><em><strong>“李上尉,瓦考夫斯基上尉,现在我命令你们从里面把中心大门焊死。如果我们外边的全都死光了,那就由你们这些从耶稣诞生就待在杀戮屋里的海豹们,保卫四位VIP的安全到最后一刻!”</strong></em></p><p>在数据中心门口,由走散归队的游骑兵与160特种航空团搭载来的MARSOC、1st SFOD-D、SFG从叛军那“顺”来的四辆悍马,加上门框机器人在沙包上自动打印出的加强掩体,以及五台门框机器人自己,共同筑起了最后的防线。现在这道防线因为预备队的投入而显得寂静了些许。本杰明·斯皮尔斯下士再一次拉开枪栓检查手中的突击步枪,娜塔莉亚·米拉伊洛夫娜·果斯莫杰米扬斯卡娅少尉把PKP-SP轻机枪在掩体上架好,把红围巾拉上脸贴在枪托上。只剩仿佛浓缩了整个贝加尔湖水的蔚蓝双眼,出神地望着那些投入战场的预备队士兵们的背影。</p><p><em><strong>“娜塔莎,我还有最后一个问题:我说如果,毕竟八成今个咱都得栽在这,如果今个你和一个美国人死在一起是什么感觉?”</strong></em></p><p>本杰明刚刚开口就被趴在他身边的雷克斯踢了一脚,而娜塔莉亚只是笑了笑。</p><p><font color='blue'><em><strong>“我只关心一点,现在地球要完蛋了。而那帮包括我曾曾祖父还没杀光的杂碎在内,就是想把我们所有人一起拖下去。我只在乎,今天我们还要一起把那些人类社会的渣滓一起杀个干净。”</strong></em></font></p><p><font color='blue'><em><strong>“和同志死在一起又是什么感觉呢?”</strong></em></font></p><p>她朝本杰明与雷克斯投来一个灿烂的微笑,然后转过头去忧伤地望着远处新生俄罗斯教堂顶部的万字旗。</p><p><em><strong>第一块月球残骸碎片在那放晴后不动声色地注视着这一切的天空飞过。</strong></em></p><p><font color='grey'><em><strong>“Crossroad,这里是Overlord,包括杜勒斯西侧战斗区在内已有大量国民警卫队加入特区叛军一方。现命令你部第7轰炸机联队第9轰炸机中队紧急起飞至特区上空,届时你部将沿指定坐标进行轰炸,并随时回应Gold Eagle的断箭请求,完毕。”</strong></em></font></p><p>随着那群并非今日第一批却是最为壮烈之一批赴死者的牺牲,第一波月球残骸而非月球自身穿越地月洛希极限,如一场六千五百万年未有的大雨朝地球倾泻。这些在穿越大气层时早已被加热成一个个火球的碎片,它们在刚刚放晴的天空之上突入,撕开这层毫无感情地注视着也掩饰着地球上一切的幕布,遮蔽了晨线一侧的天空后又将其点燃。在那七千座待机的行星发动机和三千座尚未完工者一旁,无数近防炮与近地轨道防御系统朝被点燃的天空倾泻着更多火药造物。燃烧的月球残骸拖着身后长长的尾焰从天而降,机炮炮弹的火舌与防空导弹的轨迹自地面奋不顾身地迎面而上,仿佛两支正在交锋的军队朝各自的阵线冲锋而去。</p><p>在这片人类的军事科技同宇宙的自然造物进行激烈厮杀的天空之下,八名机长和他们的机组成员在德克萨斯州戴斯空军基地的停机坪上奔驰着,他们的目的地是尚未被陨石侵略的八架B-1B“枪骑兵”战略轰炸机。这些六万英尺高空上的死亡骑士昨天才刚刚退役,而原本收到退役通知准备各谋生路的飞行员们也刚刚被再一次集结起来。作为自全球停转以来不断撤裁后全美仅存的战略轰炸机编队之一,第7轰炸机联队第9轰炸机中队将完成人类史上最后一次战略轰炸。</p><p><em><strong>“刚才是那个逼往我披萨上放菠萝的?那点面粉跟酵母你知道我从津贴里边省吃俭用多少个月从黑市上买到的吗?我咒他下巴长得跟那群哈布斯堡猪一样!”</strong></em><br><em><strong>“省省吧,谁没掏钱啊?那菠萝还是邦妮亲手种的,以后想吃也没得啦!”</strong></em><br><em><strong>“44年以来吃那些四等人专供吃了多久了?咱中队最后一天想吃点好的饭吃一半又要给五角大楼使唤了!”</strong></em><br><em><strong>“你要有意见你咋现在还在这?”</strong></em><br><em><strong>“因为等下要么咱能收工回来继续吃,要么能在天上看地球被炸成灰,你不觉得这很爽吗?”</strong></em></p><p>茉莉·崔普中校可没有心情和那些还在回味没吃完的散伙饭的疯子们谈笑风生,尤其是那个意大利裔领队维克特·安杰尔上校,他看到不知为何长在披萨上的菠萝时的神情比看到第一块陨石落地时惊恐一万倍。她的座驾在队尾,和中队里另一个西班牙裔女机长邦妮·埃蒙莎中校击掌后,她便同自己的副驾驶加上两位武器官迅速在座驾中各就各位,调试着机舱里复杂却在无数次重复后闭着眼睛都能摸到的设备。她的手指掠过仪表盘上那张在阿拉斯加拍下的照片,那定格在胶片上安克雷奇行星发动机之上无尽的星河与极光,同如今不断撕裂天空落下的月球残骸格格不入。</p><p><em><strong>“LET’S ROCK’N ROLL!!!!!!!”</strong></em><br><em><strong>“座舱盖合上。”“左侧前后襟翼正常。”“右侧前后襟翼正常。”“武器系统检查,启动HMD面罩。”“6个外挂硬点与3个内置弹舱均装填完毕,投弹设备正常。”“设置并检查热诱弹。”“武器和反制装置反应良好,可以执行任务。”“末速正常,高度正常,底盘正常,没有故障灯号。”</strong></em><br><em><strong>““Superbia上线。”“Avaritia上线。”“Luxuria上线。”“Ira上线。”“Völlerei上线。”“Invidia上线。”“Acedia上线。”“Claudia上线。”</strong></em><br><em><strong>“依次起飞,Superbia起飞顺序为1……Claudia起飞顺序为8。”</strong></em></p><p>八架B-1B“枪骑兵”战略轰炸机在这些尽忠职守的地勤人员的军礼与注视下,仿佛头顶波兰式方帽身骑骏马挺着长枪的骑兵,将手中长枪直指云霄一飞冲天,迎着无数月球残骸落下的方向。</p><p><font color='blue'><em><strong>“Overlord,这里是Superbia,我已成功起飞,两小时内抵达任务区上空,完毕。”</strong></em></font><br><em><strong>“Overlord收到,祝好运。”</strong></em></p><p><img data-src="/asset/2023/02_pilot.jpg" alt="pilot"></p><h2 id="IV"><a href="#IV" class="headerlink" title="IV."></a>IV.</h2><blockquote><p>“再见,太阳系。”</p><p>——全人类</p></blockquote><p><img data-src="/asset/2023/02_time_0080.jpg" alt="internet recovery in 80 minutes"></p><p><em><strong>“Gold Eagle,这里是Overlord,Stalker与Striker单位在上线前被陨石击毁,暂时无法提供空中打击与火力支援任务,目前后备三队处于待命状态。请立即汇报你部情况。”</strong></em><br><font color='blue'><em><strong>“Overlord,目前我部外围防线均被突破,制高点都联系不上了,我已和残部占据目标点正门及楼顶位置死守。RPG,趴下!Overlord,是否仍能听到?”</strong></em></font><br><em><strong>“一切清楚。”</strong></em><br><font color='blue'><em><strong>“Overlord,这里是Gold Eagle,Broken Arrow!!!Broken Arrow!!!Broken Arrow!!!派出后备三队!!!重复一遍,派出后备三队!!!Broken Arrow!!!Broken Arrow!!!Broken Arrow!!!把杜勒斯给我从地图上抹了!!!”</strong></em></font><br><em><strong>“Overlord收到,后备三队已出发,祝好运…”</strong></em></p><p>来自不同军种的残兵现在都撤到了最后的环形防线当中。本杰明从最内侧的快拆背心堆中拿够了弹匣与手榴弹,给科克伦中尉的尸体合上双眼便快速往前线跑去,这些背心的重伤员或牺牲者主人们正横七竖八地躺在一边。娜塔莉亚手中从俄罗斯带来的PKP-SP轻机枪早已打光了弹药,她奋力地从一名海军陆战队特种作战突击团SAW射手的尸体上抱起他至死依旧紧握着的M250B通用机枪继续射击。翻飞的子弹壳一头扎进一位D-Boy的衣领中,他一边骂出声来一边给手中的突击步枪重新上弹。</p><p>赫克托少校完成最后的汇报便在悍马的前轮胎掩护下扔出一枚手榴弹,多功能目镜中是计算好的外骨骼加强下的投掷轨迹,手榴弹在最后一批冲上来的暴民当中爆炸,但这些耗材们也在毒品的加持下完成了耗光五台门框机器人的转管机枪备弹的任务。门框机器人们随即合上自己的精钢“大门”,掩护着脚边加装了M250B轻机枪与40MM榴弹发射器的机械犬们进入战斗位置。但随即防线中的所有人被终于进入最后防线里的两辆M2A5“布雷德利”步兵战车压得抬不起头来,正当雷克斯上士装填好最后一枚古斯塔夫无后坐力炮弹,纳闷着为何叛军没有直接把那辆摧毁了所有西南方制高点的M1A2主战坦克开来时,一块小陨石刚好不偏不倚地在那两辆步兵战车的位置砸出了四分之一个足球场大小的深坑,间接回答了他的疑虑。</p><p>彭晨涛等人占据的自然科学馆是外围防线中支撑到最后的制高点,他们配属的门框机器人的转管机枪的弹药早已耗尽,合上“门”来作为一道坚实的掩体。甘守城打光弹药的狙击步枪堆在重机枪旁边散落一地的弹壳上,而他本人则和丁然加上重机枪一起消失在敌军坦克炸出来的巨大缺口中。杜岩身上的最后一枚手榴弹早就扔了出去,手枪也已空仓挂机,只剩彭晨涛举着手枪从侧后方瞄准倒着一名武装分子尸体的天台门口。</p><p>制高点周围已经是各色旗帜的海洋,更多的暴民略过已不构成威胁的两人朝数据中心冲去,但楼梯间也正传来渐行渐近的脚步声。</p><p><em><strong>“你光荣弹呢?”</strong></em><br><em><strong>“不小心扔了。”</strong></em><br><em><strong>“你这么神经大条一个东西我咋就被你忽悠来了呢?算了,掩护我,我去翻一翻门口躺的那个逼。”</strong></em><br><em><strong>“你看看天上,咱还用得着吗?”</strong></em></p><p>杜岩抬起头,战术目镜已经算好了一块朝楼顶飞来的陨石的轨迹,转红的界面响起警报声。</p><p><em><strong>“想想北边沙地上躺着那群狗日的,被你老子我忽悠来值当不?”</strong></em><br><em><strong>“值。”</strong></em><br><em><strong>“一会到了上边先别急着去见马克思,先数一数咱俩拉了多少垫背的。然后我得带你先把我爷爷辈拜完,从参加过第五次反围剿的那个……”</strong></em></p><p><font color='purple'><em><strong>“UEG的狗腿子听好了!两分钟内放下武器打开数据中心大门!我知道你们也有不少人没抽中进入地下城的资格!为了这个注定要把你们抛弃的政府买命有什么……”</strong></em></font></p><p><font color='red'><em><strong>“我曾曾祖父一百年前一路打到柏林,不是为了让我现在向你们这群新纳粹渣滓投降!”</strong></em></font></p><p>娜塔莉亚回敬道,将手中的M250B伸出掩体在外骨骼支撑下作无依托射击,环形防线里又朝外扔出一批烟雾弹,但烟雾对面的来者也作出了相应的动作,两批烟雾弹在双方阵地间的无人区炸开。</p><p>在国民警卫队第116团3营叛变技术人员的操纵下,三台门框机器人的转管机枪朝几乎打光了全部重火力的最后防线推进,国民警卫队叛军在“所多玛营”麾下从北面赶来的新纳粹与3K党暴民掩护下,在战术目镜和外骨骼的加持中稳步前进。雷克斯上士朝敌军的一台门框射出了最后一枚84MM无后座力炮,随即被来自叛军的流弹打穿了头颅。两台打光了自己所有备弹的机械犬启动了自毁程序,以转管机枪无法跟上的速度冲到它们脚下爆炸。然而,作为国民警卫队叛军之肉盾的新纳粹与3K党还是杀进了阵地中和最后的幸存者们短兵相接。</p><p>肉盾身后同样装备着多功能目镜的叛军们直接朝阵地中扔出一轮手榴弹,目镜中的轨迹同样精准且致命。当娜塔莉亚试图从腰间的弹药包中抓出一个新的弹链袋,她突然从自己的大腿上摸到了鲜红的动脉血。一枚飞过的弹片划破的伤口虽然被肾上腺素暂时麻痹了痛觉,但也宣告了她最后半分钟的生命。她将已经开始发冷的双手伸进红围巾里试图寻找最后一丝温暖,那是她被选入UEG总参紧急任务分队远赴重洋来到这里前,与她那年过半百,同样获得了进入“领航员”号空间站资格的父亲一起接受的来自母亲的赠礼。火红的颜色一如列宁墓前的长明火,照亮昏线那头正处永夜中的俄罗斯。她曾和父母一起许下诺言,要一同见证莫斯科一号行星发动机与长明火交相辉映的景象。</p><p><font color='red'><em><strong>“Гнилой фашистской нечисти…(腐朽的法西斯妖孽……)”</strong></em></font></p><p><em><strong>她模仿着母亲的歌喉轻轻唱道,从背心上摸出两个手榴弹,挨个拉开保险攥在手中。</strong></em></p><p><font color='red'><em><strong>“Загоним пулю в лоб…(当心你们的脑袋……)”</strong></em></font></p><p><em><strong>娜塔莉亚·米拉伊洛夫娜·果斯莫杰米扬斯卡娅少尉从掩体后一跃而起,冷峻而决绝的视线对上一个挥舞着万字旗冲在最前方的新纳粹。</strong></em></p><p><font color='red'><em><strong>“Отродью человечества(为人类社会的渣滓,)”</strong></em></font><br><font color='red'><em><strong>“сколотим крепкий гроб!(准备好棺材!)”</strong></em></font></p><p>当本杰明·斯皮尔斯确认了自己的存活,他首先反应过来的是吸进肺部的寒冷空气。他的防寒作战服肯定破了个口子,沉重的四肢尚有感觉,但不知是来自失血还是破损的外骨骼。而当这位自太空电梯被破坏那年便开始服役的游骑兵试图抓起面前的Noveske N4卡宾枪,他伸出的右手理所当然地被一个满脸万字、狼锁与黑太阳纹身的暴民踩在地上。叛军已经摧毁了挡在互联网名称与数字地址分配机构杜勒斯中心门前的最后一道防线,一发和本杰明那早早离世的祖父同龄的AT-4在他身前的悍马引擎盖上炸开。现在周遭响起的零星的枪声,是那些杀戮者们在给和本杰明一样奄奄一息的幸存者们补枪,克里斯蒂安·赫克托少校还没来得及抽出手枪,他的头颅便在一名暴民枪口下炸开。</p><p>当本杰明·斯皮尔斯确认了自己的存活,他首先反应过来的是吸进肺部的寒冷空气。他的防寒作战服肯定破了个口子,沉重的四肢尚有感觉,但不知是来自失血还是破损的外骨骼。而当这位自太空电梯被破坏那年便开始服役的游骑兵试图抓起面前的Noveske N4卡宾枪,他伸出的右手理所当然地被一个满脸万字、狼锁与黑太阳纹身的暴民踩在地上。叛军已经摧毁了挡在互联网名称与数字地址分配机构杜勒斯中心门前的最后一道防线,一发和本杰明那早早离世的祖父同龄的AT-4在他身前的悍马引擎盖上炸开。现在周遭响起的零星的枪声,是那些杀戮者们在给和本杰明一样奄奄一息的幸存者们补枪,克里斯蒂安·赫克托少校还没来得及抽出手枪,他的头颅便在一名暴民枪口下炸开。</p><p><em><strong>“给我一个为那些躲进地下的蜥蜴人买命的理由,阿兵哥。”</strong></em></p><p>和那声音一起引起他注意的还有那人伸到自己面罩上的枪口,身边开始在数据中心大门上安装炸药的“所多玛营”武装分子,以及更远的天空中不时撕开那层不再蔚蓝的幕布的月球残骸。在这片记载着阿波罗11号那英雄的轨迹的天空下,寒风中飘扬的星条旗正熊熊燃烧。</p><p>本杰明·斯皮尔斯突然想起来上一次他见到这番景象是什么时候——那时因为内华达州停在晨线外的缘故,从父亲的病房那结上一层厚厚冰霜的窗户向外看,已经无法望见因距离的遥远而小了很多的月亮。军队难得的假期对他而言便和弥留之际的父亲等同,那时他回到里诺市那家挤满了辐射病人的小小医院,站在至少能保证不断供暖气的病房里,右手插在军大衣衣兜里无助地攥着手机,手机上刚刚发来与他无关的第三十五次地下城抽签结果。他望着躺在轮椅上堆成山的毯子里的父亲不知该如何开口,后者却先笑了笑。</p><p><font color='red'><em><strong>“别比我先走,不然到时没人记得先给我穿上那件老伙计。”</strong></em></font></p><p>那位曾参与拉斯维加斯地下城建设的工人指着衣架上泛黄的工作服说道。</p><p>窗外是本杰明一路上熟悉得不得了的枪声,警笛声,以及带着西海岸口音的叫骂声。医院门口的星条旗被一个赤裸着针眼遍布的上身,纹着燃烧地球的变性人点燃并用力挥舞。谁也不知道那个生物磕的药能让此人在停转期的温度下发疯多久,但本杰明知道,那燃烧的星条旗正在这晨昏线附近永恒的黄昏中解体,崩坏,直到再也没有人记得它原本的颜色与意义。</p><p><em><strong>“说话啊,阿兵哥,该不会你也是个进不去的可怜虫吧?”</strong></em></p><p>那个拿手枪指着他的武装分子带着戏谑的口吻喊道,仿佛苏丹宫廷里遭阉割的弄臣,引来周遭其他叛军的一阵笑声。但本杰明自然顾不上这些,他的耳机里是后备三队即将抵达杜勒斯以及“断箭”已经得到响应的讯息。今天无论是和先遣队一同出发的DEVGRU红队,还是他与他的游骑兵战友,加上后来160特航团送来的各个军种的志愿者,以及中国人和俄国人,都至少肃清了半座城市的叛徒。他记得这些装满了各种他所叫不上来的致幻剂和毒品的头盖骨在自己的瞄准镜中飞起来的模样,似乎够本了。但对于大门内争分夺秒重启互联网的科学家们而言他还可以做得更多。</p><p>本杰明·斯皮尔斯左手抓住抵在自己脑门上的手枪套筒,右手拽开背心上手榴弹的保险,拽过身上之人的衣领用尽外骨骼的最后一点电源将其压在身下。</p><p><font color='red'><em><strong>“为了让我家里那老东西死得有点意义。”</strong></em></font></p><p>从身下之人惊恐的眼中,本杰明看到那划过天际的陨石,以及A-10C“雷电II”攻击机熟悉的轮廓。</p><p><font color='blue'><em><strong>“Overlord,这里是Superbia,已抵达指定位置上空。已经和Arclight指挥官及Wizard指挥官连线,护航编队已形成。”</strong></em></font><br><em><strong>“收到,已将轰炸区坐标和相应导航传输至你部全体成员目镜,对Gold Eagle的断箭任务中断,已有新单位代为执行。注意轰炸位置有大量敌军无人机起飞,其代码无法识别,推测为一月前叛逃后失踪的‘鸵鸟’无人机中队。现将新单位之频道编入作战频道以便联络。”</strong></em></p><p><em><strong>“Mustang指挥官上线。”“Yankee4-5上线。”“Hitman2-1上线。”</strong></em></p><p>茉莉·崔普早已做好了在无护航条件下赴死的准备,但由8架F-15EX“鹰”式战斗机和4架F-22A“猛禽”式战斗机组成的护航编队直接给她打了一针定心丸。不久,她错愕的眼神盯着雷达上出现的12架A-10C“雷电II”攻击机,加上飞在它们编队前作为领队的两架老旧E/A-18G电子攻击机。而公频上也很快响起中队里鲁伯特·辛普森中校的惊呼:</p><p><em><strong>“Yankee4-5,你个婊子养的东西那么多人死就你还没死啊?”</strong></em><br><em><strong>“谢君吉言,Avaritia,等你死的时候我会请一群加纳人把你扛起来吹拉弹唱的。”</strong></em><br><em><strong>“就你这个电子战教官拿着的那点破薪水你请得起谁啊?海军的航母都拆完了,你们是怎么把咆哮者拉出来的!”</strong></em><br><em><strong>“你来这难道是为了拿退休金的吗?相信我,这两架咆哮者可是海军刚刚从坟场里拉出来的!也就我们这些老骨头敢开这玩意上天了!”</strong></em></p><p><em><strong>“Superbia,这里是Overlord,检测到有新的空中友军加入你方编队,已将其频道统一编入作战频道。”</strong></em><br><em><strong>“看看是哪些被无人机挤下岗的家伙来了!”</strong></em><br><em><strong>“SEAD训练都停多久了,你还会打反辐射弹么!</strong></em><br><em><strong>“我打不出来的话,你就等着吃防空导弹吧!”</strong></em></p><p>24架F-35C与12架F-35B的标识出现在雷达上,互相熟识的飞行员们的叫骂声瞬间将公频塞满。新加入作战编队的来者来自刚刚解散不久的海军舰载机部队与海军陆战队航空联队,与一早出发的B-1B编队一样,从一个旧时代飞入一个仿佛不再需要它们的新时代。各种型号战机那银白色的机身早已淹没在被点燃的黑色天空中,不时有战机被来自更高天空的陨石击落,但这支银白色的军队仍在前行,仍在编队,仍在作战。当人类将自己的家园改造为飞船,载着让文明永续的梦想以宇宙为天空驶向更为遥远的彼岸,这些无法飞出大气层的昔日骑士们显得如此渺小、脆弱而无用。但现在,当宇宙第一次将自己的险恶向人类全盘托出,退役的骑士们却重新跨上自己被嘲讽为过时的座驾,在这以往战场指挥官绝对禁止行动的空域之中完成最后一次起飞,最后一次编队,最后一次战斗。</p><p><em><strong>“牛仔们,看到那群把咱们的活抢了的无人机吗?咱们没赶上2044在加蓬的那场仗,风头最后都被中国人和俄国人抢去了,现在机会来了!让那帮还在钻研无人机的Nerdy跟UEG联合空军的高玩们好好看看!”</strong></em><br><em><strong>“各Wizard单位继续护航任务,其余所有非轰炸任务单位,随Arclight单位组成战斗编队迎击叛军UAV!”</strong></em></p><p>战斗机群与轰炸机中队只一瞬间便完成分离,前者如一柄弯刀朝下方的UAV机群狠命斩下,又如巨人弯下自己年迈却刚劲的腰,托举起后者安稳前行的路。</p><p><em><strong>“我会解决左边的UAV,右边交给你。”</strong></em><br><em><strong>“牛仔们!我们是2500年以内最后一代战斗机飞行员!很高兴最后与你们一起飞行!”</strong></em></p><p>一架坠毁的无人机残骸落在帕克维尔中学的操场上,与早些时候坠落又经烧毁的黑鹰为伴。不久,更多无人机残骸伴随着陨石一同从高空落下,剧烈的震动让弥留之际的亨特·崔普博士恢复了不少神志,他比谁都清楚这样的回光返照的状态。他看着自己脚下同罗科博士爆发争吵的叛军军官道格拉斯·普拉斯基,看着天空中不断落下陨石与炸弹,让新生俄罗斯教堂被万字旗玷污的穹顶化为烈焰,让看得出自己正横在轰炸路线上的叛军四散而逃,仿佛耶和华已然降下天火洗涤所多玛与蛾摩拉的一切罪恶。</p><p>钉在十字架上的博士笑出了声,他在一片爆炸声与惨叫声中肆无忌惮地大笑着,他认出了云层上属于最终进场的B-1B战略轰炸机编队的轮廓,他知道自己爱人的座驾必然位列其中。老崔普博士回忆起那场阿拉斯加之旅,军队里难得的假期令茉莉也能抽出身开着滑翔机先行一步,老友大卫·阿曼多博士家的私人机场为他们敞开。茉莉带着他从一万英尺的高空中探寻极光的模样,再以一个有惊无险的俯冲令他体验失重的刺激。他那时也像这样大笑着,任凭极地寒冷的空气灌满自己每一处肺泡。</p><p>就像当行星发动机还没拔地而起时,他们在茉莉家的麦田上空,那没有陨石滑过的天空做过的那样。</p><p>剧烈的爆炸就连地表之下的数据中心都没能幸免,就连居于中央机房的小崔普博士都打了个踉跄,隔音的房间化为死寂的囚笼考验着他的神经。他有些不安地看了守在机房门口的克里斯·菲茨杰拉德中尉一眼,后者把守着自己的射界没有对他作出任何回应。赶在那些临时飞来的A-10C攻击机对守军的“断箭”作出响应前,一部分国民警卫队与暴民抢着挤进了被炸开的大门,晚一些的人都被30MM机炮的贫铀弹头撕成了肉渣。然而他们也很快对上了“自耶稣诞生便待在杀戮屋”中的红队成员们。利用外围部队阻击的宝贵时间,海豹们把每一处走廊,每一个房间甚至每一张办公桌都变成了战场。坐镇中央监控室的瓦考夫斯基上尉不断给一线作战人员下达指令,单向透明的战场信息抵消了海豹们的人数劣势。</p><p>可一双眼睛总没法盯紧所有的监控,一个监控系统也总有遗漏之处。</p><p><em><strong>“好了,现在就剩最后一组密码!哈德森,马修,接下来由两位老师负责输入。特迪,你来负责核对。我现在去协助一下菲茨杰拉德中尉。”</strong></em><br><em><strong>“我来核对?”</strong></em><br><em><strong>“阿曼多,咱们这谁在靶场待得最久大家都知道。”</strong></em></p><p>卢卡·崔普话音刚落,几声明显经消音器处理的枪响从克里斯·菲茨杰拉德中尉头顶上的空调管道中响起,手枪子弹打进中尉后背的防弹插板,冲击力让他倒在地上。紧接着,空调管道的网口从里面推开,跳下来一个为了在其中爬行而脱去外骨骼的国民警卫队叛军。他还没来得及给克里斯补枪,手枪套筒便被中尉伸出左手抓住,中尉右手随即抽出自己的手枪让来者的胸部与额头多出三个弹孔。但从房门外突然传来枪声,中尉只得拿起步枪朝门外作压制射击。卢卡反应过来抬手朝纵贯机房的空调管道从右往左射击,几声惨叫后从另一端的网口又跳下来一个叛军,手中瞄准卢卡的消音手枪突然卡壳。而当卢卡信心满满地扣下扳机时,自己的手枪也突然空仓挂机。</p><p><em><strong>“不是吧,非得是这种时候!”</strong></em><br>卢卡心中暗骂,随后丢开手枪朝那叛军扑过去。</p><p><em><strong>“你们三个继续工作,别管我!”</strong></em></p><p>两人扭打在一起,但卢卡很快认识到靶场经验不等于打架经验。很快他就被叛军压在身下,远处压制着门外敌人的克里斯根本帮不上忙。叛军完成了自己的手枪排障抵在卢卡心脏处,而卢卡则按照父亲教过的那样死死抓住手枪套筒。但叛军左手很快飞向卢卡的眼珠,而卢卡也伸出右手将来者的手腕抓住。</p><p><font color='purple'><em><strong>“你知道你在干什么吗?从耶稣诞生到今天都他妈才2058年,而你却要为一个耗时2500年的计划卖命?认清现实吧!我们都会死,没有人能看见所谓的新世界。只有数字生命才是唯一能让我们都活下去的选择!”</strong></em></font></p><p>叛军朝小崔普博士大骂不止,手指朝他的眼珠一英寸一英寸地推进。</p><p><em><strong>“去你妈的,你都在发什么疯?我只知道我不想在想亲我老婆时,嘴里要塞一个硬盘!”</strong></em></p><p><font color='purple'><em><strong>“那就一起去死——”</strong></em></font></p><p>两声枪响让那叛军的嘴彻底封上,第三声枪响让那叛军的头颅在小崔普博士面前炸开。一名身着标准UEG制服的军人在确认了屋内状况后朝门外用汉语喊着“安全”,白色的嘉禾与太阳系图案在蓝底的魔术贴上交辉,其下五星红旗的魔术贴在机房冰冷的光线中闪耀。在他身后的门口处一名同样贴着UEG与中国国旗魔术贴的军人在为菲茨杰拉德中尉包扎伤口,他身边站着拿着手枪却没有机会发射的特迪·阿曼多博士,而在更远处的550W安放的位置上,哈德森·约书亚与马修·奥丁博士紧紧相拥,老泪纵横。</p><p><em><strong>“我们成功了吗?”</strong></em><br>小崔普博士问道。</p><p><em><strong>“100%”</strong></em></p><p>特迪·阿曼多博士回答道</p><p>世界在卢卡·崔普博士的眼中安静了下来,他试图站起来却因一阵瘫软而倒在地上,约书亚博士与奥丁博士一同将他扶起。他朝两位临时受自己指挥的前辈喊,自己能走。可他听不见自己喊出来的声音,也感觉不到自己的脚。他拯救了地球,或者说带领杜勒斯分部率先完成了拯救地球任务的三分之一。他想笑,想哭,可他僵硬了一天的脸已经无力作出任何表情。直到那拯救了他的高大军人立在自己身前,朝在场的四位科学家敬了个军礼。</p><p><em><strong>“UEG-CN/中国人民解放军驻地球联合政府军事参谋团直属紧急任务分队指挥官,宋新阳少校。目前外围敌人均已净空,但北京分队的进度仍停在97%。现在——”</strong></em></p><p><em><strong>“我相信你们,你就是个好样本。”</strong></em></p><p>被搀扶着的卢卡虚弱地回答道,朝这位在最后关头救了自己一命的中国人挤出一个微笑。</p><p><em><strong>“现在我只想去地上看看。”</strong></em></p><p>他们一路经过留下不少战斗痕迹的走廊,房间与办公桌,叛军与暴民的尸体在那些躺在地上的人们中占据了大部。海拉的残骸在角落里冒着烟,左手绑上三角巾的马克·李上尉抚摸着它屏幕上定格的X默不作声地陪伴在一旁。他说,当他和五月花的残部被压制在一个会议室里,这条机械犬在打光了自己的泰瑟枪储电后,扑上了一个经它计算来不及扔回去的手榴弹。和四位核心科学家一起进入地底的红队成员低着头为他们让开道路,在回到地面的路上,不少参与了最后战斗的UEG-KPF与紧急任务分队成员们向他们致意,却没有人展露笑颜,没有鲜花或是掌声,卢卡甚至能在后备三队成员的脸上捕捉到些许刻意隐瞒的悲伤。</p><p>今天牺牲了太多的人,但他要亲眼验证这样的牺牲是否值得。</p><p>他要亲眼验证,卢卡·崔普没有让亨特·崔普失望。</p><p><font color='blue'><em><strong>“放下来,轻轻地放下来。”</strong></em></font><br><font color='green'><em><strong>“他抽到地下城的签了吗?要是没有,等我们都下去以后,再过上几百年,差不多就跟从耶稣降临到现在那么久吧,会有人给他在地下城修个纪念碑吗?”</strong></em></font><br><font color='blue'><em><strong>“好了,米哈伊尔·米哈伊诺维奇,占地十平方米的纪念碑可比不上十平方米的小屋,起码能再塞一个人进去……”</strong></em></font><br><font color='green'><em><strong>“你信教吗?安德烈·迪米特里耶维奇?”</strong></em></font><br><font color='blue'><em><strong>“我是天主教徒,但我觉得现在为十字从哪边开始画而争论没什么意义。”</strong></em></font><br><font color='blue'><em><strong>“抬下来吧,兄弟们,抬他下来吧,抬走。”</strong></em></font><br><font color='green'><em><strong>“去哪里?抬到哪里去?”</strong></em></font><br><font color='blue'><em><strong>“抬着吧,抬着吧……”</strong></em></font></p><p><em><strong>亨特·崔普博士的尸体被四名UEG-PKF部队的士兵从钟楼的十字架上取下,放进裹尸带中由同样的四名军人抬着。与这个小组同行的机械犬试图帮忙,但四名脸色灰暗的军人只是一言不发地抬着这具尸体,直到大地上一阵剧烈的颤动令他们突然神志清醒,抬起头直视着东方华盛顿一号行星发动机耀眼的,直冲云天的蓝色射流。北京分遣队在最后关头完成了他们的任务。在更东北方的巴尔的摩、费城与纽约的行星发动机同时响应。它们如同擎天的蓝色巨柱撑起在燃烧中行将倒塌的天空,将仍砸向地面的月球残骸化为齑粉。七千座行星发动机同时点火,同时作用,正如人类在这一天同时经历的那样,同时推动着这成为飞船的家园寻找新的故乡。</strong></em></p><p><font color='blue'><em><strong>“Adiós, el sistema solar.”</strong></em></font><br><font color='blue'><em><strong>“Goodbye, solar system.”</strong></em></font><br><font color='blue'><em><strong>“বিদায়, সৌরজগত।.”</strong></em></font><br><font color='blue'><em><strong>“अलविदा, सौरमंडल.”</strong></em></font><br><font color='blue'><em><strong>“Adeus, sistema solar.”</strong></em></font><br><font color='blue'><em><strong>“До свидания, солнечная система.”</strong></em></font><br><font color='blue'><em><strong>“さようなら、太陽系。”</strong></em></font><br><font color='blue'><em><strong>“さようなら、太陽系。”</strong></em></font><br><font color='blue'><em><strong>“Au revoir, système solaire.”</strong></em></font></p><p><em><strong>……</strong></em></p><p><em><strong>“再见,太阳系。”</strong></em></p><p><em><strong>搜寻SnowWolf-3一行人遗骸与遗物无果的宋新阳,关掉平板上迟迟不敢下笔签字的人员失踪报告,转头望着行星发动机的巨大射流,和杜勒斯地表上安然无恙的人们一同低语。</strong></em></p><p><img data-src="/asset/2023/02_earth.jpg" alt="earth"></p><hr><h2 id="附录"><a href="#附录" class="headerlink" title="附录"></a>附录</h2><h3 id="登场人员"><a href="#登场人员" class="headerlink" title="登场人员"></a>登场人员</h3><p><strong>I.</strong></p><p>扬·瓦考夫斯基/Jan Wakalwski<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Calvin/加尔文”分队 海军上尉</p><p>马克·李/Mark Lee<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Mayflower/五月花”分队 海军上尉</p><p>特迪·阿曼多/ Teddy Armando<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士</p><p>卢卡·崔普/Luca Tripp<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士</p><p>路易·彼得/ Louie Peter<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士<br>KIA</p><p>阿尔比·德鲁/ Albie Drew<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士<br>KIA<br><br>亨特·崔普/ Hunter Tripp<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士<br>KIA</p><p>Overlord<br>美军战场指挥官</p><p>Stalker<br>美军战场信息侦查与预警系统</p><p>Falcon1-1 Falcon1-2<br>AH-64EX“守护神阿帕奇”武装直升机飞行员</p><p>戴维·巴格拉基昂/David Bagration<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Mayflower/五月花”分队 海军三级军士长<br>KIA</p><p>克里斯·菲茨杰拉德/Chris Fitzgerald<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Mayflower/五月花”分队 海军中尉</p><p>马加什·拉斯洛/Matyas Laszlo<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Mayflower/五月花”分队 海军上士</p><p>爱德华·沙利文/Edward Sullivan<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Mayflower/五月花”分队 海军中士</p><p><strong>II.</strong></p><p>本杰明·斯皮尔斯/ Benjamin Spears<br>第75游骑兵团第一营D连 陆军下士<br>KIA</p><p>雷克斯·麦克维尔/ Rex Mcville<br>第75游骑兵团第一营D连 陆军上士<br>KIA</p><p>大卫·阿曼多/David Armando<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士<br>KIA</p><p>伊兹拉·卡丁/ Ezra Kadyn<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士<br>KIA</p><p>詹森·彼得/Jensen Peter<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士<br>KIA</p><p>迈克·科克伦/Mike Cochran<br>第75游骑兵团第一营D连 陆军中尉<br>KIA</p><p>茉莉·崔普/Molly Tripp/Claudia<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>贝齐·克利夫兰/Betsy Cleveland<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Mayflower/五月花”分队 海军三级军士长</p><p>莱恩·谢菲尔德/Lion Shepherd<br>美国海军特种作战开发团第4战术开发与评估中队“Red/红队”-“Calvin/加尔文”分队 海军三级军士长</p><p>珍妮弗·莱特/Jennifer Wright/ Galaxy-64<br>MH-60V“胜利者”直升机飞行员 陆军中尉<br>KIA</p><p>Eagle Net<br>布拉格堡基地通讯主官</p><p>克里斯蒂安·赫克托/Christian Hector/Gold Eagle<br>美国陆军第160特种作战航空团 陆军少校<br>KIA</p><p>彭晨涛/Snow Wolf<br>UEG-CN/中国人民解放军驻UEG军事参谋团直属紧急任务分队布拉格堡连络小组长<br>中央军委联合参谋部情报局直属特种侦查大队一中队“雪狼”三班长 武警三级军士长<br>KIA<br></p><p>杜岩<br>UEG-CN/中国人民解放军驻UEG军事参谋团直属紧急任务分队布拉格堡连络小组<br>中央军委联合参谋部情报局直属特种侦查大队一中队“雪狼”三班队员 武警一级上士<br>KIA</p><p>甘守城<br>UEG-CN/中国人民解放军驻UEG军事参谋团直属紧急任务分队布拉格堡连络小组<br>中央军委联合参谋部情报局直属特种侦查大队一中队“雪狼”三班队员 陆军二级上士<br>KIA</p><p>丁然<br>UEG-CN/中国人民解放军驻UEG军事参谋团直属紧急任务分队布拉格堡连络小组<br>中央军委联合参谋部情报局直属特种侦查大队一中队“雪狼”三班队员 陆军二级上士<br>KIA</p><p>娜塔莉亚·米拉伊洛夫娜·果斯莫杰米扬斯卡娅/Наталья Михайловна Госмодемьянская<br>俄罗斯联邦武装力量驻UEG军事参谋团紧急任务分队特训期成员 海军少尉<br>KIA</p><p><strong>III.</strong></p><p>Chiron1-1 Chiron1-2<br>美国陆军第1特种部队D作战分遣队(三角洲)A中队及B中队指挥官<br>KIA</p><p>Shaman3-1 Shaman2-1<br>第75游骑兵团第一营D连3排及4排指挥官<br>KIA</p><p>Striker<br>AC-130空中炮艇<br>KIA</p><p>哈德森·约书亚/ Hudson Joshua<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士</p><p>马修·奥丁/ Matthew Odin<br>美国国家网络空间安全和通信集成中心(NCCIC)在职研究员 博士</p><p>Crossroad<br>戴斯空军基地通讯主官</p><p>维克特·安杰尔/Victer Angel/Superbia<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 中队指挥官 空军上校</p><p>鲁伯特·辛普森/Rupert Sampson/Avaritia<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>尤利乌斯·肯尼迪/Julius Kennedy/Luxuria<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>邦妮·埃蒙莎/Bonnie Hermosa/Ira<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>黑尔默·舒尔茨/Heimo Scholz/Völlerei<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>埃弗斯·墨菲/Ives Murpfy/Invidia<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>诺亚·昆顿/Noel Quintion/Acedia<br>空军全球打击中心第7轰炸机联队第9轰炸机中队机长 空军中校</p><p>随第160特种航空团赴杜勒斯志愿者来自单位:<br>美国海军陆战队特种作战司令部/MARSOC<br>美国陆军第1特种部队D作战分遣队/1st SFOD-D<br>美国陆军特种部队/SFG<br>KIA</p><p><strong>IV.</strong></p><p>Arclight<br>UEG护航编队F-15EX“鹰”式战斗机编队指挥官</p><p>Wizard<br>UEG护航编队F-22A“猛禽”式战斗机机编队指挥官</p><p>Yankee4-5<br>临时起飞者 EA-18G咆哮者电子作战机 前美国海军航空兵</p><p>Hitman2-1<br>临时起飞者 A-10C“雷电II”攻击机 前美国陆军航空兵</p><p>宋新阳<br>UEG-CN/中国人民解放军驻地球联合政府军事参谋团直属紧急任务分队指挥官<br>中央军委联合参谋部情报局直属特种侦查大队一中队“雪狼”中队长 海军少校</p><p>米哈伊尔·米哈伊诺维奇·福尔曼/Михаил Михайнович Форман<br>UEG-RU/俄罗斯联邦武装力量驻地球联合政府军事参谋团直属紧急任务分队成员 海军少尉</p><p>安德烈·迪米特里耶维奇·拉夫岑科/Андрій Дмитрович Лавченко<br>UEG-PKF乌克兰籍队员 陆军少尉</p><h3 id="最初的脑洞和作者"><a href="#最初的脑洞和作者" class="headerlink" title="最初的脑洞和作者"></a>最初的脑洞和作者</h3><p><img data-src="/asset/2023/02_brain_hole_01.jpg" alt="脑洞1"><br><img data-src="/asset/2023/02_brain_hole_02.jpg" alt="脑洞2"><br><img data-src="/asset/2023/02_author.jpg" alt="作者"></p>]]></content>
<summary type="html"><p>微博上看到的一篇<code>流浪地球</code>的<a href="https://weibo.com/ttarticle/p/show?id=2309404865409169096992">同人</a>:</p>
<blockquote>
<p>关于为什么杜勒斯这个唯一的地上基站填进去四队人死了一半在阿美丽卡独特国情下很难不让人怀疑是不是打成了黑鹰坠落这件事*</p>
</blockquote></summary>
<category term="Novel" scheme="https://whitecodes.github.io/tags/Novel/"/>
<category term="Piracy" scheme="https://whitecodes.github.io/tags/Piracy/"/>
</entry>
<entry>
<title>Sony 手机使用</title>
<link href="https://whitecodes.github.io/2022/08/flash-sony-phone/"/>
<id>https://whitecodes.github.io/2022/08/flash-sony-phone/</id>
<published>2022-08-08T15:38:18.000Z</published>
<updated>2025-01-07T01:54:48.776Z</updated>
<content type="html"><![CDATA[<p>之前买了红米K40s,解锁后没有合适的ROM,<code>MIUI</code>系列的用不习惯,<code>Android 12 GSI</code>因为圆角不喜欢。所以后来就买了二手的<code>Sony Xperia 1 II</code>。本来想买<code>Sony Xperia 5 II</code>的,但是看到有价格不错的<code>1 II</code>就直接买了。用下来还行。</p><p>拿到手是<code>Android 12</code>,刷回了<code>Android 11</code>,解锁<code>root</code>,停用了自带的一堆应用,用起来还行。</p><span id="more"></span><h2 id="解锁"><a href="#解锁" class="headerlink" title="解锁"></a>解锁</h2><p><code>Sony</code>的手机解锁很简单,去<a href="https://developer.sony.com/develop/open-devices/get-started/unlock-bootloader/">Sony 解锁页面</a>按照步骤提交手机的<code>IMEI</code>就可以了。</p><h2 id="刷官方系统"><a href="#刷官方系统" class="headerlink" title="刷官方系统"></a>刷官方系统</h2><p>下载官方系统用的是<a href="https://xperifirm.com/">XperiFirm</a>,刷机工具用的是<a href="https://forum.xda-developers.com/t/tool-newflasher-xperia-command-line-flasher.3619426/">Newflasher</a>,解压工具<a href="https://forum.xda-developers.com/t/tool-unsin-sin-v3-v4-v5-unpacker-v1-13.3128106/">UnSIN</a>。</p><ol><li>用<code>XperiFirm</code>下载对应的原厂系统。如果网络不好可以使用下载工具下载各个分包然后合并</li><li>用<code>unsin</code>解压<code>boot_XXXXX.sin</code>得到<code>img</code>文件</li><li>用<code>Magisk</code>给上面的<code>img</code>打上<code>root</code>,得到<code>rooted.img</code></li><li>用<code>Newflasher</code>将官方系统刷入</li><li>手动使用<code>adb</code>刷入上面的<code>rooted.img</code>,分别执行下面的命令</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">adb reboot bootloader</span><br><span class="line">fastboot flash boot rooted.img</span><br><span class="line">fastboot reboot</span><br></pre></td></tr></table></figure><h2 id="记录下用的Magisk模块"><a href="#记录下用的Magisk模块" class="headerlink" title="记录下用的Magisk模块"></a>记录下用的Magisk模块</h2><ul><li><a href="https://forum.xda-developers.com/t/module-g-visual-mod-systemlessy-customize-your-androids-visual.4225571/">G-Visual Mod</a>:用来消除圆角的</li><li><a href="https://forum.xda-developers.com/t/module-magiskhide-props-config-safetynet-prop-edits-and-more-v6-1-2.3789228/">MagiskHide Props Config</a>:用来隐藏底栏导航按键的,搭配<code>Fluid Navigation Gestures</code>使用的</li></ul>]]></content>
<summary type="html"><p>之前买了红米K40s,解锁后没有合适的ROM,<code>MIUI</code>系列的用不习惯,<code>Android 12 GSI</code>因为圆角不喜欢。所以后来就买了二手的<code>Sony Xperia 1 II</code>。本来想买<code>Sony Xperia 5 II</code>的,但是看到有价格不错的<code>1 II</code>就直接买了。用下来还行。</p>
<p>拿到手是<code>Android 12</code>,刷回了<code>Android 11</code>,解锁<code>root</code>,停用了自带的一堆应用,用起来还行。</p></summary>
<category term="App" scheme="https://whitecodes.github.io/tags/App/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
<category term="Phone" scheme="https://whitecodes.github.io/tags/Phone/"/>
</entry>
<entry>
<title>编译小米工具</title>
<link href="https://whitecodes.github.io/2022/07/build-xiaomitool/"/>
<id>https://whitecodes.github.io/2022/07/build-xiaomitool/</id>
<published>2022-07-21T15:56:45.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>之前的<code>K30s</code>主板坏了,然后直接买了<code>K40s</code>。买的时候有<code>TWRP</code>已经适配了,但是在<code>xda</code>上还没有看到子论坛。然后直接下单了,想着到解锁的时候差不多就有了,但是……直到现在还是没有。</p><p>虽然没有基于<code>ASOP</code>的rom,但是<code>MIUI.EU</code>还是有的,也可以root。</p><p>但是在解锁的时候,发现之前解锁用的工具<code>xiaomitool-v2</code>不能进行解锁,有报错,这里就记录下怎么自己编译这个工具。</p><p><em>最后刷入了<code>GSI</code>,并且换了手机,现在没有使用这个手机</em></p><span id="more"></span><h2 id="编译-xiaomitool-v2"><a href="#编译-xiaomitool-v2" class="headerlink" title="编译 xiaomitool-v2"></a>编译 xiaomitool-v2</h2><p><code>AUR</code>源中有<code>xiaomitool-v2</code>,之前可以正常安装使用的。但是现在直接使用,解锁的时候报错<code>[getServiceToken] Missing serviceToken cookie</code>。</p><p><a href="https://github.com/francescotescari/XiaoMiToolV2/issues/23">github</a> 上有人报告了,但是<code>AUR</code>中的版本中没有合入修改,所以需要手动下载源码运行。</p><p>上面的页面中有人已经提供了<a href="https://github.com/francescotescari/XiaoMiToolV2/issues/23#issuecomment-904082515">修改方案</a>,照做就可以了。</p><p>这样编译是可以,但是登陆的时候会显示不出二维码或者验证码。修改下<code>Java</code>版本就可以了,参考<a href="https://github.com/francescotescari/XiaoMiToolV2/issues/56#issuecomment-1058175712">这个</a></p><p>到这里,<code>xiaomitool-v2</code>就可以运行了。接下来是解锁。</p><h2 id="解锁"><a href="#解锁" class="headerlink" title="解锁"></a>解锁</h2><p>解锁就很简单了,手机开<code>ADB</code>,连电脑,运行<code>xiaomitool-v2</code>,解锁,然后按照要求来就可以了。</p><h2 id="刷入系统"><a href="#刷入系统" class="headerlink" title="刷入系统"></a>刷入系统</h2><p>现在系统有2个选择:<code>MIUI.EU</code>和<code>GSI镜像</code>。要刷<code>GSI镜像</code>就需要在原版<code>MIUI</code>的基础上刷入。</p><p><code>MIUI.EU</code>刷入需要先刷入<a href="https://androidfilehost.com/?fid=14655340768118476852">卡刷包</a>,直接运行对应的脚本就可以了。之后再参考教程刷新最新的卡刷包。</p><p><code>GSI镜像</code>是通用的,没有针对设备做具体的优化,可以在<a href="https://github.com/phhusson/treble_experimentations/wiki/Generic-System-Image-(GSI)-list">这里</a>找到一个列表。明确适配K40s的<a href="https://github.com/Umang96/munch_pe_custom_gsi_releases">这个</a>。按照教程就可以刷进去了。</p><h2 id="小米开源"><a href="#小米开源" class="headerlink" title="小米开源"></a>小米开源</h2><p>小米终于开源K40s的<a href="https://github.com/MiCode/Xiaomi_Kernel_OpenSource/tree/munch-s-oss">内核</a>了,估计之后就会有rom可以刷了</p>]]></content>
<summary type="html"><p>之前的<code>K30s</code>主板坏了,然后直接买了<code>K40s</code>。买的时候有<code>TWRP</code>已经适配了,但是在<code>xda</code>上还没有看到子论坛。然后直接下单了,想着到解锁的时候差不多就有了,但是……直到现在还是没有。</p>
<p>虽然没有基于<code>ASOP</code>的rom,但是<code>MIUI.EU</code>还是有的,也可以root。</p>
<p>但是在解锁的时候,发现之前解锁用的工具<code>xiaomitool-v2</code>不能进行解锁,有报错,这里就记录下怎么自己编译这个工具。</p>
<p><em>最后刷入了<code>GSI</code>,并且换了手机,现在没有使用这个手机</em></p></summary>
<category term="App" scheme="https://whitecodes.github.io/tags/App/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>坦克世界</title>
<link href="https://whitecodes.github.io/2022/05/wot/"/>
<id>https://whitecodes.github.io/2022/05/wot/</id>
<published>2022-05-28T15:30:05.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>最近在玩坦克世界。这是个令人高血压的游戏。之前在空中网代理的时候在国服玩过,现在坦克世界上了<code>steam</code>,又可以在<code>Linux</code>环境中玩了。</p><p>这款游戏支持<code>mod</code>,这里记录下安装的<code>mod</code>。</p><span id="more"></span><h2 id="XVM"><a href="#XVM" class="headerlink" title="XVM"></a>XVM</h2><p>最主要的一个插件就是<a href="https://modxvm.com/xvm/">XVM</a>,用来评估战斗力的,看自己和看别人的。</p><p>另外还提供了一些方便的小功能。</p><p>安装之后要去激活一下权限,这个激活要定期执行。</p><h2 id="涂装"><a href="#涂装" class="headerlink" title="涂装"></a>涂装</h2><p>涂装推荐2个:二次元的和迷彩的。</p><p>二次元的是<code>海瑟重工</code>,作者<a href="https://space.bilibili.com/2374543/dynamic">发布地址</a>在B站,用的是度盘</p><p>上面的涂装是不全的,另一个就是用来补全的:<code>CamoSelector</code>,这个发布在<a href="https://wgmods.net/409/">WG官方的插件站</a>。没有适配最新的版本,有点小问题,但是可以使用。</p><p>所谓的小问题就是在游戏里就不能选择涂装了。</p><h2 id="声音"><a href="#声音" class="headerlink" title="声音"></a>声音</h2><p>游戏自带的炮声一般,用了战雷提出的炮声<a href="https://wgmods.net/4565/">Guns Sound Mod</a></p><p>乘员语言换了<code>蔚蓝档案</code><a href="https://wgmods.net/5861/">Abydos(Foreclosure task force)</a></p><p>BGM有两个选择<code>宛若青空1st音乐包-泽野弘之works</code>和少女与战车。</p><p><code>宛若青空</code>的在<a href="https://bbs.nga.cn/read.php?tid=30941826">NGA</a>有更新。</p><p><code>少女与战车</code>有个日本玩家在<a href="https://gupmod.blog.fc2.com/">更新</a></p><h2 id="准心"><a href="#准心" class="headerlink" title="准心"></a>准心</h2><p>准心推荐的有两个:<a href="https://wotbaza.com/crosshairs-wot/95-beautiful-meltymap-sights-for-world-of-tanks">MeltyMap</a>和<a href="https://wotbaza.com/crosshairs-wot/28-korean-deegie-sights-for-world-of-tanks">Deegie sights</a>,后者更华丽一些。</p><h2 id="成员"><a href="#成员" class="headerlink" title="成员"></a>成员</h2><p>乘员主要是头像,但是没有完美的,只是简单用了彩虹六号<a href="https://wgmods.net/4263/">OPERATORS PORTRAIT PACKS</a></p><h2 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h2>]]></content>
<summary type="html"><p>最近在玩坦克世界。这是个令人高血压的游戏。之前在空中网代理的时候在国服玩过,现在坦克世界上了<code>steam</code>,又可以在<code>Linux</code>环境中玩了。</p>
<p>这款游戏支持<code>mod</code>,这里记录下安装的<code>mod</code>。</p></summary>
<category term="Game" scheme="https://whitecodes.github.io/tags/Game/"/>
</entry>
<entry>
<title>使用Github Action部署Hexo</title>
<link href="https://whitecodes.github.io/2022/02/hexo-with-github-action/"/>
<id>https://whitecodes.github.io/2022/02/hexo-with-github-action/</id>
<published>2022-02-20T14:55:47.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>使用<code>Github Action</code>来部署<code>hexo</code>,这样电脑本地就不需要安装<code>npm</code>相关的东西了。另外利用<code>github.dev</code>也可以实现在页面上编辑了。</p><span id="more"></span><h2 id="创建Github-Action文件"><a href="#创建Github-Action文件" class="headerlink" title="创建Github Action文件"></a>创建Github Action文件</h2><p>在<code>.github/workflow</code>目录中,创建一个名为<code>github-actions-demo.yml</code>的文件。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">Hexo</span> <span class="string">Github</span> <span class="string">Actions</span></span><br><span class="line"><span class="attr">on:</span> [<span class="string">push</span>]</span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line"> <span class="attr">build:</span></span><br><span class="line"> <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line"> <span class="attr">steps:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Checkout</span> <span class="string">source</span></span><br><span class="line"> <span class="attr">uses:</span> <span class="string">actions/checkout@v1</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Setup</span> <span class="string">Node.js</span> <span class="string">${{</span> <span class="string">matrix.node_version</span> <span class="string">}}</span></span><br><span class="line"> <span class="attr">uses:</span> <span class="string">actions/setup-node@v1</span></span><br><span class="line"> <span class="attr">with:</span></span><br><span class="line"> <span class="attr">node-version:</span> <span class="string">${{</span> <span class="string">matrix.node_version</span> <span class="string">}}</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Cache</span> <span class="string">NPM</span> <span class="string">dependencies</span></span><br><span class="line"> <span class="attr">uses:</span> <span class="string">actions/cache@v2</span></span><br><span class="line"> <span class="attr">with:</span></span><br><span class="line"> <span class="attr">path:</span> <span class="string">~/.npm</span></span><br><span class="line"> <span class="attr">key:</span> <span class="string">${{</span> <span class="string">runner.OS</span> <span class="string">}}-npm-cache</span></span><br><span class="line"> <span class="attr">restore-keys:</span> <span class="string">|</span></span><br><span class="line"><span class="string"> ${{ runner.OS }}-npm-cache</span></span><br><span class="line"><span class="string"></span> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Setup</span> <span class="string">hexo</span></span><br><span class="line"> <span class="attr">env:</span></span><br><span class="line"> <span class="attr">ACTION_DEPLOY_KEY:</span> <span class="string">${{</span> <span class="string">secrets.HEXO_DEPLOY_PRI</span> <span class="string">}}</span></span><br><span class="line"> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string"> mkdir -p ~/.ssh/</span></span><br><span class="line"><span class="string"> echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa</span></span><br><span class="line"><span class="string"> chmod 600 ~/.ssh/id_rsa</span></span><br><span class="line"><span class="string"> ssh-keyscan github.com >> ~/.ssh/known_hosts</span></span><br><span class="line"><span class="string"> git config --global user.email "yourmailaddress"</span></span><br><span class="line"><span class="string"> git config --global user.name "yourname"</span></span><br><span class="line"><span class="string"> npm install hexo-cli -g</span></span><br><span class="line"><span class="string"> npm install</span></span><br><span class="line"><span class="string"></span> <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Hexo</span> <span class="string">deploy</span></span><br><span class="line"> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">npm</span> <span class="string">run</span> <span class="string">deploy</span></span><br></pre></td></tr></table></figure><p><code>Cache</code>不要抄<code>Hexo</code>网站上的,按照<a href="https://docs.github.com/cn/actions/using-workflows/caching-dependencies-to-speed-up-workflows">Caching dependencies to speed up workflows</a>的来</p><blockquote><p>npm cache files are stored in <code>~/.npm</code> on Linux/macOS</p></blockquote><p>这个文件提交到<code>Github</code>上应该就启动<code>Action</code>了,可以在<code>Actions</code>页上查看进度。</p><p><code>Github Actions</code>提供了2 core CPUs的VM,所以在在<code>package.json</code>中可以使用2个线程进行生成,加快速度</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"deploy":</span> <span class="string">"hexo clean && hexo deploy -g -c 2"</span><span class="string">,</span></span><br></pre></td></tr></table></figure><p>预计应该是部署失败的,因为部署的时候没有认证,这就需要添加证书</p><h2 id="配置证书"><a href="#配置证书" class="headerlink" title="配置证书"></a>配置证书</h2><p>在本地电脑上生成证书,不要密码。<br>把<code>privatekey</code>内容复制到内容分支的<code>Actions secrets</code>中;</p><p>把<code>publickey</code>内容复制到发布分支的<code>Deploy keys</code>中。</p><h2 id="在线编辑"><a href="#在线编辑" class="headerlink" title="在线编辑"></a>在线编辑</h2><p><code>Github</code>有提供一个在线编辑的页面,在<code>Repo</code>页面按下按键<code>.</code>就可以打开编辑页面了,看起来是<code>Visual Studio Code Online</code>。</p><h2 id="bot-触发的处理"><a href="#bot-触发的处理" class="headerlink" title="bot 触发的处理"></a>bot 触发的处理</h2><p>上面有段添加ssh密钥的代码,这个是右bot触发的编译中文件是不同的需要用下面的而代码</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># bot 用</span></span><br><span class="line"><span class="string">test</span> <span class="string">-f</span> <span class="string">/home/runner/.ssh/id_rsa</span> <span class="string">&&</span> <span class="string">echo</span> <span class="string">"$ACTION_DEPLOY_KEY"</span> <span class="string">></span> <span class="string">/home/runner/.ssh/id_rsa</span></span><br><span class="line"><span class="string">test</span> <span class="string">-f</span> <span class="string">/home/runner/.ssh/id_rsa</span> <span class="string">&&</span> <span class="string">chmod</span> <span class="number">600</span> <span class="string">/home/runner/.ssh/id_rsa</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>使用<code>Github Action</code>来部署<code>hexo</code>,这样电脑本地就不需要安装<code>npm</code>相关的东西了。另外利用<code>github.dev</code>也可以实现在页面上编辑了。</p></summary>
<category term="Hexo" scheme="https://whitecodes.github.io/tags/Hexo/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>配置Netdata</title>
<link href="https://whitecodes.github.io/2022/02/netdata/"/>
<id>https://whitecodes.github.io/2022/02/netdata/</id>
<published>2022-02-06T14:59:00.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p><code>Netdata</code>是一个用来监控服务器的软件,我用来监控<code>VPS</code>和<code>OMV</code>的运行情况。<br>这个软件的配置项比较多,这里记录下配置。<br>另外默认的告警也有很多,这里顺便记录下碰到的告警的解决办法</p><span id="more"></span><h2 id="DOCKER安装Netdata"><a href="#DOCKER安装Netdata" class="headerlink" title="DOCKER安装Netdata"></a>DOCKER安装Netdata</h2><p>用<code>docker</code>安装比较好管理,也比较好升级。官方有<a href="https://learn.netdata.cloud/docs/agent/packaging/docker">教程</a>,基本上跟着来就可以了。</p><p>其中需要注意的一点是权限问题:<code>Netdata</code>会固执地使用<code>netdata</code>用户来运行。如果碰到权限问题不能运行,想要修改<code>Netdata</code>的运行权限,除了需要在运行的时候指定用户,还需要在环境变量中指定用户。</p><p>另外还有一些就是因为<code>docker</code>的限制,<code>bridge</code>网络模式下,部分网络相关的数据不能监控到,包括<code>nfs</code>相关的信息。如果需要的话,改成<code>host</code>模式就可以了。</p><h2 id="配置告警"><a href="#配置告警" class="headerlink" title="配置告警"></a>配置告警</h2><p><code>Netdata</code>支持很多告警方式,我用的是<code>Telegram</code>通知。</p><p>根据<a href="https://learn.netdata.cloud/docs/agent/health/notifications/telegram">官方的文档</a>需要一个<code>Telegram Bot</code>。</p><p>和<code>BotFather</code>对话就可以创建一个<code>Telegram Bot</code>。把这个bot加到群组中,需要获取<code>chat ID</code>,方法在文档中有。</p><p>在主机上找一个位置创建告警的配置文件,命名为<code>health_alarm_notify.conf</code>,之后要把文件这件挂载到容器中<code>/etc/netdat/health_alarm_notify.conf</code>。</p><p>文件内容大概是这样:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">SEND_TELEGRAM="YES"</span><br><span class="line">TELEGRAM_BOT_TOKEN="111122223:7OpFlFFRzRBbrUUmIjj5HF9Ox2pYJZy5"</span><br><span class="line">DEFAULT_RECIPIENT_TELEGRAM="-100233335555"</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>挂载后重启容器就可以开启告警了。</p><p>完成的测试教程在<a href="https://learn.netdata.cloud/docs/agent/health/notifications#testing-notifications">这里</a></p><p>在容器中执行下面的命令</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># send test alarms to sysadmin</span></span><br><span class="line">/usr/libexec/netdata/plugins.d/alarm-notify.sh <span class="built_in">test</span></span><br></pre></td></tr></table></figure><h2 id="解决告警"><a href="#解决告警" class="headerlink" title="解决告警"></a>解决告警</h2><p>告警默认是全开的,用在<code>VPS</code>上的话,有些值的设置有些不合理。例如<code>30min_ram_swapped_out</code>这个,默认值设置得很低,经常会触发。</p><p>创建文件<code>health.d/swap.conf</code>,挂载到容器中的<code>/etc/netdata/health.d/swap.conf</code>。</p><p>文件的原始内容你可以从<a href="https://github.com/netdata/netdata/blob/master/health/health.d/swap.conf">这里</a>找到,主要要修改告警的值。文件内容大概是这样:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="comment"># you can disable an alarm notification by setting the 'to' line to: silent</span></span><br><span class="line"></span><br><span class="line"> <span class="attr">alarm:</span> <span class="string">30min_ram_swapped_out</span></span><br><span class="line"> <span class="attr">on:</span> <span class="string">system.swapio</span></span><br><span class="line"> <span class="attr">class:</span> <span class="string">Workload</span></span><br><span class="line"> <span class="attr">type:</span> <span class="string">System</span></span><br><span class="line"><span class="attr">component:</span> <span class="string">Memory</span></span><br><span class="line"> <span class="attr">os:</span> <span class="string">linux</span> <span class="string">freebsd</span></span><br><span class="line"> <span class="attr">hosts:</span> <span class="string">*</span></span><br><span class="line"> <span class="attr">lookup:</span> <span class="string">sum</span> <span class="string">-30m</span> <span class="string">unaligned</span> <span class="string">absolute</span> <span class="string">of</span> <span class="string">out</span></span><br><span class="line"> <span class="comment"># we have to convert KB to MB by dividing $this (i.e. the result of the lookup) with 1024</span></span><br><span class="line"> <span class="attr">calc:</span> <span class="string">$this</span> <span class="string">/</span> <span class="number">1024</span> <span class="string">*</span> <span class="number">100</span> <span class="string">/</span> <span class="string">(</span> <span class="string">$system.ram.used</span> <span class="string">+</span> <span class="string">$system.ram.cached</span> <span class="string">+</span> <span class="string">$system.ram.free</span> <span class="string">)</span></span><br><span class="line"> <span class="attr">units:</span> <span class="string">%</span> <span class="string">of</span> <span class="string">RAM</span></span><br><span class="line"> <span class="attr">every:</span> <span class="string">1m</span></span><br><span class="line"> <span class="attr">warn:</span> <span class="string">$this</span> <span class="string">></span> <span class="string">(($status</span> <span class="string">>=</span> <span class="string">$WARNING)</span> <span class="string">?</span> <span class="string">(85)</span> <span class="string">:</span> <span class="string">(95))</span></span><br><span class="line"> <span class="attr">delay:</span> <span class="string">down</span> <span class="string">15m</span> <span class="string">multiplier</span> <span class="number">1.5</span> <span class="string">max</span> <span class="string">1h</span></span><br><span class="line"> <span class="attr">info:</span> <span class="string">percentage</span> <span class="string">of</span> <span class="string">the</span> <span class="string">system</span> <span class="string">RAM</span> <span class="string">swapped</span> <span class="string">in</span> <span class="string">the</span> <span class="string">last</span> <span class="number">30</span> <span class="string">minutes</span></span><br><span class="line"> <span class="attr">to:</span> <span class="string">sysadmin</span></span><br><span class="line"></span><br><span class="line"> <span class="attr">alarm:</span> <span class="string">used_swap</span></span><br><span class="line"> <span class="attr">on:</span> <span class="string">system.swap</span></span><br><span class="line"> <span class="attr">class:</span> <span class="string">Utilization</span></span><br><span class="line"> <span class="attr">type:</span> <span class="string">System</span></span><br><span class="line"><span class="attr">component:</span> <span class="string">Memory</span></span><br><span class="line"> <span class="attr">os:</span> <span class="string">linux</span> <span class="string">freebsd</span></span><br><span class="line"> <span class="attr">hosts:</span> <span class="string">*</span></span><br><span class="line"> <span class="attr">calc:</span> <span class="string">(($used</span> <span class="string">+</span> <span class="string">$free)</span> <span class="string">></span> <span class="number">0</span><span class="string">)</span> <span class="string">?</span> <span class="string">($used</span> <span class="string">*</span> <span class="number">100</span> <span class="string">/</span> <span class="string">($used</span> <span class="string">+</span> <span class="string">$free))</span> <span class="string">:</span> <span class="number">0</span></span><br><span class="line"> <span class="attr">units:</span> <span class="string">%</span></span><br><span class="line"> <span class="attr">every:</span> <span class="string">10s</span></span><br><span class="line"> <span class="attr">warn:</span> <span class="string">$this</span> <span class="string">></span> <span class="string">(($status</span> <span class="string">>=</span> <span class="string">$WARNING)</span> <span class="string">?</span> <span class="string">(80)</span> <span class="string">:</span> <span class="string">(90))</span></span><br><span class="line"> <span class="attr">crit:</span> <span class="string">$this</span> <span class="string">></span> <span class="string">(($status</span> <span class="string">==</span> <span class="string">$CRITICAL)</span> <span class="string">?</span> <span class="string">(90)</span> <span class="string">:</span> <span class="string">(98))</span></span><br><span class="line"> <span class="attr">delay:</span> <span class="string">up</span> <span class="string">30s</span> <span class="string">down</span> <span class="string">15m</span> <span class="string">multiplier</span> <span class="number">1.5</span> <span class="string">max</span> <span class="string">1h</span></span><br><span class="line"> <span class="attr">info:</span> <span class="string">swap</span> <span class="string">memory</span> <span class="string">utilization</span></span><br><span class="line"> <span class="attr">to:</span> <span class="string">sysadmin</span></span><br></pre></td></tr></table></figure><p>如果硬盘比较小,并且进行过大容量的占用,那么会触发一个<code>btrfs allocated too high</code>的告警,这个告警不会在删除大文件后消除,需要跑一遍<code>btrfs balance</code>来消除。</p><h2 id="配置fail2ban"><a href="#配置fail2ban" class="headerlink" title="配置fail2ban"></a>配置fail2ban</h2><p><code>VPS</code>使用<code>fail2ban</code>来防护,可以在<code>Netdata</code>上看到相关的数据。</p><p>根据<a href="https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/fail2ban">官网上的教程</a>:<code>Netdata</code>是通过读取<code>fail2ban.log</code>来获取的。所以需要确保这个文件可以被<code>Netdata</code>读取,默认加<code>Netdata</code>用户的读取权限就可以了。</p><p>创建文件<code>python.d/fail2ban.conf</code>挂载到容器中的<code>/etc/netdata/python.d/fail2ban.conf</code>。</p><p>文件内容大概是这样:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">local:</span></span><br><span class="line"> <span class="attr">log_path:</span> <span class="string">'/var/log/fail2ban.log'</span></span><br><span class="line"> <span class="attr">conf_path:</span> <span class="string">'/etc/fail2ban/jail.local'</span></span><br></pre></td></tr></table></figure><p>重启容器后就可以看到<code>fail2ban</code>的数据了。其中主要关心的是<code>Banned IP addresses</code>。这个数据是<code>Netdata</code>启动后的数据。如果要准确的,那就容器启动后重启下<code>fail2ban</code>服务。</p><h2 id="配置温度"><a href="#配置温度" class="headerlink" title="配置温度"></a>配置温度</h2><p><code>VPS</code>上没有温度相关的,但是用到自己的<code>NAS</code>上的时候,还是需要关注下机器的温度。</p><p>创建文件<code>charts.d.conf</code>挂载到容器中的<code>/etc/netdata/charts.d.conf</code>。</p><p>文件内容大概是这样:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sensors=force</span><br></pre></td></tr></table></figure><p>重启容器后就可以看到<code>sensors</code>的数据了。</p><p>其实温度看的还是硬盘的问题,所以更好的处理还是要看<code>S.M.A.R.T.</code>的数据。</p><p>根据教程需要修改<code>smartd</code>的配置参数:加上<code>-A</code>参数,数据写入文件。</p><p>以我的环境为例:需要修改的文件是<code>/etc/default/smartmontools</code></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># Defaults for smartmontools initscript (/etc/init.d/smartmontools)</span><br><span class="line"># This is a POSIX shell fragment</span><br><span class="line"></span><br><span class="line">start_smartd=yes</span><br><span class="line">smartd_opts="-A /opt/var/log/smartd/ --quit=never --interval=1800"</span><br></pre></td></tr></table></figure><p>需要注意的是,另外使用了<code>OMV</code>来管理<code>NAS</code>,每次在<code>OMV</code>中修改<code>S.M.A.R.T.</code>的数据后,都需要手动修改上面的文件。</p><p>另外:</p><blockquote><p>You may need to create the smartd directory before smartd will write to it</p></blockquote><p><code>Netdata</code>自己有个配置文件用于指定文件。需要创建的文件是<code>python.d/smartd_log.conf</code></p><p>内容大概是这样:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">local:</span></span><br><span class="line"> <span class="attr">log_path :</span> <span class="string">'/opt/var/log/smartd/'</span></span><br></pre></td></tr></table></figure><h2 id="配置串流"><a href="#配置串流" class="headerlink" title="配置串流"></a>配置串流</h2><p><code>Netdata</code>提供了中心化的网站,注册就可以看到所有的数据。</p><p>如果不想用官方的,可以把一台机器的数据串流到另一台机器上。这个就可以实现在同一个地方看所有数据。</p><p>先说结论:并不适合我:</p><ul><li><p>串流需要稳定的网络环境,我这边会漏数据,在2H的尺度上显示的效果才算可以接受。</p></li><li><p>切换节点的是从侧边栏展开的,每次都要点击一下,麻烦。</p></li></ul><p>这里还是记录下配置记录:</p><p>发送数据的节点:</p><p><code>stream.conf</code></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[<span class="string">stream</span>]</span><br><span class="line"> <span class="string">enabled</span> <span class="string">=</span> <span class="literal">yes</span></span><br><span class="line"> <span class="string">destination</span> <span class="string">=</span> <span class="string"><remote</span> <span class="string">ip>:<netdata</span> <span class="string">port></span></span><br><span class="line"> <span class="string">api</span> <span class="string">key</span> <span class="string">=</span> <span class="string">31a3451d-ef6b-45fe-b0ec-2223a8c70ab0</span> <span class="comment"># 这个通过 uuidgen 或者 uuid 生成,认证用</span></span><br><span class="line"> <span class="string">buffer</span> <span class="string">size</span> <span class="string">bytes</span> <span class="string">=</span> <span class="number">5242880</span> <span class="comment"># 缓冲buffer调整为5MB,一般不用</span></span><br></pre></td></tr></table></figure><p>接受数据的节点</p><p><code>stream.conf</code></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[<span class="string">31a3451d-ef6b-45fe-b0ec-2223a8c70ab0</span>] <span class="comment"># 这个是上面的生成的uuid</span></span><br><span class="line"> <span class="string">enabled</span> <span class="string">=</span> <span class="literal">yes</span></span><br><span class="line"> <span class="string">allow</span> <span class="string">from</span> <span class="string">=</span> <span class="string">*</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p><code>Netdata</code>是一个用来监控服务器的软件,我用来监控<code>VPS</code>和<code>OMV</code>的运行情况。<br>这个软件的配置项比较多,这里记录下配置。<br>另外默认的告警也有很多,这里顺便记录下碰到的告警的解决办法</p></summary>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>搭建NAS</title>
<link href="https://whitecodes.github.io/2021/06/build-nas/"/>
<id>https://whitecodes.github.io/2021/06/build-nas/</id>
<published>2021-06-06T13:51:43.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>买了矿渣<code>我家云</code>作为<code>NAS</code>。</p><!---more---><h2 id="硬件设备"><a href="#硬件设备" class="headerlink" title="硬件设备"></a>硬件设备</h2><p><code>我家云</code>是矿渣,买过来100+,最低价的时候50+</p><ul><li>CPU:rk3328 ARM Cortex-A53, 四核 1.5GHz</li><li>GPU:2核ARM Mail-450</li><li>内存:1G</li><li>Flash:8G</li><li>其他:内置usb to sata 3.5英寸硬盘位,1个千兆网口,1个USB 3.0口,1个USB 2.0口</li><li>电源:12V3A</li></ul><h2 id="系统"><a href="#系统" class="headerlink" title="系统"></a>系统</h2><p>拿到手的时候,店家刷的应该是<code>Ride_Wind</code>的固件。带的导航页面太难看了,到手后还是刷了其他系统。</p><p>现在用的固件是从<a href="https://www.right.com.cn/forum/thread-1042032-1-1.html">这里</a>来的。</p><ol><li>安装刷机工具</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yay -S rkdeveloptool</span><br></pre></td></tr></table></figure><ol start="2"><li>设备进入Maskrom模式<ol><li>关机状态,我家云usb2.0口用双公头刷机线连接电脑</li><li>按住Reset键接通电源,不要放开reset,此时红灯先亮,</li><li>大约15秒后红灯熄灭,继续按住,直到AnroidTool发现Maskrom设备松开,刷机即可。<br>这个是网上的教程,参考下</li></ol></li></ol><p>如果机器之前没有刷过系统,那么进入的是<code>Loader</code>模式。这个时候往<code>EMMC</code>写入点东西,然后抹掉整个<code>EMMC</code>再重试上面就操作。</p><ol start="3"><li>刷入系统</li></ol><p>参考这个<a href="https://roc-rk3328-cc.readthedocs.io/en/latest/flash_emmc.html">教程</a>,结合其他教程的截图,依次执行下面的命令</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">rkdeveloptool db rk3328_loader.bin</span><br><span class="line">rkdeveloptool wl 0x0 omv4-rk3328-0.7.9-armhf.img</span><br><span class="line">rkdeveloptool rd</span><br></pre></td></tr></table></figure><p>等待机器重启完成后,拔掉电源,插入网线接入路由器。</p><p>登陆路由器后台,查看机器的ip,浏览器登陆就可以看到主页了。</p><p>机器默认是DHCP,应该可以在路由器<code>DHCP Client list</code>之类的地方可以看到新增的<code>omv</code>设备。</p><p>默认的主页很丑,有修改的方法</p><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><h3 id="修改密码和CPU配置"><a href="#修改密码和CPU配置" class="headerlink" title="修改密码和CPU配置"></a>修改密码和CPU配置</h3><p>修改系统<code>root</code>密码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">passwd root</span><br></pre></td></tr></table></figure><p>修改<code>CPU</code>模式</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">armbian-config</span><br></pre></td></tr></table></figure><p>System->CPU->408000->1512000->interactive</p><p>各个CPU模式的说明</p><ul><li>interactive:交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。</li><li>conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式</li><li>userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置</li><li>powersave:省电模式,通常以最低频率运行。</li><li>ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand</li><li>performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。</li></ul><p>修改<code>SSH</code>欢迎信息<br><code>/etc/update-motd.d/</code><br>里面提示修改<code>/etc/default/armbian-motd</code>,但是更具体的修改还是修改这里的文件更方便</p><h3 id="安装Fish"><a href="#安装Fish" class="headerlink" title="安装Fish"></a>安装Fish</h3><p>默认只有<code>Bash</code>,没有颜色提示,偷懒直接用<code>Fish</code>了<br>直接使用<code>apt</code>安装就可以了,如果出错就按提示修复依赖</p><h3 id="修改主页-停掉不需要的服务"><a href="#修改主页-停掉不需要的服务" class="headerlink" title="修改主页&停掉不需要的服务"></a>修改主页&停掉不需要的服务</h3><h4 id="主页"><a href="#主页" class="headerlink" title="主页"></a>主页</h4><p>主页是<code>nginx</code>+<code>php</code>的,直接修改端口,看不到就没事了。<br>文件路径:<code>/opt/etc/nginx/vhost/entware.conf</code></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">server {</span><br><span class="line"> listen 82;</span><br><span class="line"> server_name localhost;</span><br><span class="line"> root /opt/wwwroot/entware/;</span><br><span class="line"> index index.html index.htm index.php;</span><br><span class="line"> include /opt/etc/nginx/conf/php-fpm.conf;</span><br><span class="line"> #otherconf</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>主页中自带了很多东西,用不到的都删除了。自带的东西在<code>/opt/wwwroot/entware</code>,这里记录下各个文件夹的内容</p><ul><li>cesu 测速</li><li>douyinapi 抖音随机看小姐姐</li><li>gl 爱特网站文件专家</li><li>kod 可道云</li><li>kuaishouapi 快手随机看小姐姐</li><li>pi Pi 仪表盘</li><li>pt nexusphp</li><li>upjpg 图床</li><li>uplz 蓝奏云上传</li><li>web Transmission 网页</li><li>veno Veno File Manager 3</li></ul><p>还有一些应用在其他目录,通过<code>/opt/entware_init.sh</code>来启动,不要的全部注释掉</p><h4 id="关闭Transmission"><a href="#关闭Transmission" class="headerlink" title="关闭Transmission"></a>关闭<code>Transmission</code></h4><p>因为我的用是<code>Aria2</code>。文件在<code>/opt/etc/init.d/S88transmission</code></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"></span><br><span class="line">ENABLED=no</span><br><span class="line">PROCS=transmission-daemon</span><br><span class="line">ARGS=<span class="string">"-g /opt/etc/transmission"</span></span><br><span class="line">PREARGS=<span class="string">""</span></span><br><span class="line">DESC=<span class="variable">$PROCS</span></span><br><span class="line">PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin</span><br><span class="line"></span><br><span class="line">TRANSMISSION_WEB_HOME=<span class="string">"/opt/share/transmission/web"</span></span><br><span class="line"></span><br><span class="line">. /opt/etc/init.d/rc.func</span><br></pre></td></tr></table></figure><h4 id="关闭Jellyfin"><a href="#关闭Jellyfin" class="headerlink" title="关闭Jellyfin"></a>关闭Jellyfin</h4><p>刷完系统后自带了<code>Jellyfin</code>,我期望是用<code>Docker</code>来使用应用。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">systemctl stop jellyfin</span><br><span class="line">systemctl disable jellyfin</span><br></pre></td></tr></table></figure><h3 id="风扇启停"><a href="#风扇启停" class="headerlink" title="风扇启停"></a>风扇启停</h3><p>固件中已经自带调速了,但是没有风扇启停,参考<a href="https://www.right.com.cn/forum/thread-2025656-1-5.html">恩山上的方案</a>自己写了脚本。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"><span class="comment"># gpio85为LED灯,gpio79为风扇,下文的max=70000和min=60000分别为风扇的起转温度和停转温度,70000=70摄氏度。监测刷新时间为20秒</span></span><br><span class="line"><span class="keyword">if</span> [ -n <span class="string">"<span class="variable">$1</span>"</span> ]; <span class="keyword">then</span></span><br><span class="line"> max=<span class="variable">$1</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> max=65000</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="keyword">if</span> [ -n <span class="string">"<span class="variable">$2</span>"</span> ]; <span class="keyword">then</span></span><br><span class="line"> min=<span class="variable">$2</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> min=55000</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">$max</span>, <span class="variable">$min</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> <span class="literal">true</span>; <span class="keyword">do</span></span><br><span class="line"> t=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)</span><br><span class="line"> <span class="keyword">if</span> [ <span class="string">"<span class="variable">$t</span>"</span> -gt <span class="variable">$max</span> ]; <span class="keyword">then</span></span><br><span class="line"> <span class="comment"># chmod 777 /opt/fan</span></span><br><span class="line"> /opt/fan</span><br><span class="line"> <span class="comment"># echo "CPU temp: $t > $max FAN POWER ON"</span></span><br><span class="line"> <span class="keyword">fi</span></span><br><span class="line"> <span class="keyword">if</span> [ <span class="string">"<span class="variable">$t</span>"</span> -lt <span class="variable">$min</span> ]; <span class="keyword">then</span></span><br><span class="line"> killall fan > /dev/null 2>&1</span><br><span class="line"> <span class="built_in">echo</span> 79 > /sys/class/gpio/export</span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"low"</span> > /sys/class/gpio/gpio79/direction</span><br><span class="line"> <span class="built_in">echo</span> 79 > /sys/class/gpio/unexport</span><br><span class="line"> <span class="comment"># echo "CPU temp: $t < $min FAN POWER OFF"</span></span><br><span class="line"> <span class="keyword">fi</span></span><br><span class="line"> <span class="built_in">sleep</span> 10</span><br><span class="line"><span class="keyword">done</span></span><br></pre></td></tr></table></figure><p>脚本保存为<code>/opt/pwnfan.sh</code>。接下来是设置脚本开机启动,新建文件<code>/opt/etc/init.d/S82pwnfan</code></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"></span><br><span class="line">ENABLED=<span class="built_in">yes</span></span><br><span class="line">PROCS=/opt/pwnfan.sh</span><br><span class="line">ARGS=</span><br><span class="line">PREARGS=<span class="string">""</span></span><br><span class="line">DESC=<span class="variable">$PROCS</span></span><br><span class="line">PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin</span><br><span class="line"></span><br><span class="line">. /opt/etc/init.d/rc.func</span><br></pre></td></tr></table></figure><h3 id="SWAP设置"><a href="#SWAP设置" class="headerlink" title="SWAP设置"></a>SWAP设置</h3><p>因为要用到图片的自动标签功能,需要使用机器学习,所以所有的1G内存就不够用了。系统自带了<code>zram</code>。但是最终还是要用内存,所以还是不够用,还是要手动在硬盘上设置<code>swap</code>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建SWAP文件并格式化</span></span><br><span class="line"><span class="built_in">dd</span> <span class="keyword">if</span>=/dev/zero of=./swapfile bs=1M count=1536 status=progress</span><br><span class="line"><span class="built_in">chmod</span> 600 ./swapfile</span><br><span class="line">mkswap ./swapfile</span><br><span class="line"></span><br><span class="line"><span class="comment"># 启用SWAP</span></span><br><span class="line">swapon ./swapfile</span><br></pre></td></tr></table></figure><h2 id="文件分享"><a href="#文件分享" class="headerlink" title="文件分享"></a>文件分享</h2><p>文件分享和备份主要用在局域网里面,直接用<code>NFS</code>了<br>通过<code>OMV</code>的页面可以直接操作,只是要注意下权限的问题</p><p>自动挂载没有成功过,现在手动挂载</p><p><code>OMV</code>中自带了一个硬盘,通过页面删除不了,但是可以通过修改配置文件来删除,路径是<code>/etc/openmediavault/config.xml</code>。删除里面的硬盘和共享文件夹。</p><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><p>下载使用的是<code>Aria2</code>,系统中自带了,这里记录下配置文件。之后如果<code>Aria2</code>如果有大版本更新,新增了功能应该会使用<code>Docker</code>版本。</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#允许rpc</span></span><br><span class="line"><span class="attr">enable-rpc</span>=<span class="literal">true</span></span><br><span class="line"><span class="comment">#允许所有来源, web界面跨域权限需要</span></span><br><span class="line"><span class="attr">rpc-allow-origin-all</span>=<span class="literal">true</span></span><br><span class="line"><span class="comment">#允许非外部访问</span></span><br><span class="line"><span class="attr">rpc-listen-all</span>=<span class="literal">true</span></span><br><span class="line"><span class="comment">#RPC端口, 仅当默认端口被占用时修改</span></span><br><span class="line"><span class="comment">#rpc-listen-port=6800</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># token验证</span></span><br><span class="line"><span class="attr">rpc-secret</span>=密码</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">#最大同时下载数(任务数), 路由建议值: 3</span></span><br><span class="line"><span class="attr">max-concurrent-downloads</span>=<span class="number">5</span></span><br><span class="line"><span class="comment">#断点续传</span></span><br><span class="line"><span class="attr">continue</span>=<span class="literal">true</span></span><br><span class="line"><span class="comment">#同服务器连接数</span></span><br><span class="line"><span class="attr">max-connection-per-server</span>=<span class="number">2</span></span><br><span class="line"><span class="comment">#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要</span></span><br><span class="line"><span class="attr">min-split-size</span>=<span class="number">10</span>M</span><br><span class="line"><span class="comment">#单文件最大线程数, 路由建议值: 5</span></span><br><span class="line"><span class="attr">split</span>=<span class="number">10</span></span><br><span class="line"><span class="comment">#下载速度限制</span></span><br><span class="line"><span class="attr">max-overall-download-limit</span>=<span class="number">0</span></span><br><span class="line"><span class="comment">#单文件速度限制</span></span><br><span class="line"><span class="attr">max-download-limit</span>=<span class="number">0</span></span><br><span class="line"><span class="comment">#上传速度限制</span></span><br><span class="line"><span class="attr">max-overall-upload-limit</span>=<span class="number">75</span>K</span><br><span class="line"><span class="comment">#单文件速度限制</span></span><br><span class="line"><span class="attr">max-upload-limit</span>=<span class="number">0</span></span><br><span class="line"><span class="comment">#断开速度过慢的连接</span></span><br><span class="line"><span class="comment">#lowest-speed-limit=0</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">###进度保存相关</span></span><br><span class="line"><span class="attr">input-file</span>=/opt/var/aria2/session.dat</span><br><span class="line"><span class="attr">save-session</span>=/opt/var/aria2/session.dat</span><br><span class="line"><span class="comment">#定时保存会话,需要1.16.1之后的release版</span></span><br><span class="line"><span class="attr">save-session-interval</span>=<span class="number">1800</span></span><br><span class="line"></span><br><span class="line"><span class="attr">log</span>=/opt/var/aria2/log/aria2.log</span><br><span class="line"><span class="attr">log-level</span>=error</span><br><span class="line"></span><br><span class="line"><span class="comment">#文件保存路径, 默认为当前启动位置</span></span><br><span class="line"><span class="attr">dir</span>=/sharedfolders/exos/Download</span><br><span class="line"><span class="comment">#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本</span></span><br><span class="line"><span class="comment">#disk-cache=0</span></span><br><span class="line"><span class="comment">#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)</span></span><br><span class="line"><span class="comment">#enable-mmap=true</span></span><br><span class="line"><span class="comment">#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长</span></span><br><span class="line"><span class="comment">#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持</span></span><br><span class="line"><span class="attr">file-allocation</span>=falloc</span><br><span class="line"></span><br><span class="line"><span class="comment">###BT相关</span></span><br><span class="line"><span class="comment">#启用本地节点查找</span></span><br><span class="line"><span class="attr">bt-enable-lpd</span>=<span class="literal">true</span></span><br><span class="line"><span class="attr">enable-dht</span>=<span class="literal">true</span></span><br><span class="line"><span class="attr">enable-peer-exchange</span>=<span class="literal">true</span></span><br><span class="line"><span class="comment">#添加额外的tracker</span></span><br><span class="line">bt-tracker=</span><br><span class="line"><span class="comment">#种子最大连接数</span></span><br><span class="line"><span class="comment">#bt-max-peers=55</span></span><br><span class="line"><span class="comment">#强制加密, 防迅雷必备</span></span><br><span class="line"><span class="comment">#bt-require-crypto=true</span></span><br><span class="line"><span class="comment">#当下载的文件是一个种子(以.torrent结尾)时, 自动下载BT</span></span><br><span class="line"><span class="attr">follow-torrent</span>=<span class="literal">true</span></span><br><span class="line"><span class="comment">#BT监听端口, 当端口屏蔽时使用</span></span><br><span class="line"><span class="comment">#listen-port=6881-6999</span></span><br><span class="line"><span class="attr">seed-time</span>=<span class="number">60</span></span><br><span class="line"><span class="attr">seed-ratio</span>=<span class="number">1</span></span><br></pre></td></tr></table></figure><p>bt-tracker从<a href="https://www.yaozuopan.top/index.php/archives/1014/">中国可用的 BT Tracker 服务器列表</a>获取,逗号分隔</p><h2 id="照片"><a href="#照片" class="headerlink" title="照片"></a>照片</h2><p>照片的处理就比较麻烦,期望本地版<code>Google Photo</code>带着改良的<code>UI</code>,但是现在也没有找到特别满意的。这里提供两个可用的:<a href="https://photoprism.app/features">PhotoPrism</a>和<a href="https://bpatrik.github.io/pigallery2/">PiGallery2</a>。两个都可以<code>Docker</code>部署,配置都在连接里有。</p><ul><li><code>PiGallery2</code>可以显示人脸,但是所有的信息都需要手动写入<code>Exif</code>。</li><li><code>PhotoPrism</code>带一点点<code>AI</code>识别(需要大量内存),但是人脸部分还没有实现。新增照片后还需要建立索引。<code>Docker</code>需要用<code>photoprism-arm64</code>镜像。</li></ul><h2 id="Jellyfin"><a href="#Jellyfin" class="headerlink" title="Jellyfin"></a>Jellyfin</h2><p>没钱,所以用的还是<code>Jellyfin</code>。<code>Docker</code>部署没什么好说的,重点说一下需要装的插件。</p><p><del>- <code>Douban</code>用于抓取电影电视剧的豆瓣信息。其中电视剧需要按照季分开。但是这个插件已经很久不更新了,社区有个<a href="https://github.com/Libitum/jellyfin-plugin-douban/issues/45">替代方案</a>。到不能用的时候再替换吧</del></p><p><del>- <code>AVDC</code>用来抓取日本电影的信息。<a href="https://github.com/xjasonlyu/jellyfin-plugin-avdc">插件本体</a>需要搭配<a href="https://github.com/xjasonlyu/avdc-api/wiki/Docker%E5%AE%89%E8%A3%85%EF%BC%88%E6%8E%A8%E8%8D%90%EF%BC%89">远程工具</a>部署在<code>VPS</code>上使用。</del></p><ul><li><code>opendouban</code>用于抓取电影电视剧的豆瓣信息。其中电视剧需要按照季分开。<a href="https://github.com/caryyu/jellyfin-plugin-opendouban">插件本体</a>需要搭配<a href="https://github.com/caryyu/douban-openapi-server">远程工具</a>部署在<code>VPS</code>上使用。</li><li><a href="https://javtube.github.io/README_ZH.html">javtube</a>用来抓取日本电影的信息。<a href="https://github.com/javtube/jellyfin-plugin-javtube">插件本体</a>需要搭配<a href="https://github.com/javtube/javtube-server-releases">远程工具</a>部署在<code>VPS</code>上使用,虽然官方推荐是部署在<a href="https://github.com/javtube/javtube-server-heroku">Heroku</a>上</li></ul><p>因为性能拉垮,<code>WEB</code>播放视频会比较吃力,上PC上有客户端内置了<code>MPV</code>,手机上使用<code>Jellyfin</code>客户端可以调用<code>MPV</code>播放。</p><p>听音乐的话,手机上另外有<a href="https://github.com/dkanada/gelli">Gelli</a></p><p><a href="https://jellyfin.org/docs/general/clients/index.html">其他平台</a>的话基本上也有对应的客户端</p><p>但是现在局域网内还是挂载之后本地看,在外面的话就需要内网穿透</p><h2 id="FRP"><a href="#FRP" class="headerlink" title="FRP"></a>FRP</h2><p>内网穿透用的是<code>frp</code>的方案,主要是需要<code>VPS</code>部署<code>Server</code>端,本地运行<code>Client</code>端,都可以使用<code>Docker</code>部署</p><ul><li>Server frps.ini</li></ul><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[common]</span></span><br><span class="line"><span class="attr">bind_port</span> = <span class="number">7000</span></span><br><span class="line"><span class="attr">dashboard_port</span> = <span class="number">7500</span></span><br><span class="line"><span class="attr">dashboard_user</span> = admin</span><br><span class="line"><span class="attr">dashboard_pwd</span> = pwd</span><br><span class="line"><span class="attr">auto_token</span> = auth</span><br></pre></td></tr></table></figure><p>其中<code>dashboard_pwd</code>用于<code>dashboard</code>登陆,<code>auto_token</code>用于<code>Server</code>和<code>Client</code>之间通信</p><ul><li>Client fprc.ini</li></ul><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[common]</span></span><br><span class="line"><span class="attr">server_addr</span> = </span><br><span class="line"><span class="attr">server_port</span> = <span class="number">7000</span></span><br><span class="line"><span class="attr">auto_token</span> = auth</span><br><span class="line"></span><br><span class="line"><span class="section">[aria]</span></span><br><span class="line"><span class="attr">type</span> = tcp</span><br><span class="line"><span class="attr">local_ip</span> = <span class="number">127.0</span>.<span class="number">0.1</span></span><br><span class="line"><span class="attr">local_port</span> = <span class="number">8081</span></span><br><span class="line"><span class="attr">remote_port</span> = <span class="number">8081</span></span><br></pre></td></tr></table></figure><p>因为是用来对外提供web服务,<code>type</code>只需要<code>tcp</code>。</p>]]></content>
<summary type="html"><p>买了矿渣<code>我家云</code>作为<code>NAS</code>。</p>
<!---more--->
<h2 id="硬件设备"><a href="#硬件设备" class="headerlink" title="硬件设备"></a>硬件设备</h2><p><</summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>使用小米</title>
<link href="https://whitecodes.github.io/2021/01/phone-root/"/>
<id>https://whitecodes.github.io/2021/01/phone-root/</id>
<published>2021-01-01T13:36:49.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>买了新手机<code>Redmi K30 Pro Zoom Edition</code>,带的系统是<code>MIUI 12.0.9</code>,这里写下刷机使用的记录</p><span id="more"></span><h2 id="解锁Bootloader"><a href="#解锁Bootloader" class="headerlink" title="解锁Bootloader"></a>解锁Bootloader</h2><p>要刷机、<code>ROOT</code>的前提是解锁<code>Bootloader</code>。小米的解锁的方式就比较花时间,但是总比没有提供解锁方法的好。</p><h3 id="绑定小米账户"><a href="#绑定小米账户" class="headerlink" title="绑定小米账户"></a>绑定小米账户</h3><p>解锁需要在手机系统内绑定小米账户,绑定的时候还需要插入Sim卡。绑定页面的打开路径是<code>设置</code>-><code>更多设置</code>-><code>开发者选项</code>-><code>设备解锁状态</code></p><h3 id="下载解锁工具"><a href="#下载解锁工具" class="headerlink" title="下载解锁工具"></a>下载解锁工具</h3><p>小米官方只提供了在<code>windows</code>下使用的解锁工具,其他系统可以用第三方的解锁工具<a href="https://www.xiaomitool.com/V2/">XiaoMiTool V2</a></p><p>在<code>AUR</code>中也有这个工具<a href="https://aur.archlinux.org/packages/xiaomitool-v2/">xiaomitool-v2</a></p><h3 id="尝试解锁"><a href="#尝试解锁" class="headerlink" title="尝试解锁"></a>尝试解锁</h3><p>手机上开始<code>USB调试</code>,数据线连接。<br>命令行<code>ADB</code>检查连接了。<br>运行<code>xiamitool</code>。<br>嗯……需要登录,使用和之前绑定用的同一个账户。<br>工具带有引导的,一步步走下去,手机重启进入<code>fastboot</code>,然后工具就不动了,直到超时……</p><p>命令行手动用<code>sudo fastboot device</code>检查下设备连着的。然后仔细想想猜测工具也需要运行这个命令,那么工具也需要使用高权限运行。</p><p>用命令行添加<code>sudo</code>执行,结果是报错需要等待7天。</p><p>等呗……</p><p>在等的过程中尝试在不<code>ROOT</code>的情况下使用手机</p><p>继续等呗……</p><h2 id="7天后刷入-recovery"><a href="#7天后刷入-recovery" class="headerlink" title="7天后刷入 recovery"></a>7天后刷入 recovery</h2><p>7天后终于可以解锁<code>Bootloader</code>了。</p><p>提前手动下载了对应的<code>twrp</code>版本,这里用的是<code>recovery-TWRP-3.4.1B-0328-REDMI_K30PRO-CN-wzsx150.img</code>。</p><p>运行<code>sudo xiamitool</code>,登录用户,然后解锁。</p><p>之后刷入<code>Recovery</code>。<br>刷入的时候会搜索网络,这个时候断开网络就会出现本地选择的选项,选择提前下载好的<code>twrp.img</code>就可以了</p><p>这里提供手动刷入的方法</p><p>解锁还是要使用工具</p><ol><li>手动进入<code>fastboot</code></li></ol><p>手机关机后,同时按住开机键和音量下,震动后松开开机键,出现 <strong>蓝色</strong> 的<code>fastboot</code>字样和米兔图案。</p><ol start="2"><li>刷入<code>recovery</code></li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">fastboot devices</span><br><span class="line">fastboot flash recovery twrp.img</span><br><span class="line">fastboot boot twrp.img</span><br></pre></td></tr></table></figure><ol start="3"><li>清除数据</li></ol><p>不清楚这步是不是必需的</p><p>跳过输入密码,确认允许修改system分区<br>清除->格式化DATA分区,这步会清除之前系统中保存的所有数据<br>清除->高级清除选项->勾选Dalvik/ART Cache+Cache->确认清除<br>重启->Recovery</p><p>正常的情况下会重启进入<code>recovery</code></p><h2 id="刷入系统"><a href="#刷入系统" class="headerlink" title="刷入系统"></a>刷入系统</h2><p>接下来就是选择系统了</p><p>刷入国际版<code>MIUI</code>:主要尝试了<a href="https://xiaomi.eu/community/forums/miui-12.206/">xiaomi.eu</a>,丢失了一些国内的特性。比较重要的是没了<code>AI电话助手</code>。</p><p>刷入基于<code>AOSP</code>或者基于<code>LineageOS</code>的其他<code>ROM</code>:基本会丢失所有<code>MIUI</code>的特性,包括摄像头。主摄基本都可用,但是其他摄像头成像都不理想。</p><p>我选择的是<a href="https://forum.xda-developers.com/t/rom-11-0-official-lmi-crdroid-v7-2-11-01-2021.4201615/">crDroid</a>。主要是讨厌<code>MIUI</code>的大圆角。另外在试用<code>xiaomi.eu</code>中发现<code>小米相册</code>有大量的wifi上传流量。</p><p>按照帖子中的流程下载<code>miui_LMIGlobal_V12.2.4.0.RJKMIXM_682e9ad14f_11.0</code>、<code>crDroid Rom</code>、<code>openGapps</code>、<code>Magisk</code>。</p><p>刷入的流程按照帖子中的就可以了。</p><p><code>crDroid</code>中大大小小的<code>bug</code>其实不少。其中比较大的就是<code>支付宝</code>不能打开网页,这个是可以<a href="https://forum.xda-developers.com/t/rom-11-0-official-lmi-crdroid-v7-2-11-01-2021.4201615/page-3#post-84111771">修复</a>的:</p><blockquote><p>for those having problems on viewing content of Chinese apps from Alibaba(like Alipay, Taobao, DingTalk), just remove in root/product/build.prop: debug.hwui.renderer=skiavk or change it to debug.hwui.renderer=skiagl</p></blockquote><p>另外还有<code>bug</code>是在锁屏界面:屏下指纹解锁和双击亮屏有冲突;面部识别解锁失败后摄像头会反复升起</p><h2 id="摄像头"><a href="#摄像头" class="headerlink" title="摄像头"></a>摄像头</h2><p>使用第三方<code>rom</code>比较伤的是摄像头功能只有主摄可用。</p><p>系统自带的不行,那么就找找第三方的。在<a href="https://forum.xda-developers.com/t/google-camera-mod-gcam.4113795/">Google Camera Mod (Gcam)</a>找到了一些。</p><p>目前同时装的是<a href="https://www.celsoazevedo.com/files/android/google-camera/dev-urnyx05/">Urnyx05</a>和<a href="https://www.celsoazevedo.com/files/android/google-camera/dev-arnova8G2-beta/">Arnova8G2</a>,其中<code>Urnyx05</code>有<code>Zoom Edition</code>的配置文件,现在当作主力在用。</p><h2 id="修改系统圆角"><a href="#修改系统圆角" class="headerlink" title="修改系统圆角"></a>修改系统圆角</h2><p>讨厌<code>MIUI</code>的大圆角,<code>Android 11</code>的圆角也有点不能忍。<br><code>Masgisk</code>有模块<a href="https://github.com/Magisk-Modules-Repo/G-VisualMod">G-Visual Mod</a>可以修改圆角半径。</p>]]></content>
<summary type="html"><p>买了新手机<code>Redmi K30 Pro Zoom Edition</code>,带的系统是<code>MIUI 12.0.9</code>,这里写下刷机使用的记录</p></summary>
<category term="App" scheme="https://whitecodes.github.io/tags/App/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>在没有ROOT权限的限制下使用小米</title>
<link href="https://whitecodes.github.io/2021/01/miui-without-root/"/>
<id>https://whitecodes.github.io/2021/01/miui-without-root/</id>
<published>2021-01-01T13:36:39.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>在等待解锁<code>Bootloader</code>的时候,尝试在没有获得<code>ROOT</code>权限的情况下使用手机。这里记录下尝试过程。</p><span id="more"></span><h2 id="想要使用的App"><a href="#想要使用的App" class="headerlink" title="想要使用的App"></a>想要使用的App</h2><p><a href="https://appops.rikka.app/">App Ops</a></p><p><a href="https://play.google.com/store/apps/details?id=com.fb.fluid">Fluid Navigation Gestures</a></p><p><a href="https://sr.rikka.app/">Storage Isolation</a></p><p><a href="https://github.com/RikkaApps/WADB">WADB</a></p><p><a href="https://play.google.com/store/apps/details?id=web1n.stopapp">小黑屋</a></p><h2 id="尝试-Shizuku-绕过ROOT权限"><a href="#尝试-Shizuku-绕过ROOT权限" class="headerlink" title="尝试 Shizuku 绕过ROOT权限"></a>尝试 Shizuku 绕过ROOT权限</h2><p>通过<code>Shizuku</code>可以使其他应用调用高权限的 API。启动<code>Shizuku</code>看介绍可以通过<code>ADB</code>命令来实现,可以不依赖系统的<code>root</code>。</p><p>在<code>Shizuku</code>的<a href="https://shizuku.rikka.app/download.html">下载页面</a>提供了4中下载方式:</p><ul><li><code>Google Play</code>在没有安装代理的情况下受网络影响不行</li><li><code>GitHub Release</code>尝试了,同样因为网络的原因不行</li><li><code>Coolapk</code>页面原本是提供<code>apk</code>文件的下载的,现在需要通过应用扫码才能下载,不行</li><li>剩下的就是<code>IzzyOnDroid F-Droid Repository</code>,幸好可以直接下载。</li></ul><p>接下来是运行<code>Shizuku</code>,提供了3种方式:</p><ul><li><code>ROOT</code>首先被排除,有<code>ROOT</code>权限也就没有这篇<code>blog</code>了</li><li><code>Wireless debugging</code>因为<code>MIUI</code>没有提供这个选项,虽然是基于<code>Android 10</code>的</li><li>剩下的选择就是使用<code>ADB</code>了</li></ul><ol><li>开启<code>开发者选项</code>:在<code>设置</code>-><code>我的设备</code>-><code>全部参数</code>页面上连续点击<code>MIUI 版本</code>就会进入<code>开发者模式</code>。</li><li>开启<code>ADB</code>选项:在<code>设置</code>-><code>更多设置</code>-><code>开发者选项</code>-><code>调试</code>页面打开<code>USB 调试</code>和<code>USB 调试(安全设置)</code></li><li>数据线连接手机和PC,在弹出的<code>USB 的用途</code>弹框中,从<code>仅限充电</code>修改为<code>传输文件(MTP)</code>。否则可能会连接失败</li><li>在PC上开终端输入<code>adb devices</code>检查有没有出现目标设备</li><li>输入命令启动<code>Shizuku</code></li></ol><blockquote><p>adb shell sh /data/user_de/0/moe.shizuku.privileged.api/start.sh</p></blockquote><p>一开始的时候连着线显示:<code>Shizuku</code>正在运行,拔掉线后就停止运行了。参考<a href="https://shizuku.rikka.app/zh-hans/guide/setup.html">用户指南</a>最后的方法</p><blockquote><p>你可以尝试打开网络 adb(使用指令<code>adb tcpip 5555</code>)后再启动 Shizuku。</p></blockquote><p>使用这个方法后的确可以保持<code>Shizuku</code>运行,但是在运行<code>App Ops</code>请求相关权限的时候发现没用。然后才看到了在<code>用户指南</code>上的说明</p><blockquote><p>对于 MIUI 11 及以上版本,你必须在 Shizuku 内授予使用者应用权限。这是因为自定义权限功能被破坏,参见 <a href="https://github.com/RikkaApps/Shizuku/issues/45">Shizuku #45</a> 和 <a href="https://github.com/android-in-china/Compatibility/issues/16">android-in-china/Compatibility #16</a></p></blockquote><p>到这里,我放弃了使用<code>Shizuku</code></p><h2 id="使用Google服务"><a href="#使用Google服务" class="headerlink" title="使用Google服务"></a>使用Google服务</h2><p><code>MIUI</code>在<code>设置</code>-><code>帐号与同步</code>-><code>谷歌基础服务</code>提供了一个开关。具体有什么作用不清楚,但是我还是先打开了。</p><p>在自带<code>应用商店</code>中可以搜索<code>Google</code>可以看到<code>Google Play 商店</code>。</p><p>代理用的是<code>v2rayNG</code>,网上找了几个都是在国内不能正常访问的,最后还是使用<code>奶牛快传</code>传了<code>apk</code>到手机中,手动安装。</p><p>这样基本就可以使用<code>Google</code>服务了。</p><h2 id="使用管理员模式绕过root"><a href="#使用管理员模式绕过root" class="headerlink" title="使用管理员模式绕过root"></a>使用管理员模式绕过root</h2><p>在<code>App Ops</code>中看到还有一个<code>托管设备管理员模式</code>就尝试用这个。<br>参考<a href="https://github.com/web1n/Stopapp-Docs/blob/master/Device%20Owner%20%EF%BC%88%E5%85%8D%20root%EF%BC%89%E6%A8%A1%E5%BC%8F%E8%AE%BE%E7%BD%AE.md">小黑屋免 Root 模式使用配置方法</a>来操作。</p><ol><li>开启<code>ADB</code>,手机上记得开启<code>USB 调试(安全设置)</code></li><li>注销所有登录的账户,包括小米账户</li><li>如果您之前设置过访客模式、应用双开或是多用户设置等,也需要一并关闭或删除</li><li>在电脑上执行命令:</li></ol><blockquote><p>adb shell dpm set-device-owner web1n.stopapp/.receiver.AdminReceiver</p></blockquote><p>现在<code>小黑屋</code>和<code>App Ops</code>都可以运行了。</p><p><code>FNG</code>在隐藏导航键的时候需要高权限,需要用到<code>ADB</code></p><blockquote><p>adb shell pm grant com.fb.fluid android.permission.WRITE_SECURE_SETTINGS</p></blockquote><p><code>Storage Isolation</code>和<code>WADB</code>都确切要求<code>ROOT</code>权限,无解。</p><p>在没有获取<code>ROOT</code>权限情况下,能做就到这里了。之后在解锁<code>Bootloader</code>前还有更多的使用,我也会更新在这里。</p>]]></content>
<summary type="html"><p>在等待解锁<code>Bootloader</code>的时候,尝试在没有获得<code>ROOT</code>权限的情况下使用手机。这里记录下尝试过程。</p></summary>
<category term="App" scheme="https://whitecodes.github.io/tags/App/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>入冬</title>
<link href="https://whitecodes.github.io/2020/12/winter/"/>
<id>https://whitecodes.github.io/2020/12/winter/</id>
<published>2020-12-20T08:43:37.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>天气冷了,杭州进入冬天了。经历了搬家之后,稳定下来,开始准备冬眠的窝。</p><span id="more"></span><h2 id="国庆不出门"><a href="#国庆不出门" class="headerlink" title="国庆不出门"></a>国庆不出门</h2><p>上次写blog还是在9月,那就从十月开始讲起。</p><p>国庆一如既往地没有出门,也没有回家。告诉家里不回家的计划的时候明显感受到了失望的情绪……</p><p>然后在家学习写手机应用。一遍看视频,一遍按照视频上代码敲。感觉还行:<code>Kotlin</code>很好用。<br>编码的提交一直持续的国庆假期结束前。然后项目就一直都没有打开过。</p><h2 id="搬家"><a href="#搬家" class="headerlink" title="搬家"></a>搬家</h2><p>搬家比较突然。<br>周末的时候,合租的小伙伴和同事去了嘉兴,见了小伙伴的同学一个妹子。之后妹子入职了小伙伴的公司。然后就提出要不要三个人一起租房子。头脑一热我就同意了。</p><p>房子是妹子找的,看了不是特别满意。卫生间很小,里面还塞了洗衣机。厨房基本可以算没有。三室一厅,那个厅算是过道吧。房间都没有阳台,晾衣服也是个麻烦事。</p><p>房间入口在户型的最里面,走过长长窄窄的过道后才能进房间。自行车推不进去,只能放地下车库。</p><p>找的小区是一个旧小区,周围逛了一下,感觉是两个小区形成了一个独立的生态,是个其他地方没有接触的样子。中午出门吃饭逛了一圈,连黄焖鸡米饭都不好吃!</p><p>晚上睡前就打算搬家了</p><h2 id="再次搬家"><a href="#再次搬家" class="headerlink" title="再次搬家"></a>再次搬家</h2><p>下定决心之后就是找房子。围绕着公司找房子,另外开始买搬家用到的<a href="https://detail.tmall.com/item.htm?id=564766664703">压缩袋</a>和<a href="https://detail.tmall.com/item.htm?id=624412537258">收纳箱</a>。</p><p>在豆瓣租房小组找到了现在的房子。是二房东,房间很大,原布局,没有阳台但是有大窗户。光照还好。卫生间和厨房够大,但是有点脏乱。看下来感觉不是城市出租房,反而有点乡下自家房的感觉。房东租的比较急,看房第二天的周末就再次搬家了。</p><p>买的收纳箱还没有收到,去超市买了一个类似的箱子。然后收拾东西,再次搬家。</p><h2 id="过冬"><a href="#过冬" class="headerlink" title="过冬"></a>过冬</h2><p>搬家的过程中丢了大量的东西,搬进来就感觉少东西。买了衣叉、垃圾桶、畚箕。从网上挑了<a href="https://detail.tmall.com/item.htm?id=45929200448">扫把</a>,新拿到很好用。</p><p>气温下降后,测试了空调,没有电阻加热的功能,不怎么给力的样子,就考虑另外买加热的设备。原本打算买<a href="https://www.mi.com/buy/detail?product_id=11086">米家智能电暖器</a>。但是之后测试空调又是有效的,而且热效率上还是使用空调的比较高,就放弃了买类似大功率的设备。还是打算买一台小型的。不打算买棉拖了,天冷的时候就算有棉拖还是会脚冷。挑挑拣拣买了这款<a href="https://item.taobao.com/item.htm?id=629376023127">制热风扇</a>。用起来还行,搭配小米智能插座实现了远程控制。</p><p>衣服上买了迪卡侬的抓绒衣和裤子:衣服薄了,现在丢在公司里;裤子大了一号,暖和还是暖和的,日常还能穿。想要另外在买一条的时候发现已经断货了。</p><p>现在在看要不要再买一件Helikon L7的<a href="https://item.taobao.com/item.htm?id=41605355615">棉衣</a>,或者再给自己加床<a href="https://detail.tmall.com/item.htm?id=541421319651">被子</a></p><p>既然说到了买的东西就顺便说说兑换的哪些东西。快过年了,信用卡和支付宝会员都提醒有积分要过期了。招行的信用卡积分没什么可以兑换的实物,只能用来兑换还款优惠券,15块钱也是钱。支付宝可以兑换的就比较多了:换了护手霜和雨伞。</p><p>护手霜有四支,慢慢用着吧。雨伞看起来不错,放公司备用了。</p><h2 id="萨莉亚"><a href="#萨莉亚" class="headerlink" title="萨莉亚"></a>萨莉亚</h2><p>最后轮到说说吃的。杭州开了<code>萨莉亚</code>,一直想去吃的。挑了一个周末一个人去吃了。在天街商场的六楼。找店找了来回两遍,是在六楼的尽头。墙面有个弧度,要走过去才能看到。去的时间是在饭点之前,没有排队等位。一个人点了水果色拉、蜗牛、羊排。上菜速度的确快。味道也还行,价格也还可以接受。</p>]]></content>
<summary type="html"><p>天气冷了,杭州进入冬天了。经历了搬家之后,稳定下来,开始准备冬眠的窝。</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
</entry>
<entry>
<title>坏年份坏夏天</title>
<link href="https://whitecodes.github.io/2020/09/bad-year-bad-summer/"/>
<id>https://whitecodes.github.io/2020/09/bad-year-bad-summer/</id>
<published>2020-09-06T08:27:59.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>疫情的影响蔓延到了夏天,感觉越来越不开心了</p><span id="more"></span><h2 id="落下的月份"><a href="#落下的月份" class="headerlink" title="落下的月份"></a>落下的月份</h2><p>落下了几个月没写blog,现在回忆起来什么都想不起来。</p><p>上班还是戴口罩,还是不喜欢出门。</p><p>工作还是花时间换工资。</p><p>生活上没有多少起伏,疫情不出门,担心的只有我的体重。</p><h2 id="最近的事情"><a href="#最近的事情" class="headerlink" title="最近的事情"></a>最近的事情</h2><p>买了<code>小米</code>的体重秤,原本打算用官方的APP的,然后发现在用的<code>Notify & Fitness for Mi Band</code>可以适配体重秤。</p><p>算是意外的小惊喜。</p><p>称重的结果超过自己的预计,大概要减肥了,然后外卖开始点<code>鸡胸肉沙拉</code>。</p><p>有些店的鸡胸肉居然是辣的,超出想象的范围。</p><p>还有一点就是感觉自己周末的时候出门太少了,最近开始在傍晚的时候出门骑车。出门一次固定掉一斤,有点奇怪。</p><p>天气变热了,住的地方有空调,但是有些时候还是会感觉有点闷,买了电扇,<code>IRIS</code>家的最便宜的空气循环扇。看了小米家的,带智能控制的,太贵了没买。</p><p>风扇不带智能控制,而且连定时的没有,另外买了小米插座来实现定时功能。</p><p>然后找了智能家居相关的东西,<code>Home Assistant</code>可以接入,但是只有一个设备还需要 一个常开的一个客户端,感觉不值得就放弃了。</p><p>小米插座用着还行,然后找带智能控制的排插。因为热水壶盖子坏了,基本不能自动跳掉。最适合的是带智能控制的可以控制单个插孔开关的排插,找了一圈发现小米没有出,只有控制整个排插断电的。然后又入了一个智能插座来控制热水壶,差不多时间用定时关闭功能来实现水烧开后断电。</p><p>有报告说<code>Home Assistant</code>不支持同时接入多个智能插座,那么就更不可能用了。</p><p>其他零零碎碎还买了坐便器盖、洗衣机排水管、纸巾、毛巾</p><h2 id="想买的东西"><a href="#想买的东西" class="headerlink" title="想买的东西"></a>想买的东西</h2><p>想换手机,没有找到完全心仪的,<code>Sony</code>的手机真的一样难尽。退而求其次,看上了小米家的<code>redmi k30 至尊纪念版</code>,性价比高,2K的价格下各种缺陷基本都可以接受了。就是一直缺货。</p>]]></content>
<summary type="html"><p>疫情的影响蔓延到了夏天,感觉越来越不开心了</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
</entry>
<entry>
<title>重新安装 Arch Linux</title>
<link href="https://whitecodes.github.io/2020/06/reinstall-arch-linux/"/>
<id>https://whitecodes.github.io/2020/06/reinstall-arch-linux/</id>
<published>2020-06-21T14:29:38.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>折腾<code>Display manager</code>把系统搞坏掉了,重新安装。这里重新记录安装教程。之前的记录有一些已经变化不适用了。之后如果有变更也会继续更新这里。</p><span id="more"></span><h1 id="安装介质"><a href="#安装介质" class="headerlink" title="安装介质"></a>安装介质</h1><p>使用一个U盘作为安装盘<br>从<a href="https://www.archlinux.org/download/">Arch Linux Downloads</a>下载安装镜像。推荐使用<code>Magnet link</code>下载,也可以使用网页下方的中国镜像直接下载。</p><p><code>Linux</code>环境有<code>dd</code>命令可以直接制作安装U盘。<a href="https://wiki.archlinux.org/index.php/USB_flash_installation_media#Using_dd">详细说明</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">dd</span> bs=4M <span class="keyword">if</span>=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=<span class="built_in">sync</span></span><br></pre></td></tr></table></figure><p><code>windows</code>环境也有对应的工具。印象里直接用<code>微软</code>官方的<a href="https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool">Windows USB/DVD Download Tool</a>就可以制作安装U盘。具体的步骤可以参考<a href="http://bbs.ngacn.cc/read.php?tid=4025346">制作Win7安装U盘的过程</a></p><p><em>注意事项:</em> 这个<code>安装盘</code>可以在日后的维护中当作<code>系统急救盘</code>使用,但是需要隔段时间就更新。</p><h1 id="XPS-的-UEFI-设置"><a href="#XPS-的-UEFI-设置" class="headerlink" title="XPS 的 UEFI 设置"></a>XPS 的 UEFI 设置</h1><p>根据<code>wiki</code>上关于<code>XPS 15 9560</code>的<a href="https://wiki.archlinux.org/index.php/Dell_XPS_15_9560#UEFI">相关说明</a>,安装前需要修改一些<code>UEFI</code>设置。</p><h1 id="安装环境配置"><a href="#安装环境配置" class="headerlink" title="安装环境配置"></a>安装环境配置</h1><p>插上U盘,重启。在出现<code>Dell</code>的图标的时候一直不停按<code>F12</code>,直到出现进度条。之后就进入<code>Boot Menu</code>,选择带<code>USB</code>字样的选项,进入安装环境。</p><p>屏幕是<code>4K</code>的分辨率,默认字体小。先改字体,目前只找到这个字体用的效果比较好</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">setfont latarcyrheb-sun32</span><br></pre></td></tr></table></figure><p>安装过程需要联网,使用 <del><code>wifi-menu</code></del> <code>iwctl</code>来连接网络。具体的用法参考<a href="https://wiki.archlinux.org/title/Iwd#iwctl">iwctl Usage</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># wifi-menu</span></span><br><span class="line">iwctl</span><br><span class="line">ping t.cn -c 4</span><br></pre></td></tr></table></figure><p>安装的时候需要通过软件仓库安装软件。开启时间同步并使用国内的镜像。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">timedatectl set-ntp <span class="literal">true</span></span><br><span class="line">sed -i <span class="string">'/China/!{n;/Server/s/^/#/};t;n'</span> /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><p><strong>上面的修改方法已经无效了,去<a href="https://archlinux.org/mirrorlist/">Pacman Mirrorlist Generator</a>找一份最快的<a href="https://archlinux.org/mirrorlist/?country=CN&protocol=http&protocol=https&ip_version=4&use_mirror_status=on">镜像列表</a>,手动输入下</strong></p><h1 id="分区"><a href="#分区" class="headerlink" title="分区"></a>分区</h1><p>用的是<code>EFI</code>,那就需要一个<code>EFI 系统分区</code>。<code>Arch Linux</code>本身需要一个分区分配给根目录<code>/</code>。以防内存不够用计划分<code>SWAP</code>分区备用。</p><p>计划的分区如下表</p><table><thead><tr><th align="left">分区</th><th align="center">大小</th><th align="center">格式</th><th align="center">路径</th><th align="right">说明</th></tr></thead><tbody><tr><td align="left">nvme0n1p1</td><td align="center">512M</td><td align="center">fat32</td><td align="center">/EFI</td><td align="right">EFI 系统分区</td></tr><tr><td align="left">nvme0n1p2</td><td align="center">8G</td><td align="center">[SWAP]</td><td align="center">[SWAP]</td><td align="right">交换分区</td></tr><tr><td align="left">nvme0n1p3</td><td align="center">160.5G</td><td align="center">btrfs</td><td align="center">/</td><td align="right">根分区</td></tr></tbody></table><p>使用<code>lsblk</code>确定SSD的磁盘名称。结果中带<code>nvme</code>字样的就是笔记本的SSD。其他以<code>loop</code>结尾的可以忽略。</p><p>然后使用<code>parted</code>或者<code>cfdisk</code>进行分区。安装的是<code>Arch Linx</code>单系统,直接删除原有的分区表,直接新建就可以了。</p><p>首先格式化<code>EFI 系统分区</code>,根据wiki上的<a href="https://wiki.archlinux.org/index.php/EFI_System_Partition">EFI 系统分区</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkfs.fat -F32 /dev/nvme0n1p1</span><br></pre></td></tr></table></figure><p>格式化交换分区</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">mkswap /dev/nvme0n1p2</span><br><span class="line">swapon /dev/nvme0n1p2</span><br></pre></td></tr></table></figure><p>格式化根分区,用的<code>btrfs</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkfs.btrfs -L xps /dev/nvme0n1p3</span><br></pre></td></tr></table></figure><p>格式化完成后使用<code>lsblk</code>查看有没有错</p><p>先挂载分区到对应路径</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">mount -o compress=zstd /dev/nvme0n1p3 /mnt</span><br><span class="line"><span class="built_in">mkdir</span> -p /mnt/boot</span><br><span class="line">mount /dev/nvme0n1p1 /mnt/EFI</span><br></pre></td></tr></table></figure><p><em>注意事项:</em> 之后当作<code>系统急救盘</code>的来使用的时候也需要安装上面的来挂载。</p><h1 id="安装系统"><a href="#安装系统" class="headerlink" title="安装系统"></a>安装系统</h1><p>安装基础软件包组<code>base</code>和基础开发包组<code>base-devel</code>,后者用于安装<code>AUR</code>中的软件。<code>Linux</code>内核需要另外安装,已经排除在<code>base</code>组中了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacstrap -i /mnt base linux linux-firmware base-devel</span><br></pre></td></tr></table></figure><p>如果有选项默认回车就可以了。<br>如果之前修改软件仓库服务器用了国内的镜像,安装很快就会完成。</p><h1 id="系统基础配置"><a href="#系统基础配置" class="headerlink" title="系统基础配置"></a>系统基础配置</h1><p>生成分区表。检查一下生成的文件是否正确</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">genfstab -U /mnt >> /mnt/etc/fstab</span><br><span class="line"><span class="built_in">cat</span> /mnt/etc/fstab</span><br></pre></td></tr></table></figure><p>使用<code>arch-chroot</code>进入新系统。接下来的配置都在新系统里进行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">arch-chroot /mnt</span><br></pre></td></tr></table></figure><p>设置时区</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ln</span> -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</span><br></pre></td></tr></table></figure><p>同步硬件时间</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hwclock --systohc</span><br></pre></td></tr></table></figure><p><strong>安装编辑器</strong><br>之后要编辑文件,这里先安装一个编辑器,简单的编辑用<code>nano</code>。安装系统后如果有复杂的编辑就直接使用<code>vscode</code>了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S nano</span><br></pre></td></tr></table></figure><p>区域设置</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/locale.gen</span><br></pre></td></tr></table></figure><p>去除<code>en_US.UTF-8 UTF-8</code>和<code>zh_CN.UTF-8 UTF-8</code>前的<code>#</code>,保存退出<code>nano</code><br>生成<code>locale</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">locale-gen</span><br></pre></td></tr></table></figure><p>设置默认 locale</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">'LANG=zh_CN.UTF-8'</span> > /etc/locale.conf</span><br></pre></td></tr></table></figure><p>主机名设置,这里直接设置为<code>xps</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> xps > /etc/hostname</span><br><span class="line">nano /etc/hosts</span><br></pre></td></tr></table></figure><p>输入以下内容,保存退出</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">127.0.0.1 localhost</span><br><span class="line">::1 localhost</span><br><span class="line">127.0.0.1 xps.localdomain xps</span><br></pre></td></tr></table></figure><p>设置<code>root</code>密码<br><strong>重要,必须记住的密码</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">passwd</span><br></pre></td></tr></table></figure><p>按提示输入密码</p><p>日常使用的话,基于安全原因不使用高权限的<code>root</code>用户。新建用户作为日常使用。这里以<code>archie</code>作为用户名。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">useradd -m -g <span class="built_in">users</span> -G wheel -s /bin/bash archie</span><br><span class="line">passwd archie</span><br></pre></td></tr></table></figure><p>按提示输入密码。日常使用就以<code>archie</code>用户配合设置的密码登录。日常使用中偶尔需要<code>root</code>权限,这里配置<code>sudo</code>用来临时提权</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">EDITOR=nano visudo</span><br></pre></td></tr></table></figure><p>找到<code>Uncomment to allow members of group wheel to execute any command</code>这行,删除下一行的<code>#</code>,保存退出。<br>关于<code>sudo</code>的用法和更多配置<a href="https://wiki.archlinux.org/index.php/Sudo">参考</a></p><p>安装引导程序。这里直接使用传统的<code>GRUB</code>了</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">pacman -S dosfstools grub efibootmgr</span><br><span class="line">grub-install --target=x86_64-efi --efi-directory=/EFI --bootloader-id=grub</span><br><span class="line">grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><p>至此,<code>Arch Linux</code>可以算是安装完成了。根据官网的教程这个时候应该要重启了。但是并不能作为日常使用。接下来需要进行基本的配置和安装必要的软件,包括桌面环境</p><h1 id="桌面环境"><a href="#桌面环境" class="headerlink" title="桌面环境"></a>桌面环境</h1><p>因为显示驱动的关系,开关机会挂起。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/default/grub</span><br></pre></td></tr></table></figure><p>在<code>GRUB_CMDLINE_LINUX_DEFAULT</code>追加<code>acpi_rev_override=1</code>。加完之后该行差不多就是这个样子</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_rev_override=1"</span><br></pre></td></tr></table></figure><p>使用<code>xorg</code>作为图形界面的接口。这里偷懒直接全部安装了,反正存储不是特别紧张</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S xorg-server</span><br></pre></td></tr></table></figure><p>不要直接安装<code>xorg</code>软件组,里面带有一些游戏……</p><p>不喜欢<code>gnome</code>,所以安装<code>KDE Plasma</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S plasma-meta</span><br></pre></td></tr></table></figure><p>查看<code>plasma-meta</code>中包含的<a href="https://www.archlinux.org/packages/extra/any/plasma-meta/">软件</a>,里面用不到的可以删掉。</p><p>安装显示管理器<code>sddm</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S sddm</span><br></pre></td></tr></table></figure><p><code>sddm</code>默认不需要配置,直接启用就可以了</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl <span class="built_in">enable</span> sddm</span><br></pre></td></tr></table></figure><p>这样开机就能启动图形环境了,前面已经配置了中文环境,但是没有中文字体。不安装字体就会显示“豆腐”</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S noto-fonts-cjk noto-fonts-emoji</span><br></pre></td></tr></table></figure><h1 id="网络配置"><a href="#网络配置" class="headerlink" title="网络配置"></a>网络配置</h1><p><code>XPS 15 9560</code>没有网口,这里直接安装无线的相关包</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S iw wpa_supplicant dialog </span><br></pre></td></tr></table></figure><p>安装网络管理包,这里貌似要安装<code>gnome</code>的才有用,原因存疑</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S networkmanager</span><br></pre></td></tr></table></figure><p>接下来重启进入新系统</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">exit</span></span><br><span class="line">reboot</span><br></pre></td></tr></table></figure><p>这里关机重启<code>XPS</code>可能会挂起,长时间无响应。长按电源键直接关机。然后按电源键开机进入新系统。</p><p><em>注意事项</em><br>安装用的U盘可以拔掉了</p><p>进入系统之后,会发现显示的字体特别小,而且没有无线网络。按下<code>Ctrl</code>+<code>Alt</code>+<code>F2</code>,进入<code>tty2</code>,用<code>root</code>帐号登录。<br>先按照之前的步骤设置字体。</p><p>查看端口</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip <span class="built_in">link</span> show</span><br></pre></td></tr></table></figure><p>显示的结果中带<code>wlp</code>项就是无线,这里以<code>wlp3s0</code>为例。上线无线端口,并开启管理服务</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ip <span class="built_in">link</span> <span class="built_in">set</span> wlp3s0 up</span><br><span class="line">systemctl <span class="built_in">enable</span> NetworkManager</span><br></pre></td></tr></table></figure><p>按下<code>Ctrl</code>+<code>Alt</code>+<code>F1</code>,回到图形界面。<br>打开<code>系统设置</code>-><code>显示和监控</code>-><code>显示</code>,设置<code>缩放显示</code>到合适的大小,4K屏的<code>XPS</code>设置<code>200%</code>差不多。确定并应用。</p><p>然后重启,应该可以看到显示的字体可以看了,也可以在默认的右下角设置无线网络连接了。</p><h1 id="安装软件"><a href="#安装软件" class="headerlink" title="安装软件"></a>安装软件</h1><h2 id="终端模拟器"><a href="#终端模拟器" class="headerlink" title="终端模拟器"></a>终端模拟器</h2><p><code>Arch Linux</code>安装软件一般都需要连接网络。先连接网络。<br>现在图形环境没有终端,先安装终端。</p><p>切换到<code>tty2</code>,登录</p><p>安装<code>konsole</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S konsole</span><br></pre></td></tr></table></figure><p>安装完后,<code>exit</code>退出<code>tty2</code>,在图形界面应该可以打开<code>konsole</code>。之后的命令在<code>konsole</code>中执行。</p><h2 id="文件管理器、浏览器、编辑器"><a href="#文件管理器、浏览器、编辑器" class="headerlink" title="文件管理器、浏览器、编辑器"></a>文件管理器、浏览器、编辑器</h2><p>安装文件管理器、浏览器、编辑器。这里用<code>火狐</code>只是临时用用,之后最终使用的是带硬件加速的<code>chromium-vaapi</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S dolphin firefox code</span><br></pre></td></tr></table></figure><h2 id="代理"><a href="#代理" class="headerlink" title="代理"></a>代理</h2><p>代理使用的是<code>clash</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S clash</span><br></pre></td></tr></table></figure><p>下载代理的配置文件,这里放在<code>Clash.yaml</code>中。记得修改其中的<code>secret</code>,加上dashbroad的访问密码。<br>运行代理</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">clash -f /path/to/Clash.yaml</span><br></pre></td></tr></table></figure><p>在<code>系统设置</code>-><code>网络 设置</code>-><code>代理</code>中选择<code>使用手动配置的代理服务器</code>。输入代理地址和端口,默认配置如下</p><table><thead><tr><th align="left">代理方式</th><th>代理地址</th><th align="right">端口</th></tr></thead><tbody><tr><td align="left">HTTP 代理</td><td>127.0.0.1</td><td align="right">7890</td></tr><tr><td align="left">HTTPS 代理</td><td>127.0.0.1</td><td align="right">7890</td></tr><tr><td align="left">SOCKS 代理</td><td>127.0.0.1</td><td align="right">7891</td></tr></tbody></table><p>代理默认使用的是第一个节点,切换节点打开<a href="http://yacd.haishan.me/">管理网页</a>。如果不能打开就说明当前使用的代理节点挂掉了,先取消代理系统配置。默认的端口号是9090,默认的地址是127.0.0.1。<br>在<a href="http://yacd.haishan.me/#/proxies">管理页面的proxies</a>中选择一个可用的代理节点就可以使用代理来访问了。<br>具体的有没有使用代理可以看<a href="http://yacd.haishan.me/#/connections">connections</a>中的Chains部分</p><h2 id="git-AUR-Helper"><a href="#git-AUR-Helper" class="headerlink" title="git&AUR Helper"></a>git&AUR Helper</h2><p><code>Arch Linux</code>的软件一般的在<code>pacman</code>仓库中,还有一些在<code>AUR</code>中。这里安装<code>yay</code>作为<code>AUR Helper</code>用来安装<code>AUR</code>中的软件。<code>yay</code>本身在<code>AUR</code>中,这里依照<code>github</code>上的<a href="https://github.com/Jguer/yay">说明</a>手动安装</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">pacman -S git</span><br><span class="line">git <span class="built_in">clone</span> https://aur.archlinux.org/yay.git</span><br><span class="line"><span class="built_in">cd</span> yay</span><br><span class="line">makepkg -si</span><br></pre></td></tr></table></figure><p>用<code>yay</code>可以方便地安装<code>AUR</code>中的软件。之后软件的安装和更新都可以使用<code>yay</code>。</p><h1 id="日常软件和配置"><a href="#日常软件和配置" class="headerlink" title="日常软件和配置"></a>日常软件和配置</h1><h2 id="zsh"><a href="#zsh" class="headerlink" title="zsh"></a>zsh</h2><p>默认的<code>bash</code>使用体验一般,安装<code>zsh</code>来加强体验,并且使用<a href="https://codestats.net/">code::stats</a>插件。<br><code>zsh</code>插件使用<code>zgen</code>来管理。直接安装<code>zgen</code>就可以,<code>zsh</code>作为依赖也会安装。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yay zgen</span><br></pre></td></tr></table></figure><p>安装后,输入<code>zsh</code>启动,选择创建一个空的配置文件。然后在<code>.zshrc</code>中加入下面的配置启用<code>zgen</code>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># load zgen</span></span><br><span class="line"><span class="built_in">source</span> <span class="string">"/usr/share/zsh/share/zgen.zsh"</span></span><br></pre></td></tr></table></figure><p>退出<code>zsh</code>,重新打开<code>zsh</code>,输入<code>zgen</code>确认可以使用。退出<code>zsh</code>,再次修改<code>.zshrc</code>来启用<code>zsh</code>的插件。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Created by newuser for 5.8</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># code::stat</span></span><br><span class="line"><span class="built_in">export</span> CODESTATS_API_KEY=<span class="string">"code::stats machine key"</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># load zgen</span></span><br><span class="line"><span class="built_in">source</span> <span class="string">"/usr/share/zsh/share/zgen.zsh"</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># if the init scipt doesn't exist</span></span><br><span class="line"><span class="keyword">if</span> ! zgen saved; <span class="keyword">then</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"Creating a zgen save"</span></span><br><span class="line"></span><br><span class="line"> zgen oh-my-zsh</span><br><span class="line"></span><br><span class="line"> <span class="comment"># plugins</span></span><br><span class="line"> zgen oh-my-zsh plugins/git</span><br><span class="line"> zgen oh-my-zsh plugins/sudo</span><br><span class="line"> zgen oh-my-zsh plugins/command-not-found</span><br><span class="line"> zgen oh-my-zsh plugins/z</span><br><span class="line"> zgen oh-my-zsh plugins/archlinux</span><br><span class="line"> zgen load zsh-users/zsh-syntax-highlighting</span><br><span class="line"> zgen load https://gitlab.com/code-stats/code-stats-zsh.git</span><br><span class="line"> zgen load romkatv/powerlevel10k powerlevel10k</span><br><span class="line"></span><br><span class="line"> <span class="comment"># completions</span></span><br><span class="line"> zgen load zsh-users/zsh-completions src</span><br><span class="line"></span><br><span class="line"> <span class="comment"># save all to init script</span></span><br><span class="line"> zgen save</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># POWERLEVEL9K theme setting</span></span><br><span class="line">POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(<span class="built_in">dir</span> vcs)</span><br><span class="line">POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs <span class="built_in">history</span> <span class="keyword">time</span> battery)</span><br></pre></td></tr></table></figure><p>再次启动<code>zsh</code>可能会进入<code>powerlevel10k</code>的初始化流程,可以直接跳过。</p><p>日常的大部分操作是在<code>Konsole</code>中进行的。在<code>tty</code>中因为缺少部分字体,显示会有不完全的现象。只在<code>Konsole</code>中默认启用<code>zsh</code>。<br><code>设置</code>-><code>编辑当前配置方案</code>-><code>常规</code>-><code>命令</code>中输入<code>zsh</code>的路径,默认是</p><blockquote><p>/bin/zsh</p></blockquote><p><em>注意事项:</em> <code>zsh</code>配置文件没有发挥<code>powerlevel10k</code>的全部功能,感觉还有改进的空间</p><h2 id="yay配置"><a href="#yay配置" class="headerlink" title="yay配置"></a>yay配置</h2><p>这是用来安装软件的相关配置,包括了<code>pacman</code>、<code>makepkg</code>、<code>nano</code>的配置。</p><p>打开<code>pacman</code>的配置文件</p><blockquote><p>/etc/pacman.conf</p></blockquote><p>要做的修改是确保<code>Color</code>选项启用。为了之后安装<code>steam</code>,开启<code>community</code>仓库。为了方便之后的<code>chromium-vaapi</code>,添加<code>Arch Linux CN</code>仓库,关于这个仓库查看<a href="https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/">Arch Linux 中文社区仓库</a>项目主页。仓库镜像写在另一个文件中。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[archlinuxcn]</span><br><span class="line">Include = /etc/pacman.d/mirrorlistcn</span><br></pre></td></tr></table></figure><p><code>mirrorlistcn</code>中内容是<code>Arch Linux CN</code>的镜像地址,格式仿照其他的<code>mirrorlist</code>。</p><p>使用前还需要更新并安装<code>archlinuxcn-keyring</code>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">yay -Syy</span><br><span class="line">yay -S archlinuxcn-keyring</span><br></pre></td></tr></table></figure><p><code>AUR</code>中的部分包需要下载源码后编译打包,在<br>机器内存足够而且多核CPU的情况下,修改<code>makepkg</code>配置经可能加快编译速度。<br>默认配置文件路径</p><blockquote><p>/etc/makepkg.conf </p></blockquote><p>主要修改是使用内存编译,并在压缩中使用多线程。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">BUILDDIR=/tmp/makepkg</span><br><span class="line">COMPRESSZST=(zstd -c -z -q - --threads=7)</span><br></pre></td></tr></table></figure><p><code>yay</code>默认使用<code>diff</code>的方式来显示<code>PKGBUILD</code>,修改为编辑的方式。更多的选项可以参考<a href="https://github.com/Jguer/yay">项目主页</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yay --editmenu --nodiffmenu --save</span><br></pre></td></tr></table></figure><p><code>nano</code>的修改不多,主要是代码高亮。本来想加上行号的,但是跨行复制的时候会把行号也复制出来。<br>默认配置文件路径</p><blockquote><p>/etc/nanorc</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">## To include all existing syntax definitions, you can do:</span></span><br><span class="line">include <span class="string">"/usr/share/nano/*.nanorc"</span></span><br></pre></td></tr></table></figure><p>默认的配置中高亮的格式不多,这个<a href="https://github.com/scopatz/nanorc">项目</a>提供更多的高亮格式。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yay -S nano-syntax-highlighting</span><br></pre></td></tr></table></figure><h2 id="显卡驱动"><a href="#显卡驱动" class="headerlink" title="显卡驱动"></a>显卡驱动</h2><p><em>注意事项:</em><code>Nvidia</code>的驱动一直在更新,这里的说明可能已经过期</p><p>麻烦的是安装<code>Nvidia</code>驱动并使用独立显卡。<del>这里直接参考<a href="https://blog.csdn.net/u014025444/article/details/91454059">网上的教程</a></del></p><p>参考<a href="https://wiki.archlinuxcn.org/wiki/NVIDIA">这个</a></p><p>只需要安装<code>Nvidia</code>驱动,屏蔽<code>initramfs</code>中的<code>kms</code></p><ol><li>安装闭源驱动</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S nvidia nvidia-utils nvidia-settings</span><br></pre></td></tr></table></figure><ol start="2"><li>查看n卡的BusID</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lspci | egrep <span class="string">'VGA|3D'</span></span><br></pre></td></tr></table></figure><ol start="3"><li>修改grub<br><code>nano /etc/default/grub</code></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet initcall_blacklist=simpledrm_platform_driver_init"</span><br></pre></td></tr></table></figure><p>把<code>kms</code>从<code>/etc/mkinitcpio.conf</code>里的<code>HOOKS</code>数组中移除,并重新生成<code>initramfs</code></p><p><em>以下的步骤是失效的</em></p><ol start="3"><li>自动生成配置文件</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nvidia-xconfig</span><br></pre></td></tr></table></figure><p>这步我直接跳过了</p><ol start="4"><li>启动脚本配置</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ nano /usr/share/sddm/scripts/Xsetup</span><br><span class="line">======================================================================</span><br><span class="line">xrandr --setprovideroutputsource modesetting NVIDIA-0</span><br><span class="line">xrandr --auto</span><br></pre></td></tr></table></figure><p>这是<code>SDDM</code>的配置,不同的窗口管理器设置不同</p><ol><li>修改配置文件</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">$ nano /etc/X11/xorg.conf</span><br><span class="line">======================================================================</span><br><span class="line">Section <span class="string">"Module"</span> <span class="comment">#此部分可能没有,自行添加</span></span><br><span class="line"> load <span class="string">"modesetting"</span></span><br><span class="line">EndSection</span><br><span class="line"></span><br><span class="line">Section <span class="string">"Device"</span></span><br><span class="line"> Identifier <span class="string">"Device0"</span></span><br><span class="line"> Driver <span class="string">"nvidia"</span></span><br><span class="line"> VendorName <span class="string">"NVIDIA Corporation"</span></span><br><span class="line"> BusID <span class="string">"1:0:0"</span> <span class="comment">#此处填刚刚查询到的BusID</span></span><br><span class="line"> Option <span class="string">"AllowEmptyInitialConfiguration"</span></span><br><span class="line">EndSection</span><br><span class="line">tails/91454059</span><br></pre></td></tr></table></figure><ol><li>解决画面撕裂问题</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">$ nano /etc/mkinitcpio.conf</span><br><span class="line">======================================================================</span><br><span class="line">MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)</span><br><span class="line">======================================================================</span><br><span class="line"></span><br><span class="line">$ nano /etc/default/grub <span class="comment"># 此处必须是grub引导,其他引导自行百度</span></span><br><span class="line">======================================================================</span><br><span class="line">GRUB_CMDLINE_LINUX_DEFAULT=<span class="string">"quiet nvidia-drm.modeset=1"</span> <span class="comment">#此处加nvidia-drm.modeset=1参数</span></span><br><span class="line">======================================================================</span><br><span class="line"></span><br><span class="line">$ grub-mkconfig -o /boot/grub/grub.cfg <span class="comment"># 就算grub引导,配置文件也可能不在一个地方,请查看清楚</span></span><br></pre></td></tr></table></figure><ol><li><code>nvidia</code>升级时自动更新<code>initramfs</code></li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">mkdir</span> /etc/pacman.d/hooks</span><br><span class="line">$ nano /etc/pacman.d/hooks/nvidia.hook</span><br><span class="line">======================================================================</span><br><span class="line">[Trigger]</span><br><span class="line">Operation=Install</span><br><span class="line">Operation=Upgrade</span><br><span class="line">Operation=Remove</span><br><span class="line">Type=Package</span><br><span class="line">Target=nvidia</span><br><span class="line">Target=linux</span><br><span class="line"><span class="comment"># Change the linux part above and in the Exec line if a different kernel is used</span></span><br><span class="line"></span><br><span class="line">[Action]</span><br><span class="line">Description=Update Nvidia module <span class="keyword">in</span> initcpio</span><br><span class="line">Depends=mkinitcpio</span><br><span class="line">When=PostTransaction</span><br><span class="line">NeedsTargets</span><br><span class="line">Exec=/bin/sh -c <span class="string">'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'</span></span><br></pre></td></tr></table></figure><h3 id="浏览器设置"><a href="#浏览器设置" class="headerlink" title="浏览器设置"></a>浏览器设置</h3><p>内存够大,把浏览器的临时文件放到内存中。在<code>chromium</code>的启动命令后加上<code>%U --disk-cache-dir=/tmp/cache</code></p><p><code>chrome</code>使用的图形化是基于<code>gtk</code>的,文件选择的弹框安装<code>kdialog</code></p><h2 id="steam"><a href="#steam" class="headerlink" title="steam"></a>steam</h2><p>在<a href="https://github.com/ValveSoftware/Proton">Proton</a>的加持下,用<code>Linux</code>玩游戏也不是不行。具体有哪些游戏支持在<code>Linux</code>下运行可以在<a href="https://www.protondb.com/">ProtonDB</a>上查询。</p><p>安装<code>steam</code>需要启用32位源,打开<code>/etc/pacman.conf</code>,启用<code>multilib</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yay -S steam</span><br></pre></td></tr></table></figure><p>如果有问题,那么需要安装其他包,具体看<a href="https://wiki.archlinux.org/index.php/Steam/Troubleshooting">Wiki</a></p><h2 id="手柄连接"><a href="#手柄连接" class="headerlink" title="手柄连接"></a>手柄连接</h2><h2 id="常用软件"><a href="#常用软件" class="headerlink" title="常用软件"></a>常用软件</h2><h3 id="图片查看"><a href="#图片查看" class="headerlink" title="图片查看"></a>图片查看</h3><p><code>qView</code></p><h3 id="编辑器"><a href="#编辑器" class="headerlink" title="编辑器"></a>编辑器</h3><p><code>vscode</code>,使用官方的<code>visual-studio-code-bin</code>包,或者去除微软信息的<code>vscodium</code>包</p><h3 id="IM"><a href="#IM" class="headerlink" title="IM"></a>IM</h3><p>主要用的是<code>telegram</code>,使用<code>telegram-desktop-userfonts</code>包来使用系统字体。</p><h3 id="手机同步"><a href="#手机同步" class="headerlink" title="手机同步"></a>手机同步</h3><p>同步通知用的,<code>kdeconnect</code></p><h3 id="视频播放器"><a href="#视频播放器" class="headerlink" title="视频播放器"></a>视频播放器</h3><p><del><code>bomi</code><br>目前还没有找到合适的<code>MPV</code>前端</del></p><p><code>bomi</code>已经处于不再维护的状态,还是换了<code>MPV</code>。<br><code>OSC</code>用的是<a href="https://github.com/tomasklaen/uosc/">uosc</a></p><p><code>MPV</code>的配置项和插件很多,估计要另外一篇。</p><h3 id="文件管理器"><a href="#文件管理器" class="headerlink" title="文件管理器"></a>文件管理器</h3><p><code>dolphin</code></p><h3 id="输入法"><a href="#输入法" class="headerlink" title="输入法"></a>输入法</h3><p>建议使用<code>fcitx</code><del>,还是使用旧的4版本的<code>fcitx</code>,<code>fcitx5</code>还是有点问题。另外还有安装<code>fcitx-qt5</code>来实现<code>qt</code>支持,安装<code>fcitx-cloudpinyin</code>来实现云拼音支持,安装<code>kcm-fcitx</code>来图形化配置工具</del><br>在用的是<code>fcitx5</code>,基本没问题,还有萌百的词库。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">fcitx5</span><br><span class="line">fcitx5-chinese-addons</span><br><span class="line">fcitx5-configtool</span><br><span class="line">fcitx5-gtk-git</span><br><span class="line">fcitx5-material-color1</span><br><span class="line">fcitx5-pinyin-moegirl</span><br><span class="line">fcitx5-pinyin-zhwiki</span><br><span class="line">fcitx5-qt</span><br></pre></td></tr></table></figure><p>唯一的问题就是和浏览器<code>vivaldi</code>的搭配,这里使用<code>git</code>版本,暂时还没有出现问题。</p><h3 id="截图工具"><a href="#截图工具" class="headerlink" title="截图工具"></a>截图工具</h3><p><code>Spectacle</code></p><h3 id="压缩工具"><a href="#压缩工具" class="headerlink" title="压缩工具"></a>压缩工具</h3><p><code>ark</code><br>额外的格式支持</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">lrzip (optional) - LRZ format support</span><br><span class="line">lzop (optional) - LZO format support</span><br><span class="line">p7zip (optional) - 7Z format support</span><br><span class="line">unarchiver (optional) - RAR format support</span><br><span class="line">unrar (optional) - RAR decompression support</span><br></pre></td></tr></table></figure><h3 id="下载工具"><a href="#下载工具" class="headerlink" title="下载工具"></a>下载工具</h3><p><code>aria2</code></p><h3 id="远程工具"><a href="#远程工具" class="headerlink" title="远程工具"></a>远程工具</h3><p><code>freerdp</code></p><h1 id="系统美化和优化"><a href="#系统美化和优化" class="headerlink" title="系统美化和优化"></a>系统美化和优化</h1><h2 id="字体"><a href="#字体" class="headerlink" title="字体"></a>字体</h2><p>参考<a href="https://wiki.archlinux.org/index.php/Localization_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)/Simplified_Chinese_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E4%BF%AE%E6%AD%A3%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E6%98%BE%E7%A4%BA%E4%B8%BA%E5%BC%82%E4%BD%93%EF%BC%88%E6%97%A5%E6%96%87%EF%BC%89%E5%AD%97%E5%BD%A2">Wiki</a></p><h2 id="主题"><a href="#主题" class="headerlink" title="主题"></a>主题</h2><p>窗口推荐使用<code>Klassy</code>有很多选项</p><p><del>安装主题<code>breeze10-kde</code></del></p><p><del>在<code>应用程序风格</code>-<code>窗口装饰</code>中选择<code>Breeze10</code> 。<code>Opacity</code>设置为 0% ,按钮大小设置为<code>很大</code></del></p><p><code>工作空间行为</code>-<code>桌面特效</code> <code>模糊</code> 设置合适的值</p><h2 id="锁屏时间格式"><a href="#锁屏时间格式" class="headerlink" title="锁屏时间格式"></a>锁屏时间格式</h2><p>参考<code>reddit</code>上的<a href="https://www.reddit.com/r/Kubuntu/comments/8w79fc/i_want_to_lock_screen_to_display_time_in_24h/">这个帖子</a></p><p>对于登录屏幕,修改<code>/usr/share/sddm/themes/breeze/components/Clock.qml</code>;对于锁屏,修改<code>/usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/components/Clock.qml</code></p><p>修改内容:將</p><figure class="highlight qml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">text</span>: Qt.formatTime(timeSource.data[<span class="string">"Local"</span>][<span class="string">"DateTime"</span>])</span><br></pre></td></tr></table></figure><p>替换为</p><figure class="highlight qml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">text</span>: Qt.formatTime(timeSource.data[<span class="string">"Local"</span>][<span class="string">"DateTime"</span>],<span class="string">"hh:mm:ss"</span>)</span><br></pre></td></tr></table></figure><p><del>## 输入法皮肤<br>安装<code>fcitx-skin-material</code></del></p><h2 id="关闭Baloo索引"><a href="#关闭Baloo索引" class="headerlink" title="关闭Baloo索引"></a>关闭Baloo索引</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">balooctl disable</span><br></pre></td></tr></table></figure><h2 id="DOCK"><a href="#DOCK" class="headerlink" title="DOCK"></a>DOCK</h2><p><code>latte-dock</code><br>分隔使用<code>plasma5-applets-latte-spacer</code></p><h2 id="yuzu"><a href="#yuzu" class="headerlink" title="yuzu"></a>yuzu</h2>]]></content>
<summary type="html"><p>折腾<code>Display manager</code>把系统搞坏掉了,重新安装。这里重新记录安装教程。之前的记录有一些已经变化不适用了。之后如果有变更也会继续更新这里。</p></summary>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>安装 chromium</title>
<link href="https://whitecodes.github.io/2020/03/install-chromium/"/>
<id>https://whitecodes.github.io/2020/03/install-chromium/</id>
<published>2020-03-08T07:12:35.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>周四那天晚上<code>github</code>和<code>steam</code>登不上了,记录下处理过程。<br>最后使用了<code>archlinuxcn</code>的<code>repo</code>中的<code>chromium-vaapi</code></p><p><strong>没有具体的编译记录</strong></p><span id="more"></span><h2 id="无法访问-github"><a href="#无法访问-github" class="headerlink" title="无法访问 github"></a>无法访问 github</h2><p>晚上9点多的时候发现无法通过<code>chromium</code>访问<code>steam</code>。</p><p>怀疑是被墙了,用<code>Proxy SwitchyOmega</code>切换到全局代理。还是不行。<br><code>YouTube</code>可以访问,说明代理没有问题。怀疑是<code>steam</code>网页的问题。</p><p><code>google</code>找找有没有碰到相同问题的,发现<code>github</code>也访问不了。</p><p>临时装了<code>FireFox</code>来测试,发现可以访问<code>github</code>和<code>steam</code>。</p><p>怀疑是<code>chromium</code>的问题。命令行启动,发现有错误输出</p><blockquote><p>ERROR:ssl_client_socket_impl.cc(941)] handshake failed; returned -1, SSL error code 1, net_error -100</p></blockquote><p>对比可以访问的网站和不可以访问的网站,发现不可以访问的网站证书都是<code>DigiCert Inc</code>。按照这个思路尝试访问<code>Apple</code>官网,发现也不行。</p><p>遇事不决想要重新安装<code>chromium-vaapi</code>。发现<code>AUR</code>中的<code>chromium-vaapi-bin</code>包已经删掉了。</p><p>重装了<code>chromium</code>包,发现还是不行。</p><h2 id="找到原因"><a href="#找到原因" class="headerlink" title="找到原因"></a>找到原因</h2><p>第二天清空<code>chromium</code>配置,发现可以正常访问。从<code>Google</code>同步了数据之后,又不行了。</p><p>那就是同步的数据中造成了这个问题。开始排查</p><p>停用了<code>Proxy SwitchyOmega</code>后,就正常了。<br>那问题就是<code>Proxy SwitchyOmega</code>和<code>clash</code>冲突了。想了一下,之后就单纯使用<code>clash</code>了,反正已经有了网址过滤切换代理的功能</p><h2 id="编译-chromium"><a href="#编译-chromium" class="headerlink" title="编译 chromium"></a>编译 chromium</h2><p>为了查找问题,安装了没有硬件加速的<code>chromium</code>。<code>AUR</code>中的<code>chromium-vaapi-bin</code>包已经删掉了,只能手动编译<code>chromium-vaapi</code></p><p>第一次编译,失败。</p><blockquote><p>fatal error: error in backend: IO failure on output stream: No space left on device</p></blockquote><p>记起来之前为了编译速度配置了在内存中编译,修改配置,然后重新编译</p><p>编译的时候,有人说是</p><blockquote><p>今天digicert的ocsp/crl ip被墙了</p></blockquote><p>3个小时后,终于编译完成了。</p><p><strong>下面是走过的弯路</strong><br>然后开始编译必要的<code>libva-vdpau-driver-chromium</code>,看<code>AUR</code><a href="https://aur.archlinux.org/packages/chromium-vaapi/">页面</a>上的说明,我还需要手动修改脚本后再编译</p><blockquote><p>If you are having issues with NVidia, you need to build a patched libva-vdpau-driver-chromium</p></blockquote><p>先下载包,但是不安装</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman libva-vdpau-driver-chromium</span><br></pre></td></tr></table></figure><p>在询问<code>diff</code>的取消掉</p><p>然后修改下载回来的<code>PKGBUILD</code></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ~/.cache/yay/libva-vdpau-driver-chromium</span><br><span class="line">nano PKGBUILD</span><br></pre></td></tr></table></figure><p>添加<code>Nvidia</code>的<code>patch</code>。这个可以在<code>chromium-vaapi</code>的<a href="https://bbs.archlinux.org/viewtopic.php?pid=1877774#p1877774">主题帖</a>中找到,复制回来保存为<code>my.patch</code><br>在<code>source</code>字段中添加<code>my.patch</code>,在<code>prepare()</code>字段添加下面的内容来启用</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd "${srcdir}"</span><br><span class="line">patch -Np1 -i "${srcdir}/my.patch"</span><br><span class="line">cd ../</span><br></pre></td></tr></table></figure><p>其中最后切换工作目录的操作不确定是不是对的</p><p>手动编译并安装包</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">makepkg -si --skipchecksums</span><br></pre></td></tr></table></figure><p>之后才发现是不需要上面这些操作的</p><h2 id="重新安装"><a href="#重新安装" class="headerlink" title="重新安装"></a>重新安装</h2><p><code>chromium-vaapi</code>的页面上有提到<code>archlinuxcn</code>上有预编译包</p><blockquote><p>Precompiled binaries of this wonderful package are available on archlinuxcn repository. Enjoy.</p></blockquote><p><strong>最后的解决记录</strong></p><h3 id="使用-archlinuxcn"><a href="#使用-archlinuxcn" class="headerlink" title="使用 archlinuxcn"></a>使用 archlinuxcn</h3><p>可以直接参考<code>archlinuxcn</code>在<code>github</code>上的<a href="https://github.com/archlinuxcn/repo">使用教程</a>,也可以使用下面的方法</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> /etc/pacman.d/mirrorlist</span><br><span class="line">nano /etc/pacman.d/mirrorlistcn</span><br></pre></td></tr></table></figure><p>输入<a href="https://github.com/archlinuxcn/mirrorlist-repo">中国源镜像列表</a>上的所有镜像,格式参考已有的<code>mirrorlist</code>。<br>然后修改<code>pacman</code>配置启用</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nano /etc/pacman.cnf</span><br></pre></td></tr></table></figure><p>仿照其他源输入下面的内容</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[archlinuxcn]</span><br><span class="line">Include = /etc/pacman.d/mirrorlistcn</span><br></pre></td></tr></table></figure><p>然后刷新<code>pacman</code>数据库,并导入密钥</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">pacman -Syy</span><br><span class="line">pacman -S archlinuxcn-keyring</span><br></pre></td></tr></table></figure><h3 id="安装对应包"><a href="#安装对应包" class="headerlink" title="安装对应包"></a>安装对应包</h3><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">yay chromium-vaapi</span><br><span class="line">yay libva-vdpau-driver-vp9</span><br></pre></td></tr></table></figure><p>选择<code>archlinuxcn</code>的包进行安装</p><h3 id="验证硬解播放"><a href="#验证硬解播放" class="headerlink" title="验证硬解播放"></a>验证硬解播放</h3><p>开一个视频网页,然后打开<a href="chrome://media-internals/">chrome://media-internals/</a>,查看对应网页的<code>Player Properties</code>。查看<code>kVideoDecoderName</code>显示的内容,如果是<code>MojoVideoDecoder</code>或者<code>GpuVideoDecoder</code>就是开启了硬解。具体可以参考<code>chromium-vaapi</code>的<a href="https://bbs.archlinux.org/viewtopic.php?id=244031">主题贴</a></p>]]></content>
<summary type="html"><p>周四那天晚上<code>github</code>和<code>steam</code>登不上了,记录下处理过程。<br>最后使用了<code>archlinuxcn</code>的<code>repo</code>中的<code>chromium-vaapi</code></p>
<p><strong>没有具体的编译记录</strong></p></summary>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>在电脑上玩手机游戏</title>
<link href="https://whitecodes.github.io/2020/02/mobile-game/"/>
<id>https://whitecodes.github.io/2020/02/mobile-game/</id>
<published>2020-02-29T12:56:28.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>折腾了下在电脑上玩手机游戏</p><span id="more"></span><h1 id="Windows-环境"><a href="#Windows-环境" class="headerlink" title="Windows 环境"></a>Windows 环境</h1><p>在<code>windows</code>上运行<code>明日方舟</code>比较简单,官方就有提供PC运行的下载。</p><p>下载回来本质上是<code>网易</code>的<code>MuMu虚拟机</code>,搭配<code>明日方舟</code>的客户端。基本上支持CPU虚拟化的机器上的可以跑起来。</p><h1 id="Linux-环境"><a href="#Linux-环境" class="headerlink" title="Linux 环境"></a>Linux 环境</h1><p>最开始是在<code>xps</code>上实现了远程游戏。使用的软件是<a href="https://github.com/Genymobile/scrcpy">scrcpy</a>。名字和<code>Python</code>的那个爬虫框架相同,但是这个是通过<code>adb</code>来远程操控手机的。本质上还是在手机上跑游戏,电脑上同步手机屏幕和操作。</p><p>手机需要开启<code>adb</code>功能,为了方便最好还开启<code>adb over wireless</code>功能。</p><p>然后安装<code>scrcpy</code>。看github上的介绍提供了各个平台的下载,不止局限于<code>Linux</code>。</p><ul><li>保持手机和电脑在同一个wifi下,手机建议全程连着电源</li><li>开启手机的<code>adb</code>和<code>adb over wireless</code></li><li>查看手机在wifi下的<code>ip</code>,这个可以通过手机的<code>关于本机</code>查看,也可以通过路由器查看</li><li>运行下面的命令连接手机</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">adb connect DEVICE_IP:5555</span><br><span class="line">scrcpy -S</span><br></pre></td></tr></table></figure><p>一切顺利的话:手机屏幕关闭,电脑上看到了出现手机屏幕的画面。接下来就是用鼠标代替触控来玩游戏了。如果黑屏了按下<code>Ctrl</code>+<code>p</code>,相当于按下电源键。</p><p>这个方案的好处是比较方便,而且兼容性比较高,支持更多的功能。更多的功能和选项请参看上面的链接。</p><p><del>然后<code>Sony</code>的<code>xz1c</code>阉割了<code>adb over wireless</code>功能。这就需要手机连着电脑才有效,放弃了这个方案。</del></p><p><code>adb over wireless</code>功能在厂商的正式系统中有不提供的,例如<code>Sony</code>,需要用到<code>xda</code>的一个软件<a href="https://forum.xda-developers.com/android/apps-games/app-adb-tools-t2954734">ADB Tools</a>来开启,这个软件需要<code>root</code>权限。或者用数据线开启<code>adb</code>后再用命令开启<code>adb over wireless</code></p><h1 id="Anbox-方案"><a href="#Anbox-方案" class="headerlink" title="Anbox 方案"></a>Anbox 方案</h1><p>之后在网上发现了<code>Anbox</code>这个软件。本质上是运行一个后台服务提供硬件信息,这个就隔离了CPU的虚拟化。运行的是一个<code>android</code>的镜像。你需要手动安装游戏,感觉还是比较麻烦。仅仅验证了是可行的,但是没有实际操作</p><p><del>现在还是在手机上玩<code>明日方舟</code>。</del></p><p><strong>现在用<code>scrcpy</code>的方案在电脑上玩游戏。</strong></p>]]></content>
<summary type="html"><p>折腾了下在电脑上玩手机游戏</p></summary>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
<category term="Arknights" scheme="https://whitecodes.github.io/tags/Arknights/"/>
</entry>
<entry>
<title>在追的剧</title>
<link href="https://whitecodes.github.io/2020/02/drama/"/>
<id>https://whitecodes.github.io/2020/02/drama/</id>
<published>2020-02-04T14:00:58.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>记录下春节追的剧</p><span id="more"></span><h1 id="来世ではちゃんとします"><a href="#来世ではちゃんとします" class="headerlink" title="来世ではちゃんとします"></a>来世ではちゃんとします</h1><p>现在微博上看到了截出来的视频段落。主题也比较有话题。但是其实挺无感的,距离自己有点远。</p><p>当作轻戏剧来看一路看下来。</p><h1 id="ゆるキャン△"><a href="#ゆるキャン△" class="headerlink" title="ゆるキャン△"></a>ゆるキャン△</h1><p>这里指的是<code>摇曳露营</code>真人版日剧。动画版没看,只是听说过,是正面的评价。</p><p>看了第一集,女主的颜艺截图印象深刻。<br>然后就是露营时候的食物,看起来一般,没有截图的动力</p><p>看了2集之后就放弃了,虽然主角都是妹子,但是颜值撑不下去</p><h1 id="The-Outsider"><a href="#The-Outsider" class="headerlink" title="The Outsider"></a>The Outsider</h1><p>年前想着下部美剧回去看看,正好赶上美剧冬歇,原本正常在追的剧都停了。然后就选了这部<code>局外人</code>。</p><p>原著是<code>斯蒂芬·金</code>的同名小说,悬疑恐怖向的。原本是不喜欢看恐怖向的,但是选择实在是不多。看之前读了评论,评价不错。</p><p>看了第一集,感觉可以。探案的故事,画面风格不喜欢,但是剧情紧凑。</p><p>感觉可以追下去。然后就下载到了最新集。打算回家的时候看。</p><p>春节在家,追到最新的一集。节奏有点慢,而且开始出现鬼怪这种不讲理的东西。忍不住找了小说的剧透,后面扯出来了民间传说。顿时就没了兴趣,弃了。</p>]]></content>
<summary type="html"><p>记录下春节追的剧</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
<category term="Drama" scheme="https://whitecodes.github.io/tags/Drama/"/>
</entry>
<entry>
<title>新年继续写</title>
<link href="https://whitecodes.github.io/2020/02/new-year-keep-write/"/>
<id>https://whitecodes.github.io/2020/02/new-year-keep-write/</id>
<published>2020-02-04T13:52:18.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>新的一年,有的没的继续写下去吧。至少可以留下点什么</p><span id="more"></span><h1 id="被催更"><a href="#被催更" class="headerlink" title="被催更"></a>被催更</h1><p>一直在用<code>code::stats</code>来记录自己编码的记录。并且推荐给其他人。然后最近被人告知说经验就要被超过了,于是就有了这篇blog。</p><h1 id="尝试在-windows-上搭建-Hexo-环境"><a href="#尝试在-windows-上搭建-Hexo-环境" class="headerlink" title="尝试在 windows 上搭建 Hexo 环境"></a>尝试在 windows 上搭建 Hexo 环境</h1><p>过年回家,然后被疫情耽搁在家里远程上班。blog的相关设置都在<code>xps</code>上,于是尝试在PC上重新搭建环境。<br>结果发现按照之前的流程有问题。<br>简单来说就是<code>hexo init</code>的过程中网络问题导致不能初始化完成。</p><p>虽然PC上也有<code>SSR</code>用于翻墙,但是一时偷懒就没有继续尝试下去。</p><p>我怀疑是流程的步骤的有问题,在<code>xps</code>上又试了,没问题。估计不同平台上<code>node</code>的实现有差异。</p><h1 id="大概是接下来的计划"><a href="#大概是接下来的计划" class="headerlink" title="大概是接下来的计划"></a>大概是接下来的计划</h1><p>接下来就继续更新,继续写。不为了什么就有什么写什么。</p><p>至少要留下点什么</p>]]></content>
<summary type="html"><p>新的一年,有的没的继续写下去吧。至少可以留下点什么</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
</entry>
<entry>
<title>进入冬天</title>
<link href="https://whitecodes.github.io/2019/12/enter-winter/"/>
<id>https://whitecodes.github.io/2019/12/enter-winter/</id>
<published>2019-12-01T05:45:15.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>又到了一个冬天了</p><span id="more"></span><h1 id="双十一购物"><a href="#双十一购物" class="headerlink" title="双十一购物"></a>双十一购物</h1><p>11月不可避免的在双11购物了。</p><p>在<code>双十一</code>前买了一个车尾灯。在天猫和京东对比了价格,发现天猫双十一当天的价格和京东的价格是一样的。在比价网站上看了,不是最低价但是也不算是提价吃亏。</p><p>到手之后就是一个小小的灯,带自动功能。用起来还行。</p><p><code>双十一</code>当天准备下手洗发水和沐浴乳。<code>植物学家</code>的洗发水半价,结果没有抢到。去京东看看,结果半夜看错买错了洗发水。到货才发现买错了,也懒得退货了,先用用吧。</p><p>在淘宝买了<code>冷吃兔肉</code>。味道还行,就是量少价格高。</p><p>11月账单出来后,感觉还好,花得在计划内。</p><h1 id="降温"><a href="#降温" class="headerlink" title="降温"></a>降温</h1><p>随着时间的过去,寒潮来临,江南降温。</p><p>然后感冒了。</p><p>鼻涕、喷嚏都来了。用掉的纸巾一纸篓。打喷嚏的时候背部的肉都在痛。</p><p>周五上午果断请假了,然后周末出版本也没有加班。</p><p>周一的时候气温回升,症状也好了一些。</p><p>果断加衣服。</p><h1 id="to-do-list"><a href="#to-do-list" class="headerlink" title="to-do-list"></a>to-do-list</h1><p>11月中旬的时候,彻底放弃了 to-do-list 应用。</p><p>最开始用过很长时间的<code>Any.Do</code>。后来用了一段时间的<code>Trello</code>,看中了和<code>IDE</code>的同步能力。之后为了游戏化用了<code>Habitica</code>,但是界面和交互实在是不喜欢,还是放弃了。</p><p>现在就像死鱼一样,放弃了。</p><h1 id="VPS"><a href="#VPS" class="headerlink" title="VPS"></a>VPS</h1><p>重装了<code>VPS</code>,只在上面跑了<code>efb</code>。结果居然不错,没有需要手动重启的情况。</p><p>但是就像之前说的,<code>rssbot</code>还是跑不起来。</p><h1 id="Steam"><a href="#Steam" class="headerlink" title="Steam"></a>Steam</h1><p>之前开启了<code>Arch Linux</code>32位的仓库,安装了<code>Steam</code>。</p><p>除了声明支持<code>Linux</code>的游戏外,<code>windows</code>的游戏大部分都可以运行。</p><p>玩了一段时间的<code>魔法雷霆</code>。但是网络不稳定,还是不玩了。</p><p>最近趁着<code>黑五</code>,50入了<code>The Witcher</code>三部曲。然后继续冲动入了<code>Xbox</code>手柄,打算手柄玩。</p><p>预计今天下午到货,现在等待到货中……</p><h1 id="food"><a href="#food" class="headerlink" title="food"></a>food</h1><p>周末的午饭基本上是在旁边新开的小小的美食城解决的。食物遍历下来还是酸菜鱼比较好吃。<br><img data-src="https://live.staticflickr.com/65535/49149714153_c9c694b04b_k_d.jpg" alt="金汤酸菜鱼"></p><p>另外还有一个结论:带清真的都不好吃。</p>]]></content>
<summary type="html"><p>又到了一个冬天了</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
<category term="Work" scheme="https://whitecodes.github.io/tags/Work/"/>
<category term="App" scheme="https://whitecodes.github.io/tags/App/"/>
</entry>
<entry>
<title>忙碌的秋天</title>
<link href="https://whitecodes.github.io/2019/11/busy-Autumn/"/>
<id>https://whitecodes.github.io/2019/11/busy-Autumn/</id>
<published>2019-11-03T11:54:27.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>距上次写文已经过了两个月了,中间还有一个国庆假期。</p><span id="more"></span><h1 id="九月"><a href="#九月" class="headerlink" title="九月"></a>九月</h1><p>九月初就开始催项目。是基于别人的实现来扩展自己模块功能的任务。但是代码风格不一样,限制又多。</p><p>完成差不多到了月底。然后才开始不幸的经历。</p><p>月底的时候,被告知要出一个临时版本用于测试。然后测试的时候国庆假期。也就是国庆假期要过来加班。</p><p>30日的时候住的地方网络断了,是电信套餐到期了。快国庆了,想着回来再续费。</p><h1 id="十月"><a href="#十月" class="headerlink" title="十月"></a>十月</h1><p>首先是国庆。国庆回去了。</p><p>第一天被拉去参加了一个不知道是谁的婚礼。<br><img data-src="https://live.staticflickr.com/65535/48898400216_7f490fbd82_k_d.jpg" alt="旁边的田野"></p><p>之后去看了家具,看了一堆,但是没有决定要买什么。一分价格一分货。</p><p>之后在吃玉米的时候牙疼爆发。</p><p>提前病怏怏地回公司加班。</p><p>因为要用到大量的设备,所以测试都安排到了周末。</p><p>接下来新项目,接手别人做了一般的项目,然后是无止境的加班。</p><p>十月底的时候,抽时间去体检了。</p><h1 id="十一月"><a href="#十一月" class="headerlink" title="十一月"></a>十一月</h1><p>接下的十一月,第一个不加班的周末。</p><p>周六天气不错,骑车出门。</p><p>去的时候手环的监控没有起效,半路才发现,所以有一段路程没有记录。</p><p>返程全程记了,21KM。</p><p>身体感觉还好就路上震得手有点麻。</p><p>回来的路上路过工地附近,有洒水车开过,路上有积水。骑过泥水打在后背上,头发上凉凉的。</p><p>返程路过了网红拍照的薰衣草地<br><img data-src="https://live.staticflickr.com/65535/48999895326_44f3fbe411_k_d.jpg" alt="薰衣草地"></p><h1 id="美剧"><a href="#美剧" class="headerlink" title="美剧"></a>美剧</h1><p>九月十月情绪低落的还有一个原因就是没有什么东西可以追着看的。</p><p>十月下半月美剧陆续回归了。有东西看了,除了工作有其他的事情可以专心。</p><p><code>硅谷</code>在十月底回归了,最终季了。开始向职场戏剧方向发展了。</p><p>其他新番和日剧也有要追的剧回归了。这下下班也有了盼头。</p><h1 id="Jack-Ryan-S02"><a href="#Jack-Ryan-S02" class="headerlink" title="Jack Ryan S02"></a>Jack Ryan S02</h1><p><code>Jack Ryan</code>第二季开播了。电影版看过,很好。电视剧第一季看了,感觉一般,但是还没有烂片的地步。</p><p>第二季在线花了一个晚上看完了,有几集是倍速看完的。</p><p>观感不好,比电影差很多,但是还是熬夜看完了。简单来说,对比所有的电视剧,不怎么值得看。但是喜欢这个类型的可以看看。</p><h1 id="reinstall-VPS"><a href="#reinstall-VPS" class="headerlink" title="reinstall VPS"></a>reinstall VPS</h1><p>周日给<code>VPS</code>升级系统。结果<code>zsh</code>配置丢失,<code>yay</code>安装失败。于是索性重装系统。</p><p>结果发现因为<code>Arch Linux</code>的<code>base</code>变更,安装系统的流程变更,原有的教程全部失效了。包括Vultr官方的教程。<strong>也包括之前写的那些教程记录</strong></p><p>重装之后,<code>rssbot</code>又启动不了了,报错</p><blockquote><p>thread ‘main’ panicked at ‘failed to initialize bot: TokioCurl(PerformError { error: Custom { kind: Other, error: Error { description: “Couldn't resolve host name”, code: 6, extra: None } } })’, libcore/result.rs:945:5<br>note: Run with RUST_BACKTRACE=1 for a backtrace.</p></blockquote><p>心累……</p><h1 id="食物"><a href="#食物" class="headerlink" title="食物"></a>食物</h1><p>周围新开了一个小小的美食城,有几家店。</p><p>试了<code>猪肚鸡汤</code>,味道一般<br><img data-src="https://live.staticflickr.com/65535/49001354663_a7f7e10297_k_d.jpg" alt="胡椒猪肚鸡汤"></p><p>还试了<code>番茄鱼</code>,味道还行<br><img data-src="https://live.staticflickr.com/65535/49004903927_697b87c089_k_d.jpg" alt="番茄鱼"><br>底下有乌冬,乌冬面配饭。</p>]]></content>
<summary type="html"><p>距上次写文已经过了两个月了,中间还有一个国庆假期。</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
<category term="Work" scheme="https://whitecodes.github.io/tags/Work/"/>
<category term="Drama" scheme="https://whitecodes.github.io/tags/Drama/"/>
<category term="Code" scheme="https://whitecodes.github.io/tags/Code/"/>
</entry>
<entry>
<title>八月电视剧</title>
<link href="https://whitecodes.github.io/2019/09/August-drama/"/>
<id>https://whitecodes.github.io/2019/09/August-drama/</id>
<published>2019-09-08T16:17:47.000Z</published>
<updated>2025-01-07T01:54:48.775Z</updated>
<content type="html"><![CDATA[<p>八月过了,过得并不容易。月底的时候骑车摔了。九月开始就没有骑过自行车。<br>八月追的两部电视剧完结了,记一下感受。</p><span id="more"></span><h2 id="长安十二时辰"><a href="#长安十二时辰" class="headerlink" title="长安十二时辰"></a>长安十二时辰</h2><p>难得看得下去的国产电视剧。一开始的宣传出来的时候就抱有期待。制作精良,服化道大致还原唐朝的历史。剧情的话,至少没有国产剧的气质。原著是仿照美剧<code>反恐24小时</code>写的,改编得还行。唐朝反恐24小时。</p><p>缺点的话就是节奏的问题,原著仿照的<code>反恐24小时</code>是24集讲述24小时的故事,节奏是传统的美剧形式,不断地有反派出现,有不同的行动目标。到了国内,改编成了48集,中间不得不穿插了回忆杀。开头节奏感觉还行,一下子排除够多的信息,看过原著的话感觉还好。中后部分实在是太慢了。</p><p>值得去补番,可以搭配原著去看。</p><h2 id="The-Rook"><a href="#The-Rook" class="headerlink" title="The Rook"></a>The Rook</h2><p>这是一部英剧,超能力剧。但是没有美剧那种超级英雄式的战斗。</p><p>据说是小说改的,原著意识流。没看过,直接看的剧。一开头就抛出一个事件,然后到结局才给出前后的事实。但是也没有什么推理的部分。事实就随着人物的出场一段一段解密开来。</p><p>节奏一如英剧的感觉,时不时有些沉闷。</p><p>因为太沉闷了,平日里大致不推荐补。</p><h2 id="あなたの番です"><a href="#あなたの番です" class="headerlink" title="あなたの番です"></a>あなたの番です</h2><p>比较火的日剧。情节实在是一言难尽,一句话总结就是:日本推理编剧真得不行。</p><p>其实一直觉得日本本格推理挺难看的。</p><p>看<code>知乎``Bilibili</code>上讨论情节很多,但是就剧里透露出的信息而言,应该说是不值得讨论。推理基本没有,就靠男主莽就完了。还有就是各种强行人设的感觉。</p><p>但是有娜娜塞就一直追着,还剩下最后一集,看编剧可以把之前的坑填上多少吧~</p><p>如果没有追,缺少对话的谈资的话,可以补起来。<br>另外粉<code>西野七瀬</code>也可以补起来。</p><h2 id="The-Capture"><a href="#The-Capture" class="headerlink" title="The Capture"></a>The Capture</h2><p>九月新追的英剧,监控的话题。今天看了第一集。剧情节奏还行。</p><p>感觉可以追下去的样子</p>]]></content>
<summary type="html"><p>八月过了,过得并不容易。月底的时候骑车摔了。九月开始就没有骑过自行车。<br>八月追的两部电视剧完结了,记一下感受。</p></summary>
<category term="Life" scheme="https://whitecodes.github.io/tags/Life/"/>
<category term="Drama" scheme="https://whitecodes.github.io/tags/Drama/"/>
</entry>
</feed>