読者です 読者をやめる 読者になる 読者になる

わらばんし仄聞記

南の国で引きこもってるWeb屋さん

raspberry pi3への64bit版opensuseインストールとwifiの有効化

この記事は以前に書いた Installing 64bit openSUSE to raspberry pi 3 - わらばんし仄聞記 After installing 64bit openSUSE to raspberry pi 3 - わらばんし仄聞記 を日本語化して整理したものです。 追記 2017/02/03 元々英語版の記事を書いていた時に使…

After installing 64bit openSUSE to raspberry pi 3

Below are what I did after installing this OS to raspberry pi 3. update 2017/02/03 About wifi device recognition, this was work on old OS image (openSUSE-Tumbleweed-ARM-JeOS-raspberrypi3_aarch64.aarch64-2016.10.15-Build6.1.raw.xz) as of wr…

Installing 64bit openSUSE to raspberry pi 3

I got raspberry pi 3 but I found out after got it that raspbian doesn't support aarch64. So I looked for distribution that works with 64bit linux on this raspberry pi and I have found opensuse fullfill my demand for now. Official page is H…

KDEにて指定したvirtual desktop上にアプリケーションを自動起動

最近、メインマシンのOSをopenSUSEのTumbleweedに変えました。 デスクトップ環境はKDEを使用してます。バージョンは以下の通り。 $ kstart --version Qt: 4.8.7 KDE Development Platform: 4.14.14 KStart: 4.14.12 以前使ってたバージョンでは、前回終了時…

初心者の為の線形代数勉強会(2)

前回に続き、初心者のための線形代数勉強会(3) - connpass に参加してきました。今回は第二章の以下の節をやりました 2.4 行列の転置と共役 2.5 行列の分割 2.6 行列の線形写像 前回のエントリは下記の通りです 初心者の為の線形代数勉強会(1) - わらばん…

初心者の為の線形代数勉強会(1)

はじめに 初心者のための線形代数勉強会(2) - connpassに参加してきました。 次の本を教科書として、線形代数を学んでいこうという内容の会になります。 Amazon.co.jp: 線形代数学講義 改訂版: 対馬 龍司: 本 機械学習や画像処理、量子力学をはじめとして、…

Javaバイトコードの読み方

先日、Javaクラスファイル入門 - connpassにてバイトコードの読み方について話してきたので、折角だからこちらにも書いてみます。 内容的にはあくまで入門ということで、サンプルとして取り上げたコードを読むために必要な範囲の知識のみ、加えてあまり厳密…

OSvのCLI周辺コードをみてみる

※この記事は OSv Advent Calendar 2014 9日目の記事です 最近、ちょこちょことOSvを触らせてもらってるので、OS関連周りにはあまり明るくないながらも書かせてもらう事にしました。 こっち方面を専門としている訳ではない為、間違っている箇所などありました…

補数表現について

補数って? 2進数を扱うとき、符号付きの場合を考えると決まって出てくる「2の補数表現」ってやつ。 これ自体は「補数」と一般的に言われるものの定義から明確なので、何も問題は無いんです。 補数 - Wikipedia wikipedia先生でも述べられている通り、補数と…

池袋物理学勉強会

池袋物理学勉強会(6) - connpass へ行ってきました。 唐突なのでさわりを述べておくと、以下の本を進めていき、後々は量子力学がわかるようになろうというのを目指している勉強会です。 Amazon.co.jp: 量子力学を学ぶための解析力学入門 増補第2版 (KS物理…

原書で学ぶ64bitアセンブラ入門(10)

14章、入出力ストリームについてです。 Using the C stream I/O functions システムコールの章では、入出力に関してopen read write closeというシステムコールのラッパー関数について見てきました。この章ではバッファ付きI/Oを使う関数について見ていきま…

原書で学ぶ64bitアセンブラ入門(9)

続いて13章、Structについてです。 今更ですけど、今回この本で読むまでアセンブラに構造体があるなんて知らなかったです。 Struct 例えばCの構造体で といった、Customerという名の構造体について考えます。 こんな構造体をアセンブラ上でも実現するとして…

原書で学ぶ64bitアセンブラ入門(8)

http://connpass.com/event/6463/原書で学ぶ64bitアセンブラ入門(6) - connpass での内容です。 この会も6回を数え、全19章の内14章まで終わってだいぶ佳境に入ってきた感じです。 今回は12章から14章までを読んでいきましたので、まずは12章をば。 chapter1…

原書で学ぶ64bitアセンブラ入門(7)

原書で学ぶ64bitアセンブラ入門(6) - わらばんし仄聞記 上のリンクに続いて、11章、浮動小数点数についての続きです。 Conversion ある整数長から別の整数長や、ある浮動小数点数長から別の浮動小数点数長。はたまた整数長から浮動小数点数長やその逆とい…

原書で学ぶ64bitアセンブラ入門(6)

11章、浮動小数点数について。 原書で学ぶ64bitアセンブラ入門(5) - connpassでの内容です。 chapter11 Floating point instructions 浮動小数点数の演算は、8088世代のCPUでは8087というコプロセッサ(補助プロセッサ)を使っていました。486世代になるとコ…

OSvをビルドしてみる

OSvについては下のリンクを参照。 OSv - the operating system designed for the cloud これをビルドして動かしてみました。 コードについてはgithub上のコチラにあり、ビルド方法もこのページ下部にREADME.mdが表示されています。 ちなみに手っ取り早くOSv…

原書で学ぶ64bitアセンブラ入門(5)

10章の配列について。 原書で学ぶ64bitアセンブラ入門(5)でやった内容になります。 chapter10 Arrays Array address computation 配列とは、つまりが、ある特定の型(byte, words, double-words, quad-wordsなどのいずれか)のメモリ領域の連なりです。つま…

原書で学ぶ64bitアセンブラ入門(4)

続いて9章。 これまたついこの前の原書で学ぶ64bitアセンブラ入門(4)でやった内容になります。 この章は関数呼び出しの挙動やスタックフレームなんかを扱います。 chapter9 Functions The stack まずはスタックについて。 ちょっとまだエントリには書いてい…

原書で学ぶ64bitアセンブラ入門(3)

さて、間が空いてしまいましたが続きをば。 本当なら前回に続いてchapter3について書くのが筋なんでしょうが、つい先日にやった勉強会での範囲に当たるところを先に書いてしまおうかと。 chapter8 Branching and looping ということで、一気に飛んで8章で、…

原書で学ぶ64bitアセンブラ入門(2)

前回に引き続き、タイトルの勉強会でやった内容についてです。 勉強会毎の投稿ではなく、区切りと記事を書く労力の関係上、本書の1章ごとに書いていこうと思います。 chapter2 Numbers 二章は数値についてです。 コンピュータでは全ての情報をビット列として…

原書で学ぶ64bitアセンブラ入門(1)

タイトルの通り、洋書の64bitアセンブラ入門書をよむ勉強会を開催しています。 参考書:Introduction to 64 Bit Intel Assembly Language Programming for Linux ターゲットとしては洋書の技術書はいつも物怖じしてたけど、読んでみよう!という人と、 アセ…

intel-8086データシート

intel 8086のデータシートを読んでてちょくちょくと詰まった所があったので、それのメモ。 読んでた箇所は"Table2. Instruction Set Summary"で、MOV命令の箇所。どういうビット列がどの命令と解釈されるかと、特定の役割を持ったビットの説明について。 命…

ELFファイルを作る part7

ELF

さて、前回のpart6でズルをする必要があったのは、分解する元のELFファイルがあり、各セクションの中身はその元のファイルのものをそのまま使用していた為である。 それ故、主に動的リンク関係のセクションについてのアドレスを全く同じになるよう調整する必…

ELFファイルを作る part6

ELF

part5からの続き 目標 ELFファイルから各セクションを抽出し、それらのセクションの情報からELFファイル全体を再構築する。 環境 opensuse12.3 ld-2.23.1 実装 元になるELFファイルや、各セクションの抽出についてはpart5を参照。やることはこの、part5で抽…

sh_addralign

ELF

ELFファイルを作る part5で取得した、セクション毎に分解されたデータを元にELFファイルを再構築していた際、出来上がったファイルをreadelf -aしたら readelf: Error: Unable to read in 0x10 bytes of version need aux (2) readelf: Error: Unable to rea…

ELFファイルを作る part5

ELF

ELFファイルを作るpart4で、ライブラリとのリンクについて詳細を追ってみる手順の案に書いていた ELFファイルを分解するプログラム、また、その分解したものから再生成するプログラム」これについて考えてみる。 まずは先だって分解をしてみる。 目標 ELFフ…

セクションとセグメントの対応 part2

part1でセクションとセグメントを対応付けしていると思われる箇所は見つけた。次は実際にどうやって対応づけているのかを見てみる。 おさらい 簡単なプログラムをコンパイルして出来上がった実行ファイルはこんな感じになる。 $ readelf -l test.out Elf fil…

セクションとセグメントの対応 part1

前回ELFファイルを作る part4にて、セクションをセグメントに割り当てる際は単純な構造ということもあって決め打ちでやってみてた。前回の様な規模ならまあいいとして、これがある程度セクションの数や種類が増えてきたらどうしようもなくなる。 これについ…

ELFファイルを作る part4

ELF

以前にELFファイルを作るpart3までで、値を直接指定してのELFファイル作成を行った。また、簡易brainf*ckコンパイラを作る part3では命令部分のコードを外部から指定し、それを実行出来る実行形式ファイルの出力を行った。 これらはいずれも外部ファイルとの…

簡易brainf*ckコンパイラを作る part3

ここまでで触れていたもので、準備は整った。本題に戻って、brainf*ckのコードをプログラムに読ませ、そのコードの実行ファイルを生成する。 具体的にどうするかを攫っておくと、 pythonでJIT(64bit版Linux環境) part3を元にして、読み込んだコードをネイ…

簡易brainf*ckコンパイラを作る part2

part1に引き続き、もう一点必要なものがある。 brainf*ckはそれぞれの命令以外に、少なくともサイズ30000のバイトの配列を持つ必要があり、これは今までgasの記法を主に使っている所で見られた .comm mem, 30000に相当する。 この領域をELFファイルに直接持…

簡易brainf*ckコンパイラを作る part1

pythonでJIT(64bit版Linux環境) part3でも軽く触れていたが、ここまでで作成していたELFファイルや、JITでやっていた事をまとめると、brainf*ckのコードを読み込ませてELFの実行ファイルを作成させる事ができる。要はbrainf*ckコンパイラを作成できる。 た…

ELFファイルを作る part3

ELF

part2では非常に単純化したELFファイルを作成しましたが、この状態から作成されるファイルに対してobjdump等を実行してもメインの実行コードについての情報が出てきません。 なので、今後進めていった際、不具合に遭遇した場合の問題解決を容易にするために…

ELFファイルを作る part2

ELF

part1では単純なELFファイルを作る際に埋め込む為の、極めて小さいアセンブラのコードを作りました。 なので、次はそのコードを入れる為の、ELFに則ったバイナリを作成する。 目標 ELFに則ったバイナリを作成し、その中にpart1で作成したコードを入れ、動作…

ELFファイルを作る part1

ELF

池袋バイナリ勉強会(7)に行ってきました。前回にも触れたように、先にJITで動作させていたバイナリ値をELFの中に組み込めればbfコンパイラが出来上がる。 というわけで、次のステップとしてELFファイルの作成へ。 目標 64bit用ELFの挙動を知るため、必要最小…

pythonでJIT(64bit版Linux環境) part3

池袋バイナリ勉強会(5)にて、前回に引き続きpythonでJITをいじってきました。 今回の目標は外部からbrainf*ck(以下bf)のコードを読ませ、それを実行するネイティブコードの生成とその実行を行う事としました。これが出来たなら、そのネイティブコードにELF…

pythonでJIT(64bit版Linux環境) part2

pythonでJIT part1は非常に単純な例だったので、もう少し複雑にしてみることに。 目標 アルファベットのA~Zをループで取得し、それぞれをputchar関数を使って出力。終わったら改行文字の出力をするネイティブコードをJITで実行する。 アセンブラでのコード …

pythonでJIT(64bit版Linux環境) part1

池袋バイナリ勉強会(4)にて、pythonでJITを行うコードを書いてみました。 基本的にこちらを参考として、64bit版Linux環境下にて。とりあえずはほぼ写経で、ちょこちょこっと環境に応じて変えてみて動作することを確認する。 part1.py from ctypes import * l…

KDMでのログインが出来ない

openSUSE12.2がリリースされたので、手元にある12.1のマシンをアップデートしてみた。 更新終わってから再起動したら、どうもうまくログイン出来なくなってしまったので、その時の状況と解消までのメモ。 状況 KDMのログインマネージャから、パスワードを入…