この記事は アドベントカレンダー2023 3日目の記事です。ポストイメージはカメラロールにあったyakudoラーメンです。
TL; DR
やってしまいました...
ということでOSを入れ直しました(!?) まあそろそろ入れ直したいなとは思っていたので、いいきっかけだということで...
ちなみにことの経緯↓
リポジトリ内でcargo-audit使う
— H1rono_K (@H1rono_K) October 28, 2023
→リポジトリ直下に`~`という名前のフォルダができる
→消そうとして`rm -rf ~`
→☠️
途中で止めたけど何が消えたかわからん...
環境
M1 MacBook Airで、初期OSはmacOS Montereyです(後で効いてくるので書いておきます)。rm
前はSonomaでした。
入れ直しの手順
- Time Machineでバックアップ
- 外付けSSDからmac起動
- 本体のディスクからmacOSを削除
- SSDのmacからinstall
- Apple ID認証
- Time Machineから復元
- 必要なツールを入れる
以降は各手順の具体的な内容について書きます。
0: OS入れ直しの前に
さっき言及したツイートにもあるとおり途中で止めました。じゃあ何が吹き飛んだのか?ざっくりls -a ~
とrm
中のpermission deniedログで見た感じだと、~/.*
がaから順に飛んでたっぽいです。あと何故か~/go
がちょっと。~/.asdf
は跡形もなかったけど~/.cargo
は生きてた、ぐらいの被害状況でした。これはCtrl-Cが早かったおかげですね。
事後の被害確認はこれくらいにしておいて、じゃあ事前に対策しておく手立てはないのか?というのをちょっと調べたところ、trashというコマンドがあるらしいですね。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JTVCbWFjT1MlNUQlRTMlODIlQjMlRTMlODMlOUUlRTMlODMlQjMlRTMlODMlODklRTMlODElQTclRTMlODMlOTUlRTMlODIlQTElRTMlODIlQTQlRTMlODMlQUIlRTMlODIlOTIlRTUlQUUlODklRTUlODUlQTglRTMlODElQUIlRTUlODklOEElRTklOTklQTQlRTMlODElOTklRTMlODIlOEIlRTYlOTYlQjklRTYlQjMlOTUmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTI4NTM3MjM5ODU1YzI1NjBhZmFiZGQ5YjJiZWI1ZjE0&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdG8tZm1hayZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MDg3ODJmYTUwNTA5ODgwZjg1OGYzZTY4MDI2MzQwNTI&blend-x=142&blend-y=491&blend-mode=normal&s=45381c82321c9604e468dc6fea8ea824)
rmtrash
というものも過去には存在したらしいですね。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9TWFjJUUzJTgxJUE3cm10cmFzaCVFMyU4MSVBRSVFNCVCQiVBMyVFNiU5QiVCRiVFMyU4MSVBOExpbnV4JUUzJTgxJUE3JUUzJTgxJUFFcm0lRTMlODElQUUlRTclQkQlQUUlRTMlODElOEQlRTYlOEYlOUIlRTMlODElODgmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWJiMzUwNWI3N2E4OTY3ZjM5OGFmMGIyOTFhNTA3NDkx&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwVG9tb2tpWWFtYXNoaXQzJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lZjc3ZmZjYTJkN2NhN2U0ZWNkOTEzM2NlOTc5M2NlYQ&blend-x=142&blend-y=491&blend-mode=normal&s=11636fe526209a0fda1017d84abadb18)
ついついrmを使っちゃう人はこれを入れておくと一安心ですね。まあ、私はまだ入れてないんですが...
0.5: OS入れ直しの目的
ただ入れ直すだけじゃ何も変わらないので、OSを入れ直してやりたいことを書いておきます。まず、現状には問題として以下のようなものがあります。
いらないソフトが入っている
Sophos, Microsoft Office製品などいらない滅多に使わないソフトが溜まっていました。OS入れ直しでその辺を綺麗さっぱり消し去りたいです。
Homebrewを辞めたい
これはdotfiles関係で感じていた問題です。OSを入れ直す前のdotfilesではBrewfileなどを提供しておらず、READMEを見ながらbrew install
を直打ちする以外に環境を再現する方法を提供していませんでした。OS入れ直し後はこの問題を少しでも緩和させたいです。
問題だけではなく、試したいこともあります。
Nixを使いたい
Nixは です。パッケージ構成などをNix言語で記述することができます。Reproducibilityに注力していて、Linux(WSL2含む)とmacOSで使うことができます。これを導入してdotfilesの問題を少しでも解消したいです。
1: Time Machineでバックアップ
え?rm -rf ~
しちゃったからいっそのこと全てを吹き飛ばすんじゃないのかって?やだなぁ、そんなことしたら何もできなくなっちゃうじゃないですか。
手頃なSSD | HDDを買ってTime Machineでバックアップを取ります。手順は↓を参照してください。
![](https://support.apple.com/library/content/dam/edam/applecare/images/en_US/macos/Sonoma/macos-sonoma-macbook-pro-time-machine-external-drive.png)
とは言っても既存の設定・キャッシュとかは引き継ぎたくないので、バックアップ対象を厳選します。
![](https://help.apple.com/assets/64F91D61AC87FA574D0CA3D9/64F91D67D27971307E05DE3C/ja_JP/5acdf110b96d0fb42ef96b911ff08287.png)
バックアップに残したもの一覧↓
~/Documents
~/Desktop
~/Downloads
~/Music
~/Movies
~/Pictures
~/.*
の一部(.ssh
など)~/Documents/dots/
フォルダ内に残したいものだけコピー
あと、本当に大切なパスワードを~/Documents/.credentials/
内に保存しておきました。これはセキュリティ的に大丈夫なのか知りません。無事にTime Machineにバックアップが取れたら次に進みましょう。
2: 外付けSSDからmac起動
ここから先はうろ覚えなのでもしかしたら間違ったことを書いているかもしれません。
環境紹介で紹介した通り、MacBook Airに最初入っていたOSはMontereyでした。その関係かわかりませんが、macOS を再インストールする方法 - Apple サポート (日本)に従って入れようとしてもMontereyが入ると表示されました。確か。Montereyを入れてからSonomaにあげてもいいですが、せっかく入れ直すのにそれは格好悪いと思ったのでSonomaを直接入れたいです。
そのため、元から持っていたmacOS入りの外付けSSDからSonomaをインストールしようとしました。これはそのための下準備です。あと、万が一OSの入れ直しに失敗しても外付けSSDで問題なく起動できることを保証するためでもあります。外付けSSDが認識されている状態で設定の「起動ディスク」をいじって再起動しました。
このSSDはバックアップに使用したものとは別のディスクです。
3: 本体のディスクからmacOSを削除
まずはmacOS復旧を開きます。
![](https://help.apple.com/assets/64F91D61AC87FA574D0CA3D9/64F91D67D27971307E05DE3C/ja_JP/058e4af8e726290f491044219d2eee73.png)
その中のディスクユーティリティからMacintosh HD
を選んでOSを消します。確か。
これでMacBook本体には何も入っていない状態になったはずです。この辺でめちゃ不安になってたことだけは覚えてます。まずは一旦、外付けSSDで起動できることを確認しました。
4: SSDのmacからinstall
![](https://www.drbuho.com/str-apiv4/uploads/How_to_Install_mac_OS_on_External_Drive_3ba91dc0d4.png)
手順自体は↑と同じです。確か。この記事では本体→外付けSSDですが、今回は外付けSSD→本体の向きでやりました。
無事にmacOS Sonomaが入ったら起動しましょう。
5: Apple ID認証
Macを買って最初にやるやつですね。新品ではなく使い慣れたデバイスでやるのはまた違った感覚です。諸々を†いい感じ†に設定しましょう。
![](https://trap.jp/content/images/2023/12/reinstalled-macos.png)
6: Time Machineから復元
バックアップを取ったディスクを繋げて復元します。ここで開くのは移行アシスタントですね。
![](https://cdsassets.apple.com/live/7WUAS350/images/macos/big-sur/locale/ja-jp/macos-big-sur-migration-assistant-transfer-from-mac.jpg)
7: 必要なツールを入れる
Homebrewを消すと言いましたが、あれは嘘です(おい)。
![](https://res.cloudinary.com/apribase/t_in-article/LM1Y1YW9PLV65.webp)
Mac 用の GUI アプリがあまりないのだけれど?
諦めろ。なんなら Firefox や Chrome でさえ Mac 用バイナリはない。
とあるので、全てをNixにreplaceするのは無理そうです。諦めてHomebrewはGUIアプリを入れる用途にのみ使うことにします。とりあえずHomebrew自体のインストール↓
# xcode command line toolsがないと何もできないので
xcode-select install
# Homebrewインストールコマンド
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
色々入れます。
GUIアプリが整ってきたところで、次はNixのインストールです。色々調べましたが、最終的にはZero to Nixで言及されているインストール方法に従いました。あと、Home ManagerもStandalone setup with Nix Flakesで入れました。nix-darwinもHome Managerの前に入れましたが、rebuildの度に/etc/bashrc
がconflictしてイライラしたので辞めました。
CLIツール、各種言語のインストールはhome-manager switch
一発で全てが完了するようにdotfilesを構成したのでここでは割愛します。
ちなみにDockerですが、記事を書いている時点では一度も使ってません。果たして動くのか...
おまけ: GPG鍵のパスフレーズ忘れちゃった...
私はこれまでGPG鍵でcommitに署名していたんですが、それができなくなってしまいました。まあ鍵を作り直せばいいだけの話なんですが、絶対次もパスフレーズを忘れてしまうと思ったので、SSH鍵で署名することにしました。方法はGitHubのドキュメントとかを参考にしました。
![](https://github.githubassets.com/images/modules/open_graph/github-logo.png)
![](https://github.githubassets.com/images/modules/open_graph/github-logo.png)
いかがでしたか?
ラーメン食べたくなってきました。もうしばらくOSを消したり入れたりはしたくないです。次はAsahi Linuxを入れてみたいです。
明日の担当は @s9 さんと @botoku_izm さんです。お楽しみに!