tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

Lenovo T480にantergos(or arch linux)をインストールする

普段はcnchiというantergosのインストーラに完全に依存してarch linuxをインストールしていた。最近のpcだとbiosからUEFIに切り替わっているらしい。T480ではWindows efiファイルしか起動できない設定になっているらしく、cnchiは正常に終了してもOSが起動しない問題がある。また、自作したワークステーションに至ってはantergosのlive usbすら起動しなかった。ひとまずT480の方がGPUのドライバ周りに気を配らなくて良さそうなのでこちらから作業する。arch linuxのインストールに加えて、antergos独自のパッケージもインストールできるようにした。以下スクリプト。このあとユーザを追加したりgnomeをインストールしたりする必要がある。

  • Live ISO
sudo dd if=~/Downloads/archlinux-2019.04.01-x86_64.iso of=/dev/sdc status=progress bs=4M && sync
  • スクリプト
#!/bin/bash

#----------------------
# reference for all:
#   https://wiki.archlinux.jp/index.php/インストールガイド
#   https://github.com/tukiyo/archlinux-autonistaller
#   https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744
#----------------------

set -eux
CHROOT="arch-chroot /mnt"

#-------------
# settings
#-------------
echo "Type SSID to connect:"
read SSID
echo "Type password:"
read PASSWORD

#----------------------
# partitioning /dev/sda
# * sda1 : EFI Filesystem : 512MB
# * sda2 : SWAP : 32GB
# * sda3 : EXT4 : the rest
#----------------------
gdisk /dev/sda <<EOF
o
y
n
1

+512M
EF00
n
2

+32G
8200
n
3




w
y
EOF

#-------------
# format
#-------------
mkfs.vfat -F32 /dev/sda1
mkswap /dev/sda2
# swapon /dev/sda2
mkfs.ext4 -F /dev/sda3

#-------------
# mount
#-------------
mount /dev/sda3 /mnt
mkdir /mnt/boot
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

#-------------
# network (wifi)
#-------------
ip link set wlp3s0 up
wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "$SSID" "$PASSWORD")
dhcpcd wlp3s0

#-------------
# system clock
#-------------
timedatectl set-ntp true

#-------------
# mirror
#-------------
cat > /etc/pacman.d/mirrorlist <<EOF
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/\$repo/os/\$arch
EOF

#-------------
# pacstrap
#-------------
pacstrap /mnt base base-devel grub efibootmgr os-prober

#-------------
# genfstab
#-------------
genfstab -U /mnt >> /mnt/etc/fstab

#-----------------
# chroot->timezone
#-----------------
$CHROOT ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$CHROOT hwclock --systohc --utc

#---------------
# chroot->locale
#---------------
$CHROOT sed -i -e 's/#ja_JP.UTF-8/ja_JP.UTF-8/' /etc/locale.gen
$CHROOT sed -i -e 's/#en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen
echo LANG=en_US.UTF-8 > /mnt/etc/locale.conf
$CHROOT locale-gen

#-------------------
# chroot->bootloader
#-------------------
$CHROOT mkinitcpio -p linux
$CHROOT grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck
$CHROOT sed -i -e 's/^GRUB_TIMEOUT=5$/GRUB_TIMEOUT=1/' /etc/default/grub
$CHROOT grub-mkconfig -o /boot/grub/grub.cfg

# Lenovo T480 will only boot to Windows EFI file or default EFI fallback file.
# When GRUB is used, it is needed to rename the GRUB .efi to one of these
# specific file names. Remember to repeat these steps (or use a pacman hook)
# when the GRUB package was updated.
# reference: https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_T480
mkdir -p /mnt/EFI/Microsoft/Boot
cp /mnt/boot/efi/EFI/arch_grub/grubx64.efi /mnt/EFI/Microsoft/Boot/bootmgfw.efi
mkdir -p /mnt/EFI/BOOT
cp /mnt/boot/efi/EFI/arch_grub/grubx64.efi /mnt/EFI/BOOT/bootx64.efi

#-------------
# chroot->network
#-------------
$CHROOT pacman -S --noconfirm iw wpa_supplicant dialog networkmanager
$CHROOT systemctl enable NetworkManager

#----------------------
# chroot->pacman, yay
# referencce:
#   https://takuyaokada.hatenablog.com/entry/20190305/1551758426
#----------------------
$CHROOT curl -OL http://repo.antergos.com/antergos/x86_64/antergos-keyring-20170524-1-any.pkg.tar.xz
$CHROOT rm -rf /etc/pacman.d/gnupg
$CHROOT pacman -U --noconfirm antergos-keyring-20170524-1-any.pkg.tar.xz
$CHROOT pacman-key --init antergos archlinux
$CHROOT pacman-key --populate antergos archlinux
SCRIPT_DIR=$(cd $(dirname $0); pwd)
(cd $SCRIPT_DIR && curl -OL https://raw.githubusercontent.com/Antergos/antergos-packages/master/antergos/antergos-mirrorlist/antergos-mirrorlist)
mv $SCRIPT_DIR/antergos-mirrorlist /mnt/etc/pacman.d/
cat >> /mnt/etc/pacman.conf << EOF
[archlinuxfr]
# SigLevel = Never
SigLevel = PackageRequired
Server = http://repo.archlinux.fr/\$arch

# [antergos]
# SigLevel = PackageRequired
# Usage = All
# Server = http://mirror.antergos.jp/\$repo/\$arch >> /etc/pacman.conf

[antergos]
SigLevel = PackageRequired
Include = /etc/pacman.d/antergos-mirrorlist
EOF

#----------------------
# finish installation
#----------------------
$CHROOT pacman-db-upgrade
$CHROOT pacman -Syyu --noconfirm
$CHROOT pacman -Sy --noconfirm yay
$CHROOT yay -Sc --noconfirm
$CHROOT echo "t480" > /mnt/etc/hostname
set +eux