Open32

PCセットアップメモ

teasyteasy

新しく買ったノートPCをセットアップしたときのメモをする。

teasyteasy

購入したPC

メーカーと機種: HP HP Pavilion Aero Laptop 13-be2xxx
CPU: AMD® Ryzen 7 7735u with radeon graphics
GPU: AMD Radeon™ 680M(CPU内蔵)
メモリ: 16GB
ストレージ: 512GB
価格: 114,800円(セール価格。定価なら15万円ほど。)

teasyteasy

購入理由

  • 今まで使っていたPCがスリップから復帰せずに、強制シャットダウンするしかないことがたまに起きる。
  • 今まで使っていたPCのバッテリーが劣化して、数時間ほどしか持たなくなった。
  • 今まで使っていたPCはメモリ8GB、ストレージ256GBだったが、スペック不足をたまに感じた。
teasyteasy

選定理由

  • メモリとストレージのスペックがそこそこ良い。
    • メモリ16GBとストレージ512GBは必須だった。
  • 軽量で持ち運びしやすい。
    • 持ち運ぶことが多いので、重量が1kg以下は嬉しい。
    • ゲーミングノートPCはスペック良くても基本重い。
  • バッテリー持ちがそこそこ。
    • 買ってから気づいたが、新しく買ったPCも別にバッテリー持ち良くなかった😢
    • カタログスペックだと12時間と書いてあったが、OS上の予測値は満充電で5時間ほど。
    • とはいえ、軽くてバッテリーがいいものとなると+10万円くらいしそうだったので、仕方ないかも。
  • GPUが意外と性能いい。
    • 必須でなかったがついてきて嬉しい。
    • 最近PCでゲームをするようになったので、ゲーミングとはいわずともある程度ほしかった。
  • Type-C充電対応。
    • 必須条件でなかったが、アダプタを小さくできるので嬉しい。
  • Ryzenを使ってみたかった。
teasyteasy

デュアルブート

基本はUbuntuを使っているが、ゲームやOfficeのためにWindowsもたまに使う。
そのため、両方のOSが使える環境を用意したい。
以下の選択肢のうち、デュアルブートを選択した。

  • ストレージのパーティションを区切ってUbuntuとWindowsのデュアルブート。
    • 初期設定が大変そう。
    • OS間のファイル共有が面倒。
    • 同時に実行できない。
  • UbuntuホストでVirtualBoxなどの仮想マシン上でWindowsを動かす。
    • ゲームをする上でゲストOSのWindowsからGPUを活用するのが難しそう。
    • GPUパススルーだと、ホストOSのUbuntuがGPUを使えない。
    • チート対策で仮想マシン上から実行できなくしているゲームもあるらしい。
  • Windowsホストで仮想マシン上でUbuntuを動かす。
    • 現状Ubuntuをメインで使っているが、ホストをWindowsにするとUbuntuを触ることが減って、Linuxを使えなくなりそう。
    • 機械学習系で重たい処理をするときにGPUを使えなそう。
      • これはあまり重要でないかも。
teasyteasy

Ubuntuインストール準備

Ubuntuをインストールする前に、最初からインストールしてあるWindowsで以下を実施した。

teasyteasy

HP Battery Health Manager

HP Battery Health Managerは、電源接続していても80%くらいで充電を止めることで、バッテリーの寿命を延ばすことのできるアプリだが、個人向けノートPCには導入できなそう。
今まで使っていたPCはバッテリー劣化のせいで、ACアダプタも持ち運ぶことが多かった。
満充電しないのが逆にアダになるかもしれないが、長い目で見ると劣化を防ぐほうが良いと持ったので、使いたかった😢

teasyteasy

Windowsのクリーンインストール

Windowsのクリーンインストールはしなかった。
不要なプレインストールアプリを削除するのは面倒だが、ハードウェア診断とかのメーカーアプリはほしかったので、クリーンインストールはしなかった。

teasyteasy

ディスクの暗号化

持ち運ぶことがあると思うので、紛失時のリスク低減のため、ディスクは暗号化する。
今までディスクの暗号化はしたことがなかったが、せっかくなのでチャレンジする。
Windows側のパーテションはBitLockerで、UbuntuはLUKSで暗号化する。
OS間のファイル共有に共有パーテションを作ろうと思ったが、暗号化できるかよくわからなかったので、Dropboxなどのオンラインストレージ経由で実施することにした。

teasyteasy

Ubuntu 22.04 LTSライブUSBの起動

Ubuntuのインストール用のライブUSBを作ったが、うまく起動できなかった。
いろいろ試してみてうろ覚えだが以下の手順でやったはず。
Secure BootはONでもOFFでも駄目だった。

  • Ubuntu Desktop 日本語 RemixのISOをダウンロードする。
  • RufusというWindowsアプリでISOをUSBメモリに書き込む。
  • BIOSのブート設定を変えた内部ディスクでなくUSBメモリから起動。
  • Try Ubuntuを選択する。
    • 「Try Ubuntu」でなく「Try Ubuntu(Safe Graphics)」でも症状変わらず。
  • メーカーとUbuntuのロゴの状態で先に進まない。
  • 電源ボタン長押しで強制シャットダウンする。
teasyteasy

「Try Ubuntu」の状態でeを押し、手動で「acpi=off nomodeset」を追加して、起動設定を変えると先に進みインストーラーを起動できることがわかった。

以下のWEBサイトを参考にした。
https://forums.ubuntulinux.jp/viewtopic.php?id=21716

この場合でもインストール時にエラーが起こりインストールに失敗した。
具体的なエラーメッセージは以下の通り。

GRUBを/dev/nvme0n1にインストールできません。
'grub-install /dev/nvme0n1'の実行に失敗しました。
これは致命的なエラーです。
teasyteasy

ライブUSB用のISOファイルをUbuntu Japanese Teamが提供している日本語Remix版でなく、Ubuntu本家のデスクトップ版にしたところインストールできた。
日本語Remix版で行った「acpi=off nomodeset」も不要だった。

おそらく日本語Remix版のLinuxカーネルバージョンが古いことが原因。
日本語Remix版はUbuntu22.04.1をベースにしていてカーネルバージョンは5.15.0で、本家はUbuntu22.04.3にバージョンが上がっており、カーネルも6.2.0。
Linuxカーネルのバージョンが上がり、比較的新しいハードウェアにも対応したため、本家の方ではライブUSBを起動できたと思われる。

なお、ACPI関連のエラーは本家の方でも出ているが、すぐにインストール画面に映るので致命的なエラーではないと思われる。
Secure Bootも有効にしていたが問題なかった。

teasyteasy

Ubuntuインストール前の準備

teasyteasy

Ubuntuインストーラーの実行

各設定は以下のようにした。

  • 無線
    • ネットワークに繋げず実行。
  • アップデート時のソフトウェア
    • 最小インストール
    • サードパーティ製のソフトウェアをインストールする
      • Configure Secure Bootはチェックなし。
  • インストールの種類
    • 「それ以外」を選び以下を設定。
    • 未割り当て領域の先頭に、1000MB、ext4、マウントポイントは/bootでパーティションを作成。
    • 残りの未割り当て領域に、暗号化の物理ボリュームを設定。
      • パーティンションタイプは基本パーティンション
      • 場所は領域の始点
      • セキュリティキーは適当
      • リカバリーキーは有効にして自動設定されたもの
      • 空きスペースの上書きはチェックしない
    • 暗号化ボリューム設定後に作成された/dev/mapper/nvme0n1p6に対して、ext4、マウントポイントをルートディレクトリ(/)
  • 上記でインストール

インストール中に「Error setting LUKS recovery key」というエラーが出たが、再起動後もUbuntuやWindowsを起動できたので、無事インストールできたように見える。
なお、Ubuntuを再起動した際に暗号化ボリュームで設定したセキュリティキーを入力する必要がある。
入力後にユーザーの選択画面になる。

teasyteasy

Windowsパーティションの暗号化

Ubuntuインストールのために暗号化を解除したWindowsパーティションのデバイスを、再度暗号化する際に手間取った。

Ubuntuインストール後に再度デバイスの暗号化(≒BitLocker)を有効にしようとしたが、WindowsのライセンスがHomeエディションのためか、有効化することはできなかった(そのようなメニューがなくなっていた)。
Ubuntuインストール前だったら、無効化後も有効化できていた。

このWEBサイトを参考に、Windows+RからMSInfo32と入力しシステム情報を実行し、デバイス暗号化のサポートの欄のデバイスの自動暗号化が失敗した理由を確認したところ、「表示するためには昇格が必要です」という記述があった。

BIOSのブート順設定でWindowsを最初にしたところ、デバイスの暗号化のメニューが表示されて、暗号化できるようになった。
暗号化完了後に再度ブート順でUbuntuを最初にした。

teasyteasy

UbuntuのDiskアプリでの確認したところ、最終的にパーティションは以下の構成になった。

  • パーティション1(最初から存在。たぶんWindowsのブートパーティション)
    • 内容: FAT(32bit)
    • パーティションタイプ: EFI
  • パーティション2(最初から存在)
    • 内容: Unknown
    • パーティションタイプ: Microsoft Reserved
  • パーティション3(Windowsパーティション)
    • 内容: Unknown(BitLocker 2)
    • パーティションタイプ: Basic Data
  • パーティション4(Windowsのリカバリーパーティション)
    • 内容: NTFS
    • パーティションタイプ: Microsoft Windows Recovery Environment(System)
  • パーティション5(Ubuntuのブートパーティション)
    • 内容: Ext4(/boot)
    • パーティションタイプ: Linuxファイルシステム
  • パーティション6(Ubuntuパーティション)
    • 内容: LUKS Encryption
    • パーティションタイプ: Linuxファイルシステム

パーティション6上にはExt4のUbuntuのルートディレクトリを配置している。

teasyteasy

Ubuntuセットアップ

Ubuntu内での設定やソフトウェアインストール

teasyteasy

以前から使っているFirefoxのESR版をインストールする。
snap版だとIME関連で昔エラーが発生したことがあるのでaptからインストールする。

sudo add-apt-repository ppa:mozillateam/ppa
sudo apt update 
sudo apt install firefox-esr firefox-esr-locale-ja 

# 通常版の削除
sudo snap remove firefox
sudo apt remove firefox

# vlcを入れないとFirefoxで再生できない動画があった。
sudo apt install vlc 
teasyteasy

公式WEBサイトを参考にDockerをインストールする。

Uninstall old versions

sudo apt remove docker.io docker-doc docker-compose podman-docker containerd runc

Set up Docker's Apt repository

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Install the Docker packages

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verify that the Docker Engine installation is successful by running the hello-world image

sudo docker run --rm hello-world

Manage Docker as a non-root user

sudo groupadd docker
sudo usermod -aG docker $USER

# 再起動

docker run --rm hello-world
teasyteasy

Google Chromeのインストールをする。

WEBサイトからGoogle Chromeのdebファイルをダウンロードする。
その後以下を実行する。

sudo apt install ~/Downloads/google-chrome-stable_current_amd64.deb

以下のメッセージが出たがインストールは成功しているようだ。

ファイル '/home/foo/Downloads/google-chrome-stable_current_amd64.deb' がユーザ '_apt' からアクセスできないため、ダウンロードは root でサンドボックスを通さずに行われます。 - pkgAcquire::Run (13: 許可がありません)
teasyteasy

Visual Studio Codeをインストールする。

WEBサイトからdebファイルをダウンロードする。
その後以下を実行する。

sudo apt install ~/Downloads/code_foo_amd64.deb
teasyteasy

Dropboxをインストールする。

WEBサイトからdebファイルをダウンロードする。
その後以下を実行する。

sudo apt install ~/Downloads/dropbox_foo_amd64.deb

その後WEBブラウザ上で認証とかを行う。

teasyteasy

GolangとNode.jsをインストールする。

sudo snap install --classic go
sudo snap install --classic node
teasyteasy

Pyenvをインストールする。

# 必要なPythonビルド環境をインストール
# https://github.com/pyenv/pyenv/wiki
sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# Pyenvのインストール
# https://github.com/pyenv/pyenv#installation
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

# 設定
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
teasyteasy

Meld(差分の確認ツール)とFileZillaとgThumb(webp画像のビューア)をインストールする。

sudo apt install meld filezilla gthumb
teasyteasy

日本語向けmanコマンドをインストールする。

# manpages-jaはmanpages-ja-devのsuggested-packageでしかないので、両方インストール必要。
sudo apt install manpages-ja manpages-ja-dev
teasyteasy

Wiresharkをインストールする。

sudo apt install wireshark

# Should non-superusers be able to capture packets?
# Yes
teasyteasy

Radeon(AMD GPU)関連の設定を行う。

ひとまずはRadeonのオープンソース版ドライバーをインストールするために、mesaをインストールすることにしたが、調べてみたらすでにインストールされていた。
このサイトも参考にした。

  • AMDGPU
    • AMD Radeon グラフィックカード向けのオープンソースグラフィックドライバ。
    • mesa パッケージからインストールできる。
  • Radeon Software for Linux
    • AMDのWEBサイトからダウンロードできる。
    • おそらくプロプライエタリなドライバー。
  • OpenGL
    • クロスプラットフォームな3DグラフィックスAPI
    • mesaはオープンソースのOpenGL実装。
  • Vulkan
    • OpenGLより低レイヤーを扱えるクロスプラットフォームな3DグラフィックスAPI
  • ROCm: AMD版のCUDA
    • CUDAのようにホストにインストールするのでなくDockerのコンテナにインストールする。

ただし、GPUの使用率を調べたかったのでradeontopをインストールした。

# Radeonの使用率を調べるコマンド
sudo apt install radeontop

radeontop
teasyteasy

デュアルブート環境だと、WindowとLinuxで時刻がずれるため、Windowsのレジストリを変更する。
管理者権限で開いたコマンドプロンプトで以下のコマンドを実行する。

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

なお、ブートシーケンス中に予期しない動作が発生する可能性があるため、Linux側で対応しないほうが良い。
もしLinuxで対応する場合は以下のコマンドを実行する。

sudo timedatectl set-local-rtc true

# もとに戻したい場合は
# sudo timedatectl set-local-rtc false

# 変更の確認
timedatectl status

https://wiki.archlinux.jp/index.php/システム時刻#Windows_.E3.81.A7_UTC_.E3.82.92.E4.BD.BF.E3.81.86

teasyteasy

Windowsにインストールしたソフトウェア

  • Firefox ESR
  • Microsoft Office
  • Steam