真面目にArchLinuxをUSBブートする
今まではお遊び、これからは本気。
最近はVirtualBox内のArchLinuxで色々やっているのだが、中でブラウザを使うようになると流石にCPUやらメモリやらが足りなくなる。やっぱり仮想環境ではなくそのままブートしたいので、またUSBブートすることにした。
“また”というのは、1年前に環境構築にハマっていてブログにも書き残しているのだ。が、情報が古いので今回書き直した。
https://blog.i544c.me/2016/04/18/install-arch-linux-in-usb/
https://blog.i544c.me/2016/04/20/install-archlinux-on-macbookpro/
インストール先のUSBの他に、ArchLinuxのイメージを直に焼いたUSBないしDVDを用意する。ArchLinuxイメージでブートして、インストール先のUSBを/dev/sdbで認識するところまで準備した。
ネットワーク接続する
これが手間取った。1年前にやった時はArchLinuxイメージでブートした時点でネットに繋がったものだが、最近のイメージでやると繋がらなかった。
どうもIPv6を優先的に繋ごうとするようだ。もうそんな時代なのか。。。まだIPv6の通っていない環境にいる俺はIPv4を使うべく、dhcpcdの設定を弄ることで解決した。
… – # clientid ++ clientid … – buid ++ # buid …
systemctl restart dhcpcd
パーティション分け
今まで使っていたVM上でUSBにインストールしていく形にする。VirtualBoxでUSBをマウントして、まずはパーティションを分ける。
fdisk /dev/sdb
ディスクラベルをgptにセット
コマンド:g
EFIシステムパーティションを作成
コマンド:n
パーティション番号と最初のセクタは未指定、尚512MBというのは推奨されるものであって、最小値は256MBである
最終セクタ:+512M
パーティションタイプをEFI Systemに変更
コマンド:t パーティションタイプ:1
ルートパーティションを作成
コマンド:n
あとは全部未指定でおk
変更をディスクに書き込んで終了
コマンド:w
EFIシステムパーティションをfat32で、ルートパーティションをext4でフォーマットする。
pacman -S dosfstools mkfs.fat -F32 /dev/sdb1
ジャーナリングを無効化して読み書きを減らしているが、電源喪失時にファイルシステムが壊れる恐れあり
mkfs.ext4 -O “^has_journal” /dev/sdb2
マウントして、インストール
mount /dev/sdb2 /mnt mkdir /mnt/boot mount /dev/sdb1 /mnt/boot pacstrap /mnt base base-devel
マウントのルールを設定
genfstab -U /mnt » /mnt/etc/fstab
arch-chroot /mnt /bin/bash
設定諸々
ロケールを設定。
en_US.UTF-8 UTF-8 ja_JP.UTF-8 UTF-8
locale-gen
LANG=en_US.UTF-8
ネットワークを設定。
pacman -S iw wpa_supplicant dialog
rootのパスワードを設定。
passwd
ブートローダーをセットアップ
pacman -S grub grub-install –target=x86_64-efi –efi-directory=/boot –bootloader-id=grub –removable –recheck grub-mkconfig -o /boot/grub/grub.cfg
これでとりあえずUSBは出来上がる。あとは自分好みに育てていくだけ👍
以下にオススメの設定や入れるべきソフトを記す。
Grubの選択時間を短縮する
GRUB_TIMEOUT=2
grub-mkconfig -o /boot/grub/grub.cfg で設定を適用する。
WatchDogを無効化する
/etc/default/grubでGRUB_CMDLINE_LINUX_DEFAULTにnowatchdogを追記./etc/modprobe.d/nowatchdog.confにblacklist iTCO_wdtを入力.
タイムゾーンを設定
ln -sf /usr/share/Zoneinfo/Asia/Tokyo /etc/localtime timedatectl set-local-rtc true #Windowsの時間に合わせる
Wi-Fiに繋ぐ
pacman -S networkmanager gnome-keyring network-manager-applet xfce4-notifyd
nmcli dev wifi connect
デスクトップ環境を整える
pacman -S xorg-server xorg-apps xf86-video-nouveau
pacman -S xfce4 xfce4-goodies xcompmgr xmonad xmonad-contrib lightdm lightdm-gtk-greeter systemctl enable lightdm
useradd -mG wheel $USER passwd $USER
visudo #wheelグループのユーザーがsudoを使えるようにする
これで再起動したらログイン画面に遷移して、ログインしたらxfceが起動する。
import XMonad import XMonad.Config.Xfce
main xmonad xfceConfig { terminal = “xfce4-terminal” , modMask = mod4Mask }
よりカスタマイズしたいなら、ココを見ると良い。
http://dotshare.it/category/wms/xmonad/
xfceの中でxmonadを使えるようにしたいなら、設定→セッションと起動→自動開始アプリケーションでxmonad –replaceとxcompmgr -cCを追加する。
xmobar
pacman -S xmobar stalonetray
もっと見た目を整える
pacman -S arc-gtk-theme yaourt -S arc-icon-theme
Bluetoothマウスを使いたい
ArchLinux Wikiに全て載っている。
pacman -S bluez bluez-utils systemctl enable bluetooth
bluetoothctl [bluetooth]# list #接続されているbluetoothコントローラーが表示される [bluetooth]# select <コントローラーのMACアドレス> \[bluetooth\]# power on \[bluetooth\]# scan on \[bluetooth\]# agent on \[bluetooth\]# devices #周囲のBluetoothデバイスが表示される \[bluetooth\]# pair <マウスのMACアドレス> \[bluetooth\]# trust <マウスのMACアドレス> \[bluetooth\]# connect <マウスのMACアドレス>マウスのMACアドレス>マウスのMACアドレス>マウスのMACアドレス>コントローラーのMACアドレス>
exit
起動時に自動で接続したいなら、以下のようにAutoEnableをtrueにするだけ。
[Policy] AutoEnable=true
日本語入力したい
pacman -S fcitx-im fcitx-configtool fcitx-mozc
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx
ターミナルで絵文字が使いたい
noto-fonts-emojiを入れておけば良い。
Profile-sync-daemon
X Window SystemないしWaylandを入れたら、まぁまずはブラウザを入れてしまう俺。このブラウザはディスクの読み書きを恐ろしいほど行うので、この読み書きをUSBではなくRAMで行うようにする。AURでprofile-sync-daemonを入れて、$HOME/.config/psd/psd.confを編集して有効化するブラウザを選択して、systemctl –userで有効化するだけ。
ただこれだけだと$HOME/.cacheにどんどんキャッシュされるので、結局嬉しくない。ここを参考に、$HOME.cacheをメモリとしてマウントする。
ターミナルでファイルマネージャー
pacman -S ranger w3m
xfce-terminalはw3m-imgが上手く動かない。ターミナルはrxvt-unicodeを使うようにしよう。
USB接続のスピーカーを使えるようにする
pacman -S pulseaudio pavucontrol xbindkeys yay -S pulseaudio-ctl xbindkeys -d > ~/.xbindkeysrc pactl list sinks short #サウンドカードの番号を確認
…
set-sink-muteやset-sink-volumeの後の数字はサウンドカードの番号
“pactl set-sink-mute 1 false ; pactl set-sink-volume 1 +5%” XF86AudioRaiseVolume
“pactl set-sink-mute 1 false ; pactl set-sink-volume 1 -5%” XF86AudioLowerVolume
xbindkeys &
もしくはAURのxfce4-volumed-pulseを使う。
dアニメなどでDRMコンテンツを観る
yaourt -S chromium pepper-flash chromium-widevine hal-flash(要らないかも) systemctl enable hal-flash
NTFSフォーマットのドライブをマウントする
pacman -S ntfs-3g
マウントするドライブのUUID確認
ls -l /dev/disk/by-uuid
# 追記
UUID=xxxxxxxxxxxxxxxx /media/hdd ntfs-3g default,gid=1000,uid=1000,umask=0022 0 0
Git Diff
ln -s /usr/share/git/diff-highlight/diff-highlight /usr/local/bin/diff-highlight
[pager] log = diff-highlight | less show = diff-highlight | less diff = diff-highlight | less
NTPを使う
デフォだと時刻同期をしないので、どんどん時間が正しくなくなる。
timedatectl set-ntp true
Pacman
いくつか設定しなければならない.
Pacmanはアップデートしても過去のバージョンを保持し続ける.pacman-contribをインストールして,過去のバージョンをHookで消す.
[Trigger] Operation = Remove Operation = Install Operation = Upgrade Type = Package Target = *
[Action] Description = Keep the last cache and the currently installed. When = PostTransaction Exec = /usr/bin/paccache -rvk2
あと,XMonadはhaskellが更新されたらxmonad –recompileを実行しなきゃならないので,自動化する.
/etc/pacman.d/hooks/xmonad.hook
[Trigger] Operation = Install Operation = Upgrade Type = Package Target = xmonad* Target = haskell*
[Action] When = PostTransaction Exec = /usr/bin/xmonad –recompile
諸注意
ArchLinuxを運用する上で、気を付けるべきことをここに記す。
- 1週間に1回はpacman -Syu
- 動かなくなったら、とにかくログを遡れ
そんなこんなで、最近のデスクトップ事情はこんな感じ。
近況報告
デレステで二宮飛鳥役の志貴様をとうとうサブスクしたんだが、その時のご様子。
可愛すぎかよ、一生サブスクするわ。