ftraceの使い方

ftraceの使い方については、以下の記事でも紹介しましたが、 ftraceを試してみました - へにゃぺんて@日々勉強のまとめ 過去には紹介しなかった使い方も分かったので、あらためてまとめます。 過去に紹介したときは、 「関数単位でカーネルの実行状況のトレ…

dyndbg(dynamic debug)の使い方

printk()はデバッグ出力無効化の際には、コメントアウトするなりして再ビルドする必要があります。 何度もビルドを繰り返すのは面倒なので、デバッグ出力の有効/無効を実行時に動的に切り替えられるようにする機能が dyndbg(dynamic debug)です。

Linuxカーネル4.2をビルド・インストール

昨日(8/30)、Linuxカーネル4.2がリリースされましたので、 例によって、ビルド・インストールしてみました。 なお、やっと64ビットマシンを購入しましたので、 今回からは、X86_64でビルドします。

タスク管理を追加しました

x86(32ビット)用OSを作っています - へにゃぺんて@日々勉強のまとめ こちらの記事から引き続き、OS作りを少しずつ進めていました。 一応、「タスク管理」と呼べるものが実装できたので、記事にしておきます。 ソースコード 前回の記事と同じくGitHub上で開…

Linuxカーネル4.1をビルド・インストール

Linuxカーネル4.1が公開されましたので、 さっそく、ビルド・インストールしてみました。 毎度のことなので、ビルドまでを行うシェルスクリプトを作ってみました https://github.com/cupnes/sandbox/blob/master/build_kernel.sh 「初期設定(ここから)」から…

シグナルの使い方と実装について

今回は、Linuxのシグナルについて、自分なりにちゃんと調べてみましたので、 記事にまとめてみます。ほとんどUNIXシグナルと変わらない話だとは思いますが、ソースコードは Linuxのものを参照しているので、Linuxに限った話も混じっているかと思いま す。

Linux 4.0ビルド・起動確認と、ライブパッチソースの在り処

今日(4/13)、Linux 4.0がリリースされました。 LKML: Linux 4.0 released https://lkml.org/lkml/2015/4/12/178 何度かこういうネタを記事にしていますが、 今回も、自分のマシンでビルドと起動を試してみました。 また、それだけだと記事としてあんまりなの…

x86(32ビット)用OSを作っています

少し前から、x86(32ビット)用OSを作っています。(64ビットじゃないのは、今だにx86マシンしか持っていないからです。。。) シェルみたいなものが動くところまで来たので、記念に記事にしてみます。 できることは、上のGIFアニメの通りで、echoコマンドしか無…

USB FDDのmountで"can't read superblock"と言われるときは

USB FDDは/dev/fd0ではなく、/dev/sdbのように認識されます。 なので、 $ sudo mount -t vfat /dev/sdb /mnt/storage などのようにマウントすることになるのですが、 "can't read superblock" とのメッセージが出てマウントできないことがあります。 そんな…

プロテクトモードへ移行し、C言語のmain()実行までのサンプルプログラム

x86のOSを作る際には、プロテクトモードへの移行など、やらなければならないことがあります。 考え方にもよりますが、この部分は、ソースコードを理解した上で、既存のものを流用して済ましてしまいたい箇所です。 そこで、Linux-0.01-rmのソースコードを元…

EV3を買いました(レコードプレイヤータイマー)

EV3

EV3を買いました。 以下の記事の内容を試す際に注意したほうが良いと思った箇所と、 記事の内容を参考に作成したレコードプレイヤータイマーのプログラムを紹介します。 ネイティブLinuxプログラミング方法 (Ver0.3) | (株)アフレル|教育版レゴ マイン…

linux-0.01-rm-3.5をQEMU上で実行

Linux-0.01を最近のLinux上でビルドできるようにする「Linux 0.01 remake(linux-0.01-rm)」というプロジェクトがあります。 Debian 7.7(wheezy)上で試してみました。 https://github.com/cupnes/linux-0.01-rm-3.5 結論としては、以下のエラーでブートは完了…

mkdosfsで遊ぶ

FAT形式のファイルシステムを作成する「mkdosfs」を使って、面白いことを見つけたので 記事にまとめます。 用意するもの mkdosfsコマンドが使えるLinux PC USBフラッシュメモリ/SDカードなど、フォーマットして構わないもの あるいは、QEMU(後述) ちょっとし…

Caskでパッケージ管理を始めました

package.elでelispをパッケージ管理できるのは便利だけど、 別のマシンと同期するには、同じパッケージをインストールする作業が発生し、面倒 という事に悩んでいました。 このような問題はCaskで解決できます。 「何のパッケージをインストールしたか」 を…

今さらだけど、startparについて

DebianではJesseからsystemdが決まっているなどで、 今さらではあるのだけど、Sysvinitで使用されているユーティリティの一つ 「startpar」の主に設定ファイルを調べて見ました。 startparとは ランレベルのスクリプトをパラレルに実行してくれる実行ファイ…

Debian 7.6(wheezy)でファミコン(NES)プログラミング(6502アセンブル/逆アセンブル)

Debian 7.6(wheezy)でファミコン(NES)のプログラミング環境を構築したので、そのメモです。 といっても、環境構築からアセンブル、動作確認は以下の記事の受け売りです。 Ubuntu で ファミコン(NES)プログラム その1.1(リローデット) Ubuntu向けの記事です…

シェルスクリプトでスケジューラ

シェルスクリプトで簡単なCPUのシミュレーションと、 その上で動くスケジューラを作ってみました。 とりあえず、メモ書き程度に。 # あとで詳しく追記する・・はず ダウンロード https://github.com/cupnes/sh_sched 使い方 git cloneで持ってきたあと、 実…

CentOS 6.5でLinuxカーネル 3.16.1をビルド

CentOS(x86_64)の環境でもビルドを試したのでメモ。 作業環境 $ cat /etc/redhat-release CentOS release 6.5 (Final) 作業過程 必要なパッケージのインストール $ sudo yum groupinstall "Development tools" $ sudo yum install ncurses-devel ダウンロー…

Debian 7.6(wheezy)でLinuxカーネル 3.16.1をビルド

Debian(i686)の環境でLinuxカーネル 3.16.1をビルドしました。 自分用にも、作業過程をメモ。 作業環境 $ cat /etc/debian_version 7.6 $ uname -a Linux dyna 3.2.0-4-686-pae #1 SMP Debian 3.2.60-1+deb7u3 i686 GNU/Linux 作業過程 ダウンロードから.con…

straceの実験(returnのみのプログラム)

最近、straceコマンドを知ったので、簡単なプログラムで試してみます。 straceは、「あるプログラムが発行するシステムコールの内容を表示してくれるコマンド」です。 システムコールは正に、アプリケーションとOSのインタフェースなので、 これを一覧で見せ…

文字(列)をアスキーアートで表示する3つのコマンド

オプションなど変更すれば色々と装飾を変えられると思うけど、 とりあえず見つけたのをメモ。 banner インストール $ sudo apt-get install sysvbanner 実行例 $ banner hello # # ###### # # #### # # # # # # # ###### ##### # # # # # # # # # # # # # # …

ターミナル起動時に今日の予定を表示する

calendarコマンドを使うと、記念日などを表示できます。 $ calendar 8月 05* Bank Holiday in Scotland and Northern Ireland 8月 05 Homeland thankfulness day in Croatia 8月 05 3rd Cross-Quarter Day 8月 05 European Monetary Agreement signed, 1955 …

数探しシェルスクリプト

ナンバープレートの4つの数字から四則演算で「10」を求める遊びをやったことがあると思います。 今回は、任意の個数の数字から、指定された値を四則演算で求める計算式を出してくれるシェルスクリプトを作成しました。 https://github.com/cupnes/sh/blob/ma…

あるディレクトリ以下の総ファイルサイズを取得するには

あるディレクトリ以下の総ファイルサイズを取得する際に、 $ du -hs ディレクトリ のように、duコマンドを使った例を紹介されることが多いのですが、 duコマンドが返すのはブロックサイズであり、ファイルサイズではないため正確な数値は得られません。 (ち…

千早ニュースを取得するシェルスクリプト

Me First and the Gimme Gimmesというバンドの 「Who Put The Bomp」という曲のアニメ付き映像です。 このバンドは90年代のバンドで、様々な曲のパンクアレンジをしていました。 Who Put The Bompもその一つで、元々この曲はBarry Mannによる1961年の曲でし…

フレームバッファ・コンソールで快適に生活する為のまとめ

別の場所にいろいろな記事のURLをまとめていたものを、 こちらへ再掲。 http://www.ac.auone-net.jp/~baba/jfbterm/ http://www.ac.auone-net.jp/~baba/w3m-img/ フレームバッファ動作 fbiでフレームバッファ上に画像を表示する: 日々のーと Linuxで使えるグ…

「組込みOS自作入門」を参考にOS作り

12ステップで作る組込みOS自作入門作者: 坂井弘亮出版社/メーカー: カットシステム発売日: 2010/05/01メディア: 単行本購入: 24人 クリック: 252回この商品を含むブログ (39件) を見る読みながら、少しずつ組込みOSを作っていました。 読破記念も兼ねて、自…

Google画像検索ダウンロードに色指定機能を追加

http://d.hatena.ne.jp/cupnes/20130320/1363782346 こちらの記事の続きです。 概要 「-c [色名]」で色を指定して画像検索を行えるようになりました。 gray trans red orange yellow green teal purple pink white gray black brown 以上の色が指定できます…

SH3クロス開発環境構築(GCCビルドエラー未解決)

SH3のマイコンボード「T-SH7706LSR」のクロス開発環境を Debian上に作ろうと思い、GNU BinutilsとGCCの最新版をビルドしていました。 結果として、まだGCC-4.6.4のビルドに成功していないのですが、 いろいろとトラブルシューティングを行ったので、ここまで…

gamegrid.elで遊んでみよう

emacs上で動作する M-x tetrisや M-x pongなどのゲームは、「gamegrid.el」というゲーム用ライブラリで作られています。 今回は、この実験として、簡単な「迷路ゲーム」を作ってみました。 ソースコード ソースコードは、こちらからダウンロードしてください…