2023-12-03

【備忘録】Linux コンテナのアップグレード

Google ChromeOS は、Google が設計した OS です。Linux カーネルをベースにしており、Google Chrome ウェブブラウザをメインのユーザインタフェース (UI) として使用しています。そのため、ChromeOS は主にウェブアプリケーションをサポートしています。ChromeOS 上で Linux の仮想環境(Linux コンテナ)を利用できます。

Chromebook の Linux コンテナは現在のところ Debian 11 が採用されていますが、Debian プロジェクトは既に Debian 12 をリリースしています。新しい Debian 12 を使った方が都合の良い場合があるので、手作業で Linux コンテナをアップグレードしてみました。

今回のテーマ

Chromebook の Linux コンテナの Debian 11 を Debian 12 へアップグレードする。

参考サイト [1] の情報をもとにして何度も確認した上でまとめていますが、それでも非公式なやり方に過ぎませんので、本記事に従ってアップグレードする際には、自己責任において実施するようお願いいたします。

下記の ARM 系プロセッサを搭載した、古い Chromebook で動作確認をしています。

Chromebook: Lenovo Ideapad Duet (MediaTek P60T)
Google ChromeOS 119.0.6045.158 (Official Build)  (32 bit)

Debian 11 から 12 へのアップグレード

Chromebook で Linux コンテナを用意します。

まず、下記のコマンドを実行して Debian 11 (bullseye) のシステム全体を最新の状態に更新します。

~$ sudo apt update && sudo apt dist-upgrade -y

次に下記の2つのファイルの内容で、文字列 bullseyebookworm に置き換えます。

  • /etc/apt/sources.list.d/cros.list
  • /etc/apt/sources.list

管理者権限 (sudo) で vi (vim) エディタを起動して、それぞれのファイルを編集して保存します。赤字の部分が置換した部分です。

~$ sudo vi /etc/apt/sources.list.d/cros.list
...
...
~$ cat /etc/apt/sources.list.d/cros.list
deb https://storage.googleapis.com/cros-packages/119 bookworm main
deb https://deb.debian.org/debian bookworm-backports main
~$ sudo vi /etc/apt/sources.list
...
...
~$ cat /etc/apt/sources.list
# Generated by distrobuilder
deb https://deb.debian.org/debian bookworm main
deb https://deb.debian.org/debian bookworm-updates main
deb https://deb.debian.org/debian-security/ bookworm-security main

再び、下記のコマンドを実行してシステムを最新の状態に更新します。これで Debian 12 (bookworm) に更新されるはずです。

~$ sudo apt update && sudo apt dist-upgrade -y

しばらくして、更新処理が終わります。

一旦「ターミナル」(端末エミュレータ)を閉じて、あらたに「ターミナル」を起動して、hostnamectl コマンドで、OS が Debian 12 (bookworm) に更新されていることを確認します。

以下のコマンドで、依存関係がなくなって不要になったパッケージをアンインストールしておきます。

~$ sudo apt autoremove -y

スクリプトで自動化

Linux コンテナの使い方は人それぞれですが、自分の場合、ほとんど使い捨てに近く、結構な頻度で Linux コンテナを作り直します。簡単に Debian をアップグレードできましたが、毎回同じことをするのは、やはり面倒です。

前述のアップグレードの手順は、レポジトリファイルの文字列の置換がメインですので、スクリプトを用意しておけば1コマンドでアップグレードが出来てしまいます。

以下のスクリプトでアップグレードをできるようにしました。

~$ sudo sh upgrade_debian.sh

Linux のパワーユーザーであればきっと sed で置換するのでしょうが、使い慣れている Python で置換する処理を作りました。😅

upgrade_debian.sh
#!/bin/sh
apt update
apt dist-upgrade -y
python3 update_info.py
apt update
apt dist-upgrade -y
apt autoremove -y

Python スクリプトでレポジトリファイルの文字列 bullseyebookworm に置き換えています。

update_info.sh
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def get_content(filename: str) -> str:
with open(filename) as f:
content = f.read()
return content
def set_content(filename: str, content: str):
with open(filename, 'w') as f:
f.write(content)
def main():
debian = {
'current': 'bullseye',
'new': 'bookworm',
}
list_file = [
'/etc/apt/sources.list.d/cros.list',
'/etc/apt/sources.list',
]
for file in list_file:
content = get_content(file)
content = content.replace(debian['current'], debian['new'])
set_content(file, content)
if __name__ == "__main__":
main()
view raw update_info.py hosted with ❤ by GitHub

参考サイト

  1. Update Debian Bullseye (11)to Bookworm (12) in ChromeOS | by Perdana Hadi Sanjaya | Medium [2023-08-21]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



0 件のコメント: