はじめに
ロボットの開発用に持ち運びができるPCが欲しい&どうせなら普段の開発でのシミュレーション実行もやりたい。という事でノートPCを購入しました(STYLE-17FG104-117K-VAZX)。いざUbuntuをインストールしようとするとインストール先のメディアが認識されない、インストール時にエラーが発生する。などのトラブルが有りました。
本稿では、色々とやってインストールまでたどり着いた内容をまとめました。
- 内容は独自に調査したものでありメーカー様、販売店様から保証いただいたものではありません。メーカー様、販売店様に問い合わせはしないでください。
- Ubuntuのインストールについては自己責任でお願いします。
- 予めバックアップを作成してから行ってください。
インストール対象PC
iiyamaのSTYLEシリーズ(STYLE-17FG104-117K-VAZX)
- CPU : 第11世代インテルCore i7(11700K)
- チップセット : Intel Z590
- GPU : GeForce RTX 3080
- メモリ : DDR4-3200 S.O.DIMM 16GB
- ストレージ : NVMe対応M.2 SSD 500GB
インストール時のトラブル内容
- LiveUSBからUbuntuのインストーラを起動してインストールを行うと、インストール対象ストレージが認識されない
- ストレージを認識しても、ブートローダの設定で失敗する
- シャットダウン時に電源が切れない
対応内容は下記の概要は下記のとおりです。
[インストール時]
- M.2 SSDを認識させるためにACPIサポートをOFF
- ブートローダー書き込み時にNVRAMへの書き込みをOFF
[インストール後]
- ACPIサポートを有効にするためにkernelをバージョンアップ
PCセットアップ手順
ノートPC(STYLE-17FG104-117K-VAZX)のソフトウェアを設定するための手順書です。
1. BIOS設定
Thunderboltをdisable
SecureBootをdisableにする
2. Ubuntu 22.04.1 LTSのインストール
2.1. インストーライメージの取得とbootable USBメモリの作成
- Rufusをダウンロード(https://rufus.ie/ja/)(portable版)
- Ubuntu22.04.1をダウンロード(https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-desktop-amd64.iso)
- Rufusを用いて、ISOモードでUSBメモリへ書き込む
2.2. インストーラの起動
M.2 SSDをインストーラが認識しない問題はaskubuntuにそれらしい記述がありました。
linux kernelがacpiに対応しておらず、内蔵のM.2 SSDを認識しないため、acpiの設定をOFFにして起動すると認識する。
- USBメモリをPCのUSBポートへ挿入し電源ボタンを押下する。
- スプラッシュ画面が表示されたところでF7を押下しBootMenuを表示する。
- 選択リストよりUSBメモリを選択する。
- GNU Grubのメニューより Ubuntu を上下キーで選択し'e'を押下する。起動オプション編集画面へ。
- コマンドラインオプションを編集。
linux /casper/vmlinuz ....... maybe-ubuquity quiet splash ---
下記のようにacpi=off
を追加する
linux /casper/vmlinuz ....... maybe-ubuquity acpi=off
- F10を押下して起動する
2.3. Ubuntuのインストール
2.2.の対応でインストール先のSSDを認識するようになりますが、このまま通常のインストールプロセスを進めると、最後のブートローダー(GRUB)の設定で失敗します。
どうやらnvramへの書き込みにエラーによりインストールが失敗しているみたいです。
そこで、インストーラの起動時オプションでブートローダーのインストールをスキップしてOSをインストールし、後から手動でブートローダーのインストールを行ないます。
-
インストーラ起動後「Try Ubuntu」を選択する
-
Terminalより
ubiquity -b
を実行する(ブートローダーをインストールしないオプションをつけてインストーラを起動する'-b') -
Installation type画面で"Erase disk and install Ubuntu"を選択し'Continue'ボタン押下
-
Erase disk and install Ubuntu画面のSelect driveで、'/dev/nvme0n1' を選択し'Install Now'ボタン押下
-
Write the change to disks?確認画面で'Continue'ボタン押下
-
インストール完了後'Continue Testing'を選択する
2.4. BIOSパーティション作成
Terminalよりgdiskを使ってパーティションを作成する
$ sudo sgdisk /dev/nvme0p1
sgdiskの操作でパーテションを編集する
'n'コマンドでパーテション作成
partition 3
First sector : default値(34)
Last sector : default値(2047)
PartitionType : ef02
'w'コマンドでパーティション情報を書き込む
2.5. grubの手動インストール
GRUB(ブートローダー)をインストールする際、nvramへの書き込みを無効にして行う。
必要なディレクトリをマウント
$ sudo -s
$ cp -a /usr/lib/grub/x86_64-efi /target/usr/lib/grub/
$ mkdir /chroot
$ mount /dev/<ドライブ名><パーティション番号(Ubuntu)> /chroot
$ mount --bind /target /chroot
$ mount --bind /dev /chroot/dev
$ mount --bind /dev/pts /chroot/dev/pts
$ mount --bind /proc /chroot/proc
$ mount --bind /sys /chroot/sys
$ mount --bind /run /chroot/run
chrootで作業
$ chroot /chroot
mount /dev/<ドライブ名><パーティション番号(UEFIシステムパーティション)> /boot/efi
$ mount /dev/sdb1 /boot/efi
device.map ファイルを作成。これを行わないとgrub-installでdevice.mapが見つからない旨が表示される
(ただし、エラーとしてgrub-installが終了しないので分かりにくい)。
$ grub-mkdevicemap
--no-nvramオプションを付けてgrubのインストール
$ grub-install --efi-directory=/boot/efi --debug --root-directory=/
--target=x86_64-efi-pc --no-nvram /dev/nvme0n1
chroot /chroot でchrootに入ったままの状態
$ update-grub
/dev/sdb1のUUIDを控えておく
$ blkid /dev/nvme0n1p1
/dev/sdb1: UUID="41F9-4C31" TYPE="vfat" PARTUUID="b235d56d-4e68-4221-9b72-ffd65fdb684d"
この場合、41F9-4C31を控えておく
以下を実行し、編集画面上で同じ桁のUUIDを控えておいたUUIDに書き換える
$ nano /etc/fstab
念の為grub.cfgをバックアップを取って作成
$ mv /boot/efi/boot/grub/grub.cfg /boot/efi/boot/grub/grub.cfg.old
デフォルトの設定を変更する。以下を実行して、GRUB_CMDLINE_LINUX
の末尾に reboot=p acpi=off
を追記。
reboot=pは、システム終了したあとにCUIから電源が切れないため、追加する。
$ sudo nano /etc/default/grub
grub.cfgを再出力
$ grub-mkconfig -o /boot/efi/boot/grub/grub.cfg
念のためディレクトリをunmountしてから終了。
$ umount /boot/efi
$ exit <-- chroot環境のexit
$ umount /chroot/run
$ umount /chroot/sys
$ umount /chroot/proc
$ umount /chroot/dev/pts
$ umount /chroot/dev
$ umount /chroot
$ rm -rf /chroot
$ exit
ここまでで、再起動するとインストールしたUbuntuが起動するはず。
2.6. KernelのUpgrade
acpi=off
のままでは、shutdown/reboot時、自動的に電源が切れないため、ACPIに対応したkernelへバージョンアップを行う。
2.6.1. proxy設定
必要に応じてNetwork/proxyの設定を行う。aptのproxy設定は /etc/apt/apt.conf
に以下のようにproxy設定を行う
proxy設定後システムを再起動する。
Acquire::http::Proxy "http://proxy server:port";
Acquire::https::Proxy "http://proxy server:port";
更新ファイルのアップグレード
$ sudo apt update
$ sudo apt upgrade -y
2.6.2. Kernel Update
次のページを参照:https://linuxhint.com/install-upgrade-latest-kernel-ubuntu-22-04/
$ sudo -E add-apt-repository ppa:cappelikan/ppa -y
$ sudo apt install mainline -y
kernel 5.19.5をインストールする。
/etc/default/grub
を編集し、GRUB_CMDLINE_LINUX=""オプションを空欄にする(acpi=off reboot=pを削除する)
$ sudo grub-mkconfig -o /boot/efi/boot/grub/grub.cfg
$ reboot
まとめ
ここまでの手順でUbuntu 22.04が起動し、シャットダウンすると電源が切れる状態になったと思います。
調査時点ではUbuntu 22.04.1 LTSが最新版でしたが、その後のリリースで問題は解決されているかもしれません。