The Time I’m Back Here

Thinking it’s a new era now, people’s minds are still stale. I don’t know why dictatorship still has deterrence that is right and makes things simple. They are supposed to understand how democracy works and why it’s good for our society. It’s crucial for people here to understand it’s not only economy that matters but also our mental. We are going to support the whole society one day. But at first, we have to make ourselves better. No one will be satisfied if we always care some certain community or Party. We should stand on the right side of the history. Make the best of what you have now and try to make the limited space a better place for you. Life is short. If we don’t even make ourselves happy, who can do that for us? Nobody. The society gets better because individuals like you and me get better.

在Windows10 UEFI 下安装 Arch Linux 教程

转载自:Roach’s Blog

有些事情不试过之后,怎么甘心。

准备

首先,需要刻录一个Arch安装U盘。

我的当前电脑已经安装了Windows10,并且是GPT分区格式UEFI引导。

可以从Arch Linux的官方网站下载用于安装Arch Linux的iso镜像。而为了加速,世界上有很多开源社区建立了开源镜像站,里面提供很多发行版的iso镜像及软件源。下面我们从中科大的开源镜像站(http://mirrors.ustc.edu.cn/)下载Arch Linux的iso.右侧有个“获取安装镜像”点击选择即可,下载2016.10.01版本的镜像,文件名为archlinux-2016.10.01-dual.iso.

下载过iso之后可以刻录光盘,也可以刻录U盘。Windows刻录U盘可以使用Rufus制作启动盘。

首先下载Rufus.exe,打开就能看到主界面。插入U盘之后,可以看到Rufus可以识别出U盘。Rufus有很多设置项,其中有一项叫“新卷标”。可以通过windows问家管理器打开镜像,镜像的名字叫做ARCH_201610.接着,我们在Rufus的“新卷标”处填写ARCH_201610,分区方案选择“用于BIOS或MBR计算机的UEFI分区方案”。然后在“创建一个启动盘使用”那里,右边有个光盘的图标,点击并选择下载下来的iso文件。最后点“开始”制作启动U盘。

接着Rufus会提示下载syslinux,选择“是”。

然后提示选择写盘模式,我们使用推荐的ISO模式。

最后有个格式化的警告,点击确定,即可格式化U盘并制作启动盘。

然后,就可插入安装盘启动了。推荐使用网线安装arch,这样进入安装系统就已经可以上网进行安装。而不用进行Wifi的配置。


分区&格式化

分区

首先,我们需要对硬盘进行分区操作。GPT分区就可以使用gdisk来进行分区操作。

这时候,你输入,就可以告诉你各种操作的命令,比如p输出你当前硬盘的分区信息、n是新建一个分区、w该改动写入分区表(数据重要,谨慎处理!)、q退出。

UEFI模式,Windows下已经有一个EFI分区,这个分区我们也可以使用,就不用创建EFI分区了(Linux下你想创建一个也可以)。而这样我们就需要将EFI(sda2)挂载在,/boot的efi目录下。

先创建一个boot分区:500M。

  • 因为之前已经有了8个分区了,所以新建的默认是sda9,我们直接Enter就好。
  • 然后下一行告诉你新建分区的首个分区位置,不修改直接Enter。
  • 再一行是新建分区的结束扇区(默认剩余所有空间),+500M表示我们只用500M。
  • 然后再下面两行让你确定你新建分区的格式,Enter表示8300,即linux分区格式。

这样我们就创建好了一个空间500M的分区。然后,我又创建了一个4G的swap分区、70G的根分区、120G的home分区。需要注意的是,创建swap分区时将8300 -> 8200

格式化

除了swap分区,将另外的分区格式化为ext4格式


安装

安装之前,我们先文件系统(你要安装的系统)挂在到镜像U盘中的/mnt目录下,而EFI分区挂载到/boot/efi目录下

我们还需要修改一下pacman源,改为国内的源可以提升安装速度:vi /etc/pacman.d/mirrorlist之保留China大陆的源。

安装基本系统

生成/etc/fstab文件

它的作用是指示init程序挂载分区到指定的挂载点。

tee的作用是在终端打印输入内容的同时写文件。这里用到了shell的管道(|符号),它的作用是把|之前的命令的输出作为|后面命令的输入。

Chroot到安装在硬盘中的系统

我们已经知道,文件系统是一个树形结构,它有一个根目录/,每个文件路径都可以从/一步一步走下去找到。而chroot的功能就是把一个进程(及其子进程)的根目录改为指定的路径,这样这个进程找一个文件时,便会从chroot指定的目录开始查找。

在这里,我们chroot到已经安装好的那个文件系统里面,这样就很容易对我们新安装的系统进行操作了。

一般来说,为了在进入新的文件系统后仍可以方便地操作内核,要挂载/proc,/dev,/sys到新的文件系统中。Arch的安装工具中提供了一个叫arch-chroot的脚本,它封装了这些操作,简化了chroot的过程。

现在我们执行arch-chroot /mnt,这样就以chroot的方式进入了新的系统。


配置系统

Root password

Hostname

/etc/hosts should look like:

Timezone

Locale

Initial ramdisk environment

可能会有一些提示信息,安装过显卡驱动就可一了。

Grub

但是,os-prober输出信息显示,并没有自动判别出来windows,需要我们自己修改/boot/grub/grub.cfg。如果显示添加了windows引导项,下面那一步就免了。

Now change:

  • $hints_string by the output of $ grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
  • $fs_uuid by the output of $ grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

注意:如果这里不添加Windows10启动项,安装Gnome桌面之后重新生成grub.cfg会自动生成启动项。

网络连接管理器

如果退出chroot之后,进入arch,使用Wifi,那么就可以禁用dhcp,让networkmanager自启。如果是有线就暂时不进行下面的操作。使用networkmanager的原因是和Gnome3结合的很好,并且可以管理有线和wifi。

退出Chroot

这样就进入arch了!


配置Arch

联网

有限则已经联网,或者ip link看一下你的有限网卡的名字Name,使用dhcpcd Name联网

Wifi:

安装zsh

创建用户

最后设置wheel组的用户能用sudo获取root权限,使用visudo来修改sudo的配置:

$ visudo

找到这样的一行,把前面的#去掉,然后按ESC键,输入:x!回车就可以保存并退出:

#%wheel ALL=(ALL) ALL

添加archlinuxcn源

archlinuxcn是一个由arch中文社区维护的镜像源,其中包含了许多官方镜像中没有但又经常使用的软件。可以通过编辑pacman.conf文件来添加archlinuxcn源:

sudo vi /etc/pacman.conf
在文档结尾处加入下面的文字:

完成之后刷新pacman数据库sudo pacman -Syy

安装archlinuxcn-keyring,这个是提供校验软件包的密钥的。sudo pacman -S archlinuxcn-keyring现在archlinuxcn源就可以使用了。

安装yaourtsudo pacman -S yaourt

yaourt相当于一个加强版的pacman,在pacman的基础上添加了对AUR的支持,并提供诸如彩色输出、交互式搜索模式等一系列实用功能。yaourt包含在archlinuxcn源中.

Install libselinux-2.5-3

在安装gnome之前安装,不然会报GLib-GIO-Message: Using the 'memory' GSettings backend错误。

Install X

触摸板: $ pacman -S xf86-input-synaptics

让选择的选项直接Enter(默认,没毛病。。。

显卡驱动

安装Gnome

中文输入法

之所以使用谷歌拼音,是搜狗的并不符合fcitx规范,和Gnome Input Method扩展不兼容。

打开~/.xprofile文件并加入以下几行:

然后在fcitx配置中的Input Method选项添加Keyboard-ChineseGoogle Pinyin,第一项配置下方说是不激活的,但是这样也可以正常工作。

美化zsh


后续工作

扩展

  1. Drop Down Terminal #guake 在Gnome3.20工作不好
  2. Applications Menu
  3. Input Method Panel
  4. Places Status Indicator

pacman

atom

yaourt -S atom-editor-bin AUR,需要非root用户安装。

双系统时间设置

之所以 Windows 与 Linux 双系统之间有时间差,是因为这两个系统使用了不同的方式来识别硬件时钟(Hardware Clock)。Linux 将硬件时钟当作 UTC 时间,而 Windows 将硬件时钟当作本地时间( Local time)。由于时间的处理方式不同,Windows 不管重启多少次都识别 Local time,时间都不会改变。而当我们从 Linux 重启到 Windows 时,硬件时钟已经被 Linux 认为 UTC 方式,而 Windows 再将其强制转换成 Local time,这就造成了时间差。

解决方法: 修改Windows注册表

To fix it, just hit Start and type regedit.exe in the search box. Hit Enter and navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Right click anywhere in the right pane and hit New > DWORD (64-bit) Value. Name it RealTimeIsUniversal, then double click on it and give it a value of 1.


grub rescue

如果,你在windows系统中修改分区表了(创建、删除分区等),那么一般情况下再次重启系统是grub是无法成功完成信道的会进入一个命令行:

下面的方法,只测试了grub而非grub legacy。grub也就是grub2.

这时候,如果你想修复一下引导,有两种方法:

方法一

这时候,你可你输入ls命令会列出在grub命令模式下,分区的名字。你总应该记得自己的grub引导是装在那个分区的吧(假设装载/dev/sda9,并且挂在在/boot目录下)。

上面需要注意的是,在输入vmlinu后按下tab键,应该可以自动补全,同样,initrd之后也是。这样,在你输入reboot之后,就可以进入系统了。然后重新生成grub.cfg就可以了。

方法二

经历过arch的安装以及arch-chroot,最直接的想法就是,我们通过安装盘挂载分区到安装时正确的目录。在通过chroot进入后,重新生成grub.cfg。就好了,这种方法也可以在重装windows后,再通过grub-install重新安装grub,恢复引导。


References

  1. Installation guide (简体中文)

  2. 安装Arch Linux:一步一步了解Linux系统

  3. ArchLinux安装与配置小结

  4. Arch Linux installation (preinstalled Windows 8.1 dual boot)

  5. 入教教程 —— 安装arch

  6. 配置和美化Arch Linux

  7. Pacman (简体中文)

  8. 如何解决Ubuntu与Windows双系统时间不同步

  9. Fix Incorrect Clock Settings in Windows When Dual-Booting with OS X or Linux

  10. [opensuse] boot without Grub’s menu

微博上:@森林画册说得颇有道理呀。我们为什么要同那些意见向左不懂脑筋的人争辩一个其无法理解或者不想改变的观点。

网络上的那些憎恨性的评论使用者本身缺乏学习和知识,现在有了手机、电脑,很容易设立一个号,可以发表他们一生中从来不敢说的话,多数抱有“网络匿名”的想法,不论做什么事都不会在现实世界中需要付任何责任。我从不反击这些评论,我坚持正能量。生命就像是一种回声送出什么就收回什么。

更新 & 版本准备(LineageOS 初版发布)

好了,好了,好了。是时候发布了。在大家激动下载之前,我们希望大家能注意以下几点。

首先,我们想要感谢那些继续支持我们建设(以及倾力帮助我们)的朋友们。感谢你们,我们所有的服务器目前已开始正常运行,各位可以在我们的状态页面查看。

此外,我们的 下载页面安装统计(对,目前已经有了超五万的非官方 ROM 安装量)和 Wiki 都已上线。值得一提的是,这三个页面,还有 Lineage 博客都是开源的。你可以通过我们的 Gerrit instance 贡献代码!请原谅目前我们网站的简陋,在我们前行的路途中我们将继续完善这些东西。

有趣的部分来了 —— 创建序列、发布过程和其他的一些详情:

  • 我们所支持的设备正在增长,但是我们将支持能够运行 Marshmallow 和 Nougat 的设备。
    • 我们将会在另一个单独的文章里发布所支持的 80+ 设备。
  • 我们的发布周期默认将为“周”(给所有 donated 硬件)。
  • 我们将不会给 ROM 自带 root 权限。
    • Root 将会像刷入 gapps 一样,提供在 zip 包里(仅需刷入一次)。
    • 如果自己想植入 su 进入到 ROM 中,可以运行 ‘export WITH_SU=true’ prior to building.
  • 为了验证和签名权限控制,我们将会在官方版本里通过私钥签名。

在安装方面,我们建议用户在切换到 LineageOS 时能清除数据,重新安装 gapps。我们也知道这的确很花时间,所以我们提供了一个实验性(如果出现问题,你依然需要清除数据)的措施。

  • 为了“周版”更新,我们提供了一个数据迁移的实验性版本。
  • 这个方案将使你从 CM “升级”到 已签名的 LineageOS 周版。
  • 但这个方案可能会使你的权限(你会被再次要求进行 app 的权限管理)遗失,但是将会保留所有的用户数据。
  • 这个版本将会打上一个丑的水印以保证你不会一直使用这个实验性版本,并确保之后你能更新到正常的实验性版本。
  • 过程如下:
    • 在 cm-13.0 或 cm-14.1 的版本(不要在 CM 14.1 以上版本安装 LineageOS,这不起作用)上安装实验性迁移版本(migration build)。
    • 重启
    • 安装 LineageOS 周版
    • 重启
    • 重设 App 权限

鉴于此过程的实验性质,我们将在两个月内删除此方案。

在本周末等着发布吧。

LineageOS 团队

ciwrl 写于 2017 年 1 月 20 日

Update & Build Prep

Alright, alright, alright – it’s nearly ‘go time’ for builds to start flowing. Before everyone gets excited and rushes to download, we want to cover a few important points.

First, we want to thank everyone that stepped forward to assist with the infrastructure (and offers continue to pour in). Thanks to you all, all infrastructure pieces are lighting up ‘Operational’ on our lovely status page.

Additionally, our Download Portal, Install stats page (yep, that’s 50k+ unofficial installs already!) and Wiki are all live. Notably, all three of these sites (and Lineage blog) are open sourced – you can contribute to them via our Gerrit instance! Bear with us if these sites look bare at the moment, they will grow with content and design as we continue marching forward.

On to the fun stuff – build roster, release process and other details:

  • The build roster is ever growing, but we are supporting Marshmallow and Nougat capable devices.
    • We’ll list the 80+ devices in a separate post.
  • Our release cadence will be ‘weekly’ by default (to be nice to all the donated hardware).
  • We will NOT be shipping root baked into the ROM.
    • Root will be a downloadable zip based install similar to gapps installation (only need to flash it once).
    • Home builders that want to bake su back into the ROM can use the command ‘export WITH_SU=true’ prior to building.
  • Our official builds will all be signed with a private key for authentication and signature permission control

Regarding installation, we recommend that users wipe when switching to LineageOS, and reinstall their gapps. However, we recognize that this can be time consuming, so we are offering an EXPERIMENTAL (read as, if it fails, you’ll have to wipe anyways) solution.

  • Alongside the ‘weekly’ release for your supported device, we’ll provide an EXPERIMENTAL data migration build.
  • This build will allow you to ‘upgrade’ from CM to the signed LineageOS weekly
  • This build may wipe permissions (you’ll have to re-allow app permissions), but should retain all user data
  • This build will be watermarked with an ugly banner to ensure that you don’t permanently run this EXPERIMENTAL release, and upgrade to a normal weekly after.
  • The process for this installation will be as follows:
    • Install EXPERIMENTAL migration build on top of cm-13.0 or cm-14.1 build (don’t try to install LineageOS 13.0 on top of CM 14.1, that will not work).
    • Reboot
    • Install LineageOS weekly build
    • Reboot
    • Re-setup your application permissions

Given the EXPERIMENTAL nature of this process, we are going to remove this option in two months time.

Look for builds to start rolling out this weekend!

LineageOS Team

Written on January 20, 2017 by ciwrl

我们的岔路(CyanogenMod 整合公告) | A Fork in The Road

上周我们发布了 CM-13.0 的更新,鉴于预料到接下来的情况,我们更新了最新的安全补丁。

昨天,Cyanogen 公司 (Cyngn) 宣布他们将要关闭 CyanogenMod (CM) 的基础服务。公众从 Kondik(cyanogen 联合创始人) 的离开就不难看出这件事也算是意料之中。他是 Cyngn 团队中仅存的具有感染力的领导人。

鉴于服务设备的关闭,我们 CM 社区中的这些人也失去了未来 CM 的方向 – 而 CM 商标将会转让给第三方实体,尽管这是 Kondik 曾怀揣着梦想担着风险所开启的事业。虽然我们将要重组和重建我们的服务设施,但是继续进行 CM 的开发意味着我们将要承担商标被转卖的风险。这样的话,所有带着“Cyanogen”名字的产品,都会有着耻辱。读着这篇文章的你一定清楚 CM 产品和 CyngnOS 是两个完全不同的概念。目前很多 Cyngn 的公关措施给 CM 带来的不良影响很难被抹去。但鉴于 CM 对 Cyngn 经济的支持和源码的共享,也不难理解为什么有人分不清楚这件事儿。

无疑,Cyngn 最近的举动对 CyanogenMod 是致命的。

但是,CM 不仅仅是一个名字和那些基础设施。CM 是基于每一个人精神、才智和努力的成功。从 Kondik 当初一人到如今成千上万的贡献者。

拥有这股精神,我们社区的开发者、设计师、设备维护者和翻译们已经开始跨出第一步来 fork 出源码,增添更新。这不仅仅是重建,这次的 fork 将带着专业的质量和可依赖性在近期重回社区。

CM 已经服务这个社区不止八年了。这就像一个家园,把世界各地的朋友们聚在一起,给我们带来付出与给予的欢乐。在平安夜的晚上我们向这个社区致敬。我们将会为我们的 Lineage(最新项目:https://github.com/lineageos) 而自豪。我们也将踏上前程继续创造这个传奇。

谢谢你们 & 来日再见
CyanogenMod 团队
December 24th, 2016

A fork in the road

Last week, we released the final CM-13.0 releases, updated to the latest security patches, in anticipation of what follows.

Yesterday, Cyanogen Inc (Cyngn) announced that they were shutting down the infrastructure behind CyanogenMod (CM). This is an action that was not unpredictable given the public departure of Kondik (cyanogen himself) from the company, and with him our last remaining advocate inside Cyngn’s leadership.

In addition to infrastructure being retired, we in the CM community have lost our voice in the future direction of CM – the brand could be sold to a third party entity as it was an asset that Kondik risked to start his business and dream. Even if we were to regroup and rebuild our own infrastructure, continuing development of CM would mean to operate with the threat of sale of the brand looming over our heads. Then there is the stigma that has grown to be attached to anything named ‘Cyanogen’. Many of you reading this have been champions of clarifying that the CM product and CyngnOS were distinct, yet the stain of many PR actions from Cyngn is a hard one to remove from CM. Given CM’s reliance on Cyngn for monetary support and the shared source base, it’s not hard to understand why the confusion remains.

It will come as no surprise that this most recent action from Cyngn is definitely a death blow for CyanogenMod.

However, CM has always been more than the name and more than the infrastructure. CM has been a success based on the spirit, ingenuity and effort of its individual contributors – back when it was Kondik in his home, to the now thousands of contributors past and present.

Embracing that spirit, we the community of developers, designers, device maintainers and translators have taken the steps necessary to produce a fork of the CM source code and pending patches. This is more than just a ‘rebrand’. This fork will return to the grassroots community effort that used to define CM while maintaining the professional quality and reliability you have come to expect more recently.

CM has served the community well over its 8 long years. It has been our home, bringing together friends from all over the world to celebrate our joy of building and giving. Its apt then that on this Eve of a holiday we pay our respects. We will take pride in our Lineage as we move forward and continue to build on its legacy.

Thank you & Goodbye,
The CyanogenMod Team
December 24th, 2016

Cyanogen 服务停止 | Cyanogen Services Shutting Down

由于近日 Cyanogen 所进行的一些整合,所有的服务以及由 Cyanogen 提供支持的每夜版固件将在 2016 年 12 月 31 日年停止支持。开源项目以及代码将继续提供给每一个愿意发展 CyanogenMod 的人。

As part of the ongoing consolidation of Cyanogen, all services and Cyanogen-supported nightly builds will be discontinued no later than 12/31/16. The open source project and source code will remain available for anyone who wants to build CyanogenMod personally.

CentOS 7 开启 BBR,提高 TCP 链路速率

一个由 Google 程序员们开发出的 TCP 堵塞控制算法,注意此项目并非 Google 官方的项目。使用之后有明显速度方面提升的感知。

  • A BBR paper in ACM Queue is in the Sep/Oct 2016 issue (ACM membership required). It should be generally available soon.
  • BBR 对 Linux TCP 可用并且要求 v4.9 发行版 (main commit).
  • A BBR implementation for QUIC is under way: .cc | .h
  • 这里有 Linux TCP BBR 快速部署的指南。当然你也可以看下面的内容。

CentOS 7 的安装方法,依次执行下面内容