コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2015年5月17日 >>> 2015年5月4日
link もっと後

2015年5月17日

どういう状況なの?これ

Redmineチューニングの実際と限界を読んで。

プロジェクト分割すれば良いだけなのに…、200万チケットを1つのRedmineに入れる必要があるって、恐ろしいです…。

メモ: 技術系の話はFacebookから転記しておくことにした。

編集者:すずき(2015/11/29 04:54)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2015年5月14日

編集者:すずき(2025/05/16 03:04)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2015年5月9日

自作ARMエミュレータ - 今さら気づいたブートローダのバグ

目次: Linux

ずっと気づいていなかった自作ARMエミュレータememuのバグを直しました。

エミュレータは、内部に簡易ブートローダを持っているのですが、この簡易ブートローダが変なパラメータをLinuxカーネルに渡していたため、Linuxのブート時に「Ignoring unrecognised tag 0x00000000」と怒られていました。

変なパラメータを渡してLinuxに怒られる
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.18.11 (katsuhiro@falcon) (gcc version 4.9.1 20140710 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.07 - Linaro GCC 4.9-2014.07) ) #1 Fri Apr 17 03:18:38 JST 2015
[    0.000000] CPU: ARM926EJ-S [41069260] revision 0 (ARMv5TEJ), cr=00003137
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: ARM-Versatile PB
[    0.000000] Ignoring unrecognised tag 0x00000000★★★これ★★★
[    0.000000] Memory policy: Data cache writeback
[    0.000000] On node 0 totalpages: 16384

古き時代からARM LinuxではATAGという仕組み(ATAGの仕様はここにあります)でカーネルのロード位置、InitramFSのイメージの位置、カーネルのコマンドラインなどをブートローダからカーネルに渡しています。

このうち、もうパラメータはない、すなわちパラメータの配列の終端を示すためのATAG_NONEの渡し方が間違っていました。わざわざ仕様書にも0x2を渡すなよ、0x0だぞ(※)と強調して書かれているのに、サイズに0x2を渡していました。マヌケです…。

このバグに気づいたとき、パラメータの終端が無い状態でも動くのか、さすがLinuxなどとアホなことを思っていたのですが、実はRAMの初期値が0だったため、パラメータの配列の終端を突き抜けた後に、0x00が4連続する部分(ATAG_NONEと同じ意味で解釈される)で解析が終了していただけでした。

つまり、今まで動いていたのは偶然!ってことですね。

このバグは現状では問題を引き起こしませんが、今後RAMを初期化しないが、ブートローダは通る、と言う処理を実装すると問題が起きます。例えば、リセット例外によるソフトリセット処理が当てはまりそうです。恐らくRAMの内容に応じてランダムにクラッシュする厄介なバグとして表面化するでしょう。

(※)引用するとThis tag is used to indicate the list end. It is unique in that its size field in the header should be set to 0 (not 2). とのこと。

編集者:すずき(2024/03/05 03:00)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2015年5月8日

GPSは世界一正確な時計、その2

目次: 自宅サーバー

前回(2015年3月9日の日記参照)はGPSモジュールをPCと接続して、情報を取得するところまで試しました。今回はGPSモジュールからの時刻情報を使ってNTPサーバの時刻を合わせたいと思います。

NTPサーバの設定方法

設定はとても簡単で、下記をntp.confに書き加えてntpdを再起動させるだけです。当然ですがgpsdも起動している必要があります。

/etc/ntp.confの設定

server 127.127.28.0
fudge 127.127.28.0 refid GPS

設定の127.127というのは、決まり文句(ネットワーク上のサーバではない、くらいの意味だと思う)で、その後の28.0に意味があります。この28.0は共有メモリを使って時刻を取得するドライバを使ってくださいね、という意味になります(NTPのドキュメント参照)。

なぜここで急に共有メモリが出てくるのか?というと、実はgpsdとntpは共有メモリを介して通信しているからです。

gpsdとntp起動前後の共有メモリ領域数
# ipcs

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

# /etc/init.d/gpsd start
Starting gpsd (via systemctl): gpsd.service.

# ipcs

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x4e545030 3375104    root       600        96         1
0x4e545031 3407873    root       600        96         1
0x4e545032 3440642    root       666        96         1
0x4e545033 3473411    root       666        96         1
0x47505344 3506180    root       666        31616      1

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

# /etc/init.d/ntp start
Starting ntp (via systemctl): ntp.service.

# ipcs

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x4e545030 3375104    root       600        96         2                 ★★1 → 2に増えた ★★
0x4e545031 3407873    root       600        96         1
0x4e545032 3440642    root       666        96         1
0x4e545033 3473411    root       666        96         1
0x47505344 3506180    root       666        31616      1

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

上記の実行結果を見るとgpsdを起動する前と、起動した後で、共有メモリの領域数が増えていることと、ntpを起動した後で、共有メモリへのアタッチ数(nattch)が1から2になっていることがわかると思います。

動作確認

実際NTPサーバがGPSから時刻を取得できているか、確認するときはntpqコマンドを使います。

ntpqコマンドでNTPサーバの状態確認
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 127.127.28.0    .GPS.            0 l    -   64    0    0.000    0.000   0.000
*127.127.1.0     .LOCL.          10 l   17   64    3    0.000    0.000   0.002

本来、127.127.28.0の方に * が付く(* は時刻合わせに使っているという意味)はずなのですが、調子が悪くてGPSで時刻を合わせている状態になりませんでした。

調べてみると、どうもGPSレシーバが壊れたようでxgpsで見ても全く衛星を捕捉していません。6000円くらいしたのに…なんてこった…。

お勧めしないデバイス?

さらにgpsdの動作確認済みハードウェアリスト(ハードウェアリストへのリンク)の中に、私が買ったGlobalsat BU-353-S4も載っており「感度悪いし、衛星の捕捉も遅いし、絶対買わない方が良いぜ(※)」と紹介されていました。

言われてみれば、かなり開けた窓際、しかも数センチ近くまで持っていかないと衛星捕捉せず、設置場所探しに大変苦労していたのですが、まさかここまでボロクソに書かれるほどのハズレ製品だったとは…。

壊れたのと合わさって、二重のショックです。せっかく買ったのに…ううーん。

(※)引用すると、Has poor sensitivity and takes a lot longer to cold-start than the vendor claim 45 of 45 seconds. Gary Miller rates this device "DO NOT EVER BUY ONE!" だそうです。

編集者:すずき(2025/11/02 02:40)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2015年5月17日 >>> 2015年5月4日
link もっと後

管理用メニュー

link 記事を新規作成

<2015>
<<<05>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント5件

  • link 26年7月26日
    すずきさん (08/06 12:27)
    「ダイバート便以外もバスなんですよねえ。私...」
  • link 26年7月26日
    hdkさん (08/06 08:41)
    「あの規模の空港だとダイバート便にまでボー...」
  • link 26年7月14日
    すずきさん (07/31 11:48)
    「補充して乗れるのはまあそうなんですけど、...」
  • link 26年7月14日
    hdkさん (07/22 08:37)
    「冷却水漏れなんて、修理するまでは補充して...」
  • link 26年1月23日
    すずきさん (01/29 09:48)
    「おおー、そんな昔からなんですね。歴史感じ...」

最近の記事20件

  • link 23年6月1日
    すずき (09/03 00:20)
    「[自宅サーバー - まとめリンク] 目次: 自宅サーバーこの日記システム、Wikiの話。カウンターをPerlからPHPに移植日...」
  • link 26年8月24日
    すずき (09/03 00:20)
    「[ADS-Bを送る時刻に注意] 目次: 自宅サーバー以前、Flightradar24のcontributorになる方法(202...」
  • link 21年12月28日
    すずき (09/02 23:13)
    「[ゲーム - まとめリンク] 目次: ゲームNintendo DSを買ったパネルでポンDS最近の朝はパネポンDS聖剣伝説DSチ...」
  • link 26年4月11日
    すずき (09/02 23:12)
    「[デヴィエーション・ゲームでAIと勝負] 目次: ゲームお台場の日本科学未来館に行ってきました。どの展示も面白いんですけど、一...」
  • link 26年6月3日
    すずき (09/02 23:07)
    「[台風6号と大雨] 台風6号の影響でめちゃくちゃ雨が降っていました。Yahooの河川情報を見ると、氾濫寸前の川がチラホラしてお...」
  • link 26年9月1日
    すずき (09/02 01:42)
    「[誕生日のパラドックス] Twitter…じゃなくてXで「QuizKnockの誕生日のパラドックスの計算式が間違...」
  • link 26年8月8日
    すずき (08/10 03:22)
    「[NTPの時刻同期状況] 目次: 自宅サーバーNTPの動作状況を見るときに使うコマンドのメモです。よく使うのはntpq -pで...」
  • link 23年5月15日
    すずき (08/06 01:27)
    「[車 - まとめリンク] 目次: 車三菱 FTO GPX '95の話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替え...」
  • link 26年7月30日
    すずき (08/06 01:27)
    「[ジャガーさんのオイル漏れ] 目次: 車会社の同僚の方(整備士)から、ジャガーの下見たらオイル漏れしてたと教えてもらいました。...」
  • link 26年7月27日
    すずき (08/06 00:49)
    「[ジャガーさんの冷却水漏れ修理が終わった] 目次: 車正確には昨日ですけど、成田からの帰りに修理をお願いした整備工場(カスタム...」
  • link 26年7月26日
    すずき (08/06 00:05)
    「[北海道から東京へ] GWからだいぶずれちゃいましたが北海道に帰省していました。涼しくて最高だった北海道を出て、灼熱の東京へ戻...」
  • link 26年7月22日
    すずき (07/22 03:04)
    「[ジャガーさんの冷却水漏れの修理見積もり] 目次: 車先週、冷却水がほぼなくなってしまい修理工場にレッカーしたジャガーさんです...」
  • link 26年7月14日
    すずき (07/22 02:37)
    「[ジャガーさんの冷却水漏れ] 目次: 車朝、出勤しようと思ってエンジンをかけたところ冷却水不足と表示されました。わぁ、ついに出...」
  • link 26年7月19日
    すずき (07/20 04:04)
    「[ゲームを買ったら遊びましょう4] 目次: ゲーム前回の振り返り(2025年12月22日の日記参照)から半年経ちました。Swi...」
  • link 26年7月13日
    すずき (07/19 23:33)
    「[Flightradar24のcontributorになる方法] 目次: 自宅サーバーADS-Bを受信できる環境があればFli...」
  • link 23年9月11日
    すずき (07/15 12:18)
    「[Windows - まとめリンク] 目次: WindowsWindows XPのブリッジ機能colinuxとWindowsの...」
  • link 25年1月31日
    すずき (07/15 12:18)
    「[Windowsの日本語フォントはみな長生き] 目次: WindowsGNOME48からフォントが変わるニュースを見ていて、フ...」
  • link 26年7月11日
    すずき (07/12 01:26)
    「[Timberborn、トロフィーコンプ] 目次: ゲームTimberbornのトロフィーをコンプリートしました。アーリーアク...」
  • link 24年2月7日
    すずき (07/11 13:05)
    「[複数の音声ファイルのラウドネスを統一したい] 目次: PythonPCやデジタル音楽プレーヤーで音楽を聞いていると、曲によっ...」
  • link 26年6月27日
    すずき (07/08 01:45)
    「[ジャガーさんのバンパー修理] 目次: 車以前(2025年11月21日の日記参照)、ジャガーさんの左前をぶつけてバンパーをガリ...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 2026年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 09/03 00:20