2026年6月6日土曜日

MacBook late 2008にlubuntu 24.04をインストール

lubuntu 20.04をインストールして利用していたMacBook late 2008は、 13インチのアルミ筐体のノートPCで、キーボードもとてもよい。 HDDの調子が悪くなったので、SSDへ入れ替えてlubuntu 24.04をインストールした。 メモリはもともと4GBで、いろいろ動かすとメモリが不足したことがあったので、 ついでに8GBへアップグレードした。バッテリーも膨らんできてしまったので、交換した。

このMacBookは、メモリやHDDへのアクセスが容易で、実際の交換作業は十数分で終わった。 最近のメモリがオンボードで交換できないノートパソコンでは考えられない気軽さである。

SSDへlubuntu24.04をインストールするために、それを書き込んだUSBから起動しようと、 OPTIONボタンを押しながら電源ボタンを押したがUSBから起動しなかった。 そこで、OPTIONボタンとCOMMANDボタンを押しながら電源ボタンを押したらところ、 USBから起動してきたので、そのままインストールすることができた。覚え違いだっただろうか。

ネットワークは有線で接続しておき、いつもの通りにインストールは完了した。 wifiは、Additional DriversからBroadcomのドライバーを追加して利用できた。 NVIDIAのドライバーは、自動的に使われるnouveauで今の所問題がないのでそのまま使っている。

もう18年前のPCが、最新ではないが、 十分新しい現行のOSで軽快に動作しているところが素晴らしい。 このような長く使えるPCが増えてほしい。

Surface go 3を使ってみて

Windows搭載のタブレットとして、 DellのLatitude10を使っていましたが、 2018年には液晶が漏れて、 電源も入らなくなっていました。 しばらくタブレットなしでしたが、 旅行時に持ち出すPCとして surface go 3を購入して使ってきました。

Latitude10は、運用するためにいろいろ設定を行ったり手間がかかりましたが、 surface go 3は、特別なことをせずに使えて、 あえて書くようなこともありませんでした。 2026年の現在もWindows11Home(25H2)で十分安定して動いています。 4年以上使っていますので、Latitude10が不調になってきた時期程度に時間が経過しています。 それを考えると、完成度の高いタブレットだと感じています。

購入したsurface go 3のスペックは、 CPUがIntel Core i3-10100Y、 メモリ8GB、ストレージ128GBのモデルです。 ペンもキーボードカバーも合わせて購入しました。 ペンは、タブレットではあると便利でしたので購入しました。 キーボードは、ソフトウェアキーボードでは満足できないので購入しました。 Latitude10では、外部キーボードとしてポメラを使ったりしていました。

普段は別のノートPCを使用しているため、使用頻度は、高くありません。 ときどきの旅行記録を書くのに持ち出し、空港での待ち時間などに使えています。 旅行記録を書くのには、Windowsのメモ帳で十分です。 他には、Vimエディタ、Python、Libre Officeもインストールしていますが、 移動中にそれらをしっかり利用することはありません。 この用途程度なら、ポメラでも十分なのですが、 移動中にメールのチェックが必要になったり、 急遽、書類を作成しなければならなくなったりしたときに助かりました。

心配な箇所は、ストレージが128GBとちょっと少ない点です。 すでに97GB使用してしまっています。 データやポータブルなソルトウェアは micro SDに入れていますが、挿入したまま利用していて、一度、そのmicro SDが破損しました。 断片的にファイルが破損ていて、ソフトウェアは動いているのに、なにかおかしいという 状態の原因は気づきにくかったです。 別のストレージへのバックアップは大切ですね。

自立させるために、キックスタンドがついていますが、膝上で使うのには不安定なので、 テーブルのある場所が必要です。 キックスタンドは弱弱しいので、それを開くのに両手を使うため、 本体をどこかに置かなければならず、開閉に気を使います。 キックスタンドは、タブレット単体で自立させるのものとしてはよいものですが、 よくキーボードを使うのであれば、 タブレットである必要性はあまりないのかなと感じています。

そのような経験から、 10インチから11インチのクラムシェルのノートPCで、 キーボードがSurface go 3のキーボードカバーようにちゃんとしていて、 バッテリーまわりが安心できるものを探してみると、見つからないものです。 Surface go 3を大切に使っていかないとと思いました。

2025年1月5日日曜日

DELL Inspiron 15 5567にLubuntu 24.04をインストール

IntelのCore i7、メモリ8GBのもので、Windows10で動いていました。 調子が悪くなりシステムリカバリなどをしながら使っていましたが、 再びHDD上のWindowsが動作しなくなったため、 新しいパソコンに変更することにしました。 新しいパソコンにデータを移動するため、HDDを取り出してデータを読み出しました。

分解方法は、サービスマニュアルなどがありますが、 難しいのはバックカバーを外す作業でした。 隙間にギターのピックを差し込みながら、少しずつ広げていきました。 割れてしまわないかと心配しながら、どうにか開けることができました。 カバーが開いてしまえば、あとはHDDを取り出すのは簡単でした。

本体のハードウェアは問題はないので、 開けたついでに使えるように整えておこうとSSD(Netac SSD 512GB 内蔵2.5インチSATA3 6Gb/s 7mm 3D NAND FLASH)を購入し、 追加の8GBのメモリ(Transcend ノートPC用メモリPC4-25600(DDR4-3200)8GB 1.2V 260pin SO-DIMM)を購入し、装着しました。 少し前に作成したlubuntu24.04のインストール用USBを差し込み、電源を入れると、 インストーラーが無事に起動しました。 OSが入っているストレージであれば起動先をUSBからにする必要があったことでしょう。 wifiも最初から利用でき、支持に従いインストールするとあっさり完了しました。

日本語入力のために、fcitx-mozcをインストールして、タッチパッドの設定をしました。 タッチパッドのために/etc/X11/xorg.conf.dの中に、 以下の内容の設定ファイル30-touchpad.confを作りました。

Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "NaturalScrolling" "true"
EndSection
タッチパッドで二本指を使ったスクロールの向きを気持ちよくするために、 NaturalScrollingにtrueを設定しています。

Wifi経由でのプリンタ(EPSON EP-315)も利用できました。 EPSONのホームページからドライバをダウンロードし、インストールしたあと、 メニューの設定、プリンターから設定するだけで利用できるようになりました。

最近古いPCにdebianやlubuntuを入れてきましたが、 その中で第7世代のCore i7でSSD、メモリ16GBというのは高スペックです。 非常にサクサクと気持ちよく操作できています。

2024年7月18日木曜日

tkinterのoptionmenuを使う

tkinterでGUIを作るとき、選択肢から選ばせるようなときにつかうウィジットで、 tkinter.OptionMenuがあります。wxPythonなら、wx.Choiceを使うところです。 普通に選択肢を用意しておいて、使うならシンプルなのですが、 選択肢をユーザーの操作に応じて変化させたいときがあります。 そのような場合のメモを残しておきます。

tkinterでは、ウィジットと結び付けて、その値を保持したり変更を監視したりできるオブジェクトがあります。文字列ならtkinter.StringVar()というものです。ここでは、それを用いてOptionMenuの値を監視します。trace()メソッドを使って、値が設定されたときにon_selected()が呼び出されるようにそておきます。

選択肢を変更するのが、OptionMenuSetChoices()という名前で作った関数です。選ばれたときの値の設定を通して、on_selected()が呼び出されます。OptionMenuの選択状態と、値を保持するオブジェクトが結びついているため、それを変更するとOptionMenuの表示も変更されます。

動作を試すのに、選択肢を100個増やすボタン、最初に移動するボタン、最後に移動するボタンを配置っしておきました。 Windows11、Python 3.8.3の環境で試しています。

import tkinter as tk

def OptionMenuSetChoices(opmenu, var, choices):
    opmenu['menu'].delete(0, "end")
    for i, choice in enumerate(choices):
        opmenu['menu'].add_command(label=choice, command=tk._setit(var, choice))

class APPFRAME(tk.Frame):
    def __init__(self, master, **kwargs):
        super(APPFRAME, self).__init__(master=master, **kwargs)

        self.var = tk.StringVar(self, "default")
        self.var.trace('w', self.on_selected)

        self.choices = [self.var.get()]
        self.opmenu = tk.OptionMenu(self, self.var, *self.choices)
        self.opmenu.pack()
        OptionMenuSetChoices(self.opmenu, self.var, self.choices)

        btn = tk.Button(self, text='Set Choices', command=self.on_set_choices)
        btn.pack()
        btn_first = tk.Button(self, text='Go First', command=self.on_go_first)
        btn_first.pack()
        btn_last = tk.Button(self, text='Go Last', command=self.on_go_last)
        btn_last.pack()

    def on_selected(self, *args):
        print(self.var.get())

    def on_set_choices(self, *args):
        self.choices = ["choice: %02d" % (i+1) for i in range(100)] 
        OptionMenuSetChoices(self.opmenu, self.var, self.choices)
        self.on_go_first()

    def on_go_first(self):
        self.var.set(self.choices[0])
    
    def on_go_last(self):
        self.var.set(self.choices[-1])

def main():
    root = tk.Tk()
    app = APPFRAME(root)
    app.pack()
    root.mainloop()

if __name__ == '__main__':
    main()

2024年7月15日月曜日

Debian12でplaysound(python)を使う

Debian12をDell mini9に入れ、python3.11が使えるので遊んでいます。 Pythonは、とてもよいプログラミング言語環境だと思いますが、 Linuxの場合は、外部モジュールを入れるのにaptを使ったりする必要があるようで、 いろいろ混乱します。

今回使いたいモジュールは、playsoundです。効果音などmp3を再生したいことがときどきあります。MacBookでlubuntu 20.04も使っていて、そちらで書いたコードをmini9に持ってきて動かそうとしたら、playsoundを使えるようにするまでに手間取りましたのでメモしておきます。

Linuxでpythonのモジュールは、aptを使うなりして、例えば、xxxモジュールなら、

sudo apt install python3-xxx
のようにしますが、playsoundは、pipからインストールするようです。

lubuntuのほうでは、pip install playsoundでインストールできました。ただし、このままだとエラーで再生できませんでした。Gstreamerのpythonバインディングが必要とのことで、以下のようにインストールすることで使えるようになりました。

sudo apt install python3-gst-1.0

mini9でのDebian12では、以下のようにして使いました。 まずは、同じようにgstreamerバインディングをインストールします。 さらにpygobjectをインストールするために、 そのビルドに必要なライブラリをインストールします。

sudo apt install libgirepository1.0-dev
sudo apt install libcairo2-dev

pipを使うために、venvで仮想環境を作り、その中でpipを使ってplaysound、pygobjectをインストールしました。pipとvenvを使うのに、そちらもインストールが必要でした。

sudo apt install python3-pip
sudo apt install python3-venv
mkdir test
python3 -m venv myenv
source myenv/bin/activate
pip install playsound
pip install pygobject
これでpython3を使って、playsoundモジュールを利用することができました。

実際動かしたいコードは、tkinterも使っていましたので、

sudo apt install python3-tk
も行ってtkinterを使えるようにしました。

Dynabook UX/23にDebian 12をインストール

Dell mini9のために32bit(i386)用のDebian12のインストールUSBを作ったのでdynabook UX/23にもインストールしてみた。こちらは古いものですが、キーボードが打ちやすいネットブックです。CPUは、Atom N280なで、32bitのものをいれることになります。メモリは2GBに増設してあってWindows XPで動いていました。

Windows XPのHDDはそのまま残しておいて、Netacの内臓SSD256GB(2.5インチ、SATA、厚さ7mm)のものを購入して交換しました。 バッテリーをはずした後に、本体の裏ブタをトルクスドライバー(T6)で開けて、HDDをスライドさせると簡単に外れました。蓋のほうにスペーサーがついていて、取り付け時は、HDDが外れないようにスライドさせるスペースが埋まるようになっていました。取り外したHDDについている金具を取り外して、新しいSSDに取り付けて、同じように本体に収めました。この金具を取り付けている4本のネジが緩まないように強く締まっていましたので、外すのにネジ山をつぶさないように注意が必要でした。

ふたを閉めてもとにもどしたら、バッテリーをもどして、電源ケーブルをつなぎます。Debian12のインストール用のUSBを本体に差してから、電源ボタンを入れて、F2キーを押しておくと、BIOS画面になりました。電源を入れる前にUSBキーを刺してあるので、それが認識されています。起動先としてUSBを優先に設定して、起動させます。

UX/23は、Dell mini9と違って、wifiをすぐに認識しました。インストール用のネットワーク経路に、どちらかの接続が選べるようです。デスクトップ環境をDell mini9と同じようにLXDEでインストールしました。なにも問題なくインストールは終了し、Debian12が起動しました。

wifiは、connmanというネットワークのマネージャーで設定するようです。 ネットワークの設定は、いろいろあって分かりにくいですね。 Network Manager(nmcli)を使ってもよいとありますが、いろいろ試すのも面倒です。 とりあえず、connman setupを選ぶと、正常にwifiのリストが表示され、問題なく接続はされました。よくわからないのは、ここからで別の場所でwifiを使おうとすると、アクセスポイントには接続されますが、いろいろなWebページは開かないという状況になりました。インストールした場所のwifiでは、正常につながっているようです。どうやら、DHCP経由で、DNSがうまく設定されないようすです。ConnmanによるDNSのマネージメントについていろいろ報告があるみたいですが、とりあえず/etc/resolv.confにGoogle Public DNS(8.8.8.8と8.8.4.4)を追記して、つなげることができました。

2024年6月23日日曜日

lubuntu 24.04 LTSでwxPython4.2.1

古いPCにLinuxを入れて使えるようにしています。 Lubuntu 24.04 LTSを古いデスクトップPCに入れて使っています。 リモートデスクトップとpythonくらいしか利用しませんので 古いパソコンでも十分な用途です。 pythonは、python3が利用でます。 さて、GUIにwxPythonをよく利用していたのですが、 そのようなスクリプトを動かすときにwxPythonをインストールする必要があります。 Windowsでは、pipを用いてインストールしていますが、 lubuntuでは、aptを使ってインストールするようです。
apt install python3-wxtools
でインストールできました。

さて、これで使えるなら問題よいのですが、しばしば 仮想環境を利用することが増えています。python3では、 すぐにvenvが利用できるようになっています。 たとえば、

mkdir myproject
cd myproject
python3 -m venv myenv
として、myprojectフォルダの中に、 そのプロジェクト用のmyenvという仮想環境を作って利用したりします。 その仮想環境を利用するには、
cd myproject
source myenv/bin/activate
として、仮想環境のフォルダ内にあるactivateスクリプトを用いて利用できるようにします。 アクティベートするといいます。 ここで pip install numpy とすると仮想環境にnumpyがインストールされるわけです。 ある環境がアクティベートされた状態で起動されるpythonでは、 その環境にインストールされたモジュールが利用できるというわけです。 環境を戻すには、deactivateを実行します。

さて、この仮想環境へはpipを用いてモジュールをインストールします。 pip install wxPythonとしてwxPythonををpipでインストールしようとすると、 ビルドエラーが出て停止してしまいました。 こちら https://wxpython.org/blog/2017-08-17-builds-for-linux-with-pip/index.html のサイトを参考にしてインストールをしました。

"What You Need"の箇所にビルドに必要なライブラリが記載されています。 地道にひとつづつインストールしていきます。 私の環境では、

sudo apt install python-dev
sudo apt install libgtk-3-dev
sudo apt install libgstreamer1.0-dev
sudo apt install libgstreamer-plugins-base1.0-dev
sudo apt install libglu1-mesa-dev mesa-common-dev freeglut3-dev
sudo apt list |grep libwebkit2gtk
sudo apt install libwebkit2gtk-4.1-dev
sudo apt install libjpeg-dev
sudo apt install libpng-dev
sudo apt install libtiff-dev
sudo apt install libsdl-dev
sudo apt install libnotify-dev
sudo apt install libsm-dev
としていきました。すでにインストールされているものもいくつかありましたが、
順番に検索エンジンを利用しながら確認していきました。
途中どれをインストールするかlistを見て確認したりもしています。

あとは、"Build Steps"にあることを順番にしていくだけです。もちろん、 ファイル名はダウンロードされたものに合わせて修正します。 書いてある通りにすると無事にwheelファイルがビルドされ、 wxPythonを利用することができるようになりました。

このようにしてpython3.12でwxPython4.2.1が動きました。 ただし、現在ダウンロードされたファイルをコンパイルしたものは、 pythonを起動してimport wxのあとすぐにquit()してもセグメンテーションフォールトを起こします。 "wxpython 4.2.1 segmentation fault"で検索してみるとすでに報告はあるようです。 とりあえずは利用できるので、修正を待ちます。 ちなみに、仮想環境ではなくaptでインストールした環境ではそのようなエラーは起こっていません。