* Tips や FAQ だとか [#m28b7049]

----

#contents

----

*環境について [#vdc71162]

**少しでもディスクを節約したい [#k77b3bd5]
-localepurge をインストールしてみては

[[localepurge>pkg:localepurge]] は使っていない他の言語の翻訳カタログや man を削除してくれます。
ただし一度削除してしまうと、元に戻すには
 # dpkg-reconfigure localepurge
で設定し直すか localepurge 自体をアンインストール。
その上で翻訳カタログや man が含まれていたパッケージをすべて再インストールする必要があります。
 # apt-get --reinstall install \
 $(for i in /var/lib/dpkg/info/*.list; do basename $i .list; done | tr "\n" \ )
//ls -l /var/lib/dpkg/info/*.list | awk '{ printf gensub(".*/([^\/]+).list", "\\1 ", "", $8) }' | xargs apt-get -y --reinstall install
//のがいいか?
//誰かもっと効率のいい奴を頼む

必要なものを間違えて削除対象にしてしまわないよう注意しましょう。

-翻訳されたパッケージ説明文のダウンロードを止めてみては

 # echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/acquirelanguagenone

-deborphan で使われていないパッケージを探してみては &aname(deborphan);

[[deborphan>pkg:deborphan]] はシステムの依存関係から孤立したパッケージを表示する事ができます。
 $ deborphan --guess-all
や
 $ deborphan -a
で表示されたパッケージで使っていないものを削除。

-使っていないフォントを削除してみては

 $ dpkg -l | grep -E "fonts-|ttf-|otf-"
使っていないフォントがあれば削除。

-ext2/3/4 の予約ブロックを縮めてみては

ext2/3/4 には各パーティションごとに 5% のディスクが root などのために予約されています。
その領域を 5% から 1% に縮めると 4% 分ディスクに空きが増えます。

予約ブロックを1%にするには
 # tune2fs -m 1 /dev/hda1

-apt でダウンロードしたキャッシュファイルを削除してみては

apt でダウンロードされた一時ファイルが /var/cache/apt/archives ディレクトリに保存されるので、もし今後利用するつもりがないのなら削除するとよいでしょう。
 # aptitude clean 

/etc/apt/apt.conf でインストール済みパッケージを残すオプションを指定しておくと便利かもしれません。
 # echo 'APT::Clean-Installed "false";' > /etc/apt/apt.conf.d/aptcleaninstalledfalse

-apt で Recommends 指定のパッケージを引っ張ってこないようにしてみては

apt 0.7.7 以降では Recommends (推奨) 指定されているパッケージもインストール対象となっています。
Recommends に指定されているパッケージは動作に必須ではないので、使い方によっては必要ないかもしれません。
 # apt-get --no-install-recommends install (パッケージ名)

/etc/apt/apt.conf で、これをデフォルトの振舞いにしてしまうと楽かもしれません。
 # echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf.d/aptinstall-recommendsfalse

-使われていない古い設定ファイルを削除してみては

明示的に purge していないパッケージは設定ファイルなどが残ります。
 $ dpkg -l | grep ^rc
再利用する予定がなければ削除。
 # dpkg --purge (パッケージ名)

微々たる容量ですが、アップグレードを繰り返していると古いファイルが残る場合があります。
 $ dpkg-query -W -f='${Conffiles}\n' | grep obsolete

まれに使われているファイルがリストされることもあるので、''消す前にはよく確認してください。''
**少しでもメモリ使用量を節約したい [#z446a098]
- 不要なサービスを停止させましょう。
余計なサービスが起動しているとそれだけメモリを消費します。
セキュリティの観点からも、起動するサービスは最小限にしましょう。
Debian セキュリティマニュアルの [[3.6 必要最小限のサービスを走らせる>https://www.debian.org/doc/manuals/securing-debian-howto/ch3#s3.6]] が参考になります。

- 仮想コンソールの数を減らすと、数メガバイト節約できるそうです。JF の [[Small Memory mini-HOWTO の仮想コンソール>https://linuxjf.osdn.jp/JFdocs/Small-Memory/vconsole.html]]が参考になります。initがsystemdであればオンデマンドで起動するようになっているため、特になにもする必要はありませんが、例外としてdbusが未インストールの場合、2〜6番の仮想コンソールが強制起動されます。この場合は# systemdctl mask getty-static.serviceで一旦すべて止め、必要な数だけ# systemctl enable getty@tty2.serviceなどとするいいかもしれません。
**少しでも動作を速くしたい [#zfacfc27]

//***IDE HDD ドライバを hdparm で最適化してみては [#w501346a]

//IDE HDD ドライバは [[hdparm>pkg:hdparm]] でパラメータを渡す事でさまざまな機能を有効にできます。
//ディスク情報をチェックして、それを元にパラメータを決めましょう。
// # hdparm -I /dev/hda

//簡単にオプションを挙げておきます。
//|オプション|意味|備考|h
//|-q|標準出力を抑制||
//|-c1|32bit I/O を有効||
//|-c3|32bit I/O を有効 (sync)||
//|-W0|書き込みキャッシュを無効||
//|-d1|DMA を有効||
//|-m|複数セクタの転送を有効|データが破損する危険性アリ|
//|-u1|IRQ マスクを無効|データが破損する危険性アリ|
//|-X68|udma4 モード (Ultra ATA66)|ディスクを壊す危険性アリ|
//|-X69|udma5 モード (Ultra ATA100)|ディスクを壊す危険性アリ|
//|-X70|udma6 モード (Ultra ATA133)|ディスクを壊す危険性アリ|

//ディスクの速度を測るには
// # hdparm -tT /dev/hda
//設定は /etc/hdparm.conf に書きます。
//例えば
// command_line {
//         hdparm -qd1 -qc3 -qm16 -qX69 /dev/hda
// }

//ide disk ドライバではなく libata を使っている場合、現状ではほとんどのオプションは使えません。
//使用できないオプションをつけて実行すると、"XXX failed: Inappropriate ioctl for device" と表示されます。
//libata の場合は自動的にパラメータを調整してくれるので、基本的に hdparm でイジる必要はありませんが。

//XFS では書き込みキャッシュを無効にする必要があるかもしれません。

//:Q: What is the problem with the write cache on journaled filesystems?|http://xfs.org/index.php/XFS_FAQ#Q:_What_is_the_problem_with_the_write_cache_on_journaled_filesystems.3F

//ext3 (Linux 3.1 からはデフォルトが barrier=1 に変更されているので不要) や reiserfs などは barrier=1 でマウントしていれば不要ですが、つけていない場合は恐らく同様です。
//また ext4 ではデフォルトで barrier=1 になっているので気にする必要はないです。

//:freshmeat.net Project details for hdparm|http://freshmeat.net/projects/hdparm/
***ファイルシステムをオプションで速くする [#c3c535f3]

マウントオプションとして追加する事で速くなります。

noatime をつけるとアクセスのみの場合にタイムスタンプを更新しなくなります。
副作用として、ファイルにアクセスした時に、タイムスタンプを更新される事を前提としたアプリケーションでは問題が出る可能性があります。
//そのようなアプリケーションを利用している場合は、代わりに relatime をつけるといいです。
//relatime は atime が [cm]time よりも古い場合にのみタイムスタンプを更新します。

reiserfs は notail をつけると tail packing が無効になり速くなります。
tail packing は 4K にも満たない小さいファイルを、効率良く収納する仕組みです。

ext2/3 は htree を有効にするとファイルサーチが速くなります。
 # tune2fs -O dir_index /dev/hda1
htree のハッシュアルゴリズムは legacy、half_md4、tea がありますが、half_md4 最も速いようです。
 # tune2fs -E hash_alg=half_md4 /dev/hda1
ext4 では htree は逆に遅くなるので注意。
:Re: EXT4 RAID read performance|http://lkml.org/lkml/2009/9/19/280

またディレクトリを最適化 (htree が有効ならインデックスを再生成) すると速くなるかもしれません。
 # e2fsck -D /dev/hda1

//ext3/4 ならジャーナリング方式を変更後、マウントオプションに nobh を追加すると速くなるかもしれません。
//(但し、2.6.36 で nobh オプションは廃止されました。)
// # tune2fs -o journal_data_writeback /dev/hda1
***RAM ベースファイルシステムを利用して速くする [#u579121a]

メモリを豊富に搭載している場合、/tmp などを RAM ベースファイルシステムにする事で速くなります。
オススメは tmpfs で、カーネルがサポートしていれば特別な設定なしにマウントするだけで使えます。
 # mount -t tmpfs tmpfs /hoge
起動する時にマウントさせるには /etc/fstab に
 tmpfs /hoge tmpfs defaults 0 0

起動時に /tmp などに tmpfs でマウントさせる方法は [[Software/Init]] を参照。

注意点は tmpfs 上に置かれているファイル分のメモリは、そのファイルが削除されない限り開放されないということです。
そのため、実メモリとスワップの合計より多くの tmpfs をマウントして、実メモリとスワップの合計以上の容量を消費した場合、最悪システムがクラッシュします。

ramzswap は RAM 上に圧縮したスワップページを置くことで速くします。
利用するには [[compcache-xxx>http://code.google.com/p/compcache/downloads/list]] に含まれている
ramzcontrol というユーティリティが必要です。
また Linux 2.6.33 以前のカーネルでは、カーネルにパッチを当てる必要があります。
詳しくは [[drivers/staging/ramzswap/ramzswap.txt>http://lxr.linux.no/#linux+v2.6.35.14/drivers/staging/ramzswap/ramzswap.txt]] を参照。

Linux 2.6.36 からは ramzswap から zram に名称変更され、圧縮 RAM ディスクとしても利用できるようになりました。
詳しくは
-https://www.kernel.org/doc/Documentation/blockdev/zram.txt
-https://wiki.debian.org/ZRam
***X のモジュールを外して速くする [#xd2f98ea]

X が読み込むモジュールを減らす事で速くなり、メモリ消費も抑えられます。
X はさまざまな機能をモジュールで提供していますが、恐らく使っていない機能も沢山あるかと。
設定は /etc/X11/xorg.conf を直接編集します。
次のような感じ。
 Section "Module"
  Disable "dbe"
 ...
 EndSection
少なくとも extmod だけは読み込んでおいた方がいいです。
フォントキャッシュなどの機能を提供しているので、外すと逆に遅くなります。
また dri などを利用している場合も同じく読み込んでおいた方がいいです。

各モジュールの拡張を無効にするには次のように書きます。
 Section "Module"
 ...
  SubSection "extmod"
   Option "omit XFree86-DGA"
 ...
  EndSubSection
 ...
 EndSection

X11 プロトコル拡張を無効にするには次のように書きます。
 Section "Extensions"
  Option "MIT-SHM" "Disable"
 ...
 EndSection
***フォント周りで速くする [#ieb2f72d]

//フォントキャッシュを増やすと表示が速くなります。
//設定するには ~/.xsession 等に
// xset fc 8192 6144 70
//のような感じで。

アンチエイリアス、ヒンティング、サブピクセルレンダリングなどを切れば表示が速くなり、消費メモリも抑えられます。
ヒンティングとサブピクセルは
 # dpkg-reconfigure fontconfig-config
で設定できます。

アンチエイリアスは /etc/fonts/local.conf や ~/.config/fontconfig/fonts.conf に
 <?xml version="1.0"?>
 <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 <fontconfig>
 
   <match target="font">
     <edit name="antialias">
       <bool>false</bool>
     </edit>
   </match>
 
 </fontconfig>
と書いて下さい。

ただしアンチエイリアスを切ると、ビットマップが埋め込まれていないフォントサイズでは、かなり表示が汚なくなります。
//***/bin/sh シェルスクリプトを速くする [#k24720f1]

//デフォルトでは /bin/sh は /bin/bash へのシンボリックリンクとなっています。
//このリンクを [[dash>pkg:dash]] などの軽量な POSIX シェルに換える事で多少速くなります。
///bin/sh の代替として使えるシェルは
// # dpkg-reconfigure dash
//などとすれば debconf が置き換えるか聞いてくれるはずです。

//ただし、bash/zsh の独自拡張機能を用いているにもかかわらず、/bin/sh で実行するスクリプトがあると、最悪の場合は起動に失敗します。
//これは 
//[[bashism/zshism>https://www.debian.org/doc/manuals/debian-reference/ch-program#s-posix-shell]] 
//というスクリプト側のバグなので、遭遇した場合は [[BTS>https://www.debian.org/Bugs/]] に報告してください。

//5.0/lenny 以降では /bin/sh は元から /bin/dash へのシンボリックリンクです。
***prelink でソフトウェアの起動を速くする [#m814c193]

[[prelink>pkg:prelink]] はバイナリにライブラリのパスを埋め込む事で起動時間を短縮します。
 # prelink -fa
ただし glibc 2.3.1 以上でなければ、ファイルが破損する可能性があるので注意。
ディスクの空容量が少なくても、同じくファイルが破損する可能性がある。
また upgrade などでファイルが入れ変わった場合、再度 prelink を実行する必要がある。

prelink したバイナリを元に戻すには
 # prelink -ua

/etc/default/prelink を
 PRELINKING=yes
にすると、cron で毎日更新される。
/etc/cron.daily/prelink を参照。
***preload でバイナリを先読みさせる [#j71d54f0]

[[preload>pkg:preload]] は予め必要なファイルをメモリ上に読み込んでおくことで、起動時間を短縮します。

***スケジューラで速くする [#bfdbf2ec]
Linux 2.6 系のカーネルなら用途によって I/O スケジューラを変えれば速くなるかもしれません。

 $ cat /sys/block/(デバイス名)/queue/scheduler
で一覧表示でき、[] で囲まれている項が現在使われている I/O スケジューラ。
- noop
//- as (Linux 2.6.17 以前のデフォルト、Linux 2.6.33 で廃止)
- deadline
- cfq (Linux 2.6.18 以降のデフォルト)

//:I/O scheduler を知る|http://mowa-net.jp/~amedama/mt/2006/11/io_scheduler.html

例えば noop に変更するには
 # echo noop > /sys/block/(デバイス名)/queue/scheduler
とする。

起動時に変更するにはパラメータを渡す
 kernel /boot/vmlinuz root=/dev/hda1 elevator=noop

もしくは /etc/sysfs.conf に以下を追加。
 block/(デバイス名)/queue/scheduler = noop

//***ハードウェア識別システムを止めて速くする [#x483ecfc]

//[[discover>pkg:discover]] などのハードウェア識別システムを使用していると、起動時にハードウェアのチェックをするために起動が遅くなります。
//これを止めて、必要なモジュール類を /etc/modules などに直接書く事で、起動時間を短縮できます。

//hal の場合は不要な addons を無効にすると速くなるかもしれません。
//例えばリムーバブルストレージの addons を無効にするには /etc/hal/fdi/policy/hoge.fdi に
// <?xml version="1.0" encoding="UTF-8"?>
//  <deviceinfo version="0.2">
//   <device>
//    <match key="storage.removable" bool="true">
//     <remove key="info.addons" type="strlist">hald-addon-storage</remove>
//    </match>
//  </device>
// </deviceinfo>

//***カーネルにパッチを当てて速くする [#q7dd2b12]
//
//2.4 系カーネルには [[lck パッチ>http://www.plumlocosoft.com/kernel/]]、
//2.6 系カーネルには [[ck パッチ>http://members.optusnet.com.au/ckolivas/kernel/]]
//というデスクトップ向けに高度にカスタマイズするパッチが提供されています。
//ただし安定性を重視する人にはオススメできません。
//***sysvinit の init スクリプトの処理を速くする [#p5c476b6]

//[[sysvinit>pkg:sysvinit]] 2.86.ds1-2 以降では init スクリプトの並列起動がサポートされています。
///etc/default/rcS に
// CONCURRENCY=startpar
//を追記すれば使えます。
//ただし並列起動に対応していない init スクリプトがあると、起動がおかしくなります。

//sysvinit 2.86.ds1-55 以降では、[[insserv>pkg:insserv]] を有効にする必要があります。
//insserv は init スクリプト間の依存関係が書かれている LSB ヘッダを元に起動の順番を最適化します。
//詳しくは https://wiki.debian.org/LSBInitScripts を参照してください。

//sysvinit 2.86.ds1-62 以降では makefile style concurrent booting が追加されました。
///etc/default/rcS に
// CONCURRENCY=makefile
//を追記すれば使えます。
//ただしブートスプラッシュ系がうまく動きません。

//sysvinit 2.88dsf-3 以降では makefile style concurrent booting がデフォルトになりました。
//並列起動を止めさせたいのであれば、/etc/default/rcS に
// CONCURRENCY=none
//を追記してください。
*** init を変更して速くする [#ib38b664]

Debian では
- [[sysvinit>pkg:sysvinit]]
- [[runit>pkg:runit]]
- [[minit>pkg:minit]]
- [[upstart>pkg:upstart]]
- [[systemd>pkg:systemd]]
- [[openrc>pkg:openrc]]

などを使う事ができます。
''起動不能になる危険性があります''が、これらに差し換えると速くなるかもしれません。

Debian GNU/Linux のデフォルト init は、7/wheezy までは sysvinit、8/jessie からは systemd です。
//***GTK+ のアイコン表示を速くする [#e085527c]
//GTK+ のアイコンは予めキャッシュを生成することで、表示を速くできます。
// # gtk-update-icon-cache -f /usr/share/icons/foo

//アイコンファイルが変更されたら、キャッシュも再生成する必要があるので注意。

//アイコン自体が邪魔だというなら、~/.gtkrc-2.0 に以下を追記すれば非表示にできます。
// gtk-menu-images = 0
// gtk-button-images = 0

//***DT_GNU_HASH で速くする [#o3610fc3]
//DT_GNU_HASH を使うと、共有ライブラリのシンボル解決が 50% 程度速くなるそうです。
//
//これを有効にするには、binutils 2.17cvs20070426-1 以降と glibc 2.5-5 以降の環境で、LDFLAGS に --hash-style=both を追加 (gcc-4.1 4.1.2-5 以降では標準で追加される) して、システム全体をリビルドする必要があります。
//
//-[[[PATCH] DT_GNU_HASH: ~ 50% dynamic linking improvement>http://sourceware.org/ml/binutils/2006-06/msg00418.html]]
***ディスクをデフラグして速くする [#c18e801e]
ext4 は [[e2fsprogs>pkg:e2fsprogs]] に含まれている e4defrag コマンドでデフラグできます。
断片化の度合いをチェック
 # e4defrag -c /
デフラグ
 # e4defrag /

XFS では [[xfsdump>pkg:xfsdump]] に含まれている xfs_fsr コマンドでデフラグできます。
断片化の度合いをチェック
 # xfs_db -c frag -r /dev/hda1
デフラグ
 # xfs_fsr /dev/hda1

//ext2 では [[defrag>pkg:defrag]] でできます。(ext3 は不可)
//ファイルシステムをアンマウントしてから
// # defrag /dev/hda2
//あまりにも古いツールなのでもしかしたら最新(??)の ext2 でも機能しない?
//->
//[[BTS:446691]] RM: defrag

参考:
-[[Linuxはデフラグしなくても大丈夫なのですか?>http://www12.atwiki.jp/linux2ch/pages/53.html#id_db79668a]]
-[[デフラグ(Defrag): HDD領域の断片化を解消!>http://www.nilab.info/wiki/Defrag.html]]
***google-perftools で速くする [#ya8cebde]
google-perftools で提供されている Thread-Caching Malloc を利用することで、メモリの割り当てが速くなるかもしれません。
libtcmalloc-minimal0 をインストールして
 $ LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.0 (コマンド)

//***dpkg のデータベースを整理して速くする [#h2d8430e]
//アップグレードを繰り返していたり、非公式パッケージを利用していると、現在は存在しないパッケージの情報が //dpkg のデータベースに残骸として残っていたりします。
//そういった無駄な情報をデータベースから取り除くことで、dpkg の処理が速くなるかもしれません。
//(
//少なくともバージョン 1.15.8.4 時点で確認したところ、
//最新の dpkg では自動的にエントリが削除されるため、
//このオプションは廃止予定です。)
// # dpkg --forget-old-unavail

***スワップを圧縮して速くする [#j8557a4f]
[[zswap>https://www.kernel.org/doc/Documentation/vm/zswap.txt]] を有効にすると、スワップページを圧縮して小さくした上でスワップ領域に書き出すようになります。
***スワップ頻度を減らしてを速くする [#j8557a4f]
頻度を減らすことが高速化に繋がるのは、メインメモリが著しく不足している等の特殊な環境だけです。
通常、スワップは高速化に寄与します。
あまり使われていない(が、開放もできない)キャッシュをスワップ領域に追い出すことで、よく使われるキャッシュをより多く保持できるようになるからです。

/proc/sys/vm/swappiness の数値を減らすと、スワップしづらくなります。
 # echo 10 >/proc/sys/vm/swappiness

[[zswap>https://www.kernel.org/doc/Documentation/vm/zswap.txt]] を有効にすると、スワップページを圧縮して小さくした上でメモリ上に一時的に保持し、ギリギリまでスワップ領域に書き出すのを遅らせるようになります。

有効にするにはカーネルに zswap.enabled=Y zswap.zpool=zsmalloc というパラメータを渡します。
 kernel /boot/vmlinuz root=/dev/hda1 zswap.enabled=Y zswap.zpool=zsmalloc

**boot 時のログを全部見たい [#q033f8ce]
[[bootlogd>pkg:bootlogd]] をインストールして、/etc/default/bootlogd の BOOTLOGD_ENABLE を
 BOOTLOGD_ENABLE=yes
にすると、/var/log/boot に boot 時のログが保存されます。

init が systemd なら
 $ journalctl -b
**boot 時のメッセージをもう少し静かにさせたい [#hb4149d9]
標準の状態ではズラズラと沢山のメッセージが流れますが、後でログを見れば済むので抑制したいという人等もいるかと思います。

-カーネル

パラメータに quiet を指定
 kernel /boot/vmlinuz root=/dev/hda1 quiet

-initscripts

/etc/default/rcS を次のように
 VERBOSE=no

//-hotplug
//
///etc/default/hotplug を次のように
// QUIET=yes

//-pcmcia-cs
//
///etc/default/pcmcia を次のように
// CARDMGR_OPTS="-v"

**boot 時のメッセージをクリアさせない [#p1def23a]
デフォルトではログインプロンプト表示前にスクリーンが一旦クリアされます。これを止めるには
 # systemctl disable getty@tty1.service
 # cp /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
として、コピーしたファイルの中の
 TTYVTDisallocate=yes
という行を
 TTYVTDisallocate=no
に書き替えてください。

**Debian 環境の中に別の Debian 環境を作りたい [#l9bc6759]
debootstrap を使いましょう。
stable 環境の中に unstable 環境を作ったりできます。例えば /debian-sid ディレクトリ下に unstable 環境をつくるには
 # aptitude install debootstrap
 # mkdir /debian-sid
 # debootstrap sid /debian-sid

参考:~
[[CLIマジック:debootstrapによるDebian GNU/Linuxのインストール>https://osdn.jp/magazine/06/09/19/0151206]]

**クロスコンパイル環境を構築したい &aname(cross_compile); [#v9530ebe]

***Embedded Debian 仕様の場合 [#zb39a69f]

参考:~
-[[Embedded Debian>http://www.emdebian.org/]]
-[[Embedded Debian - Debian Wiki>https://wiki.debian.org/Embedded_Debian]]
--[[EmdebianStable>https://wiki.debian.org/EmdebianStable]]
--[[Emdebian Crush>https://wiki.debian.org/EmdebianCrush]]
--[[Emdebian Toolchain>https://wiki.debian.org/EmdebianToolchain]]
---[[Emdebian tools repository>http://www.emdebian.org/debian/]]
>deb http://www.emdebian.org/debian/ unstable main
>deb-src http://www.emdebian.org/debian/ unstable main
<
--[[Emdebian Crush packages>http://www.emdebian.org/crush/]] (formerly, emdebian-tools)
---[[Multistrap>https://wiki.debian.org/Multistrap]]
--[[Emdebian Grip packages>http://www.emdebian.org/grip/]]
--[[Emdebian Baked support>http://www.emdebian.org/baked/]] (experimental)
-[[ARMクロス開発環境構築 - ひまじめ>https://sites.google.com/a/oidon.net/www/linux/arm-cross-tool-chain]]
-[[クロスコンパイル>http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB]]
--[[クロスコンパイル/emdebian-tools>http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%2Femdebian-tools]]
--[[クロスコンパイル/apt-cross>http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%2Fapt-cross]]
-[[Embedded Debian toolchainを使ったcross compile>http://android-dev.g.hatena.ne.jp/takuma104/20081219/1229695594]]
-[[Compiling for Android>http://android-dls.com/wiki/index.php?title=Compiling_for_Android]]

1. 5.0/lennyの場合:~
通常は以下のような感じで導入する。この方法はツールチェーンのクロスコンパイルがほぼ必要なく、20~30分程度で用意できるメリットがある。~
まずは以下のパッケージをインストールする。~
これにより dpkg-cross(dpkg のクロスビルド用ラッパー), apt-cross (apt-get 用ラッパー), 等ヘルパーツールがインストールされる。
># aptitude install emdebian-tools
<
インストール後にターゲットアーキテクチャを聞かれるので選択する。例として armel を選択したとする。

次に、以下のコマンドを実行する。
># emsetup --arch armel
<
(emdebian-tools で設定したアーキテクチャを指定する)~
これでクロスコンパイラ、ターゲット用標準Cライブラリ等が軒並みインストールされるはず。~

2. 6.0/squeeze 以降の場合:

5.0/lennyとは様子が異なっている。~
 # aptitude install emdebian-crush emdebian-grip emdebian-archive-keyring
した後に、以下の apt-line を追加し、
>deb http://www.emdebian.org/debian/ squeeze main
>deb-src http://www.emdebian.org/debian/ squeeze main
<
 # aptitude update
 # aptitude upgrade
 # aptitude install gcc-4.4-arm-linux-gnueabi
もっと良い方法があれば書き変え願います。

その他のライブラリ等が必要な場合は、
>apt-cross --install --arch armel --suite sid --mirror http://ftp.jp.debian.org/debian/ libjpeg62
<
というように通常の apt-get とほぼ同じ感覚でターゲットアーキテクチャ用ライブラリをインストールできる。

バイナリの試験走行は qemu 等利用する。(qemu-arm 等)~
[[https://sites.google.com/a/oidon.net/www/linux/arm-emulation]]~
***Win32 向け? [#o1a5a423]
[[Win32 用のクロスコンパイラ>http://www.mingw.org/]]は以下のパッケージを利用する。エミュレーション環境は Wine で代用するしかない。(もちろんフルエミュレーション環境として, VirtualBox, Qemu, VMware を利用してもよい。) 当然だがライブラリを使用する場合すべて自前でクロスビルドする必要があるのでかなり困難を伴う。実質不可能?
># aptitude install gcc-mingw32 mingw-w64 wine

***その他の情報: [#f7e28f6b]
//勿論、ターゲットが [[uClibc>pkg:uclibc]] や 
//[[newlib>pkg:newlib]]、[[dietlibc>pkg:dietlibc]] などを使うまでもないシステム 
//(非組込系) ならば [[unstable 用の非公式パッケージ>unstable#q0702c3b]]にある speedblue のパッケージを使ってもいいと思います。
//SH は [[Debian GNU/Linux on SuperH>http://www.m17n.org/linux-sh/debian/]] 参照。
//但し、情報はかなり古い。
//http://www.si-linux.co.jp/pub/
-LANDISK 用のパッケージは [[iohack project package pool>https://iohack.osdn.jp/]] を参照。
-[[m32r>http://www.linux-m32r.org/]] は [[debian.linux-m32r.org>http://debian.linux-m32r.org/]] を参照。

**プログラムが使用しているスレッドの調査・変更 &aname(pthread_check); [#q11633f0]
以下のコマンドを実行すると、プログラムが使用しているスレッドライブラリ
([[LinuxThreads>http://en.wikipedia.org/wiki/LinuxThreads]] と
[[Native POSIX Thread Library (NPTL)>http://ja.wikipedia.org/wiki/Native_POSIX_Thread_Library]] )
とそのバージョンが表示される。
>getconf GNU_LIBPTHREAD_VERSION

実行結果(例)
>NPTL 2.3.6

プログラムに動的リンクされるスレッドライブラリを変更するには、環境変数 LD_ASSUME_KERNEL にカーネルバージョンを指定し、プログラムを起動する。

バージョン 2.4 では LinuxThreads, バージョン 2.6 では NPTL が使用される。

実行(例)
>LD_ASSUME_KERNEL=2.4.1 getconf GNU_LIBPTHREAD_VERSION

実行結果(例)
>linuxthreads-0.10

5.0/lenny 以降の (e)glibc では、LinuxThreads はもはや使えなくなっているので、
何らかの理由でリビルドできない古いバイナリは動作しなくなった。

6.0/squeeze での実行(例)
>$ getconf GNU_LIBPTHREAD_VERSION
>NPTL 2.11.2
>$ LD_ASSUME_KERNEL=2.4.1 getconf GNU_LIBPTHREAD_VERSION
>getconf: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

libc-X.Y.Z.so (たとえば、eglibc v2.11.2 ならば /lib/libc-2.11.2.so) を実行するとスレッドライブラリも含めて libc の情報が得られる。
>$ /lib/libc-2.11.2.so
>GNU C Library (Debian EGLIBC 2.11.2-7) stable release version 2.11.2, by Roland McGrath et al.
>Copyright (C) 2009 Free Software Foundation, Inc.
>This is free software; see the source for copying conditions.
>There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
>PARTICULAR PURPOSE.
>Compiled by GNU CC version 4.4.5.
>Compiled on a Linux 2.6.32 system on 2010-10-31.
>Available extensions:
>        crypt add-on version 2.1 by Michael Glad and others
>        GNU Libidn by Simon Josefsson
>        ''Native POSIX Threads Library'' by Ulrich Drepper et al
>        BIND-8.2.3-T5B
>For bug reporting instructions, please see:
><http://www.debian.org/Bugs/>.

参照:
-[[pthreads(7)>https://linuxjm.osdn.jp/html/LDP_man-pages/man7/pthreads.7.html]]
-[[Explaining LD_ASSUME_KERNEL>http://people.redhat.com/drepper/assumekernel.html]]
-[[LD_ASSUME_KERNELを設定すると何が変わるのか>http://gmt-24.net/archives/246]]
-[[NPTLが標準の2.6系kernelでLinuxThreadsを使う>http://orz.makegumi.jp/archives/1258430.html]]
**なんかユーザやグループが沢山あるけど [#n3b62b07]
/usr/share/doc/base-passwd/users-and-groups.txt.gz を読みましょう。

**ユーザ ID の割り当てってどうなってるの? [#h355cbf2]
ポリシーで決められています。

|0-99|Debian システムが使用|
|100-999|一般的なソフトウェアが使用|
|1000-29999|一般ユーザが使用|
|30000-59999|予約済み|
|60000-64999|一時的にユーザ ID を必要とするソフトウェアが使用|
|65000-65533|予約済み|
|65534|nobody が使用|
|65535|使用禁止|

-[[Debian Policy Manual - 9.2.2 UID and GID classes>https://www.debian.org/doc/debian-policy/ch-opersys#s9.2.2]]

**emergency mode って何? [#eff1cede]
あまり知られていませんが、緊急 (emergency) モードというものがあります。
これは init スクリプトを実行せず、直接シェルを起動します。
init=/bin/sh とは違う点は、シェルの起動前に root のパスワードを要求されます。
sysvinit では
 kernel /vmlinuz root=/dev/hda1 -b

systemd では
 kenel /vmlinuz root=/dev/hda1 systemd.unit=emergency.target
**swap が不足 [#r5f60aff]
free コマンドでみると Swap が 0 になっています。dmesg には以下の文が…。
 version 0 swap is no longer supported. Use mkswap -v1 /dev/hda5
:対応|
書いてあるとおり
 # mkswap -v1 /dev/hda5
を実行。その後に
 # swapon -a
で /etc/fstab 中で '''swap''' マークが付いているスワップデバイスをすべて有効にします。

**マシンをサスペンド (スタンバイ)、ハイバネート (休止状態) するには? [#g943afe5]

[[こちら>Software/Suspend]]に移動しました。

**スワップ領域を動的に確保する [#h153ebb6]

通常スワップ領域は固定サイズですが、[[swapspace>pkg:swapspace]]、[[dphys-swapfile>pkg:dphys-swapfile]] などを利用すると、必要な時に必要な分のスワップ領域を確保してくれます。

大量の実メモリを積んでいるような場合に無駄なディスクスペースの消費を抑えられますが、常に仮想メモリを必要とする環境での利用はオススメしません。

-[[Debian Administration :: Creating dynamic swap space>http://www.debian-administration.org/articles/550]]

//**/lib/init/rw って何に使われてるの? [#l6a0db0c]

//- /usr/share/doc/initscripts/README.Debian
//- [[BTS:403863#35]]
**ビープ音がうるさい [#yacb6bae]
 # "blacklist pcspkr" > /etc/modprobe.d/beep.conf
もしくは alsa-utils パッケージをインストールして
 $ alsamixer
で ''PC Speak'' のところで ''m'' を押してミュートに。
もし PC Speak が見当たらなければ、''Beep'' を探してください。

**ix86 CPU 向けバイナリはなんで i486 でビルドされてるの? [#m21291cb]
GCC が i386 と i486 以降とで互換性のないバイナリを吐くようになったから。

当初は i386 で i486 CPU をエミュレーションするパッチを用意し、i386 CPU でも動かせるようしていました。
そして時は流れ、そのパッチは保守されなくなり、セキュリティ問題まで発生。
修正したいという人間もおらず、Debian Installer も i386 CPU を積んだマシンで動かすには事実上オーバースペックに。
結果、今の Debian は i386 CPU を積んだマシンをサポートしなくなりましたとさ。

- https://lists.debian.org/debian-devel/2003/04/msg01895.html
- https://lists.debian.org/debian-release/2004/10/msg00027.html

**「~/デスクトップ」みたいな日本語ディレクトリがキモい [#v0f31185]
既存ディレクトリを英語名にリネームして、ディレクトリのロケールを英語に再設定するスクリプト。
 #! /bin/sh
 type xdg-user-dirs-update || exit 1
 . /etc/xdg/user-dirs.defaults || exit 1
 . ~/.config/user-dirs.dirs || exit 1
 
 cd ~
 rename.ul $XDG_DESKTOP_DIR $DESKTOP $XDG_DESKTOP_DIR
 rename.ul $XDG_DOWNLOAD_DIR $DOWNLOAD $XDG_DOWNLOAD_DIR
 rename.ul $XDG_TEMPLATES_DIR $TEMPLATES $XDG_TEMPLATES_DIR
 rename.ul $XDG_PUBLICSHARE_DIR $PUBLICSHARE $XDG_PUBLICSHARE_DIR
 rename.ul $XDG_DOCUMENTS_DIR $DOCUMENTS $XDG_DOCUMENTS_DIR
 rename.ul $XDG_MUSIC_DIR $MUSIC $XDG_MUSIC_DIR
 rename.ul $XDG_PICTURES_DIR $PICTURES $XDG_PICTURES_DIR
 rename.ul $XDG_VIDEOS_DIR $VIDEOS $XDG_VIDEOS_DIR
 LANG=C xdg-user-dirs-update --force
** パッケージの中にはあるのに何故かインストールされないファイルがある [#e42ac84d]
 # ucf --purge (本来入るはずのファイルのフルパス)
とやってみましょう。

** システムが Aug 21 10:00:00 xxx kernel: [12867.111100] Critical temperature reached (100 C), shutting down. というメッセージを吐いて勝手にシャットダウンする [#xe05c9e4]
マシンが熱すぎです。直ぐに冷やしてください。
-ファンにほこりがたまっている場合、直ぐに温度が上昇します。適宜掃除を。
-ノートパソコンは構造上熱がたまりやすいので極力空調等も利用して冷ましてください。
-[[SpeedStep>http://ja.wikipedia.org/wiki/Intel_SpeedStep_%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8]] や 
[[PowerNow!>http://ja.wikipedia.org/wiki/PowerNow!]], [[Cool'n'Quiet>http://ja.wikipedia.org/wiki/Cool%27n%27Quiet]] 等搭載 CPU 
ならば、[[cpufrequtils>https://tracker.debian.org/pkg/cpufrequtils]], 
[[cpufreqd>https://tracker.debian.org/pkg/cpufreqd]] 等で
周波数を強制的に下げ熱を抑えることが出来るかもしれない。

ちなみにメッセージは
[[drivers/thermal/thermal_sys.c>http://lxr.linux.no/linux/drivers/thermal/thermal_sys.c#L982]] の [[printk>http://net-newbie.com/linux/man/printk.9.html]] 出力です。
** システムのタイムゾーンを変えたい &aname(change_timezone); [#xf235e9e]
 # dpkg-reconfigure -plow tzdata

----

*ネタ [#b89686ed]

**Hello, world! を表示させたい [#u02c7be6]

 # apt-get install hello
 $ hello

**ls の typo でイライラしたい [#pe97798b]

 # apt-get install sl
 $ sl

極悪ヴァージョン
 $ sl-h

**moo? [#h8bc889a]

 $ apt-get moo

 $ apt-build moo

 $ aptitude moo
 -v オプションを繋げてみましょう。(例: $ aptitude -vvv moo)

**仮想リチャード M. ストールマン [#o8b6a2a0]
non-free ツリーに含まれている全パッケージを報告します。

 # apt-get install vrms
 $ vrms

*雑多なこと [#i26924a1]

**[[拡張子>suffixes]] [#pf18058c]
// SideBar に入れたがる奴がいるのでとりあえずこっちからリンクしておく
https://linuxjm.osdn.jp/html/LDP_man-pages/man7/suffixes.7.html 参照

**いしかわむつみさんは女ですか? [#fafccace]
男です。

http://hanzubon.jp/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS