投稿

8月, 2024の投稿を表示しています

OpenMythosのサンプルプログラムを動かしました

1.概要 前回、OpenMythosの環境構築まで実現したので、GitHubにあるサンプルプログラム(Usage)を動かしてみました。一部エラーが発生しましたが、結果出力部分なので修正をしました。その内容を記述します。 2.詳細 Usageに記載されているPythonプログラムをopenmythos_usage.pyとして作成します。 $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py 下記エラーとなります [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) Traceback (most recent call last):   File "/home/nakasima/openmythos/openmythos_usage.py", line 48, in <module>     rho = torch.linalg.eigvals(A).abs().max().item()           ^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: linalg.eig: The input tensor A must have at least 2 dimensions. コードの下記部分を修正します #rho = torch.linalg.eigvals(A).abs().max().item() rho = A.abs().max().item() $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) [MLA] Spectral radius ρ(A) = 0.3679 (mus...

Docker Desktopの有料化に備えてCLI環境を学ぼう

1.概要 Docker Desktopの有料化は2021年9月から実施されています。DockerはLinux kernelの機能を利用して実現されており、Linuxのない世界では動作しません。このことに関して、少し整理します。 2.詳細 参考資料を参照すると、「Docker Desktop は、CLI を使って主要な処理を行わなくても、コンテナ、アプリケーション、イメージをマシン上から直接管理できる」と記述されています。逆に捉えると、CLIを利用するとDocker Desktopは利用しなくても良いことになります。 DockerはLinuxのkernel機能を利用していることを理解しておくことが重要です。従ってDocker実行環境ではLinuxのOSが起動していることになります。Macの場合はLinuxを仮想環境で動かしてその上でdockerを動作させていると理解しています。Windowsも同じですが、WSL環境はubuntuなので、これを利用してdockerを動かせます。 Docker Desktopは形の上では仮想環境にDockerを導入したものだと思っています。GUIベースで利用できるので便利なので利用する方が増えているのでしょう。利用者にはLinuxの存在を意識させないものとなっていると思っています。 私はubuntu上にDockerを導入して直接利用しているので、Docker Desktopを利用したことはありません。Dockerを利用する上で理解しておくことが2つあります。1つはcontainerを構成するDockerfile、もう1つはcontainer実行環境を提供するdocker-composeです。両者を理解するとCLIでdockerを利用できます。CLI環境になれるととても便利であると思っています。 参考 [外部サイト参照] ・ Docker Desktop 概要 ・ 【図解】Dockerの全体像を理解する -前編-

Anacondaの代替としてminiconda3を利用する

1.概要 chatGPTに代表される生成AIが注目されていますが、基盤技術の深層学習(Deep Learning)を学習したいと考えている方も多いと思います。DeepLearningの代表格のTensorflowを利用するには様々なライブラリ依存性調整が必要です。そこで利用されているのがAnacondaですが、2020年4月から有償となっています。 Tensorflowを導入することは以前は非常に難しかったのですが、コンテナを利用できるようになって非常に簡単になりました。tensorflowのサイトに記載されているdockerを利用する方法でAVX2をサポートするCPUでは簡単に導入できます。 しかし、AVX2命令を利用できない低価格のCPUでは実行できません。Anacondaを利用するとAVX2を利用しないモジュールの調整を実施してくれます。無償で学習用途として低価格CPUでtensorflowを利用するにはminiconda3を利用します。この内容を記述します。 2.詳細 環境はubuntu-20.04.6です。 CPUは古いAMDのCPUでAVX2をサポートしていません。 下記コマンドで調べることができます。 cat /proc/cpuinfo 手順は以下のとおりです。 (a) dockerとdocker-composeのインストール (b) Dockerfile作成 (c) docker-compose.yaml作成 (d) コンテナ起動 (e) jupyter notebookでloginして実行 (a) dockerとdocker-composeのインストール $ sudo apt -y install docker.io $ sudo apt -y install docker-compose $ sudo usermod -aG docker $(whoami) $ docker --version $ docker-compose --version PCの再起動が必要です (b) Dockerfile作成 FROM continuumio/miniconda3:latest RUN conda install python=3.10 RUN conda install tensorflow RUN conda install jupyter CM...

Grafanaを利用してミリセカンド単位のデータ処理が可能であるか調べました

 1.概要 Grafanaを利用したグラフ作成でミリセカンド単位のデータ処理が可能であるか調べました。Grafanaで処理をするためにはDatabaseにミリセカンド単位のデータ処理が必要となり、database側に関しても調べました。その内容を記述します。 2.詳細 ネットで参考資料を見つけて、ミリセカンド単位の処理をGrafanaで処理をするためには、日付時刻のフォーマットを以下のように設定する必要があるとわかりました。 YYYY-MM-DD HH:mm:ss.xxx 具体的な例を記述すると 2024-08-18 08:10:30.123 123はミリ秒です。 次にデータベースに設定できるかを検討しました。 どうやら、timestamp形式を利用することでミリセカンドを保存できます。 実際の作業は過去の実施した処理を再活用できるので省略します。 参考資料を参照願います。 参考 [本ブログ内参照] ・OSSのvisualization toolのGrafanaにチャレンジしました ・GrafanaとMariadbを組合せて試験しました ・GrafanaとMariadb環境にデータを投入してグラフ表示 [外部サイト参照] ・ Loki swap the ts value and time in explore module

ubuntu-22.04.4がkernel-6.8に変わりました

1.概要 Linux kernelの脆弱性に対して、ubuntu-22.04.4がkernel-6.8.0-40に変わりました 2.詳細 今日更新を実行すると以下のように変わりました。 (a) ubuntu-24.04 (変化なし)   kernel 6.8.0-40    (b) ubuntu-22.04.4   kernel 6.8.0-40 (c) ubuntu-20.04.6 (変化なし)   kernel 5.15.0-117 参考 [外部サイト参照] ・ SLUBStickの脆弱性を悪用できるので更新しました

lsblkの出力がubuntu 22.04で変わりました

1.概要 ubuntu-20.04からubuntu-22.04へ移行をするための試験PCを準備して環境構築をしています。ubuntu-20.04で利用していたlsblkコマンドを利用していたshellが正しく実行されないので調べてみると、lsblkの表示項目が1項目増えていました。その内容に関して記述します。 2.詳細 lsblk -f を利用してDiskのUUIDを調べていますが、ubuntu-20.04とubuntu-22.04では、FSVER項目が追加されていることに気が付きました。ヘッダー情報を記述します。 (a) ubuntu-22.04 NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS (b) ubuntu-20.04 NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT FSVERが追加されてことで、UUIDの場所がズレてしまい処理が正しく実行されませんでした。 ubuntu-20.04とubuntu-22.04が共存するのでOSのversionに合わせる処理を追加することにしました。  

SLUBStickの脆弱性を悪用できるので更新しました

1.概要 Linux kernelの脆弱性が発表されました。すぐにパッチを適用しましょう。 2.詳細 参考資料により対象kernel範囲が異なっています。 (a) 脆弱性はバージョン5.14以降から6.6までのLinux カーネル (b) SLUBStickを悪用するには既知のヒープ脆弱性が必要となる。   研究では2021年から2023年までに発見された次の脆弱性を悪用しており、   Linuxカーネルバージョン5.19から6.2にて動作が実証 3.最新パッチ適用状態を調べました。 ubuntu-20.04.6、ubuntu-22.04.4は微妙な感じです。 ubuntu-24.04は大丈夫そうです。 (a) ubuntu-24.04   kernel 6.8.0-40    (b) ubuntu-22.04.4   kernel 6.5.0-45 (c) ubuntu-20.04.6   kernel 5.15.0-117 参考 [外部サイト参照] ・ Linux Kernel 権限昇格の脆弱性で悪用の可能性(CVE-2024-1086 ) ・ Linuxカーネルのエクスプロイト発表、研究者らが実用レベルへ引き上げ

Windows95/98のPCゲームをubuntuで楽しむ方法 総集編

1.概要 Windows95/98時代のPCゲームを現在のPCで楽しむとするならば、どうすれば良いか。今までに様々な検証を実施してきたので、総集編として整理をします。 2.詳細 Windows95/98時代のPCゲームを楽しむ手段は、下記3つです。 (a) dosbox-x環境 (b) 仮想環境(KVM,VirtualBox,VMware) (c) wine環境 全てを試験していませんが、BIOS,uefi-BIOSのどちらも動作しますが、制限があります。 (a) dosbox-x環境 一番オススメの方法です。私はこの方法でWindows95/98時代のゲームを楽しんでいます。 Ubuntu上にdosbox-xを導入し、更にWindows98SEを導入して、ゲームをインストールします。 Driverはdosbox-xで対応されていて、Windows98SEは標準で問題なく動作します。 dosbox-xはpentium-MMXのCPUまで対応となってますが、速度的には当時の実機の感触です。 ネットワークも利用できるようですが、私は利用していません。 (b) 仮想環境(KVM,VirtualBox,VMware) KVMとVirtualBoxは動作しました。VMwareは試験をした当時は動作していません。 Windows98SEを導入するとDriverの問題が残ります。 Display Driverはネット上にINT命令対応版がありますが、 サウンド関連(midiなど)が動作しないケースがあります。 未解決のドライバが残った状態で利用し、ネットワークは利用できません。 (c) wine環境 Windows95/98のゲームを楽しむには制限があります。 しかし、レスポンスは最高に良いです。 どちらかといえば、Windows時代のOfficeなどのアプリを利用する環境だと思います。 参考 [本ブログ内参照] (a) dosbox-x環境 ・ubuntu-22.04.4、ubuntu-24.04でのdosbox-xを利用したwindows95/98ゲーム評価 ・uefi-BIOSでdosbox-xを利用したWindows95/98のPCゲームを試しました ・ubuntuでdosbox-xをsnapでサポート、windows95/98のgame動作確認しました (b) 仮想環境...

Google Driveでinotify-toolが利用できないか試しました

1.概要 inotify-toolのinotifywaitをGoogle Driveで利用できないかと考えて試してみました。inotifywaitのオプションを設定して、リカーシブに検知を設定してもGoogle Driveでは検知できません。しかし、単一ファイルならば検知できました。その内容を記述します。 2.詳細 inotifywaitには、-rのオプションを設定することでリカーシブに検知できます。これはLocalPCで確認をしました。そこで、Google DriveをGoogle-drive-ocamlfuseでmountして、リカーシブに検知できないか期待して試しました。 (a) Google Drive mount google-drive-ocamlfuse ~/sharedrive (b) ファイル検知設定 inotifywait -m -r ~/sharedrive -e close_write |     while read -r directory action file     do         echo "$directory, $action, $file"     done 検知用shell(test.sh)を実行します sh test.sh Setting up watches. Watches established. と表示されて止まります。 別のterminalを開いて、何かファイルを作成します。 cd ~/sharedrive touche test.txt しかし、検知されません。 (c) 1つのファイル検知試験 inotifywait -m ~/sharedrive/testfile.txt -e close_write |     while read -r directory action file     do         echo "$directory, $action, $file"     done 検知用shell(test.sh)を実行します sh test.sh Setting up watches. ...

ファイル作成を検知するinotify-toolsを試しました

1.概要 ubuntu環境でファイルが作成されたことを検知する仕組みとしてinotify-toolsをネットで見つけて、検証しました。まず、どのようにして検知できるのかをLocalPCで確かめました。この内容を記述します。 2.詳細 inotify-toolsには、inotifywaitとinotifywatchが提供されますが、今回はinotifywaitに着目します (a) インストール 参考資料に沿って、インストールします。環境はubuntu-20.04.6です。 sudo apt install inotify-tools (b) ファイル検知設定 ローカルに検知用のディレクトリを作成します mkdir /home/username/share 検知用shell(test.sh)を作成します 今回はファイルが完了したら検知する設定にしました。 inotifywait -m /home/username/share -e close_write |     while read -r directory action file     do         echo "$directory, $action, $file"     done 検知用shell(test.sh)を実行します sh test.sh Setting up watches. Watches established. と表示されて止まります。 (c) ファイル検知試験 別のterminalを開いて、shareディレクトリに入ります。 cd /home/username/share touch abcd と入力をすると、test.sh実行ターミナルには下記常時出力されます /home/username/share/, CLOSE_WRITE,CLOSE, abcd 削除してみます rm abcd しかし、表示に変化はありません。 directoryを作成してみます mkdir xyz しかし、表示に変化はありません。 3.所見 ファイル検知設定には様々な設定ができるので、shell内で組み合せることで色々できそうです。 参考 [外部サイト参照] inotify-toolsでファイルやディレクト...

opensslが更新されました

1.概要 今朝、opensslが更新されました。opnessh問題時には変更はなく、静かに更新されました。何となく嫌な感じがします。本更新では、snapdも更新されています。ubuntuLTS 20.04 22.04 24.04は同じような更新が実施されました。security updatesとの記載があるので、予防措置として、早めに修正をしましょう。 2.詳細 (a) ubuntu-20.04.6 openssl 1.1.1f-1ubuntu2.23 snapd 2.63+20.04ubuntu0.1 (b) ubuntu-22.04.4 openssl 3.0.2-0ubuntu1.17 snapd 2.63+22.04ubuntu0.1 (c) ubuntu-24.04 openssl 3.0.13-0ubuntu3.2 snapd 2.63+24.04ubuntu0.1 参考 [本ブログ内参照] ・openSSHで脆弱性の大きな問題が発生

uefiBIOSとRegacyBIOSの両方でbootできるmulti boot USB作成

1.概要 ubuntuのresucue用途としてusb bootデバイスを作成して、BIOS PCで利用可能になりました。しかし、uefi-BIOSでは利用できないので、BIOSとuefi-BIOSの両方で利用できるmulti boot USBを作成しました。この内容を記述します。 2.詳細 参考資料にある以前作成したmicroSD方式を利用します。 (a) microSDの初期化 (non-uefi BIOS対応PCでの作業) usb変換アダプターにmicroSDを取り付けます。usb bootのubuntu liveCD(20.04.6 desktop)を利用して、起動をしてからgpartdでmicroSDのpartion tableをmsdos形式で初期化します。今回はmulti bootなので少しパーティション構成を変えます。64GBのmicroSDを設定したUSBデバイスを/dev/sddとします。 gpartdで以下のようにパーティションを作成します。 /dev/sdd1  256MB  fat32 /dev/sdd2  50GB   ext4 (b) ubuntu-20.04.6 install usb bootのubuntu liveCD(20.04.6 desktop)からinstallerを起動して、microSDのext領域(/dev/sdd2)にinstallします。bootは/dev/sddを選択します。問題なくインストールできました。 (c) 起動 non-uefi BIOSでusb boot可能なPC(私の場合は古いNotePCを利用)にusb変換アダプターにmicroSDを取り付けて、BIOSの設定をUSBに変更して起動すると、無事に起動します。 (d) Grubの設定 grub.cfgを/dev/sdd1に作成します。 # mount /dev/sdd1 /mnt # cd /mnt # mkdir -p boot/grub # cd boot/grub # vi grub.cfg 設定内容は以下の通りです set default=0 set timeout=3 set UUID= ここに/dev/sdd2のUUIDをblkidで調べて記述します menuentry 'Ubuntu L...