投稿

MochiOS@仮想ファイルシステムの作成part1

MochiOS@仮想ファイルシステムの作成part1前提知識無しで作るなんちゃって仮想ファイルシステムpart1。開発日記です。独り言です。作業リポジトリとりあえず、仮想ファイルシステムをmvfsと名付けてgithubにリポジトリ作りました。
MochiのVirtual(仮想)なFile(ファイル)のSystem(システム)でmvfs!安易!
https://github.com/MasterMochi/mvfsユースケースmvfsにどんな機能を乗せようかと、ユースケースを考えてみる。
登場人物は、ユーザプロセス、mvfs、VGAドライバ。
ユーザプロセスは、VGAドライバによってビデオメモリを抽象化したファイルをopen/write/closeしてこのファイルに書き込む事で、画面に文字を出力する。readは割愛。
mvfsは、ファイルとそのアクセス先が誰なのか(タスクID)を管理する。
VGAドライバは、ファイルをmvfsに登録する。ちょっとシーケンスを書いてみる。ユーザプロセスmvfsVGAドライバmount( "/vram" )open( "/vram" )open( "/vram" )write()write()vram書込みclose()close()unmount( "/vram" )ユーザプロセスmvfsVGAドライバ mountこのファイルへのopen/(read)/write/closeは私(シーケンスで言うとVGAドライバ)にスルーパスしてくれよ要求。名前はmountでいいのかな、、、まぁいいよね。open/(read)/write/close普通のファイル操作機能。先のmountによってファイルパスとタスクIDが関連づいているので、mvfsはこれを使って、VGAドライバに機能呼出しをスルーパスする。unmountこのファイルを削除してくれ。もうスルーパス要らないよ要求。よし、これで、ユーザプロセスはVGAドライバプロセスのタスクIDなんか知らなくても、mvfsにファイルパスと機能番号を指定してメッセージ送信すれば、VGAドライバプロセスに要求ができる。ファイルディスクリプタとかファイル階層の管理とか、後で考えよう。アクセス権とかは、うん、いつか考えよう。あれ…?VGAド…

MochiOS@仮想ファイルシステムの作成part0

イメージ
MochiOS@仮想ファイルシステムの作成part0開発中の自作カーネルであるMochi Kernelは、プロセスを起動したり、プロセス(タスク)間通信ができたり、デバイスI/O操作が出来る様になったりと、ちょっとまだ自由は効かないけれど、簡単なシステムを作れるようになってきました。
以前、試しに、Mochi Kernel上でSLコマンドを無限ループさせるデモを作りました。このデモは、VGAドライバ、仮想ターミナルドライバ、TTYドライバ、SLコマンドの4つのプロセスをカーネル上で動かし、プロセス間でメッセージをやり取りする事で、ただ80*25のテキスト画面上にSLを走らせます。SLコマンドTTYドライバ仮想ターミナルドライバVGAドライバ指定行列番号に文字出力ビデオメモリ書込みloop[ 無限 ]SLコマンドTTYドライバ仮想ターミナルドライバVGAドライバ いい感じに動いていますが、実装はかなり汚いです。
無理やり実装している事の1つは、メッセージ通信先の指定です。
メッセージはタスクIDを指定して送信するのですが、VGAドライバや仮想ターミナルドライバのタスクIDは起動した順番で割り当てられます。
システムを作り上げた私は、起動させる順番を把握しているのでタスクIDは分かっていて、ソースコードにタスクIDを直接記載しています。ですが、これは汎用的ではありません。普通、HelloWorld!プログラムを書くのに出力先ドライバのプロセス番号を指定する必要はありません。printf(“HelloWorld!\n”)で済みます。linuxはどうやってこれを解決しているかというと、ファイルシステムです。
(linuxはマイクロカーネルではないので、厳密にはやらせたい事に違いがありますが。)
printfは標準出力に文字列を書いています。標準出力の実体は、大体、/dev/pts/0とかいうファイルです。
このファイルに書き込むとファイルシステムがうまい事ビデオドライバに橋渡ししてくれるというわけです。じゃぁ、ファイルシステムを作って、そのファイルに書き込む事でVGAドライバにメッセージを送ろうそうしよう。ファイルシステムというと、FAT32やらEXT4やらNTFSやら、色々なファイルシステム用語を思い浮かべますが、これらは単にフォーマットの話なので、少しやりたい事と違いま…

linux@IPアドレス設定

linux@IPアドレス設定 概要 Debian Linuxで動的IPアドレスを固定IPアドレスに変更する方法のメモ。
インストール時に設定すれば良かったんですが、適当に進めてしまったので動的IPアドレス設定になってしまい、、、(以下略
環境 下記環境で行った方法です。他の環境では方法が異なる場合が多々あります。
Debian 9.4.0 i386Linux version 4.9.0-6-686PCEngines ALIX 1e 現在の設定内容を確認する 下記コマンドでIPアドレス情報を出力して確認。
$ ip address debianはifconfigとかのコマンドがデフォルトで入っていないんですね。
こんな素晴らしい記事を見つけました。私のようにifconfigを適当に使っていた方にはオススメです。
Qiita - net-tools は使われなくなり iproute2 が標準的になるかも 上のコマンドを実行すると、下記のように出力されます。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0d:b9:0d:8a:a8 brd ff:ff:ff:ff:ff:ff inet 192.168.1.132/24 brd 192.168.1.255 scope global enp0s13 valid_lft forever pr…

linux@Wake-on-LANで遠隔サーバ起動

linux@Wake-on-LANで遠隔サーバ起動 概要 最近、組み込みボードでL2TP/IPsecを使ったVPNサーバを立てたので、VPNサーバからWake-on-LAN(WoL)を用いて 、プログラムのコンパイル等に使用している開発サーバの起動を行えるようにした時のメモです。
WoLによる起動 VPNサーバ 開発サーバ 本記事を参考にされる場合は、VPNサーバを「起動させる為に使うPC」、開発サーバを「起動したいPC」に読み替えて下さいませ。
環境 環境は下記の通りです。
VPNサーバ開発サーバOSDebian 9.4Ubuntu 16.04.4 LTS 手順 大きく下記の手順で行いました。
BIOS設定
開発サーバのBIOSでWoLを許可する設定をします。こればっかりは設定の仕方がPC毎に違ったりするので、本記事では記載しません。開発サーバ設定
開発サーバのOSでWoLを許可する設定を行う為のコマンドをインストールします。VPNサーバ設定
VPNサーバから開発サーバを起動する為のコマンドをインストールします。 開発サーバ(起動したいPC)の設定 ethtoolのインストール ethtoolが既にインストール済みの場合は本章の実施はスキップです。
私のubuntu serverには元々入っていました。
下記コマンドでethtoolをインストールします。
$ sudo apt-get install ethtool Wake-on-LAN情報の取得 まずは、下記コマンドでWake-on-LANに使うインタフェース名を調べます。
$ ifconfig ↓がコマンド実行結果です。
eth0 Link encap:イーサネット ハードウェアアドレス 00:1a:92:50:86:20 inetアドレス:192.168.1.7 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::21a:92ff:fe50:8620/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:49647 エラー:0 損失:0 オーバラン:0 フレーム:0 …

PlantUML@Windowsバッチファイルで起動

PlantUML@Windowsバッチファイルで起動 仕事でPlantUMLを使うようになったので、その使用方法備忘録。
PlantUMLインストール PlantUMLのインストール?何言ってんのダウンロードしたファイルをダブルクリックで起動できるやん!
私は↓に格納インストールしました。
"C:\Program Files\PlantUML\plantuml.jar" バッチファイル作成 好きなところにplantuml.batみたいなファイルを作成して、下記のように編集。
"C:\Program Files\PlantUML\plantuml.jar" plantuml.batをダブルクリックして、PlantUML起動!!
できた!!
・・・
え?
コマンドプロンプトずっと出てるんですけど…
コマンドプロンプトを出させない ↓のように修正します。
start javaw -jar "C:\Program Files\PlantUML\plantuml.jar" おまけ 画像が大きかった時に、デフォルト設定では問答無用に画像がバッサリ切られますが、下記のように設定すれば、ある程度まで画像を大きくする事ができます。
start javaw -DPLANTUML_LIMIT_SIZE=8192 -jar "C:\Program Files\PlantUML\plantuml.jar"

雑記@REALFORCE RGB AEAX02を購入

イメージ
これまでキーボードにはあまりコダワリは無く、基本はPC付属のものを、酷い時は500円のキーボードとかも使ってきました。が、最近は歳をとったせいなのかは分かりませんが、キーボードの打ち込みが嫌に気になる様になってしまいました。スムーズにキーを押せなくて、例えば、ちょっとキーの端っこを押すと引っ掛かるとかが特に気になる様に。。。 

半年前に、職場に高級キーボードを持参している同僚がいて、(HHKBだったかな?)少し触らせてもらった時の感触が今になって頭から離れなくなっていました。あの、キーの重厚感、打鍵時の心地良い音、何より引っ掛かりのなさ。

最近、仕事も山場を登り始めていてかなりストレスも溜まっていて、ストレス発散の為に思い切って購入する事にしました。 2万円はかなり高いけど(500円のキーボードを使っていた私としてはかなり…)、10年も使えば1か月170円くらいだし。

そんな考え方をしていたものだから、HHKBと同じ様に良く聞くREALFORCEのフルキーボードを価格.com最安値で選ぼうと思っていたのに、つい、欲張ってREALFORCE RGB AEAX02をポチってしまいました。 


前からちょっと気になっていた「光るキーボード」と黒で統一されたデザイン性で一目惚れしました。


linux@ホスト名の変更

linux@ホスト名の変更 概要 Linuxのインストールを適当に進めてしまい、いざ使い始めた時にホスト名を変えたくなる事って多いですよね。そうですよね?
これは自分だけでは無いハズ!
というわけで、ホスト名の変更方法の記事です。というかメモです。
環境 私の環境は下記の通りです。
Debian 9.4.0 i386Linux version 4.9.0-6-686PCEngines ALIX 1e Debian使ってない人は御免なさい。たぶん、やり方違います。
現在のホスト名を確認する 下記コマンドで現在のホスト名を確認します。
$ hostname ↓が結果
Heimdal ホスト名を変更する/etc/hostsファイルと/etc/hostnameファイルを変更する必要があります。
まずは、/etc/hostsから。
127.0.0.1 localhost 127.0.1.1 Heimdall.example.com Heimdall # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 現在のホスト名が書かれている所を変更したい名前に変えてしまいます。勿論、root権限で。
127.0.0.1 localhost 127.0.1.1 yggdrasil.example.com yggdrasil # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 続いて、/etc/hostnameを変更します。
Heimdal ↓に変更
yggdrasil 設定を反映する 下記コマンドでOS再起動を実施して反映します。
$ sudo shutdown -r now 最後に 以上で反映されるハズです。何かあっても、責任はとりません!