295 lines
9.1 KiB
Markdown
295 lines
9.1 KiB
Markdown
|
+++
|
||
|
date = "2021-04-30"
|
||
|
tags = ["arch"]
|
||
|
title = "usbにarchをインストールする方法"
|
||
|
slug = "arch"
|
||
|
+++
|
||
|
|
||
|
基本的には、macbookでもbootできるarch usbの作成方法です。
|
||
|
|
||
|
### grub
|
||
|
|
||
|
まずbootですが、私はmacbook-airの内蔵diskにarchをインストールしてることもあって、そこから持ってくることになりました。
|
||
|
|
||
|
grub-installは成功するんだけど、なぜかうまく動かない。また、archのインストールディスクからgrubがなくなってるのと、現在のインストールディスクがmacbookで認識しなくなってました。supportはずされたのか、それ以外の問題か。なんにせよ最新のgrub-installで作成されるefiではbootできないし、最新のインストールディスクはmacbookから起動できません。(私の環境では)
|
||
|
|
||
|
なので、基本的には、usbにlinuxをインストールして、archが動いてるdiskの`/boot(linux-img以外)`及び`/dev/sda1`のディレクトリ構成をコピーすればokです。
|
||
|
|
||
|
```sh
|
||
|
$ pacman -S linux
|
||
|
|
||
|
$ mount /dev/sdb2 ./mnt
|
||
|
$ cp -rf /boot/efi ./mnt/boot/
|
||
|
$ cp -rf /boot/grub ./mnt/boot/
|
||
|
|
||
|
$ mount /dev/sdb1 ./boot
|
||
|
$ mount /dev/sda1 ./boot2
|
||
|
$ cp -rf ./boot2/* ./boot/
|
||
|
|
||
|
$ grub-mkconfig -o /boot/grub/grub.cfg
|
||
|
```
|
||
|
|
||
|
ちなみに、grub-installは以下のコマンドで成功(動かないけど)。
|
||
|
|
||
|
```sh
|
||
|
$ arch-chroot ./mnt
|
||
|
$ mount /dev/sdb1 ./boot/efi
|
||
|
|
||
|
$ grub-install --efi-directory=/boot/efi /dev/sdb
|
||
|
```
|
||
|
|
||
|
### linux
|
||
|
|
||
|
macbookは2台あるんですけど、archがすんなり起動したやつとしなかったやつがありました。
|
||
|
|
||
|
macbookによってはlinux起動時に以下のようなerrorが出てlinuxが起動しない場合があって、uuidが見つからないと言われてるんだけど、普通にusbのuuidは一致してるので、fstab, grubの問題ではなく、linux kernelの問題でした。
|
||
|
|
||
|
> ERROR: device 'UUID=xxx' not found. Skipping fsck.
|
||
|
> mount: /new_root: can't find UUID=xxx.
|
||
|
> You are now being dropped into an emergency shell.
|
||
|
> sh: can't access tty: job control turned off
|
||
|
|
||
|
これは、kernel更新する際、`block`を`autodetect`の前に置くと起動するようになりました。
|
||
|
|
||
|
```sh:/etc/mkinitcpio.conf
|
||
|
HOOKS="base udev block autodetect modconf filesystems keyboard fsck"
|
||
|
```
|
||
|
|
||
|
```
|
||
|
$ mkinitcpio -p linux
|
||
|
```
|
||
|
|
||
|
### icns
|
||
|
|
||
|
macのbootloaderはosを読み込む際にアイコンを設定できます。boot領域の`/`に.volumeicon.icnsを置きます。
|
||
|
|
||
|
```sh
|
||
|
$ mount /dev/sdb1 ./boot
|
||
|
$ cp .volumeicon.icns ./boot/
|
||
|
```
|
||
|
|
||
|
ちなみに、同じアイコンでも表示されないことがあって、権限等の可能性があるかも。正直、よくわかりませんし、icnsもめんどくさすぎる。
|
||
|
|
||
|
https://qiita.com/syui/items/76aebb2e39f40d8cd1e9
|
||
|
|
||
|
### wifi
|
||
|
|
||
|
wifi-deviceがない状態なのでdrive, kernelあたりの問題だと思われます。
|
||
|
|
||
|
b43などmodprobeのblacklistに入れてkernelを更新すると、wifi-deviceが立ち上がりました。
|
||
|
|
||
|
```sh:/mnt/etc/modprobe.d/broadcom-wl-dkms.conf
|
||
|
blacklist b43
|
||
|
blacklist b43legacy
|
||
|
blacklist bcm43xx
|
||
|
blacklist bcma
|
||
|
blacklist brcm80211
|
||
|
blacklist brcmfmac
|
||
|
blacklist brcmsmac
|
||
|
blacklist ssb
|
||
|
```
|
||
|
|
||
|
```sh
|
||
|
$ pacman -Syu linux-headers broadcom-wl-dkms
|
||
|
$ mkinitcpio -p linux
|
||
|
```
|
||
|
|
||
|
https://bbs.archlinux.org/viewtopic.php?pid=1862759#p1862759
|
||
|
|
||
|
### network
|
||
|
|
||
|
ip固定するので伝統的な名前、eth0とかにする。
|
||
|
|
||
|
```sh
|
||
|
$ ln -s /dev/null /etc/systemd/network/99-default.link
|
||
|
```
|
||
|
|
||
|
今回はnetworkmanagerを入れることにしたんだけど、便利。ただ、自動設定とかは接続は、systemd-networkで書いてる。
|
||
|
|
||
|
### xorg
|
||
|
|
||
|
ディスプレイがoffにならないようにする設定。よく忘れる。`xset dpms force off`が効かないことある。ただ、これらの設定によってi3が起動しなくなる事があるので注意。
|
||
|
|
||
|
```sh:/etc/X11/xorg.conf.d/10-monitor.conf
|
||
|
Section "Monitor"
|
||
|
Option "DPMS" "false"
|
||
|
EndSection
|
||
|
|
||
|
Section "ServerLayout"
|
||
|
Identifier "ServerLayout0"
|
||
|
Option "StandbyTime" "0"
|
||
|
Option "SuspendTime" "0"
|
||
|
Option "OffTime" "0"
|
||
|
Option "BlankTime" "0"
|
||
|
EndSection
|
||
|
```
|
||
|
|
||
|
https://wiki.archlinux.jp/index.php/Display_Power_Management_Signaling
|
||
|
|
||
|
### keyboard
|
||
|
|
||
|
xmodmapとかで設定するといいです。xevを使います。訳あってmacbook-airのusを使ってます。本当はjisのほうがいい。
|
||
|
|
||
|
```
|
||
|
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
|
||
|
|
||
|
shift Shift_L (0x32), Delete (0x3e)
|
||
|
lock
|
||
|
control Control_L (0x25), Control_L (0x42), Control_R (0x69)
|
||
|
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
|
||
|
mod2 Num_Lock (0x4d)
|
||
|
mod3
|
||
|
mod4 Super_L (0x85), Zenkaku_Hankaku (0x86), Super_L (0xce), Hyper_L (0xcf)
|
||
|
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
|
||
|
```
|
||
|
|
||
|
### gtk
|
||
|
|
||
|
gtk-themeはnumixを採用。
|
||
|
|
||
|
```sh
|
||
|
$ yay -S numix-gtk-theme numix-icon-theme-git
|
||
|
$ vim /usr/share/gtk-x.0/
|
||
|
|
||
|
$ cp /usr/share/gtk-2.0/gtkrc ~/.gtkrc-2.0
|
||
|
# GTK+ 2 : ~/.gtkrc-2.0
|
||
|
# GTK+ 3 : ~/.config/gtk-3.0/settings.ini)
|
||
|
```
|
||
|
|
||
|
https://wiki.archlinux.jp/index.php/GTK
|
||
|
|
||
|
### その他の環境
|
||
|
|
||
|
その他の環境としては、i3, xterm, tilix, pcmanfm, chromium, fcitx, yayなどを採用。
|
||
|
|
||
|
xtermも設定が面倒だけど、アイコンとかもフォントを指定すれば使える。
|
||
|
|
||
|
`.Xdefaults`,`.Xresources`に書く。
|
||
|
|
||
|
```sh
|
||
|
XTerm*termName: xterm-256color
|
||
|
XTerm*locale: true
|
||
|
XTerm*selectToClipboard: true
|
||
|
XTerm*saveLines: 2000
|
||
|
XTerm*background: black
|
||
|
XTerm*foreground: white
|
||
|
xterm*faceName: ricomoon
|
||
|
XTerm*faceSize: 13
|
||
|
```
|
||
|
|
||
|
terminalの透過は、picomで実現します。
|
||
|
|
||
|
![](https://raw.githubusercontent.com/syui/img/master/other/arch_20210430.png)
|
||
|
|
||
|
```sh
|
||
|
$ sudo pacman -S picom
|
||
|
$ sudo cp /etc/xdg/picom.conf ~/.config/picom/
|
||
|
$ sudo vim ~/.config/picom/picom.conf
|
||
|
```
|
||
|
|
||
|
```sh:~/.config/picom/picom.conf
|
||
|
opacity-rule = [
|
||
|
"90:class_g = 'URxvt' && focused",
|
||
|
"60:class_g = 'URxvt' && !focused",
|
||
|
"90:class_g = 'xterm' && focused",
|
||
|
"60:class_g = 'xterm' && !focused",
|
||
|
"90:class_g = 'tilix' && focused",
|
||
|
"60:class_g = 'tilix' && !focused"
|
||
|
];
|
||
|
```
|
||
|
|
||
|
```sh
|
||
|
$ picom &
|
||
|
```
|
||
|
|
||
|
あとは、`~/.xinitrc`にでも書けばいいでしょう。
|
||
|
|
||
|
### vpn
|
||
|
|
||
|
usbを外のパソコンに挿して、ssh先でvpnを起動し、local networkに入ってリモートすることはよくあるので、vpnの構築方法とclientでの接続方法を紹介。
|
||
|
|
||
|
vpnはserverもclientもpritunlが便利すぎるので、そちらを使います。
|
||
|
|
||
|
https://github.com/Fridus/docker-pritunl
|
||
|
|
||
|
```sh
|
||
|
$ sudo systemctl start docker
|
||
|
```
|
||
|
|
||
|
```yml:docker-compose.yml
|
||
|
network:
|
||
|
image: busybox
|
||
|
ports:
|
||
|
- "9700:443"
|
||
|
- "1194:1194/udp"
|
||
|
restart: always
|
||
|
tty: true
|
||
|
|
||
|
mongo:
|
||
|
image: mongo
|
||
|
volumes:
|
||
|
- ./mongo:/data/db
|
||
|
restart: always
|
||
|
net: container:network
|
||
|
|
||
|
pritunl:
|
||
|
image: fridus/pritunl
|
||
|
privileged: true
|
||
|
environment:
|
||
|
- MONGO_URI=mongodb://127.0.0.1:27017/pritunl
|
||
|
restart: always
|
||
|
net: container:network
|
||
|
|
||
|
https-portal:
|
||
|
image: steveltn/https-portal:1
|
||
|
ports:
|
||
|
- '443:443'
|
||
|
environment:
|
||
|
STAGE: 'local'
|
||
|
DOMAINS: 'localhost => https://0.0.0.0:9700'
|
||
|
```
|
||
|
|
||
|
```sh
|
||
|
$ sudo docker-compose up -d
|
||
|
```
|
||
|
|
||
|
で、設定方法は、`https://localhost:9700`にアクセスしてwebから行います。user,passwordは`pritunl`です。
|
||
|
|
||
|
基本的にはorg,userを作成して、start serverすればokです。userからはprofile(example.vpn)をダウンロードできますが、それを使います。これはopenvpnでも使用できる形式のものです。ただし、localで構築してることもあって、使用する際はdefaultのip,portが異なります。settingから変更した上で、profileをダウンロードすればいいのですけど、`.vpn`を修正したほうが早いです。
|
||
|
|
||
|
ここでは、vpn serverのlocal ipを`192.168.11.4`とし、global ipを`207.97.227.253`とします。wan(外部)からserverにアクセスするにはrouteでポートフォワーディングなどを設定すればいいでしょう。
|
||
|
|
||
|
```sh:example.vpn
|
||
|
- remote 192.168.1.4 1194 udp
|
||
|
+ remote 207.97.227.253 ${routeで設定した192.168.11.4:1194に繋がるwan側のport} udp
|
||
|
```
|
||
|
|
||
|
次に、pritunl clientの話になります。mac,linux,windowsがあります。cliもありますが、cliはちょっと壊れている気がするし、そこまで柔軟でもないので、[gotunl](https://github.com/cghdev/gotunl)を使います。
|
||
|
|
||
|
https://client.pritunl.com/
|
||
|
|
||
|
https://docs.pritunl.com/docs/command-line-interface
|
||
|
|
||
|
基本的には、GUIでprofileをimportしたあと、gotunlで接続操作すればいいでしょう。
|
||
|
|
||
|
```sh
|
||
|
$ sudo tee -a /etc/pacman.conf << EOF
|
||
|
[pritunl]
|
||
|
Server = https://repo.pritunl.com/stable/pacman
|
||
|
EOF
|
||
|
$ sudo pacman-key --keyserver hkp://keyserver.ubuntu.com -r 7568D9BB55FF9E5287D586017AE645C0CF8E292A
|
||
|
$ sudo pacman-key --lsign-key 7568D9BB55FF9E5287D586017AE645C0CF8E292A
|
||
|
$ sudo pacman -Sy
|
||
|
$ sudo pacman -S pritunl-client-electron
|
||
|
$ sudo pacman -S pritunl-client-electron-numix-theme
|
||
|
$ pritunl-client-electron
|
||
|
# ここでprofile(example.vpn)をimport
|
||
|
|
||
|
$ git clone https://github.com/cghdev/gotunl.git
|
||
|
$ cd gotunl
|
||
|
$ go install
|
||
|
$ ./${GOPATH}/bin/gotunl -l
|
||
|
$ ./${GOPATH}/bin/gotunl -c 1
|
||
|
```
|
||
|
|