ようこそ。

鷹足です。このブログでは、学校でのことやコンピュータ関係のことを書くと思いますが、どうぞよろしくお願いします。

2018年4月30日月曜日

PulseAudioとTimidity

PulseAudioでのtimidityの利用を試みたのですが、なかなか一筋縄ではいきませんでした。忘れないように、方法をメモっておきましょう…。

私の環境では、オーディオサーバーとして(ALSAの上に)PulseAudioが動いています。Gentoo Linuxでは、デフォルトのinitシステムはsystemdではなくOpenRCなので、PulseAudioはudev+Consolekitによってユーザーごとに起動されています。

PulseAudioは、(私の理解の限りでは)ALSAに対応、かつPulseAudio非対応の普通のアプリケーションがALSAを使おうとすると、仮想のALSAデバイスを使ってデータをPulseAudioに転送した上でうまいこと処理してまとめてサウンドカードに出力してくれます。
つまり、
アプリケーション -> ALSA仮想デバイス -> PulseAudio -> ALSA物理デバイス
という処理をたどることで、アプリケーションにはALSAを使っているように思わせつつすべてのサウンド出力をPulseAudio側で管理し、ハードウェアとのやりとりはPulseAudioのみが(ALSAを介して)行う、ということのようです。

さて、timidity++はネイティブではPulseAudioに対応していないようですが、これ単体でMIDIファイルの再生に使う場合には、上の仕組みがうまく働きしっかり再生してくれます。
(MIDIファイルを入力) -> timidity++ ->  ALSA仮想デバイス -> PulseAudio -> ALSA物理デバイス
という感じですね。

問題は、仮想MIDIインターフェース(ALSAシーケンサー)として使う場合です。aplaymidiやRosegardenその他のMIDIデータを出力するソフトウェアを使う場合、timidity++をこちらのモードで起動することになります。
アプリケーション -> timidity++ -> ALSA仮想デバイス -> PulseAudio -> ALSA物理デバイス
という流れにしなければなりません。ところが、Gentoo Linuxで提供しているinitスクリプトは、timidityユーザーとしてtimidity++を起動しようとします。そうすると、どういうわけか、上記のように既存のALSA仮想デバイスに接続せず、直接物理デバイスにつなぎに行ってしまうようなんですね。(あるいは、timidityユーザーとしてもう1つPulseAudioを立ち上げようとするのか?)
その結果、物理デバイスへのアクセスが競合してしまい、timidityかその他のアプリケーションのどちらかで音が出なくなります。

[alsa-sink-ALC892 Analog] alsa-sink.c: Error opening PCM device front:2: デバイスもしくはリソースがビジー状態です
こんな感じのエラーになるわけです。

PulseAudioがユーザー単位で動いている以上、それを利用するtimidity++がシステムのデーモンとして振る舞うのは難しい、ということですね…。これは原理的に仕方ないっぽいです。 PulseAudioにはSystem-wideモードなるものもあるようですが、あちこちで書かれているように組込み用途以外では非推奨扱いです。Gentooでもuseフラグがマスクされています。

そういうわけで、timidity++をユーザー側で動かすことにしました。
 /etc/conf.d/timidityを見てみると、initスクリプトが使っているtimidityのオプションが書いてあるので、これをユーザーがログインした時に自動実行されるようにしておけばよろしいわけですね。

デスクトップ環境で使えればいいと割りきれるなら、適宜シェルスクリプトを書いて 、~/.config/autostart-scriptsあたりからシンボリックリンクを張りましょう。多重起動が気になる人は、その辺の判定処理も付けておけばいいと思います。
 私は、終了用のシェルスクリプトを書いて~/.config/plasma-workspace/shutdownからシンボリックリンクを張りました。KDEなら、これで開始時にtimidity++を起動、終了時にkillというのが実現できます。

きれいな方法ではないですが、一応はこれでデーモンモードのtimidity++とPulseAudioが共存できるようになりました。

2016年12月13日火曜日

GRUB2のデジタル署名機能を使ってみる

※この記事は、自分の備忘です。あなたの参考になるかもしれませんが、ならないかもしれません。ここに書いた手段を実行する場合、あくまで自己責任で、お願いします。最悪の場合、コンピューターを起動できなくなるおそれがあります。十分気を付けて、備えをしてから臨みましょう。

GRUB2のデジタル署名検証機能


Linuxでは最近ひろくつかわれているブートローダーのGRUB2ですが、どうやら、読み込むファイルのデジタル署名検証機能もついている様子。おそらく、UEFIの機能であるセキュアブートと組み合わせることで、OSに制御が移る前に不正なソフトウェアが実行されることを防ぐことを意図しているようですね。
私のLinuxが入ったノートパソコンは、そもそもBIOSベースのシステムなのでセキュアブートなどは当然できないわけですが、とりあえずこの機能をテストしてみました。

デジタル署名検証機能でできること(たぶん)


ブートローダーに処理が移譲されて以降の、デジタル署名されていないファイルの読み込みを抑止すること。
ご存じのとおり、BIOS/MBRディスクという構成では、BIOSからMBRへ処理が移されるのを始まりとして、各種ブートローダーへ処理が移譲されます。また、UEFI/GPTなシステムでは、NVRAMに登録されたブートレコードに従って、ファームウェアからEFI system partitionに設置されたEFIバイナリへと処理が移譲されていきます。
この機能が有効になっているGRUB2は、自らに処理が移譲されて以降の改竄されたファイルの読み込み等を抑止します。
したがって、BIOSやUEFIファームウェアが、改竄された/悪意のある(GRUBとは別の)ローダーを読み込むことまでは抑止できません(当たり前か…)。そのへんは、UEFIではセキュアブートのお仕事ですね。

やってみた環境


gentoo linux
/bootのみを分割したパーティション構成
GRUB2 バージョン2.02 beta3
GPG バージョン2.1.15


手順


ブートローダーをいじる作業です。設定を間違うと、起動できなくなることがあります。
有効にする場合、作業は慎重に行いましょう。ブログの注意書きにも書いておきましたが、作業は自己責任で! 
(私自身、当初GRUB2を起動できなくなりました。GRUB以外で起動できるツールを用意しておくことも大事です。)
また、試行錯誤した結果ですので、なにか抜けがあるやもしれません。あてにしすぎないでください。
なにはともかく、GRUB2のinfoをまずは読みましょう。

以下のコマンドは、原則としてroot権限で(sudoなど)で実行しました。

とりあえず鍵を作る


GRUBの署名は、GPGで生成できます。まずは、署名に使う鍵を作りました。
gpg --gen-key
…でもいいのかもしれませんが、私は
gpg --full-gen-key
で、詳細設定をしてみました。鍵の種類と鍵長、有効期間の入力を求められます。私は、署名のみの用途のRSA 2048bitを選びました。まあ、テスト用としては十分な暗号強度でしょう。期間も、まあ適当に。

続いて、証明書に使うフィールド(名前、メールアドレスなど)を入力します。たぶん、ここの内容はなんでもよいと思われるので、自分で識別しやすい名前を付けておきます。

乱数生成中は、適当にマウスを動かしたり、キーボードで文字を打ったり、ディスクアクセスを生じさせたりするとよいようですね。

終わったら、
gpg -k
で、鍵一覧の確認。

署名


基本的には、
gpg --detach-sign <ファイル名>
で、<ファイル名.sig>に署名ができるようです。-uオプションでユーザーIDを指定して署名が行えるようですね(試してない)。
鍵が複数ある場合はこれで鍵を指定すればいいんでしょうか。

さて、しかしながら、GRUBの読み込むファイルを全部指定するのは大変です。そこで、署名を一括で行うツール(スクリプト)が開発されています。今回はこれを使わせてもらいました。

https://github.com/Bandie/grub2-signing-extension

 gpg2.1の環境では、異なるブランチが用意されているようです。適切な方を使いましょう。なお、これのREADMEは、GRUB2で書名機能を有効にする手段がわかりやすく解説されていました。これも読むといいですね。

上のツールをcloneするなりダウンロードするなりしたら、make installします。(私は、インストール先を/usr/local/sbinにするべく、Makefileを書き換えました。)

また、署名の検証に使うための鍵(公開鍵)をエクスポートしました。
gpg --export > boot.key
このファイルを、(とりあえずはテスト目的なので)/bootディレクトリにおいておきます。

ここまで出来たら、GRUB2の設定ファイルを書き換えて、署名の検証を有効にします。私の環境(gentoo linux)では、/etc/grub.d/以下に、/boot/grub/grub.cfgを生成するための情報があります。ここの40_custom(独自のメニューエントリを追加するためのファイル)をコピーして書き換えます。このファイルは、中身がそのまま/boot/grub/grub.cfgに転記されるので、ここに
insmod gcry_sha256
insmod gcry_rsa
insmod verify
trust /boot.key
set check_signatures=enforce
 と書き込みます。

最初の3つのinsmodは、署名の検証に必要なモジュールを読み込む命令です。
続いて、trustで、先ほどエクスポートした鍵を指定します。この鍵を使って、GRUBのファイルやカーネルイメージに施した署名を検証するわけです。
最後に、変数を設定して、署名検証の機能を有効化しています。

(ちなみに、私は、必要なモジュールをロードしていなかったせいで当初GRUB2が起動できなくなり、再起動を繰り返すようになりました。私の場合、上記3つのモジュールで足りたようですが、環境あるいは鍵の種類等によって変わるかもしれません。ここの設定を間違えると起動不可能になる恐れがあるのでご注意を。)

いつものように、
grub2-mkconfig -o /boot/grub/grub.cfg
のようにして、 設定ファイルを適用させます。

これでファイルが揃ったので、いよいよ署名。
grub2-sign
を実行します。

(なお、テーマを使っている場合、pngファイル、theme.txtなどが署名されないため、エラーが表示されました。手動で行うか、grub2-signスクリプトを編集してパターンに追加しましょう。私の場合、これらのほか、kernelイメージ、initrdのファイル名についても改良する必要がありました。)

(また、grub2-mkconfigは、署名が含まれる.sigファイルもkernelやinitrdと誤認してしまうようです。/etc/grub.d/10_linuxにif文を追加するなど適宜書き換えるといいかもしれません。参照: https://www.coreboot.org/GRUB2#Security)

念のため、
grub2-verify
で、署名を検証し、また、/bootディレクトリの中身を見て、主なファイルについて、<ファイル名>.sigというファイルがあるかどうか確認。

okなら、リブートしてみる。

 エラーが出ずにブートできれば成功。エラーが出たら、それに合わせて修正。

私の場合、
  • まず、/boot.keyがないと怒られる→/boot/grubではなく/bootに鍵ファイルを置く
  • hash sha256がうんたら→modinst gcry_sha256を設定に追加
  • GRUB2が起動しない→modinst verifyとmodinst gcry_rsaを追加
  • テーマが適用されない→/boot/grub/theme/<テーマ名>以下のpngファイルとtheme.txtに署名
といった試行錯誤をしたところ、なんとか起動できるようになりました。(なお、設定ファイルを変更したら、grub2-mkconfig、ggrub.cfg.sigの削除、gpg --detach-sign /boot/grub/grub.cfgするのを忘れずに。)

トラブルが起きた場合


GRUB自体は起動するようなら、エンターキーを押すなどしてブートエントリを選択する画面までいき、キーボードの「c」を押しましょう。そうすると、コンソールが開くはずです。そうしたら、以下のコマンドを打ち込んで、署名検証機能を無効にします。
set check_signature=no
続いて、エスケープキーを押し、メニュー画面に戻ったら、通常通りブートができるはずです。たぶん。

これもできない場合には、(あれば)他のブートローダー、あるいはブータブルメディアなどを使ってなんとかブートするしかありません。

また、署名については、/bootディレクトリ内の*.sigファイルを削除することで除去できます。くれぐれも、必要なファイルを消さないよう、ご注意あれ。

結果

署名がないファイルについては、読み込みを拒否するようになりました。一応、所期の目的は果たせた、ということで。しかし、背景やUIの要素となるpngファイルやテーマを記述したテキストファイルも対象とは、徹底してますね。

なお、鍵については、GRUB2のcore.imgに埋め込んだほうが安全かもしれません。たぶん、そうしないと、設定ファイルを読み込む際は検証がされてないはずです。grub-installなどに、これを設定するためのオプションがあります。

もっとも、これだけでは、他のブートローダーを仕込むような手法についてはカバーできません。そうしたものへの対策については、 セキュアブートを試してみたいところですね。(対応するコンピューターを持っていないので試せていないのです)

さらに、コンソールが起動されてしまえば、上記のように、check_signature変数を変更することにより署名は無効化されてしまいます。これへの対策としては、GRUBにパスワードを設定する方法がよいかと思います。

 このように、他にも検討すべき点はたくあんありますが、今回は目的の機能を有効化できた、ということでこのあたりで筆をおきたいと思います。

2012年6月16日土曜日

著作権法改正案

ものすごくお久しぶりです。鷹足です。もはや技術系どころか更新思いっきり止まってましたが、書くことができたのでちょっとだけ投稿。

著作権法改正案で、閣法に議員立法をくっつける形で違法ダウンロードに刑事罰を科すというこわ~いものが、民自公3党により衆議院を通過しました。あと少しで成人になり、選挙権を持つことになるぼくとしてはちょっと黙っていられなくて、とりあえずわが選挙区選出の参議院議員諸氏にメールを送ることにしました。送ったものの概要を、ここにも書いておこうと思います。もしここを見た人の中で、内容を見て同意してくださる人がいたら、まあコピペでも何でもして、(できればそれぞれアレンジを加えたうえで)地元の議員さんに送ってみてはいかがでしょうか。また、誤りや議論などあったらコメントに書いていただけるとありがたいです。

では、以下メールの概略。


今回、既に違法化されている「違法にアップロードされた著作物を情を知りつつダウンロードすること」(以下、違法ダウンロード)に刑事罰を科す著作権法改正案が衆議院を通過し、参議院に送付されることを知りましたので、これについて意見を申し上げたいと思います。

まず、法的観点から見て、この法案のうち違法ダウンロードに刑事罰を科す部分には以下の問題・疑義があります。
1.憲法において保障されている基本的人権との抵触
我が国においては、憲法によって欧米諸国と比較しても遜色のないかなり充実した人権保障が行われており、これこそが現在の日本の発展と国際的地位の向上を推進してきたということについては言うまでもないことと思います。人権の保障により国民の福祉を増進するという憲法の精神、および(主に)戦前の我が国の歴史にてらして、国家によってこれらの人権が踏みにじられることはあってはなりません。しかるに、この法案では新たな刑事罰の立法がなされようとしています。それも、2年以下の懲役または200万円以下の罰金という決して軽くない罰則です。刑事罰において人権侵害が起こりやすいのは周知の事実であり、導入前には慎重な検討が必要です。
さて、憲法21条には表現の自由が定められていますが、この法案はそれに抵触する恐れがあります。表現の自由は表現する側の自由はもちろんのこと表現を享受する側、コンテンツを視聴する側の自由をも含むものという解釈が現在では一般的です。なぜならば、たとえ自由に情報を発信できたとしてもそれを受け取る側が規制されてしまえば、事実上その表現はなかったも同然ということになってしまうからです。つまり、表現する自由とそれにアクセスする自由は表裏一体をなす存在といえます。この法案では、受け取る側の規制を強く打ち出していることが問題です。後述する構成要件該当性の判断が行為の時点において困難であることと考え合わせると国民全体の情報に対するアクセスの萎縮を招き、これにより表現の自由を実質的に損なう可能性が高いものと考えられます。
次に、通信の自由及びプライバシー権に関する懸念があります。通信の自由は憲法第22条2項後段に明文規定がありますし、プライバシーに対する意識は現代では相当に高い水準にあり、国民の権利意識も高まっていますから、立法活動上尊重に値する価値であるということには争いがないものと考えます。さて、この法案で規制される行為は「ダウンロード」であり、合法なものも含めて考えると、それ自体は膨大なデータがやり取りされている情報化社会においては日常的に行われています。このうち違法なものを捜査し摘発するということになれば通信を監視することが不可欠になります。捜査機関が通信を見張るということは、国家が私的通信にまで日常的に入り込んで介入するということであり、通信の自由にてらして断じて許されないことです。
また、摘発後には裁判が行われなければならず、その手続きにおいて違法ダウンロードを行ったとされる端末は重要な証拠となることから、警察により押収される運用が定着するものと予想されますが、現代において情報端末(パソコン・携帯電話など)は個人情報の塊と化しており、押収された機器を分析する過程で捜査機関には被疑者の個人情報が筒抜けとなります。これはプライバシー権の侵害以外の何物でもありません。
2.運用上の問題
構成要件該当性の判断が困難である、いいかえると規範に直面するか否かが不明確であるという問題があります。罰則は「禁令があり、それが悪いことだと知っているのにあえてその行為をした」ということに対する社会的非難があって初めて許容されます(刑法における責任主義)。しかしながら、今回の罰則の構成要件は「ダウンロード」であり、これは本人の意に反して、または知らずに行われることも十分考えられることです。だからこそ、昨今はコンピュータウイルスが社会的問題となるのです。このような性質を持つ行為を規制する際に、誰が被疑者について「規範に直面した」などと言い切れるでしょうか?
そのようなことを証明できる人はまずいないし、また証拠も残ることはないでしょう。そのような背景のもとでは、国民はいつ犯罪者扱いされるかわからないので情報の取得自体に消極的になり、国全体の情報通信・文化が萎縮してしまいます。
また、この罰則は冤罪や恣意的な適用を生みやすいものとなることが予想されます。前述したように、事実上証拠は被疑者の情報端末に残るデータだけです。データというものは書類等と違い誰がその端末に書き込んでもその違いを判別することはできません。したがって、他人に濡れ衣を着せることが簡単にできてしまいます。また、警察にとっても別件逮捕などの手法として活用することが容易です。とりあえず逮捕して、その人の端末にデータを数件書き込めばいいのです。このようなシナリオは十分に実行可能ですし、検事により証拠が捏造されるような情勢では警察がこれを実行に移さないとはだれにも言いきれません。

続いて、政治的な側面から見た問題点を挙げたいと思います。
1.効果への疑義
今回の罰則の政策的目標は音楽・映像産業が違法ダウンロードに圧されて衰退するのを防ぐことにあるといわれています。しかしながら、この効果がどれほどあらわれるのか極めて疑問です。まず、そもそも「音楽・映像業界」の衰退は違法ダウンロードの跳梁以外にも多くの要因があります。むしろ、それらの方が大きなウェイトを占めるものと私は考えます。それは、第一に娯楽の多様化です。インターネット上には無償で合法的に使用できるコミュニケーションツールやサービス、ソフトウェア、コンテンツがあふれています。音楽や映像でさえ、品質の高い独自作品がより緩やかな著作権に関する考え方(コピーレフト)のもとに配布されるようになっているのです。これらへ消費者の時間が流れた分だけ商用コンテンツの売り上げが低下するのは当然のことです。第二に業界の既存ビジネスモデルへの固執・硬直化があげられます。JASRACの独占禁止法問題、私的録画補償金問題への業界の対応などからうかがわれるとおり、現在の音楽・映像業界は既存のCDやDVDを売り上げて収益を得、些細な利用にも目をとがらせて利用料を得るという旧来のビジネスモデルに固執しています。これと相容れない媒体は消費者の利便を無視して業界から締め出すという立場を国内の業界は取ってきました。若者をはじめとするネットユーザーがJASRACを「カスラック」と呼び、アメリカの自由競争によって鍛えられたアップル社が音楽配信において圧倒的売り上げを誇るのはこうした時代錯誤な考え方の結果です。
音楽業界は自分で自分の首をじわじわと絞めてきたのです。そして今、国民の権利を制約し、ますます消費者の利便を犠牲にしようとしています。このような措置で売り上げが上がるとは、私には到底思えません。
2.諸外国との比較上の疑義
先述したアメリカ合衆国のアップル社は、運営するiTunes Music Storeにおいて多数の楽曲をより高音質、かつ技術的な著作権保護のない形式に移行しました。そして当該サービスは成功を収めています。このように、より自由な情報の流れがビジネスに利潤をもたらした例はほかにも数多くあります。
また、オランダおよびスイスにおいては同様の施策に対して議会が明確に否定の意思を示しており、世界的に見ても我が国ほど消費者の権利を無視した立法がなされている国はそうありません。
3.立法プロセスの問題
今回の罰則規定は、そもそも内閣提出法案として衆議院に提出された時点では存在していませんでした。衆議院の委員会審議を通過した後で議員による修正として発議され、そのまま本会議で可決されたものなのです。国民の行動を広範に、かつ強力に制約するであろう法案にもかかわらず委員会による専門的審議も、また当事者のヒアリングもこの部分に関しては事実上行われていないのです。これでは議論が十分に尽くされたとは言えず、民主主義の最重要かつ基本的な要素である討論が蔑ろにされています。このような状態で可決された法案で刑罰規定を新設する先例ができてしまえば、将来的に国民の権利保護は危ういものと言わざるを得ません。

最後に、情報の性質から導かれる問題点を述べたいと思います。
インターネット空間は本質的に情報の流れがオープンであり、これは表現の自由をはじめとする諸自由権に密接に関連するものです。この流れは情報化社会の到来とともに広く社会を覆い、新たなビジネスや利潤、人類全体を利する福祉を生んできました。すなわち、情報の自由な流通は人類全体にとって必要なものであり、これを維持することこそが憲法も重視する公共の福祉に適合するのです。今回の罰則規定はこうした情報やインターネットの性質、ひいては憲法の精神にそぐわないものです。

著作者の権利が重要であること、その侵害が行われるべきでないことは私もよく理解しています。しかしながら、その重要な必要性を考慮したとしても、上記のような危険がある以上この罰則付与という方法は許容されないと私は考えます。

参議院では慎重なる審議が行われ、妥当な結論を導いていただけるようお願い申し上げます。

2011年4月3日日曜日

テストどっちも悪かったような

この前MCPとTOEIC受けてきたんですが、どうやらどっちも悪かった模様です。
MCPは不合格でした。点数的にはそれなりにとれてるんですが、そんなんで資格だけ持っていてもあまり意味無いような気もするので、また勉強して再挑戦したいと思います!
TOEICはまだ結果は分からないんですが、まぁ……。おそらく勉強してない今の状況を的確に表してくれることでしょう。
やっぱり休まず勉強しなくちゃいけませんね。

2011年3月25日金曜日

検定絡みでもう1つ。

前も紹介したと思いますが、Microsoft社は学生に対してVisual StudioやWindows Serverなどの開発・サーバー関係の製品を学習などの用途のために無償提供するDreamSparkプログラムを実施しています。ぼくの場合、あと数日(3月いっぱい)で高校生じゃなくなるのでいったん資格を失うわけですが、そのラインアップの中にMCP(マイクロソフト認定資格)プログラムの受験チケットがあることにこの時期気付きました。そこで、せっかくだし受けようかな、ということで、学生証の期限ぎりぎりで受験することにしました。勉強期間が1週間もない中できついものがありますが、やるからには全力で頑張りたいと思います。

Hyper-V 仮想化検定 受けてみました

Hypser-V は Microsoft Windows Server 2008 R2 に標準機能として搭載されている仮想化テクノロジーです。Hyper-Vはサーバーの仮想化を実現する製品で、(物理的に)1台のサーバー上で複数のOS環境を同時稼働させる事ができます。企業においては、たとえば今まで4台あったサーバーを1台の物理サーバーへ集約するといったことができるので、電力や設置面積などが節約できます。
で、6月末までの期間限定でHyper-Vのメリットやライセンスに関するオンライン学習と検定(Hyper-V 仮想化検定)が無償で受けられます。ぼくも受けてみました。点数は80点台でちょっと微妙でしたが、合格しました。合格すると名前入りの「合格証」が印刷でき、また「Hyper-V 導入コーディネーター」という称号を使えるようです。技術者としての資格ではなく、どちらかというとセールスに必要な知識の検定ですが、特にライセンス関係の知識は事によると将来役立つかも知れないですね。なにはともあれ無料なので、とりあえずチャレンジしてみてはいかがでしょう?

2011年3月9日水曜日

今日は書評的なものを。「動かしながら理解するCPUの仕組み」

加藤ただし氏著、「動かしながら理解するCPUの仕組み CD-ROM付 パソコンの中心はどうなっているのか」(ブルーバックス,講談社)。
CPUの中で、データはどう動いているのか?という疑問を持ったことがある人は少なくないと思います。この本は、その疑問への簡易的な答えを提供してくれるかもしれません。
CPUは コンピューターの心臓とも言える部品で、(たいていはグラフィックはのぞくものの)演算を一手に引き受けている部分であることは言うまでもないですが、具体的に内部ではどういうふうに計算し、データをやりとりするのかということを正確にいえる人は(ITの仕事の人や学生をのぞけば)少数派かもしれません。この本では、Z80という組み込みシステムに使われるプロセッサーにおける仕組みを解説しています。電子回路とかの層ではなく、データの移動(レジスタ、メモリ、データバス云々)に絞った解説なので、回路とかそういう面からより深く学びたい人は別の本で。さて、この本には小さいCDが付いていて、Z80をターゲットにしたアセンブラとシミュレータが付いてます。つまり、あるコードをアセンブラにかけたらどんな機械語になって、それを実行したらCPUはどうデータを扱うか、というのが見えるようになります。むろん普段のPCに入っているものとは命令の仕様が違いますが、それでも感じはつかめるようになっているので、なかなか楽しめます。
ただ、もう少し長めのサンプルコードがあったらなー。まぁ、載っている実験コードで感触をつかんだらあとは自分で、って所ですかね。
ぼくみたいにアセンブリ言語とかに初めて触る人にとってはいい本だと思うので、ぜひ。