⚰️

Intel MacBook Pro (Mid 2014) に Ubuntu 24.10 をインストールする

に公開

要約

  • 昔地獄を見た時が嘘のように、超簡単にUbuntuが動作する(本当にいい時代だ)
  • UIはMacほどではないにせよ、十分使える。Windows11よりきれい ブラウジングやSSH作業なら十分すぎる。
  • サスペンド機能は相変わらず危ないのでDisabledにしたいところ。
  • 相変わらず mozc の変換精度が弱い。AI全盛期だからこそ、このあたりで一気に進化してほしいとは思う。

背景

かつての戦友、2014年モデル。
そこに眠る、ライフタイムライセンスの32bitレガシーアプリの数々・・
できたら、あと5年くらいは延命しつつ普通使いしたいけど、入っているOSがEOLで最新のブラウザは動かないし、かと言ってMacをアップグレードするとアプリのライセンスがもったいない。

とりあえず、なけなしの30GBの空き領域を確保して、そこにダメ元でLinuxでも入れて延命するかーと考えた。

最新のmacOSとのデュアルにしたら?

やらない理由は3つ

  • 最近のmacOSのリリース+EOL速度の速さから見て、今入れられるものを入れても延命手段としては弱い。
  • 単純にこのマシンのCPU世代やディスク空き容量的に、最新のmacOSを入れるのはしんどい。
  • 目的が、ちょっと最新のブラウザがキビキビ動いてセキュリティ的にいい感じであれば良くて、別にmacOSである必要はない。

Ubuntu 以外にも軽いのあるじゃん?

Mint とか Lubuntu とか Gentoo とか Tiny Core とかいろいろあるけど、そうじゃなくて普通のUbuntuにする理由は次の2つ。

  • 別のディストリでトラブったときの、トラブルシュートの手間がめんどい。
  • UIはなるべくきれいであってほしい。(せっかくRetinaディスプレイだし)

あと、Debian系以外はMacハードのDriverの取り扱いとかよくわからんかったのでやめといた。

環境

  • MacBook Pro Retina Mid 2014
    • もう10年前のモデルなのかと思うと時の流れの速さに泣きそうになる。
    • メモリを16GB+USキーボード仕様でCTOしたモデル。
    • OS は Mojave に固定中
      • 32bitアプリが動かせる最後のOSバージョンだったはず。
      • どうせ M1 Pro マシンも別に持ってるので、OSが古いことの弊害はほぼない。
      • 1,2年前くらいから各種アプリの最新版がサポートを打ち切り始めた。SteamやFirefox/Chromeなどはもう一切起動しない。
  • USB有線LAN or USB無線LAN のアダプタ
    • MacBook の 内蔵Wifi がデフォルトインストール直後では使えないため。
  • USBメモリ 8GB or later
    • iso焼いてブートするためのやつ

メインOSの状態

気づいたらレガシーということで、Apple的にもIntel Macはお荷物扱い。

手順

インストーラの準備

割愛。
MacOSXのディスクユーティリティをあまり信用していなくて、何回かUSBメモリぶっ壊したことがあるため、WindowsのRufusで焼いた。

自分の信じた方法で焼けばいい。

パーティションの設定

  • 「ディスクユーティリティ」を起動
    • パーティションを追加
    • フォーマット:MS-DOS(FAT)

選択できるサイズは円グラフ上で操作する。Macが認識しているディスクの空き容量の範囲でしかパーテを切れないため、予めCacheやゴミ箱を整理しておくと良い。

UbuntuのUSBブート+インストール

Mac に USBメモリをつけた状態で起動+optionボタンを押し続ける。

ブートメニューが出たら、EFI Bootを選択して、あとは画面の指示に従ってインストールを進める。
その際、インストール先を「手動パーティション」を使って正しく指定する必要がある

  • フォーマット:ext4
  • マウントポイント:/
  • ブートローダー:自身のディスクを指定(Macと混在していてもここを指定する)

間違えてUSBメモリ自身を指定したり、メインOSの領域をフォーマットしたりしないこと。

インストールが始まったらしばらくかかるため、10分程度放置。

Ubuntu の起動 と Wifiと日本語入力の改善

Mac に USBメモリを外して、代わりにUSB-LANをつないだ状態で起動+optionボタンを押し続ける。
(今回は有線LANを使う)

MacOSとは別にブートできるディスクが出てくるためそれを選択する(それがUbuntu)

初期セットアップが終わったら、次のコマンドを実行する。
Ubuntuデフォルトのサーバーとの速度が遅ければ、予め国内のミラーサーバーに変えておくなど。

sudo apt update
sudo apt upgrade -y

# Wifiドライバ
sudo apt install -y broadcom-sta-dkms
# 日本語入力
sudo apt install -y fcitx5-mozc
im-config -n fcitx5

# reboot.
sudo reboot

これで Wifi と 日本語入力がなんとかなるはず。
Wifiドライバは、世の中に出回っているインストール手段で書かれているパッケージが24.10には存在しない。

Ubuntu 全体の日本語化

途中の試行錯誤が悪かったのか、日本語と英語が中途半端に混在する状況になってしまった。CUIでやるもんじゃなさそう。
以下の手順で解決した。

「設定」→「システム」→「地域と言語」→「Manage Installed Languages」

この画面で、日本語と英語をインストールする。
こんな感じで関連パッケージ入れまくってくれる。

その後、以下の手順を踏む。

  • 「地域と言語」の言語・フォーマットを一度英語にする。(もしなってなかったら)
  • 一度再起動。
  • 「地域と言語」の言語・フォーマットを日本語にする。
  • 再起動。

これで中途半端に英語が出る状態にならなくなる。

画面の輝度の自動調節を落としたい

「設定」→「電源管理」→「画面の明るさの自動調整」をOFFにする。

Ubuntuの輝度調整ロジックとMacBookのハードと相性が悪くて、結構極端な挙動を起こしてくるので、OFFっておいたほうがいい。

[opt.]キーボードレイアウトの変更

Win/Linux と Mac では、Ctrl と Win/Command のキーアサインと挙動に若干の違いがある。
個人的には Mac の棲み分けのほうが好きだけど、これはUbuntu。Commandでできた操作の大半はCtrlにアサインされる。

もう慣れの問題だけど、気持ち悪ければ、Tweak

sudo apt install gnome-tweak-tool -y

で入れる(はじめから入っていたかもしれない)。あとは「キーボード」→「追加のレイアウトオプション」からCtrlとMetaを入れ替えるようにすれば解決する。

[opt.] WIP: Input Method Panel の改善

(この項は失敗したので読み飛ばしてください。後述の別の手段で成功しました)

ここまで来ると、ログインするたびに「Input Method Panelを入れてくれ〜」って通知が毎回出る。
実害はほぼないため、これを無視してもいいけど、指示に従おうとしても対応するExtensionが提供されていない。

なので、GitHubから取ってきてビルドする。

https://github.com/wengxt/gnome-shell-extension-kimpanel

sudo apt -y install curl cmake gettext
curl -OL https://github.com/wengxt/gnome-shell-extension-kimpanel/archive/refs/heads/master.zip
unzip master.zip
cd gnome-shell-extension-kimpanel-master
./install.sh 

Install successfull!
Enable it with gnome-tweak-tool or gnome-tweaks

これでいいはず?なんだけど、再起動してもtweakアプリから設定項目が見当たらない。
24.10には根本的に非対応かもしれない。

[opt.] Fnキーのデフォルトをひっくり返したい

F7のカタカナ変換を多用するので、できたらデフォルトをFnキーにしたい。

なんか方法がないか調べているけど、難しそうなのばかり出てくる・・

echo options hid_apple fnmode=2 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all
sudo reboot

これでいい感じになった。

[opt.] Neo Vimをインストールする

私はまだNeoVimmerガチ勢ではないけど、Vimよりデフォルトで使いやすいのでviやvimと置き換えて使っていきたいと思ったので、各種設定をNeoVimに向けるセッティングをする。
(もしかしたら主流のやり方じゃないかも)

# 面倒なので一時的にrootを取る。
sudo su 

# vim を消し去って、appimage を動かすためのライブラリを追加する。
apt remove vim -y
apt install libfuse2 -y

# Neo Vim の実行ファイルとエイリアスを設置
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
chmod u+x nvim.appimage
mkdir -p /opt/nvim
mv nvim.appimage /opt/nvim/nvim
ln -s nvim vim
ln -s nvim vi
# echo -e '#!/bin/bash\nvim -R "$@"' > less.sh  ## less は無理に置き換えなくてもいいかも
chmod 755 -R /opt/nvim

# profile と root用のbashrc にパスを通す.
echo 'export PATH="$PATH:/opt/nvim/"' >> /etc/profile
echo 'export PATH="$PATH:/opt/nvim/"' >> /root/.bashrc

# sudo 時のパスも通す
/opt/nvim/nvim /etc/sudoers
>> secure_path の末尾に「/opt/nvim」の追記をする(表現を壊さないように)

# エディタのデフォルトも変更する
update-alternatives --install /usr/bin/editor editor /opt/nvim/nvim 100
update-alternatives --set editor /opt/nvim/nvim

reboot

キッティング終了

この記事を書くために、とりあえずVS CODEも入れた段階でディスク使用量がこんな感じになった。

安定動作が見込めそうなら、もうちょっと空き容量を増やして再度インストールしようかしら。
ここから高負荷なことをするなら、Swapもせめて8GBくらい確保しておかないといけないかも。デフォルトインストールでSwapが4GBになっているので、いま時点でも10GBちょっとは確実に使えるから、開発作業とか動画のDLとかしなければしばらく使えそう。

よし、なんとかなりそう

とりあえず、これで問題なく初期セッティングができた。

この記事も9割がた、その Ubuntu24.10 on MacBook Pro で書いた。
その程度には使えているので、非常に満足度が高い。

普通にMac動かしているときよりもバッテリー持ちが良くなっていて、特に異常発熱とかも起きてないため、まぁしばらく使ってみようか、って気持ちになっている。
ちゃんと電源モードを「省電力モード」にすると、目に見えてバッテリーの減りが抑えられているのがわかるので、結構ありがたい。

ただ、この時期のIntelチップはオンボGPUがへなちょこすぎて、4KのYoutubeとか見るのきっついし、なんならFullHDでさえ結構発熱するから、Ubuntuにしたら改善されるとかあったらいいんだけど高望みしすぎかも。

やべっ、サスペンド押しちった...

電源OFFをしようとしたら、その下のサスペンドを押してしまった・・・

しまった、古くからMacbookでMac以外のOSのスリープ・サスペンドを実行すると応答不能になるって有名な逸話があるのに!!
ーーということで沈黙。

「control 」+「option (Alt)」+「shift」+ 電源キー 全部長押し

という、有名なハードリセットを行い、なんとか事なきを得る・・・

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

とりあえず、有名な自動スリープとか無効にするコマンドを与えて事なきを得る。

参考文献

追記

01/18 追記 Ghostty 入れてみた

https://ghostty.org/

Mac版は公式からバイナリビルドが提供されているが、Linuxはセルフビルドしてって書いてある。
ビルドしても良いんだけど、非公式ビルドを公開してくれている人がいるので、それに乗っかる。

https://github.com/mkasberg/ghostty-ubuntu

対応する.debを落として dpkg でインストールするだけ。
立ち上げてみると、Macとほぼ遜色ない感じで試せて良さげ。

と思ったんだけど、「より」という日本語文字を入力すると文字化けして謎の合字になる。
次の設定を入れておく必要があるみたい。

font-feature = -dlig

02/04 追記 1ヶ月ほどつかってみて

1ヶ月ほど、開発用というよりはTwitchとかYoutube見たり、Amazonでちょっと買い物したり、家内にあるラズパイとかLinuxサーバーとかにSSHしたり、っていう程度の負荷で使ってみて、次の印象を得た。

  • (ヘタった)バッテリーを気にして、電源モードを「省電力」にすると、ブラウジングに遅延が発生する程度にはCPU速度が心もとなくなる(10年前のIntel i5なんで仕方ない)
    • とはいえ、バッテリー消費量は結構でかくなるが、「パフォーマンス」にしておけば、そこそこ動く。
  • 動画再生はめっちゃファンが回る。そもそもオンボードGPUが貧弱なので仕方ない。(これはMacで動かしてても同様)
  • 最新のFirefoxが使えることで、リビングでちょっとブラウジングするのに良い。(万が一、子供とトラブルが起きてお茶こぼされたりしても「まぁ10年選手だし壊れても許せる」って気持ちでいられる。もし、その時が来たらレガシー資産とお別れになってしまうのは悲しいけど。)
  • 充電ケーブルつないでないと、本当にバッテリー消費が激しい。(2回目)
  • 別マシンではATOKを多用してることもあって、変換精度をある程度馴染ませるのが手間。
    • ジャストシステムはUbuntu向けにATOK Passportを展開したら、ニッチなファンがつくとおもうんだけどなぁ。流石に採算がとれず厳しいか。それくらいLinux系の日本語IMEの選択肢が厳しい。
  • プライベートでのWord/Excel作業は、Googleのあれらで完結することが多いんで、Linuxで困らない。
  • Steam を入れてみたが、Linux対応タイトルをほぼ持ってないんで、比較検討がちょっとできない。多分2Dゲームを軽く動かしても火を吹くように熱を持ちそうな予感。
  • free -h でメモリ状況を見る限り、16GB積んでいることの恩恵がでかい。平常で4GB程度は確保されてしまうようなので、メモリ8GBモデルだとちょっと苦労しそうな予感がする。
    • とはいえ、それでも古いMacを最新のOSバージョンにしたら、めっちゃヘビーになるんで、それよりはマシ。

まぁ、遊ばせているPC/Macがあったら、それを最新のUbuntu化してちょっと使いにするってのはかなり良い選択肢。
M1 Macとかも、正直 Asahi Linux にしちゃったほうが、macOSのバージョンアップに毎年ヒヤヒヤするよりマシなのでは??って気がしないでもなく・・。

02/09 追記 追加のインストール

  • NeoVim 上でのクリップボードコピーの影響範囲がNeoVimの中に閉じてしまっていて、ブラウザやメモ帳に貼り付けることができない。

以下のパッケージを追加インストールして設定を与えた。

sudo apt install wl-clipboard
mkdir -p ~/.config/nvim
echo "set clipboard=unnamedplus" > ~/.config/nvim/init.vim
chmod 600 ~/.config/nvim/init.vim

これで、クリップボードがシステム側に伝播して、より使いやすくなった。

  • Thorium Browser のお試し

標準のFireFoxでも良いんだけど、Chrome系は入れておきたい。たまにChrome特化のサイトがあって、痛い目をみるときがあるので。
――でも、Google Chromeは古いCPUマシンで動かすと火を吹く程度にヘビーなことで知られている。

なので、軽量?というかより最適化されている?というか、なんか良いやつないか調べたらこれを見つけた。

sudo rm -fv /etc/apt/sources.list.d/thorium.list && \
sudo wget --no-hsts -P /etc/apt/sources.list.d/ \
http://dl.thorium.rocks/debian/dists/stable/thorium.list && \
sudo apt update

sudo apt install -y thorium-browser 

まだ使い始めて間もないが、結構いいかもしれない。

02/11 追記 フォントの追加

Windows系の一部フォントがないと、不便なケースがあるので以下のコマンドでインストール。

sudo apt install -y ttf-mscorefonts-installer 

Arial, Comic Sans, Georgia, Times New Roman, Verdana あたりが追加される。
Comic Sans 以外は、とても使い勝手が良いので入れて全く損にならないのが嬉しいところ。

ただ、 MS明朝/MSゴシック、メイリオ、遊ゴシックといった日本人おなじみのやつは入らない。MS明朝/MSゴシックに至っては、政府系や公的機関への提出資料でフォント指定されているケースまで散見されるため、マイクロソフトが本腰入れて権利関係をクリアにして欲しいってずっと思っている。
あと、コンソール用フォントとしてyuru7氏のビルドフォントを使うことが多いので、ここからDLして手動で追加しておく。

mkdir -p ~/.fonts
# ここに手動で突っ込む。とにかく突っ込む。
fc-cache -fv

(MacBook に デスクトップUbuntu 突っ込んでる人で、家族用にユーザー使いまわしたければシステムフォントにむりくり突っ込めばいいと思う、そういうケースはしらん)

Ghostty には以下の設定を追記した

font-feature = -dlig
font-family = UDEV Gothic 35NF

02/15 追記 NeoVimの拡張とキーボードのリマップ

NeoVim の拡張

エディタはVSCodeがあるから、と思っていたが10年前のSoCだからか起動して文書を書き始めるまでに若干の遅延が発生する。
ほんの少し文字を書きたい時にこれはちょっといただけない。

せっかくNeoVimを入れたんだからこれを活用すればいいじゃないかと思って、Markdownファイルを読み込ませてみたが、シンタックスハイライトが全く機能しない。デフォルトでは未対応っぽい。

sudo apt install git # 必要
cd ~/.config/nvim # このフォルダはGhosttyの作業で作成済みのはず
touch init.lua && chmod 700 init.lua
mv init.vim _init.vim_old
mkdir -p ~/.config/nvim/lua/config
mkdir -p ~/.config/nvim/lua/plugins
touch ~/.config/nvim/lua/config/lazy.lua

今回は、そこまでガツガツに設定を詰めない。

i~/.config/nvim/init.lua
-- #Ghostty
vim.cmd([[set clipboard=unnamedplus]])

-- ## Tree-sitter
require("config.lazy")

~/.config/nvim/lua/config/lazy.lua
-- Bootstrap lazy.nvim
:%y+
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
  local lazyrepo = "https://github.com/folke/lazy.nvim.git"
  local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
  if vim.v.shell_error ~= 0 then
    vim.api.nvim_echo({
      { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
      { out, "WarningMsg" },
      { "\nPress any key to exit..." },
    }, true, {})
    vim.fn.getchar()
    os.exit(1)
  end
end
vim.opt.rtp:prepend(lazypath)

-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Setup lazy.nvim
require("lazy").setup({
  spec = {
    -- import your plugins
    { import = "plugins" },
  },
  -- Configure any other settings here. See the documentation for more details.
  -- colorscheme that will be used when installing plugins.
  install = { colorscheme = { "habamax" } },
  -- automatically check for plugin updates
  checker = { enabled = true, notify = false },
})
~/.config/nvim/lua/plugins/tree-sitter.lua
local M = {
    "nvim-treesitter/nvim-treesitter",
    build = function()
        require("nvim-treesitter.install").update({ with_sync = true })()
    end,
}

return { M }
nvim
 >> :TSInstall markdown
 >> :TSInstall query
 >> :TSEnable highlight

これでMarkdownのハイライトが使えるようになった。

キーボードのリマップ

このマシンでは外付けキーボード+外部モニターを使ったクラムシェル環境とかを想定していないので、思い切ってキーボードのリマップにも手を入れてしまおうと思った。

とりあえず、操作に支障が出ない程度の範囲で以下の設定を試みる。

  • Caps LockキーをControlキーにする
  • Fn + Tab で Caps Lock が呼ばれるようにする

言ってしまえばここだけはHHKB Studioの初期状態に揃えたいな、というもの。

https://github.com/sezanzeb/input-remapper

まずはこれをインストールする。

sudo apt install -y input-remapper

# -- 手動で最新バージョンをインストールしようとすると、UIがぶっ壊れる。注意
#curl -LO https://github.com/sezanzeb/input-remapper/releases/download/2.1.0/input-remapper-2.1.0.deb
#sudo apt install -f ./input-remapper-2.1.0.deb

GUIアプリを立ち上げると、次の選択肢が出てくる。

  • Sleep Button
  • Video Bus
  • bcm5974
    • ★これっぽいのがあればそれが対象になる。

実データは、~/.config の中にある。
GUIアプリの挙動がかなり怪しくて、キーアクションのRecordをやると高確率でアプリがフリーズしてだいぶしんどかったので、針の穴を通してなんとか生成できた設定ファイルのJSONを以下に記す。

~/.config/input-remapper-2/presets/bcm5974/default.json
[
    {
        "input_combination": [
            {
                "type": 1,
                "code": 58,
                "origin_hash": "bc9e1b8c8213dcb81baaa0ce0c0de60e"
            }
        ],
        "target_uinput": "keyboard",
        "output_symbol": "Control_L",
        "name": "CapsLock -> CtrlL",
        "mapping_type": "key_macro"
    },
    {
        "input_combination": [
            {
                "type": 1,
                "code": 464,
                "origin_hash": "00922308ed0095b424063e2f0b1893f2"
	    },
	    {	"type": 1,
                "code": 15,
                "origin_hash": "bc9e1b8c8213dcb81baaa0ce0c0de60e"
            }

        ],
        "target_uinput": "keyboard",
        "output_symbol": "Caps_Lock",
        "name": "FN + Tab -> CapsLock",
        "mapping_type": "key_macro",
        "release_combination_keys": false
    }
]

これで、 Fn+Tab で CapsLock、 CapsLockはCtrl-Lに割当てることができる。
ほんの気持ちだけHHKBっぽくできた。

05/04 追記 Ubuntu 25.04について

https://zenn.dev/plesio/scraps/a06414f02b95af

各種フォーラムを覗いて周ったところ、Intel Mac系 に Ubuntu 25.04 入れようとして失敗する方々がいっぱいいる状況だということがわかった。
ちなみに、Pre-Release版だとインストールができて、GA版だと失敗する。GAで採用されているカーネルバージョンだかなんかとIntel Mac系(というかレガシーなx86_64ハード?)と相性が最悪らしい。

これは、パッチアップデートが配布されるだけではだめで、ISO自体に更新がかかるまで、アップデートする手段がないという状況(このマシンの場合、ディスクが30GBしかないのでOSアップグレードもできないし)

Discussion