スキップしてメイン コンテンツに移動

環境移行

えー、半年ぶりの更新デス。
まっ生来 日記などきちんと書きつづけられた試しが無いのでこんなものかと...。
メインで使っているノートをNECのLavieC(LC800、LC900)シリーズから
同じNECのVersaProRへ変えました。
所謂リーマンショック以降 企業で使われていたPCが
大量に中古市場に出回っている中の一台を手に入れました。
これまで使っていたペン3-900Mhzの倍の1.8Gです。
これでも現在の主流からは程遠いですが私には充分です。
ここで、問題になるのが 作動中のOS環境を破壊せずに移行させるかで
MBのチップセットが同じならば、そのままHDDを載せ替えるだけで
最低限シェルが起動するくらいは持っていけるのですが
今回の場合 LCがVIAのチップセット、VersaがALiのチップセットで
まず確実にHDDの読み込みを見込めません。
Windows95あたりの時代は、HDDを載せ替えて 再起動させると
ハードウェア構成の変わった分を検出して再構築してくれて
ドライバの不足分をCDなりから読ませれば
(実際にはCDのアクセス関連もアウトなのでHDD上にOSの必要分を転送する必要がある)
済んだのですが、WIndows2000あたり以降からはそうもできません。

linux関連においても、一般的にMBを変えるような大きなハードウェア構成の変更には
HDDのバックアップ後にクリーンインストールするのがセオリーで、確実安全な手段です。
今回の移行の際の、必須条件はCDからのブートが可能であること。
HDD上にカーネルの再構築に必要な環境があることが重要です。
以前の環境のハードウェア構成
(ATAドライバは何を使っていたのか?VGAは何を使っていたのか等)と
新しい環境のハードウェア構成を入念に調べておく必要がある。
linuxのコンソールでの操作にある程度知識があることも必要、
以下の説明を理解できない場合は
素直に外部HDDにでも環境をバックアップして移行した方が正解です。
方法は、単にHDDを載せ替えて fedoraのCDからブートしてレスキューモードに移行する。
HDD上の/が/mnt/sysimageにマウントされるので
#chroot /mnt/sysimage
で、ルート位置を変更する。
#ls /
とでも、打ち込んで 以前の環境のルートからのディレクトリ構成が見えていれば

ひとまずOK

次に、カーネルを現在のハードウェア構成に合わせて再構築します。
私の場合、fedora7あたりからネットワーク経由でアップグレードをかけていたため
カーネルソースの位置が/usr/src/redhat/BUILDの下にありますが、
fedora10以降ではrpmbuildの変更に伴い
各ユーザーのホームディレクトリの下に
/rpmbuildと言うディレクトリが作成されて
その中のBUILDディレクトリにあると思います。

カーネルソースの位置が判れば、
あとは自分が使っているカーネルソースのディレクトリに移動して
Makefile のリビジョンを適当に変更して、
make configとか make menuconfigとかして、
まず最低限のHDDを読ませる事だけを考えて、
ドライバの構成を変更する。
私の場合VIAのチップセットのATAドライバを外し
ALiのドライバの組み込みチェックが入っているか確認して、
.configファイルを変更する。

次に

make bzImage; make modules

でカーネル本体とドライバモジュールをコンパイルし

make modules_install; make install

で 新しいカーネルとモジュールをHDD上にインストールする。
これで、一旦リーブートして
HDDから起動できれば(Xはまだ利用不可です。)
ひとまず安心です。ここでシェルでの起動すらできないようなら、
再度CDからブートして先程と同じようにカーネルの環境を見直して再構築をする。

このブログの人気の投稿

IS01文鎮化からの復旧

androidロゴのあと、黒画面で、左下にカーソル状態からの復旧 状態について ※リカバリーキットはインストールしていない(泣 ※adbでPC側からシェルに入れる ※adbでPCからファイルをIS01にプッシュできる ※root権限を奪取できない(泣 ※ベースバンド7 以上、最悪の状況からの脱出に成功 必要な物 psneuter busybox insmod+ msm_nand_ex.ko flash_image recovery_kit.img まず、上記のファイルを用意し adb で、PCからIS01の/data/bootkit 辺りに転送して、一旦電源を落とす。 次に、 IS01の電源を入れる、この時点で正常起動せず、 画面真っ黒、左下でカーソルらしきモノ有りの状態で PC側からadb shellでIS01に入る 一般ユーザープロンプトが出るのが確認できれば、 先ほどのファイルを転送したフォルダに移動  lsとかして、ファイル一覧をだし必要なファイルが揃っているか確認する。 揃っているのが確認できたなら、 ./psneuter とか打ち込んで実行、一旦adb接続が解除されてPC側に戻ってきてれば多分成功、 再度adb shellで接続を試みる。 うまく接続できて、プロンプトがroot権限を表す#になっていれば第一段階クリア root状態で、つぎに書き込み専用 パーティションの呼び出しのために カーネルモジュールを組み込む、 ./insmod+ -f ./msm_nand_ex.ko recovery_wrパーティションが見えるようになったか確認 cat /proc/mtd mtd8,9,10が見えてれば成功 あとは、 ./flash_image recovery_wr ./recovery_kit.img とかして、 リカパリーパーティションにリカバリーキットを書き込み reboot recovery して、リカバリーキットから、破損したsystem,dataをバックアップから復元する。

SP-5030にテキストデータを送る方法

すごい消極的な手段だが、linux上で作成したテキストファイルをSP-5030に読ませる方法を確立した。 要は、行の長さ(2バイト)、行番号(2バイト)があれば 後ろがベタテキストでもリスト表示まではやってくれる。後はSP-5030にリスト表示させて、ひたすらエンターキー叩いて、中間コードに戻してもらう。中間コードへの変換漏れがあっても きちんと実行時にエラーになるのでOK。1行あたりの長さを80文字以下にしないとDATA ERRORになって、最悪SP-5030が暴走する。 具体的に使うのは、マクロ機能とキャラクターマッピング機能のある「zasm」を使って見た目はアセンブラのソースの形で作成する。 obj_top: ;BASICプログラム開始位置宣言 line 50,' dima(9),b(9):v=53248:e=1:f=40' line 60,' a$="c0g0c0g0c0g0c0g0c0g0c0g0c0g0"' line 70,' a$=a$+a$+a$+a$+a$+a$+a$' line 80,' limit24063:gosub11000' obj_end: end ;BASICプログラム終了位置宣言 実際には、この前後にアセンブラのための宣言文やキャラクタマッピングの定義なども含まれるので、 地底最大の作戦をテキスト化した参考ファイル を上げておく。 これを使うのには、 MZフォント と zasm が必要です。

GAME言語 あれこれ

 MZ-700用にSDカードからMZTファイルの読み書きが出来る基板を入手して以降、MZ用のインタープリタやコンパイラの打ち込みをやってた延長でZ80-MBC2上のCPMで動作するGAMEインタープリタとコンパイラをいくつか発見。GAME-MZは国会図書館のコピーサービスで当時のアスキー誌の記事を入手済で打ち込みMZT化は済んでいるが動作の確認はしてない。 CP/M-80で動作するGAME80言語を3点ほど紹介する。 まず、動作環境は実機としては8Mhz動作のZ80-MBC2にXMODEMでPCからのファイル転送 PC側はFedora40の端末から「screen」コマンドでの接続、比較用に同じくFedora40の端末上で動作するCPMエミュレータ2種類。エミュレータで動作確認がとれたモノを実機に転送して最終動作させてみる流れ。    skyriverさんのGameOnCpm80 端末のエミュレータ上ではコピーペーストによるソースの転送もできるが ファイル読み書き用のコマンドが組み込まれているので、なぜか実機の方ではコピペに転送が出来ないのでありがたい。コンパイラも組み込まれているのでインタプリタで実行確認後、コンパイルもできる。 難点は、コンパイルの際にソース格納アドレスやデータエリア、オブジェクト格納エリアの指定をする必要がある。GAME-MZでもコンパイルの際は普通に必要な事ではあるが、自分の頭の中でシステムのメモリマップを把握しておくのが意外と面倒くさい。 コンパイルで 出来たオブジェクトをCOMファイルにするのにDDTなんかの別ツールでメモリ上に残ってるデータをCOMファイルとして保存するしかない。 COMファイル化とかを視野に入れずインタープリト、コンパイル、実行だけなら使いやすくお薦め。   ファイル操作コマンド例 files ファイル一覧表示 :\\ *.g 拡張子 .g のファイルの表示      \\のみ、\\ *.* での表示は出ない模様(単に自分の使い方が悪いだけかも?)  save(¥>FileName)とload(¥<FileName) 詳細は https://piclabo.blog.ss-blog.jp/CPM80GameCompiler...