Files
infloop.life/source/_posts/manjaro-taste.md
2019-11-21 01:42:01 +08:00

14 KiB
Raw Blame History

title, date, draft
title date draft
Manjaro Taste 2019-10-21T13:29:25+08:00 false

之前有尝试过Arch Linux但是因为arch本身折腾的属性实在是太过浓重什么都需要自己进行配置因此就“浅尝辄止”了。 最近在看到了这条信息:Manjaro Linux的两项大胆举措 发现的重点有四个1. 基于Arch Linux 2. 商业公司驱动 3. 使用了不开源但是兼容性更好的FreeOffice 4. 预装了N卡驱动免折腾 。在稍作查询之后我发现Manjaro对硬件兼容性的支持也很好联想到最近使用Ubuntu 19.04的卡顿感尤其是SSD下开机速度基本是2分钟旋即决定尝试一下这个新鲜对我而言的系统。

参考 [First Steps](https://manjaro.org/support/firststeps/)以及google其实不看任何教程直接安装就可以千篇一律步骤很简单需要注意的是如果选择使用自定义分区的起码建两个分区`/efi` 和 `/`,不过如果我的建议可能是直接通过自动格式化 `Erase Disk`来进行自动分区,选择`With Hibernate`进行安装我的理解是这个分区会用于存储休眠的系统镜像会加速休眠。如果有需求的话比如自动连接Wi-Fi和启动VNC Server也可以在用户设置界面勾选 `autologin`因为这边不勾选的话后面我google折腾了很久还是没能设置成功自动登录后来直接放弃了重新安装了系统只为了这边的自动登录。 因为这台机器我是家用的pc放在家里就自己用也没啥隐私而且最关键的是我希望他能自动联网启动zerotier这样我就能走到哪里都直接通过内网连到这台机器ssh、vnc进行操作了这个依托于自动登录进系统这一步。

当进入系统后我会配置下列选项

初始化命令

sudo pacman -Syu
# install yay
sudo pacman -S --noconfirm vim git wget curl file gcc
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
# install zerotier
curl -s https://install.zerotier.com | sudo bash
yay -yS go
yay -c
yay -S ruby-irb
# install brew
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
# 如果输入brew提示没有找到对应的命令的话可以关闭终端重新打开试试基本是PATH的问题可以对应去搜索问题。
# 我发现我输入了brew install xxx 会有 Error: cannot load such file -- irb 的报错,因次需要下面的命令进行修复
brew vendor-install ruby
# brew 也能通过下面这个方式进行安装
#git clone https://github.com/Homebrew/brew ~/.linuxbrew/Homebrew
#mkdir ~/.linuxbrew/bin
#ln -s ../Homebrew/bin/brew ~/.linuxbrew/bin
#eval $(~/.linuxbrew/bin/brew shellenv)

#install rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
echo 'source $HOME/.cargo/env' >> ~/.profile
# install asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
#enable sshd and zerotier-one
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl enable zerotier-one

另外关于上面的一些启动命令,默认都往~/.bash_profile~/.profile写了,都没有往~/.bashrc里面写但其实每当新开一个terminal的时候调用的是~/.bashrc中的命令,对于我们而言最方便的是写到~/.bashrc中。关于这三个差别可以参考:

Say, youd like to print some lengthy diagnostic information about your machine each time you login (load average, memory usage, current users, etc). You only want to see it on login, so you only want to place this in your .bash_profile. If you put it in your .bashrc, youd see it every time you open a new terminal window. this The .profile was the original profile configuration for the Bourne shell (a.k.a., sh). bash, being a Bourne compatible shell will read and use it. The .bash_profile on the other hand is only read by bash. It is intended for commands that are incompatible with the standard Bourne shell. this

比较推荐的做法是直接通过 echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' >> ~/.bash_profile 添加到~/.bash_profile中,这样我们自己写的脚本或是一些其他的启动脚本都可以默认都写在~/.bashrc这样对于登录或是未登录的shell都可以实现自动加载。

VNC相关

安装Tiger Vnc

sudo pacman -S tigervnc

首次输入 vncserver 会提示输入密码也会询问是否设置view-only password这个根据实际需要设置就好。

然后更改 ~/.vnc/config 输入根据实际情况填写如果输入了localhost则只监听127.0.0.1,无法远程连接上)

desktop=sandbox
geometry=1366x768
dpi=96
alwaysshared

然后更改 ~/.vnc/xstartup

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4

然后重新使用 vncserver 启动vnc如果提示的是1则表示端口是5901 :2则表示端口是5902以此类推。然后就可以通过vnc 软件进行远程连接了。macOS可以使用screens还挺好用的。有一个小hack是安装完了vncserver可以重启一下不然:1 是被占用的。

安装常用软件

我一般比较常用的软件有:

  • docker
  • neovim
  • remmia(VNC viewer)
  • liteide(golang)

国内加速Docker

  • 如果通过阿里云镜像加速

可以到这边申请专属的加速链接:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速链接"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 如果使用的是腾讯云镜像加速

修改 /etc/default/docker,添加(原先应该都是默认注释掉的)DOCKER_OPTS="--registry-mirror=https://mirror.ccs.tencentyun.com"这么一行,然后使用 sudo systemctl restart docker重启docker即可生效。

笔记本合盖不休眠

这项仅适用于使用笔记本的情况我的笔电是Lenovo Y510P但是BIOS做过破解网卡白名单网卡从原生的Intel更换成了博通BCM 94322这也是我安装Manjaro的原因之一对硬件的兼容性支持更好我需要我的电脑长时间开机并且可以合上盖子息屏但是不睡眠所以需要做一个修改接通电源的情况下manjaro默认是不休眠的当然这个也许会变可以复合一下在setting-power里面可以修改

sudo 修改 /etc/systemd/logind.conf ,找到 #HandleLidSwitch=suspend ,改成 HandleLidSwitch=ignore 即可合盖不睡眠。

当然,关于其他的电源选项可以去 Settings-Settings Manager-Power Manager 检查一下其他的电源选项,比如 Display tab 中的 Blank after、Put to sleep after、Switch off after 分别就是屏幕的黑屏、睡眠、关闭时间,而 System tab 中的 System sleep mode 就意味着当系统不活跃多久之后进行什么操作,电池和接电源分别的处理是什么,对于我而言就是直接全部改成 Never因为我希望电脑一直不休眠/睡眠 方便我随时能连接上这台电脑,虽然可能可以配置下 wake on lan 但是就不继续折腾了,也不差这点电【大雾】),建议配置下 Critical Power, 改成 level 10% 操作选 Hibernate 这样就可以在只有10%的电量的时候直接休眠,以防数据丢失(这个下分区的时候选择的 With Hibernate 选项单独分出来的一个休眠分区就有用户之地啦。顺带提一下Sleep是睡眠其实电脑的数据还都保存在内存中电源还是对电源供电的。

关闭笔记本的蜂鸣器

manjaro默认是打开了笔记本的蜂鸣器的所以当比如没有文字但是按退格键的时候电脑会beep beep地叫这个其实不是笔记本的speaker的声音而是主板上的蜂鸣器发出的。晚上就比较恼人了所以我还是比较希望能够关闭这个声音的。

  • 方法一

对于X applications 关闭蜂鸣器的方法很简单我假定既然是用manjaro就说明主要的使用场景是图形界面命令行里面输入xset b off即可。

  • 方法二

可以一劳永逸地做这个配置网上其他方案是在开机的自动启动的脚本中加入一个rmmod命令把负责这块功能的内核模块移除掉但是我有看到arch wiki资料说会导致问题所以选择了下面这个方式

使用命令sudo vim /etc/modprobe.d/nobeep.conf新增一个过滤文件,添加内容blacklist pcspkr保存重启即可。

也可以直接通过命令rmmod pcspkr进行内核模块的移除,如果不想要重启的话。

主要参考了这边:

How to disable beep tone in xfce when the delete button is pressed?

Kernel module

[SOLVED] Disable PC Speaker when Backspace is pressed on Log In

Disable PC speaker beep (简体中文)

解决和windows 10 dual boot

我的电脑上加装了一块硬盘所以有两块SSD其中一块上面安装了windows10但是EFI分区在另一块硬盘上面当时安装了Ubuntu 19.04所以当我安装manjaro的时候直接把安装了Ubuntu的硬盘格式化了 所以这个启动分区就丢失了。当打开电脑的时候会自动进度manjaro手动唤出BIOS的启动选项的时候也并不能检测到Windows的启动选项。因此为了解决这个问题需要以下步骤

  1. 制作Windows的usb启动镜像可以使用Rufus),镜像可以从这边下载:https://share.weiyun.com/5BFi4gv
  2. 使用usb启动如果是USB 3.0的U盘可以使用2.0的插口我的电脑检测不出来不确定会不会别人有同样的问题可以具体搜索不同型号的电脑的boot的快捷键比如Lenovo是F12。如果BIOS不支持快速选择的话那就需要进入具体的BIOS去调整启动盘的顺序这个可以具体去Google
  3. 进入安装界面之后按Shift+F10可以唤出Windows的安装命令行依次输入
bootrec /FixMBR 
bootrec /FixBoot
bootrec /rebuildbcd

但是我使用上述命令(输入bootrec /FixBoot)进行修复的时候提示了“拒绝访问”,继续查询解决办法后得到一个解决方法(输入以下命令):

bootrec /FixMBR 
bootsect /nt60 sys /mbr
bootrec /FixBoot
bcdboot c:\windows /s c:
bcdboot c:\windows /v 
bcdedit /enum

然后发现bcd文件已经修复好但是步骤并没有结束。

  1. 重启进入Windows系统默认就是进入Windows其实这个时候如果打开BIOS的boot options也可以看到有windows10 的选项),打开控制面板-电源选项-系统设定,去掉快速启动的选项。也可以参考这篇文章:How To Disable Fast Startup in Windows 10
  2. 然后可以重启一下进入Windows10也可以先通过boot option先进入manjaro然后再重启进入Windows 10不确定这一步的意义但是我是这么做的也许可以省略。
  3. 重新回到Windows后以管理员命令打开命令指示符输入bcdedit /set {bootmgr} path \EFI\manjaro\grubx64.efi,参考:Dual-boot Manjaro - Windows 10 - Step by Step
  4. 重启则会发现默认进入了manjaro再次重启boot option进入windows后再次重启就会发现进入了manjaro的GRUB的菜单然后就可以选择到底是windows还是manjaro了。

安装Cisco AnyConnect

网上比较流行的权重比较高的教程在这边:[HowTo] Install the official Cisco AnyConnect VPN Client tarball using the AUR (UPDATED) ,也可以找到这个AUR。但是实际操作的时候会提示错误因为缺少一个二进制的文件包但是实际上Cisco的这个包是私有的不开放下载的。但是当实际拿到了这个包之后我尝试编译还是一堆错误感兴趣的可以从这边拿到包尝试一下教程。 我的做法是直接打开软件中心add remove software安装了openconnect然后可以在右下角的Wi-Fi 或者有线网络处VPN Connections-Configure VPN处新增一个any connect profile就好gateway中填写服务器{ip:port}。

添加终端代理快捷命令

可以往~/.bashrc中添加下列命令:

function setproxy() {
        export {HTTP,HTTPS,FTP}_PROXY="http://127.0.0.1:7890" #也可以设置http代理
        export ALL_PROXY=socks5://127.0.0.1:7891
}
function unsetproxy() {
        unset {HTTP,HTTPS,FTP}_PROXY
        unset ALL_PROXY
}

这样我们可以使用setproxy或是unsetproxy进行设置或者反设置终端代理,也可以通过 curl -i https://ip.cn 查看设置是否成功,也可以通过curl https://www.google.com进行检测是否切换代理成功因为比如一些软件会根据rule进行分流那么即便走了代理直接访问国内的网站也还是直连的或者软件先开好全局模式。当然端口需要根据实际进行修改比如我用的是Clash那么我的端口就是7890http/https和7891socks5

zerotier 相关配置(待续)