Last active
August 15, 2025 10:10
-
-
Save bokuo-okubo/afc3ebc42a0b6d4cfce0746d342ca6d3 to your computer and use it in GitHub Desktop.
fx13-ubuntu24-setup.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # Flow X13 (2021, GV301) on Ubuntu Server 24.04 → 安定GUI環境化スクリプト | |
| # - HWE kernel / firmware 更新 | |
| # - NVIDIA プロプライエタリ導入(nouveau無効化) | |
| # - 最小デスクトップ(ubuntu-desktop-minimal) | |
| # - iGPU優先運用(発熱低減) | |
| # - 省電力チューニング(powertop --auto-tune 常時化) | |
| # - 任意: ASUS asusctl/supergfxctl(BUILD_ASUS_TOOLS=1でビルド導入) | |
| set -euo pipefail | |
| # ===== 設定可能オプション ===== | |
| : "${INSTALL_GUI:=1}" # 1: 最小GNOMEを入れる, 0: ヘッドレスのまま | |
| : "${SET_IGPU_MODE:=1}" # 1: iGPU優先運用に切替(prime-select/intel) | |
| : "${BUILD_ASUS_TOOLS:=0}" # 1: asusctl/supergfxctl をビルド導入(任意) | |
| : "${USERNAME:=}" # 非rootユーザー名(空なら現在のログインユーザーを推定) | |
| : "${LOG:=/var/log/fx13-setup.log}" | |
| STATE_FILE=/var/local/fx13_setup_state | |
| exec > >(tee -a "$LOG") 2>&1 | |
| if [[ -z "${USERNAME}" ]]; then | |
| # ログインユーザー推定(sudoで動かす前提) | |
| USERNAME="${SUDO_USER:-${USER:-ubuntu}}" | |
| fi | |
| echo "==> Flow X13 セットアップ開始 (user=${USERNAME})" | |
| echo "==> ログ: $LOG" | |
| echo "==> オプション: INSTALL_GUI=$INSTALL_GUI, SET_IGPU_MODE=$SET_IGPU_MODE, BUILD_ASUS_TOOLS=$BUILD_ASUS_TOOLS" | |
| echo | |
| stage() { | |
| echo "$1" | sudo tee "$STATE_FILE" >/dev/null | |
| } | |
| current_stage() { | |
| [[ -f "$STATE_FILE" ]] && cat "$STATE_FILE" || echo "0" | |
| } | |
| need_reboot=false | |
| STAGE="$(current_stage)" | |
| # --- ステージ1: 基本更新・HWE/firmware --- | |
| if [[ "$STAGE" -lt 1 ]]; then | |
| echo "== [1/6] 基本更新・HWEカーネル・linux-firmware を導入" | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get update | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -y full-upgrade | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y linux-generic-hwe-24.04 linux-firmware \ | |
| ubuntu-drivers-common curl ca-certificates | |
| stage 1 | |
| need_reboot=true | |
| fi | |
| # --- ステージ2: nouveau 無効化(NVIDIA前提準備) --- | |
| if [[ "$STAGE" -lt 2 ]]; then | |
| echo "== [2/6] nouveau を無効化(NVIDIA利用を前提とするため)" | |
| sudo bash -c 'cat >/etc/modprobe.d/blacklist-nouveau.conf <<EOF | |
| blacklist nouveau | |
| options nouveau modeset=0 | |
| EOF' | |
| sudo update-initramfs -u | |
| stage 2 | |
| need_reboot=true | |
| fi | |
| # --- ステージ3: NVIDIA ドライバ導入 --- | |
| if [[ "$STAGE" -lt 3 ]]; then | |
| echo "== [3/6] NVIDIA 推奨ドライバを導入(要: Secure Boot 無効 or MOK enroll)" | |
| # 推奨版自動選択 | |
| sudo ubuntu-drivers autoinstall || true | |
| # 代表的に使用率の高い 535/550 系に固定したいなら(例): | |
| # sudo apt-get install -y nvidia-driver-550 | |
| stage 3 | |
| need_reboot=true | |
| fi | |
| # 再起動要求があればここで1回 | |
| if $need_reboot; then | |
| echo "== 再起動します。復帰後に: sudo bash $(basename "$0") をもう一度実行してください。" | |
| need_reboot=false | |
| sleep 2 | |
| sudo systemctl reboot | |
| exit 0 | |
| fi | |
| # --- ステージ4: 最小デスクトップ導入(任意) --- | |
| if [[ "$STAGE" -lt 4 ]]; then | |
| if [[ "$INSTALL_GUI" -eq 1 ]]; then | |
| echo "== [4/6] 最小デスクトップ(ubuntu-desktop-minimal) を導入" | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get update | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ubuntu-desktop-minimal gnome-software-plugin-flatpak | |
| # 日本語入力など必要に応じて: | |
| # sudo apt-get install -y language-pack-ja ibus-mozc fonts-noto-cjk | |
| else | |
| echo "== [4/6] GUI導入をスキップ (INSTALL_GUI=0)" | |
| fi | |
| stage 4 | |
| fi | |
| # --- ステージ5: iGPU優先(発熱低減) --- | |
| if [[ "$STAGE" -lt 5 ]]; then | |
| if [[ "$SET_IGPU_MODE" -eq 1 ]]; then | |
| echo "== [5/6] iGPU優先に設定(prime-select intel)" | |
| if command -v prime-select >/dev/null 2>&1; then | |
| sudo prime-select intel || true | |
| else | |
| # デスクトップ未導入でも、後でprime-selectが入れば反映可能 | |
| echo "prime-select 未検出。GUI導入後に 'sudo prime-select intel' を実行してください。" | |
| fi | |
| else | |
| echo "== [5/6] iGPU優先設定をスキップ (SET_IGPU_MODE=0)" | |
| fi | |
| stage 5 | |
| need_reboot=true | |
| fi | |
| # --- ステージ6: 省電力チューニング + 任意 asusctl/supergfxctl --- | |
| if [[ "$STAGE" -lt 6 ]]; then | |
| echo "== [6/6] 省電力チューニング(powertop)と任意の ASUS ツール導入" | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get update | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y powertop | |
| # powertop --auto-tune を起動時に自動適用する systemd サービス | |
| sudo bash -c 'cat >/etc/systemd/system/powertop-autotune.service <<EOF | |
| [Unit] | |
| Description=Powertop auto tune | |
| After=multi-user.target | |
| [Service] | |
| Type=oneshot | |
| ExecStart=/usr/sbin/powertop --auto-tune | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF' | |
| sudo systemctl enable powertop-autotune.service | |
| if [[ "$BUILD_ASUS_TOOLS" -eq 1 ]]; then | |
| echo "== ASUS ツール (supergfxctl / asusctl) をビルド導入します" | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \ | |
| git build-essential pkg-config cargo libclang-dev libudev-dev | |
| work=/tmp/asus-linux-build | |
| sudo rm -rf "$work" && mkdir -p "$work" | |
| pushd "$work" >/dev/null | |
| # supergfxctl | |
| git clone https://gitlab.com/asus-linux/supergfxctl.git | |
| pushd supergfxctl >/dev/null | |
| make | |
| sudo make install | |
| sudo systemctl enable --now supergfxd || true | |
| popd >/dev/null | |
| # asusctl | |
| git clone https://gitlab.com/asus-linux/asusctl.git | |
| pushd asusctl >/dev/null | |
| make | |
| sudo make install | |
| sudo systemctl enable --now asusd || true | |
| popd >/dev/null | |
| popd >/dev/null | |
| echo "== supergfxctl 例: 'sudo supergfxctl --mode integrated' / 'sudo supergfxctl --status'" | |
| else | |
| echo "== ASUS ツールのビルドはスキップ (BUILD_ASUS_TOOLS=0)" | |
| fi | |
| stage 6 | |
| fi | |
| echo | |
| echo "✅ セットアップ完了! 推奨チェック:" | |
| echo " - kernel: uname -r # 6.8 など HWE 系か" | |
| echo " - NVIDIA 認識: nvidia-smi # ドライバがロードされるか" | |
| echo " - PRIME 設定: prime-select query # intel になっているか" | |
| echo " - 消費電力: sudo powertop --time=10s # Idle W を確認" | |
| echo " - ASUS(任意): supergfxctl --status # 導入した場合" | |
| echo | |
| echo "※ iGPU優先を解除して dGPU を使いたいとき:" | |
| echo " sudo prime-select nvidia # 再起動後に dGPU 利用" | |
| echo " (supergfxctl を使う場合は競合に注意。どちらか一方で運用してください)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment