普段は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