EFIブートのgrubの項目を復旧したい
なにかの拍子にEFIブートのgrubの項目が消えてしまった。 復旧方法を調査中。うまくいっていないようなので、あくまでメモとして残しておく。
1. Linuxで復旧
grubが起動できないので、当然ながら対象のLinuxも起動できない。 なので、USBライブメディアでLinuxを起動し、chrootでインストール済の環境に入ってgrubを復旧する。
インストール済のLinuxに関連するパーティション、具体的には/, /boot/, /boot/efiなどをマウントしておく。
chroot環境を準備する。
mkdir chroot sudo mount --bind /media/root ./chroot sudo mount --bind /media/boot ./chroot/boot sudo mount --bind /media/esp ./chroot/boot/efi sudo mount --bind /proc ./proc sudo mount --bind /dev ./dev sudo mount --bind /dev/pts ./dev/pts sudo mount --bind /sys ./sys sudo mount --bind /sys/firmware/efi/efivars ./chroot/sys/firmware/efi/efivars
sudo chroot ./chroot /bin/bash --login -i grub-install /dev/nvme0n1 # ディスク名は適宜変更 exit
以上。
ただし、当方のマシンではなぜかこれをしても、項目が消えてしまった。原因不詳。
2. Windowsで復旧
Windowsのbcdeditで復旧する。
管理者権限でターミナルを起動。
EFIブートの項目を列挙
bcdedit /enum firmware /v
descriptionがWindows Boot Managerとなっているものの、identifierを確認し、メモする。
この項目をコピーする。
bcdedit /copy {identifier} /d "Ubuntu"
注:powershellの場合はbcdeditの直後に--%を追加してbcdedit --% /copy ...とする。
再びEFIブートの項目を列挙
bcdedit /enum firmware /v
descriptionがUbuntuとなっているものの、identifierを確認し、メモする。
bcdedit /set {identifier} path \EFI\ubuntu\grubx64.efi
Box Driveでマクロ付きExcelを開いたときにマクロ有効にする
「インターネットオプション」を開く(inetcpl.cpl)
「セキュリティタブ」の「信頼済サイト」を開き、「サイト」をクリック

「信頼済サイト」ウィンドウの「このWebサイトをゾーンに追加する」に"https://api.box.com/"を記入し、「追加」をクリックし、「閉じる」をクリック

Google Chromeのリーディングリストを一括でブックマークに変換する方法
本記事はChatGPTが作成した文章をベースとしています。
Google Chromeのリーディングリストを整理したいと考えている方に向けて、今回はリーディングリストを一括でブックマークに変換する方法をご紹介します。この手順を利用すれば、個別にブックマークを作成する手間を省くことができます。
ステップ1: Google Takeoutを利用してリーディングリストをエクスポートする
まずは、Google Takeoutを利用してリーディングリストをエクスポートします。
- Google Takeout にアクセスします。
- 「データの選択」セクションで、「すべて選択を解除」をクリックします。
- 下にスクロールして「Chrome」を選択します。
- 「Chromeのすべてのデータが含まれます」をクリックします。
- 「リーディングリスト」のみを選択し、OKをクリックします。
- ページ下部の「次のステップ」をクリックします。
- エクスポート形式やデリバリー方法を選択し、「エクスポートを作成」をクリックします。
ステップ2: エクスポートされたデータをダウンロードする
Googleがエクスポートを完了すると、ダウンロードリンクが表示されます。以下の手順でファイルをダウンロードしてください。
- Googleからの通知メールを開き、リンクをクリックします。
- 「ダウンロード」ボタンをクリックして、データを保存します。
ステップ3: 圧縮ファイルを解凍し、HTMLファイルを取得する
ダウンロードした圧縮ファイルを解凍して、リーディングリストが含まれているHTMLファイルを取得します。
- 圧縮ファイルを右クリックし、「すべて展開」を選択します。
- 解凍されたフォルダ内にあるリーディングリストの情報を含むHTMLファイルを確認します。
ステップ4: Google Chromeにインポートする
最後に、取得したHTMLファイルをGoogle Chromeにインポートして、リーディングリストをブックマークとして保存します。
- Chromeを開き、右上の3点メニューをクリックします。
- 「ブックマーク」 > 「ブックマークと設定をインポート」を選択します。
- 「HTMLファイルからインポート」を選び、先ほど取得したHTMLファイルを選択します。
- 「開く」をクリックすると、リーディングリストのアイテムがすべてブックマークに変換されます。
以上で、Google Chromeのリーディングリストを一括でブックマークに変換する作業は完了です。この方法を活用して、効率的にリーディングリストを整理してください。
参考
LinuxのLiveUSBにmemtest86+を追加する
RufusでUbuntuのLive USBを作成してある前提で、そのgrub起動メニューにmemtest86+を追加する。
| 項目 | 値 |
|---|---|
| メディア | Ubuntu 24.04 x86_64 |
| Live USB作成方法 | Rufus ISOモード |
Rufus ISOモードだと、USBにFATパーティションが作られ、その中にファイルとしてUbuntu起動のためのデータやgrubのデータがおかれる。
ちなみに、EFI bootではなくMBRブートならメニューに Test memory と表示されるので、これを使えばよい。
一番簡単な方法
USB内の /boot/grub/grub.cfg を開くと、
if [ "$grub_platform" = "efi" ]; then (省略) else menuentry 'Test memory' { linux16 /boot/memtest86+x64.bin }
とある。この Test memory をEFIの場合にも表示するようにすればよい。
linux16 では起動できないようなので、 linux として、
if [ "$grub_platform" = "efi" ]; then (省略) menuentry 'Test memory' { linux /boot/memtest86+x64.bin } else menuentry 'Test memory' { linux16 /boot/memtest86+x64.bin }
というように、追記した。
公式サイトのバイナリを使う
公式サイト Memtest86+ | The Open-Source Memory Testing Tool からダウンロードしてくる。
ダウンロードするものは Binary Files (.bin/.efi) を選択する。
執筆時点ではこのリンクだった。
mt86plus_7.00.binaries.zip
圧縮ファイル内にある memtest64.efi を、USB内に配置する。ここでは例えば /boot/memtest_efi とする。
次に /boot/grub/grub.cfg を開き、下記内容を追記する。
menuentry "Start Memtest86+, use built-in support for USB keyboards" { linux /boot/memtest_efi keyboard=both } menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" { linux /boot/memtest_efi keyboard=legacy } menuentry "Start Memtest86+, disable SMP and memory identification" { linux /boot/memtest_efi nosmp nosm nobench }
上記の記述は Linux ISO w/ GRUB (64 bits) にあるものを真似した。
備考
なぜEFIの場合にデフォルトで使えないようにしているかは不明。
また、公式バイナリについて、EFI用バイナリでも、MBRから起動できた。逆にMBR用のバイナリでも、EFIから起動できた。(最後まで正常動作するのかは確認していない。)何のために別々なのか分からない。
メインボードによっては適切に選ぶ必要があるのかもしれない。
最終的なgrub.cfg
両方の方法を使えるようにしたgrub.cfgは下記となる。
筆者の好みでUbuntuの起動オプションを少しカスタマイズしているが、そこは今回関係ないので無視して頂きたい。
set timeout=30 loadfont unicode set menu_color_normal=white/black set menu_color_highlight=black/light-gray menuentry "Try or Install Ubuntu" { set gfxpayload=keep linux /casper/vmlinuz --- verbose initrd /casper/initrd } menuentry "Ubuntu (safe graphics)" { set gfxpayload=keep linux /casper/vmlinuz nomodeset --- verbose initrd /casper/initrd } menuentry "Console" { set gfxpayload=keep linux /casper/vmlinuz --- verbose systemd.unit=multi-user.target initrd /casper/initrd } menuentry "Console (safe graphics)" { set gfxpayload=keep linux /casper/vmlinuz nomodeset --- verbose systemd.unit=multi-user.target initrd /casper/initrd } grub_platform if [ "$grub_platform" = "efi" ]; then menuentry 'Boot from next volume' { exit 1 } menuentry 'UEFI Firmware Settings' { fwsetup } menuentry 'Test memory' { linux /boot/memtest86+x64.bin } menuentry "Start Memtest86+, use built-in support for USB keyboards" { linux /boot/memtest_efi keyboard=both } menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" { linux /boot/memtest_efi keyboard=legacy } menuentry "Start Memtest86+, disable SMP and memory identification" { linux /boot/memtest_efi nosmp nosm nobench } else menuentry 'Test memory' { linux16 /boot/memtest86+x64.bin } menuentry "Start Memtest86+, use built-in support for USB keyboards" { linux /boot/memtest_mbr keyboard=both } menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" { linux /boot/memtest_mbr keyboard=legacy } menuentry "Start Memtest86+, disable SMP and memory identification" { linux /boot/memtest_mbr nosmp nosm nobench } fi
msys2 pacman segmentation fault
なぜかmsys2のpacmanがsegmentation faultで実行できないようになってしまった。pacmanをダウングレードしたら動作するようになり、アップグレードしてもなぜか問題なかった。ダウングレード前のバージョンはおそらくpacman-6.1.0-3。
# msys2のプロセスをすべて終了 ... # pacman-6.1.0-2をダウンロード curl -LO https://repo.msys2.org/msys/x86_64/pacman-6.1.0-2-x86_64.pkg.tar.zst # pacmanを強制上書き tar xvf \path\to\pacman-6.1.0-2-x86_64.pkg.tar.zst -C C:\msys64 # msys2のシェルを起動 ... # pacmanのdbと整合性を持たせるために手動インストールしたことにする pacman -U /path/to/pacman-6.1.0-2-x86_64.pkg.tar.zst # アップグレード pacman -Syuu
QEMUでRaspberry PiをUser mode emulate
QEMUにはuser modeというものがあり、仮想マシン全体をエミュレートするのではなく、必要最小限をエミュレートすることができる。 これにより、dockerやchrootなどで、他アーキのイメージに入ってコマンドを実行できる。 Raspberry Piのエミュレートで検索すると、仮想マシンでやるものばかりヒットするが、多くの場合User modeで十分なのではなかろうか?(dockerもchrootで十分な場合も多いのだが、その件はいまは触れない) WSL2でも実行できる。
# qemu-user-staticのインストール sudo apt install qemu-user-static # イメージのループバックマウント sudo losetup -P --show /dev/loop0 /path/to/raspios.img # ファイルシステムのマウント udisksctl mount -b /dev/loop0p2 # マウントポイントに移動 cd /path/to/mountpoint # /sysなどをbind mount sudo mount --bind /sys ./sys sudo mount --bind /proc ./proc sudo mount --bind /dev ./dev sudo mount --bind /dev/pts ./dev/pts # user mode emulateのためのバイナリをコピー sudo cp /usr/bin/qemu-arm-static ./usr/bin/ # chrootする sudo chroot . /usr/bin/qemu-arm-static /bin/bash --login -i
貧弱PCにChromeOSをインストールしてみた
ASUS L202Sという貧弱なノートPCを持っており、WindowsやGUIありのLinuxではまともに使えず、Ubuntu Server GUI無しで運用していたのだが、ChromeOSならまともに使えるのではと思い立ち、調査・実行してみた。
こちらのブログ様を参考にした。基本的な手順はこちらを参照のこと。
https://smartasw.com/archives/8849
ただし、Chrome OSのイメージはこの記事で紹介されているものとは別のものを用いた。
ASUS L202SはBraswell世代のCPUが搭載されており、類似のChromebookのOSイメージとして、下記を見つけた。
https://chrome100.dev/board/terra/
こちらの最新のものでも、Chrome OS自体は動作するのだが、Androidアプリが動作しなかった。長時間の試行錯誤の結果、最も新しいもので97.0.4692.77でAndroidアプリが動くことが分かった。これにあわせてBrunchもr97のものを利用した。
利用してみた結果、残念ながらChrome OSであってもやはりもっさりだった。我慢すれば使えるかなという程度。
Androidのアプリとして、「どこでもDIGA」、「Dixim Play」を試してみたところ、操作はもっさりだが、視聴は問題なさそうだった。(ただし、Dixim Playでインターレースの1080iの動画を再生するのはスペック不足だった。)
OSのアップデートについては、いろいろ試したが、文鎮化してしまい成功しなかった。
Linux環境も試してみた。
crostiniという公式のものは動くことを確認。KVM(仮想マシン)とのことなので、ただでさえ貧弱なPCには不向きと考え、すぐに削除した。
昔に使ったことのあるcroutonは、メンテナンスのみの状態とのことで、あまり積極的に使わない方がよいのかなと考え、試さなかった。
chromebrewというものが登場しており、多くのパッケージはコンパイル済ということで、試してみた。CUI環境は問題なさそうだった。GUIについては、Sommelierというものが必要なのだが、起動できずあきらめた。
バッテリーの持ちは、動画視聴で6時間程度、Web閲覧で10時間程度のようだ。
実測データ: asus l202s brunch battery - Google ドライブ
OSがアップデートできないのでセキュリティが不安だが、それはいいとしても、やはり動作がもっさりなので微妙でした。