steletoの日記 このページをアンテナに追加 RSSフィード

2017-07-06

[] GR-PEACH + U-Bootでtftpboot 00:37  GR-PEACH + U-Bootでtftpboot - steletoの日記 を含むブックマーク  GR-PEACH + U-Bootでtftpboot - steletoの日記 のブックマークコメント

f:id:steleto:20170707001135j:image

f:id:steleto:20170707001132j:image

会社帰りにパーツ屋へ閉店時刻ぎりぎりに滑り込んでLANコネクタを買ってきた。んでボードにハンダ付けして早速動作確認。TFTPの使い方をよく知らないのでGoogle先生に聞きながら適当に実施。

まずDHCPIPアドレスを取得する。

=> setenv autoload no
=> dhcp
sh_eth Waiting for PHY auto negotiation to complete.. done
sh_eth: 100Base/Full
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 192.168.0.7 (577 ms)

お、取れた。ということはU-Bootで通信はできているということなので一安心。

次に接続先のIPとファイル名を指定。

=> setenv serverip 192.168.0.5
=> setenv bootfile netbsd.bin

tftpbootコマンドで先ほど指定したIPアドレスからファイルをダウンロードして0x20000000に展開。

=> tftpboot
sh_eth:0 is connected to sh_eth.  Reconnecting to sh_eth
sh_eth Waiting for PHY auto negotiation to complete.. done
sh_eth: 100Base/Full
Using sh_eth device
TFTP from server 192.168.0.5; our IP address is 192.168.0.7
Filename 'netbsd.bin'.
Load address: 0x20000000
Loading: #################################################################
         #################################################################
         #################################################################
         ###################################
         2.8 MiB/s
done
Bytes transferred = 3376148 (338414 hex)

ダウンロードは1〜2秒で終わるので後々トライ&エラーする羽目になってもストレスが溜まることは無さそう。

で実行。

=> go 0x20000000
## Starting application at 0x20000000 ...
hey, favstar! ban stop me premiamu! -- @toshi_a

よし動いた。

というわけでなんとか目処は着いたので移植に専念できそう。よかったよかった。

2014-03-17

[]cvs2fossilが変 23:13 cvs2fossilが変 - steletoの日記 を含むブックマーク cvs2fossilが変 - steletoの日記 のブックマークコメント

Nのsrcリポジトリをcvs2fossilで変換しようとするも、trunkが2013/11/28で止まっているという謎状態になる。

f:id:steleto:20140317230011p:image

timeline全体を見ると最新のコミットらしきものもきちんとあるので、リポジトリのデータそのものが古いというわけでは無さげ。

f:id:steleto:20140317230010p:image

考え方を変えて、githubhttps://github.com/jsonn/src を持ってきて変換しようと試みる。

$ git clone http://github.com/jsonn/src.git
Cloning into 'src'...
fatal: unable to access 'http://github.com/jsonn/src.git/': SSL certificate problem: unable to get local issuer certificate

なんか怒られた。困ったときにはGoogle先生

$ git clone https://github.com/jsonn/src -c http.sslVerify=false
Cloning into 'src'...
remote: Reusing existing pack: 3292546, done.
remote: Total 3292546 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3292546/3292546), 1022.25 MiB | 317.00 KiB/s, done.
Resolving deltas: 100% (2646087/2646087), done.
Checking connectivity... done
Checking out files: 100% (159484/159484), done.

取れた。しからばFossil: Import And Exportの通りにfossil形式に変換を。

$ git fast-export --all | fossil import --git ../netbsd-src.fossil

/: write failed, file system is full
SQLITE_FULL: statement aborts at 27: [INSERT INTO blob(uuid, size, content) VALUES(:uuid, :size, :content)]
fossil: SQL error: database or disk is full

If you have recently updated your fossil executable, you might
need to run "fossil all rebuild" to bring the repository
schemas up to date.
SQLITE_ERROR: statement aborts at 2: [ROLLBACK] cannot rollback - no transaction is active

ディスクが溢れた。って空きなら120GBはあるんだがそれで足りないってどういうことよ。

うーむどうしたもんかねぇこれ。

2012-10-07

[] VirtualBoxでUEFI+GPTな環境にNetBSD/amd64をインストール 20:25  VirtualBoxでUEFI+GPTな環境にNetBSD/amd64をインストール - steletoの日記 を含むブックマーク  VirtualBoxでUEFI+GPTな環境にNetBSD/amd64をインストール - steletoの日記 のブックマークコメント

新調したPCことHP p6-2210jpがUEFI+GPTという環境になっていたんで、さてどうやってNetBSDを入れようかということでVirtualBoxで試したらなんとかなったというメモ。

以下ポイント。

  • ブートローダーはArchLinuxからgrub2-efiだけ拝借して使用する。NetBSD標準のブートローダは使用しない
  • BSD disklabelも使用せず。2TBの壁もあるし(2TB超のディスクなんて持ってないけど)
  • Arch Linuxを使用したのは"grub2 efi"でGoogle先生に尋ねたら最初にでてきたから。ぶっちゃけEFI対応のGRUB2があれば何でもよし。

まずは用意するものとして、NetBSD/amd64、ArchLinux(grub2インストール用)、GParted Live CD(パーティション設定用)を用意。実際に使ったファイル名は以下の通り。

  • NetBSD-6.99.11-amd64.iso
  • archlinux-2012.09.07-dual.iso
  • gparted-live-0.13.1-2.iso

VirtualBoxに新しい仮想マシンを作成し、CDから起動できるようにする。なお、VirtualBoxのUEFIが今一微妙なのか単に使い方が悪いだけなのか、CDからうまく起動できないのでしばらくEFIはOFFにしておくこと。

仮想マシンが作成できたらまずはGParted Live CDを起動する。

f:id:steleto:20121007194416p:image

Gpartedメニューから「デバイス(D)」→「パーティションテーブルの作成(C)...」とすると『警告:この作業は「ディスク /dev/sda 上の全データを削除します』と出るので、「詳細」から「パーティションテーブルの形式を選択」デ「gpt」を選択して「Apply」。

テーブルの作成が終わったら、ツールバーの「New」でまず最初にEFI領域を作成するためfat32のパーティションをディスクの先頭に作成する。容量やラベルは適当でOK。残りの領域は好きなように。どうもufsは選択できないので「未フォーマット」にでもしておく。

全て完了したら「Apply」で完了。

今回はこんな感じで、先頭にEFIパーティション、残りは全部NetBSDパーティション。

f:id:steleto:20121007194415p:image

本当はGUIDも設定したいけれども設定方法がわからず。とりあえず設定しなくても大丈夫そうなのでとりあえず進める。(GUIDについては米WikipediaのGUID_Partition_Tableを参照)

次にNetBSDをインストールする。なおNetBSDのインストーラはGPTを認識できないようでご覧の通り238(0xEE)のパーティションが1つあるだけにしか見えない。仕方がないのでシェルに落ちて手動で展開する。

f:id:steleto:20121007194414p:image

GPTパーティションはdkデバイスとして認識されるらしいので、まずは正しく認識されているか確認する。

#dmesg | grep dk
dk0 at wd0: 78a10e7a-3ee5-448c-8afe-33fbd4083fa1
dk0: 524288 blocks at 2048, type:
dk1 at wd0: 12cae2aa-aa0c-4137-82d7-0ce1a6502546
dk1: 16248832 blocks at 526336, type:

対象がdk1として認識できているようなので、newfsでフォーマット。WARNINGは気にしない(おぃ

# newfs -I -O 2 dk1
cprng sysctl: WARNING pseudorandom rekeying.
/dev/rdk1: 7934.0MB (16248832 sectors) block size 16384, fragment size 2048
        using 43 cylinder groups of 184.52MB, 11809 blks, 22912 inodes.
super-block backups (for fsck_ffs -b #) at:
160, 378048, 755936, 1133824, 1511712, 1889600, 2268488, 2645376, 3023264,
...............................................................................

後はマウントして必要なものを展開する。

# mount -t ffs /dev/dk1 /targetroot
# cd /targetroot
# tar zxpf /amd64/binary/sets/base.tgz
  (以下略)

必要なら /targetroot/etc/以下を適当に編集して完了。ブートローダーにはgrubを使うのでinstallbootの出番はなし。

最後にArch Linuxを起動してgrub2-efiをインストールさせる。

f:id:steleto:20121007194413p:image

なおgrub2のインストールは基本的には「https://wiki.archlinux.org/index.php/GRUB2」の通り。

まずはgrub-efi-x86_64をインストールする。

root@archiso ~ # pacman -yS grub-efi-x86_64

EFIパーティションを/boot/efiへマウント。

root@archiso ~ # mkdir -p /boot/efi
root@archiso ~ # mount -t vfat /dev/sdxx /boot/efi

grubをインストールする。モジュールやらもEFIパーティションに入れたいので--boot-directory=/boot/efi/EFIを指定しておく。

root@archiso ~ # modprobe dm-mod
root@archiso ~ # grub-install --target=x86_64-efi --efi-directory=/boot/efi \
                              --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI \
                              --recheck --debug
root@archiso ~ # mkdir -p /boot/efi/EFI/grub/locale
root@archiso ~ # cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/efi/EFI/grub/locale/en.mo

PC起動時に実行させるため/EFI/BOOT/bootx64.efiにgrubをコピー。

root@archiso ~ # mkdir -p /boot/efi/EFI/BOOT
root@archiso ~ # cp /boot/efi/arch_grub/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi

/boot/efi/EFI/grub/grub.cfgを以下のように設定する。rootで指定するのはgrubが認識しているデバイス(hd0,gpt2)で、knetbsdで指定するのはNetBSDが認識するデバイス名なのでdk1になる。

# Timeout for menu
set default=5

menuentry "NetBSD" {
	insmod efi_gop
	set root=(hd0,gpt2)
	knetbsd /netbsd --root=dk1
	boot
}

なお、"insmod efi_gop"はつけ忘れると以下のようなメッセージがでてそれ以降なにも表示されなくなる。

error: no suitable video mode found.
Booting in blind mode

これでインストール作業は全て完了。仮想マシン設定でEFIを有効にして起動させるとGLUB2のメニューが面が表示される。

f:id:steleto:20121007201655p:image

"NetBSD"を選んでEnter(他に選択肢はないが)すると数秒後に起動。

f:id:steleto:20121007194411p:image

おつかれさまでした。

2009-11-10

既にクリスマス商戦モード 01:41  既にクリスマス商戦モード - steletoの日記 を含むブックマーク  既にクリスマス商戦モード - steletoの日記 のブックマークコメント

気がつけば駅やら隣りのデパートやらがクリスマスっぽい装飾に。11月にイベントないからとはいえ、まだ1ヶ月以上あるだろーに。

そして既婚男性向けへのGoogle先生のアドバイスがなんか話題になってた↓。まぁ自分にゃ関係ないが。

オンナッテコワイ……

2009-06-23

[]玄箱HGでpulseaudio 02:35 玄箱HGでpulseaudio - steletoの日記 を含むブックマーク 玄箱HGでpulseaudio - steletoの日記 のブックマークコメント

玄箱をサウンドサーバに仕立てようとpulseaudioを入れてみたものの、コンパイルは通るが起動させようとするとこんなエラーを吐く。

kurobox# pulseaudio
/usr/pkg/lib/liboil-0.3.so.0: Unsupported relocation type 10 in non-PLT relocations

んで回避する方法をGoogle先生に尋ねてみたり色々探していたんだけど、何のことはないFreeBSDのportsにパッチが上がってた。

というわけでパッチを適用して再ビルドした結果。

kurobox# pulseaudio
W: main.c: This program is not intended to be run as root (unless --system is specified).
W: core.c: failed to allocate shared memory pool. Falling back to a normal memory pool.
E: module-hal-detect.c: Unable to contact DBUS system bus: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
E: module.c: Failed to load  module "module-hal-detect" (argument: ""): initialization failed.
E: main.c: Module load failed.
E: main.c: Failed to initialize daemon.

rootで作業していたのですげぇ勢いで怒られた。けど起動しないのにくらべれば前進している…はず。

FarsseFarsse 2009/08/09 21:37 FreeBSD 箱で PulseAudio に苦戦しています。
同じエラーが出る状態。

なにやら、ConsoleKit と avahi-daemon が有効じゃないとダメなんだとか。
X なんて使わないサーバー機なので、module-hal-detect と module-consolekit をコメントアウト。
load-module module-oss を有効に。
これで誤魔化してます (^^;