#author("2026-01-09T00:28:34+00:00","","")
#author("2026-02-12T08:31:45+00:00","","")
- [[@IT Linux tips:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/tipsindex.html]]
- [[日経リナックス コマンド逆引き大全:http://homepage2.nifty.com/cs/linux_command/re-command/index.html]]
- [[パクリの Tips 集>UnixTips]]
- [[Linux コマンド(kernel API):http://kazmax.zpp.jp/cmd/p/]]
----
#contents
*** OS 起動時のサービスの開始/停止設定 [#lc9ebf29]
''COLOR(GREEN){現在の起動時の設定を確認する} ''
 [root@rh01 root]# chkconfig --list
 kudzu           0:off   1:off   2:off   3:off   4:off   5:off   6:off
 syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
 netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
 network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
 random          0:off   1:off   2:on    3:on    4:on    5:on    6:off
 rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off
 pcmcia          0:off   1:off   2:off   3:off   4:off   5:off   6:off
 ( 以下 サービスのリストが続く、サービス名を指定することも可能 ) 
''COLOR(GREEN){サービスの起動/停止を指定する}''
 [root@rh01 root]# chkconfig --list sendmail
 sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
 
 [root@rh01 root]# chkconfig --level 2345 sendmail off
 
 [root@rh01 root]# chkconfig --list sendmail
 sendmail        0:off   1:off   2:off   3:off   4:off   5:off   6:off
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** サービス中のポートの検査 [#caea6da0]

''COLOR(GREEN){netstat -ln}''~

例えば http サーバーを起動している場合 80番ポートが LISTEN になっていることを~
確認することができる。 WindowsNT 系では netstat -an というコマンドになる。

 [root@muna-linux root]# netstat -ln
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 0.0.0.0:32768           0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:32769         0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:32771           0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:783           0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:              0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN
 udp        0      0 0.0.0.0:32768           0.0.0.0:*
 udp        0      0 192.168.1.11:137        0.0.0.0:*
 udp        0      0 0.0.0.0:137             0.0.0.0:*
 udp        0      0 192.168.1.11:138        0.0.0.0:*
 udp        0      0 0.0.0.0:138             0.0.0.0:*
 udp        0      0 0.0.0.0:854             0.0.0.0:*
 udp        0      0 0.0.0.0:111             0.0.0.0:*
 udp        0      0 0.0.0.0:631             0.0.0.0:*
 
 Active UNIX domain sockets (only servers)
 Proto RefCnt Flags       Type       State         I-Node Path
 unix  2      [ ACC ]     STREAM     LISTENING     4659   /tmp/.gdm_socket
 unix  2      [ ACC ]     STREAM     LISTENING     4994   /tmp/.fam_socket
 unix  2      [ ACC ]     STREAM     LISTENING     4763   /tmp/ssh-XXJbpVMD/agent.4864
 unix  2      [ ACC ]     STREAM     LISTENING     4762   /tmp/.ki2-unix/_0-ja_JP
 unix  2      [ ACC ]     STREAM     LISTENING     44   /tmp/orbit-root/linc-1300-0-1c094e15ba75
 unix  2      [ ACC ]     STREAM     LISTENING     4911   /tmp/orbit-root/linc-134b-0-1b4d5c157ffa0
 unix  2      [ ACC ]     STREAM     LISTENING     4967   /tmp/orbit-root/linc-134f-0-4a45e296a83
 unix  2      [ ACC ]     STREAM     LISTENING     4976   /tmp/orbit-root/linc-134d-0-12cfb2a0a12f9
 unix  2      [ ACC ]     STREAM     LISTENING     5053   /tmp/orbit-root/linc-1361-0-42262b252d9de
 unix  2      [ ACC ]     STREAM     LISTENING     5074   /tmp/orbit-root/linc-135d-0-42262b256a4ff
 unix  2      [ ACC ]     STREAM     LISTENING     5118   /tmp/orbit-root/linc-135f-0-30e19c0bd208d
 unix  2      [ ACC ]     STREAM     LISTENING     5140   /tmp/orbit-root/linc-1365-0-1ecac24c584
 unix  2      [ ACC ]     STREAM     LISTENING     5288   /tmp/orbit-root/linc-1371-0-567910ef54125
 unix  2      [ ACC ]     STREAM     LISTENING     5319   /tmp/orbit-root/linc-1369-0-4044d2528d7d
 unix  2      [ ACC ]     STREAM     LISTENING     6234    /tmp/orbit-root/linc-13aa-0-3d7824df171fc
 unix  2      [ ACC ]     STREAM     LISTENING     4515   /tmp/.font-unix/fs7100
 unix  2      [ ACC ]     STREAM     LISTENING     4669   /tmp/.X11-unix/X0
 unix  2      [ ACC ]     STREAM     LISTENING     4343   /dev/gpmctl
 unix  2      [ ACC ]     STREAM     LISTENING     4899   /tmp/.ICE-unix/4864
 unix  2      [ ACC ]     STREAM     LISTENING     4353   /tmp/.iroha_unix/IROHA
 unix  2      [ ACC ]     STREAM     LISTENING     4796      /tmp/orbit-root/linc-1349-0-7b1d6a683abe4
 [root@muna-linux root]#

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** Fedra Core に 東風フォント を導入する [#me0e5b9f]

 [ Font の実体 ] ( X Font Server を利用している環境 )
 
 Redhat: /usr/share/fonts/
 Vine  : /usr/X11R6/lib/X11/fonts
 
 [ xfs の設定ファイル ]
 
 /etc/X11/fs/config

Redhat9 のデータ ----------> &ref(rh9_fonts_list.txt);~
Fedra core 1 のデータ -----> &ref(fedra_fonts_list.txt);~
~ 
Redhat 9.0 config --------> &ref(fs_config_rh9.txt);~
Fedra Core 1.0 config ----> &ref(fs_config_fedra.txt);
~
 [ Redhat 9.0 で使われている 東風フォント ]
 
 [root@muna-linux /]# ls -l /usr/share/fonts/ja/TrueType/
 合計 9700
 -rw-r--r--    1 root     root         1548  1月 31  2003 fonts.alias
 -rw-r--r--    1 root     root         8313  5月  5 21:33 fonts.cache-1
 -rw-r--r--    1 root     root         3823  5月  5 21:34 fonts.dir
 -rw-r--r--    1 root     root         3823  5月  5 21:34 fonts.scale
 -rw-r--r--    1 root     root      4043488  1月 31  2003 kochi-gothic.ttf
 -rw-r--r--    1 root     root        17318  1月 31  2003 kochi-gothic.tti
 -rw-r--r--    1 root     root      51972  1月 31  2003 kochi-mincho.ttf
 -rw-r--r--    1 root     root        17318  1月 31  2003 kochi-mincho.tti

Kochi Font Archive -----> &ref(kochi.tgz);~

[東風フォント制作活動終了]~
古川さんによって行われていたフリーのアウトラインフォント「東風フォント」
の制作活動が終了となりました。~
http://www.on.cs.keio.ac.jp/~yasu/jp_fonts.html~
slashdotジャパン「東風フォント製作中止に」: http://slashdot.jp/articles/03/10/22/0811250.shtml?topic=36



 [ Fedra Core では 東風フォント の代替フォントが組み込まれている ]
 
 [root@hmuna ja]# ls -l /usr/share/fonts/ja/TrueType/
 合計 16444
 -rw-r--r--    1 root     root         1548  8月 11  2003 fonts.alias
 -rw-r--r--    1 root     root         8343  6月 29 13:26 fonts.cache-1
 -rw-r--r--    1 root     root         3465  6月 29 13:26 fonts.dir
 -rw-r--r--    1 root     root         3465  6月 29 13:26 fonts.scale
 -rw-r--r--    1 root     root      7770652  8月 11  2003 kochi-gothic-subst.ttf
 -rw-r--r--    1 root     root        17318  8月 11  2003 kochi-gothic-subst.tti
 -rw-r--r--    1 root     root      8967464  8月 11  2003 kochi-mincho-subst.ttf
 -rw-r--r--    1 root     root        17318  8月 11  2003 kochi-mincho-subst.tti

 [ Fedra に 東風フォント をコピーして関連ファイルをリネーム ]
 
 [root@hmuna wk]# ls -l /usr/share/fonts/ja/TrueType/
 合計 32108
 -rw-r--r--    1 root     root         1548  7月  7 21:49 fonts.alias
 -rw-r--r--    1 root     root         1548  8月 11  2003 fonts.alias_fedraorig
 -rw-r--r--    1 root     root         8313  7月  7 21:49 fonts.cache-1
 -rw-r--r--    1 root     root         8343  6月 29 13:26 fonts.cache-1_fedraorig
 -rw-r--r--    1 root     root         3823  7月  7 21:49 fonts.dir
 -rw-r--r--    1 root     root         3465  6月 29 13:26 fonts.dir_fedraorig
 -rw-r--r--    1 root     root         3823  7月  7 21:49 fonts.scale
 -rw-r--r--    1 root     root         3465  6月 29 13:26 fonts.scale_fedraorig
 -rw-r--r--    1 root     root      7770652  8月 11  2003 kochi-gothic-subst.ttf
 -rw-r--r--    1 root     root        17318  8月 11  2003 kochi-gothic-subst.tti
 -rw-r--r--    1 root     root      4043488  7月  7 21:44 kochi-gothic.ttf
 -rw-r--r--    1 root     root        17318  7月  7 21:44 kochi-gothic.tti
 -rw-r--r--    1 root     root      8967464  8月 11  2003 kochi-mincho-subst.ttf
 -rw-r--r--    1 root     root        17318  8月 11  2003 kochi-mincho-subst.tti
 -rw-r--r--    1 root     root      51972  7月  7 21:44 kochi-mincho.ttf
 -rw-r--r--    1 root     root        17318  7月  7 21:44 kochi-mincho.tti

  単純にコピーしただけでは 動作しなかったので強引に逆に -subst にリネーム
 
 [root@hmuna TrueType]# mv kochi-gothic-subst.ttf kochi-gothic-subst.ttf_orig
 [root@hmuna TrueType]# mv kochi-gothic-subst.tti kochi-gothic-subst.tti_orig
 [root@hmuna TrueType]# mv kochi-mincho-subst.ttf kochi-mincho-subst.ttf_orif
 [root@hmuna TrueType]# mv kochi-mincho-subst.tti kochi-mincho-subst.tti_orig
 [root@hmuna TrueType]# mv kochi-gothic.ttf kochi-gothic-subst.ttf
 [root@hmuna TrueType]# mv kochi-gothic.tti kochi-gothic-subst.tti
 [root@hmuna TrueType]# mv kochi-mincho.ttf kochi-mincho-subst.ttf
 [root@hmuna TrueType]# mv kochi-mincho.tti kochi-mincho-subst.tti
 [root@hmuna TrueType]# ls -l 
 合計 32108
 -rw-r--r--    1 root     root         1548  7月  7 21:49 fonts.alias
 -rw-r--r--    1 root     root         1548  8月 11  2003 fonts.alias_fedraorig
 -rw-r--r--    1 root     root         8313  7月  7 21:49 fonts.cache-1
 -rw-r--r--    1 root     root         8343  6月 29 13:26 fonts.cache-1_fedraorig
 -rw-r--r--    1 root     root         3823  7月  7 21:49 fonts.dir
 -rw-r--r--    1 root     root         3465  6月 29 13:26 fonts.dir_fedraorig
 -rw-r--r--    1 root     root         3823  7月  7 21:49 fonts.scale
 -rw-r--r--    1 root     root         3465  6月 29 13:26 fonts.scale_fedraorig
 -rw-r--r--    1 root     root      4043488  7月  7 21:44 kochi-gothic-subst.ttf
 -rw-r--r--    1 root     root      7770652  8月 11  2003 kochi-gothic-subst.ttf_orig
 -rw-r--r--    1 root     root        17318  7月  7 21:44 kochi-gothic-subst.tti
 -rw-r--r--    1 root     root        17318  8月 11  2003 kochi-gothic-subst.tti_orig
 -rw-r--r--    1 root     root      51972  7月  7 21:44 kochi-mincho-subst.ttf
 -rw-r--r--    1 root     root        17318  7月  7 21:44 kochi-mincho-subst.tti
 -rw-r--r--    1 root     root      8967464  8月 11  2003 kochi-mincho-subst.ttf_orig
 -rw-r--r--    1 root     root        17318  8月 11  2003 kochi-mincho-subst.tti_orig

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** [[Fedra project ミラー:http://fedora.redhat.com/download/mirrors.html]] [#n0f0ca0a]
*** [[Fedra core 3 のソースコードのインストール:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/680kernelsfc3.html]] [#f067ccf8]
Fedora Core 2まではyumコマンドでカーネルソースをダウンロードできたのだが、Fedora Core 3ではそれが提供されていない。~
そのため、FTPサイトなどからカーネルソースをダウンロードして、インストールしなければならない。

- まず最初に、unameコマンドでダウンロードすべきバージョンを調べる。

 # uname -r -m
 2.6.9-1.681_FC3smp i686 

- 動作しているカーネルのバージョン(2.6.9-1.681_FC3smp)とPCに搭載されているCPUのタイプ(i686)が分かったので、ミラーサイトからkernel-2.6.9-1.681_FC3.src.rpmをダウンロードする。
- サイトによってディレクトリ構成は異なるが、Fedora/updates/3/SRPMSからダウンロードできるはずだ。
- ダウンロードが終わったら、rootになってrpmコマンドでインストールする。

 # rpm -ihv kernel-2.6.9-1.681_FC3.src.rpm
    1:kernel             ###################################### [100%] 

- そして、Fedora Core 3独自の設定などを適用したソースを作成する。
- その際に、unameで調べたCPUのタイプを--targetオプションで指定する。

 # rpmbuild -bp --target i686 /usr/src/redhat/SPECS/kernel-2.6.spec
 作成中ターゲットプラットフォーム: i686
 (省略) 

- ビルドが終了すると、/usr/src/redhat/BUILD/kernel-2.6.9ディレクトリの下にlinux-2.6.x(ここではlinux-2.6.9)というサブディレクトリが作成されるので、それを/usr/srcに移動する。

 # mv /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 /usr/src
 # ls /usr/src/linux-2.6.9/
 COPYING        Makefile        configs  include  lib      security
 CREDITS        README          crypto   init     mm       sound
 Documentation  REPORTING-BUGS  drivers  ipc      net      usr
 MAINTAINERS    arch            fs       kernel   scripts 
*** Fedra core の yum によるパッケージのアップデート [#cfc4a915]

yum の設定ファイル /etc/yum.conf → &ref(yum.conf);~
yum download サイト一覧 ---------→ http://fedora.redhat.com/download/mirrors.html

+ yum.conf にダウンロード先を設定する ・・・・ yum.conf の設定
 baseurl=http://ftp.kddlabs.co.jp/pub/Linux/distributions/fedora/core/$releasever/$basearch/os/i
+GPG(GNU Privacy Guard )を有効にする  ・・・・ yum.conf の設定
 gpgcheck=1     
+rpm --import /usr/share/rhn/PRM-GPG-KEY-fedora を実行しgpgcheck を有効にする
+yum を自動実行を設定する
 chkconfig yum on
+yum サービスを起動状況を確認する
 service yum status
+yum サービスを起動する ・・・・ /etc/cron.daily/yum.cron の設定により午前4時に自動実行される
 service yum start
+/etc/cron.daily/yum.cron の中の yum 自動起動の記述

 #!/bin/sh
 
 if [ -f /var/lock/subsys/yum ]; then
 	/usr/bin/yum -R 10 -e 0 -d 0 -y update yum
 	/usr/bin/yum -R 120 -e 0 -d 0 -y update
 fi

***YUM コマンドの使い方 [#ba9fa039]
-yum list
>利用可能なソフトウェアの一覧を表示させます。

-yum check-update OR yum list updates
>更新可能なパッケージがあるかどうかの確認ができます。

-yum update
>U新しいパッケージがあれば、全て更新します。

-yum install <packagename>
>指定した特定のパッケージをインストールします。(この場合、依存関係も含まれます。)

-yum search <word>
>パッケージ名をもとにして、その詳細などを検索できます。

-yum info <packagename>
>あるパッケージについての基本情報を表示できます。

All of the above commands can take shell-style wildcards (*,?) instead of a package name. Check the yum man page for more details. 上に挙げたコマンドを実行する際、パッケージ名の代わりに、ワイルドカードなどを使うことも可能です。詳しくは、YUM のマニュアルのページを見てください。

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;

*** Fedra core 3 で yum を使う方法 [#s6d6965b]

-Fedora Core 3のインストール後、初めてyumコマンドを実行すると以下のようなエラー
が表示される。

 # yum install samba 
 
 You have enabled checking of packages via GPG keys. This is a good
 thing. However, you do not have any GPG public keys installed. You need to
 download the keys for packages you wish to install and install them.
 You can do that by running the command:
     rpm --import public.gpg.key
 For more information contact your distribution or package provider.
 [root@localhost ~]# rpm --import public.gpg.key
 エラー: public.gpg.key: import read failed. 

-これは、Fedora Core 3ではパッケージのGPGキーチェックがデフォルトでオンになっているためだ。従って、yumコマンドを実行する前に、以下のコマンドを実行してGPGキーをインストールする必要がある。

 # rpm --import /usr/share/rhn/RPM-GPG-KEY-fedora 

-これでyumコマンドを使用できるようになる。なお、Fedora Core 3のyumは、Fedora Projectのミラーリストからミラーサーバの情報を取得して、アクセスするサーバを自動的に決定する仕組みになっている。そのため、従来のように/etc/yum.confにミラーサーバのURLを書き込む必要はない。

 # yum update
 Setting up Update Process
 Setting up Repo:  base
 repomd.xml           100% |=========================| 1.1 kB    00:00
 Setting up Repo:  updates-released
 repomd.xml           100% |=========================|  951 B    00:00 

*** DNS レコードの検索 [#f16e3331]

''COLOR(GREEN){nslookup ドメイン名}''~

DNS サーバーに配信されている ドメイン名のアドレスを検索することができる~
通常は トップドメイン[ hmuna.com 等 ] を検索するが、ローカルの Name Server~
[ ns1.hmuna.com ]や Web Server [ www.hmuna.com ]などサブドメインを指定~
して検索することもできる。 このアドレスが不一致になっている時は DNS レコード~
の更新が正しく行われていないので解析と対策が必要。 DNS サービスを複数運用して~
いる場合など、片方の更新がエラーになっている可能性がある。 ( DDNS の場合 )

 [root@muna-linux root]# nslookup hmuna.com
 Note:  nslookup is deprecated and may be removed from future releases.
 Consider using the `dig' or `host' programs instead.  Run nslookup with
 the `-sil[ent]' option to prevent this message from appearing.
 Server:         192.168.1.1
 Address:        192.168.1.1#53
                                                                                                                                                                       
 Non-authoritative answer:
 Name:   hmuna.com
 Address: 210.130.99.82
                                                                                                                                                                  
 [root@muna-linux root]# nslookup www.hmuna.com
 Note:  nslookup is deprecated and may be removed from future releases.
 Consider using the `dig' or `host' programs instead.  Run nslookup with
 the `-sil[ent]' option to prevent this message from appearing.
 Server:         192.168.1.1
 Address:        192.168.1.1#53 
                                                                                                                                                                      
 Non-authoritative answer:
 Name:   www.hmuna.com
 Address: 210.130.99.82
                                                                                                                                                                      
 [root@muna-linux root]# nslookup ns1.hmuna.com
 Note:  nslookup is deprecated and may be removed from future releases.
 Consider using the `dig' or `host' programs instead.  Run nslookup with
 the `-sil[ent]' option to prevent this message from appearing.
 Server:         192.168.1.1
 Address:        192.168.1.1#53
                                                                                                                                                                      
 Name:   ns1.hmuna.com
 Address: 210.130.99.82
                                                                                                                                                              
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** パッチの 作成 と 適用 [#y69f6705]
''COLOR(GREEN){diff コマンドを利用してパッチ情報を作成する}''~
ここでは''-u(unified形式)''を利用してゆくが''-c(context形式)''でもかまわない。
 diff -u 変更前ファイル 変更後ファイル > patch.txt
 (ファイルの順番に注意。最新は2の方なので)

''COLOR(GREEN){パッチの当て方}''
 patch < patch.txt
 Hmm...  Looks like a unified diff to me...
 The text leading up to this was:
 --------------------------
 |--- test       Thu May  8 14:57:14 2003
 |+++ test2      Thu May  8 15:02:48 2003
 --------------------------
 Patching file test using Plan A...
 Hunk #1 succeeded at 1.
 done

-ちなみに、パッチを当てると''test.orig''としてtestのバックアップは取られているので安心。

&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
*** パッチの適用(2) [#lc30ae7a]
- パッチは diff を用いることで作成できます。この際 -c オプションを付けるほうが良いようです。 
-- -c オプションを付けると変更部分の前後関係も記録する context 形式の差分が作成されるためより正確にパッチを適用できます。 

- ファイル単位のパッチ作成~
1ファイル毎にパッチを作成するには以下のようにします。 
-- FROM_FILE の所に変更前のファイル名 
-- TO_FILE の所に変更済みのファイル名 
-- PATCH_FILE の所に作成するパッチのファイル名 

 diff -c FROM_FILE TO_FILE > PATCH_FILE

- ディレクトリの中にある複数のファイルに対して一度にパッチを作成するには以下のようにします。 
-- FROM_DIRECTORY の所に変更前のファイルが入っているディレクトリ名
-- TO_DIRECTORY の所に変更済みのファイルが入っているディレクトリ名
-- PATCH_FILE の所に作成するパッチのファイル名 

 diff -c FROM_DIRECTORY TO_DORECTORY > PATCH_FILE
- ディレクトリ以下を全てパッチ作成~
ディレクトリ以下のファイル全てについてパッチを作成する場合は以下のようにします。 

 diff -cr FROM_DIRECTORY TO_DORECTORY > PATCH_FILE

-- -r オプションを加えるとディレクトリ以下を階層的に検索してくれます。 

- ディレクトリ単位のパッチ(追加/削除ファイルも記録)
-- 上記の方法では一方にしか存在しない、つまり追加または削除されたファイルは記録されません。
-- 追加または削除されたファイルも記録するためには以下のようにします。 

 diff -crN FROM_DIRECTORY TO_DORECTORY > PATCH_FILE
-- -N オプションは、ディレクトリを比較する際、片方のディレクトリにのみファイルが存在していたらもう片方のディレクトリには同名の空っぽのファイルがあるように動作します。 

- パッチの適用には patch コマンドを利用する

-- ファイル単位のパッチ
-- 適用したいファイルの存在するディレクトリ上で以下のようにします。変更前のファイルはファイル名末尾に .org が付加されて保存されます。 

 patch < PATCH_FILE
-- ディレクトリ単位のパッチ~
パッチを作成したときと相対的に同じディレクトリにて以下のようにします。 

 patch -p0 -d . < PATCH_FILE
-- -p オプションは差分作成時の相対ディレクトリを有効にします (-p がないと全てのファイルがカレントディレクトリにあると仮定されます)。 
-- -p の後ろの 0 は差分ファイルに記録されている相対ディレクトリを全て有効にするという意味です。 
-- 1、2 と増えていくと、記録された相対ディレクトリが頭から1つづつ削られます (例 : -p1 だと usr/local/src → local/src、-p2 だと usr/local/src → src)。 

-- -d オプションはパッチを適用するディレクトリを指定します (カレントディレクトリに適用するなら無くても良いです)。 

- ディレクトリ単位のパッチ(追加/削除ファイルの再現)
上記の方法では、ファイルの追加はされても削除が行われません。ファイルの削除も再現するには以下のようにします。 

 patch -p -d . -E < PATCH_FILE
-- -E オプションはパッチ適用後、空のファイルは削除するようにします

*** Redhat 8/9 系で telnet を有効にするには [#z731e883]
/etc/indetd.d/telnet を編集する
 service telnet
 {
 flags = REUSE
 socket_type = stream
 wait = no
 user = root
 server = /usr/sbin/in.telnetd
 log_on_failure += USERID
 disable = no  ・・・ 初期値としては、"yes"に
 }             成っているが"no"に変える
&heart; [[KnoweldgeBase トップページに戻る>Knowledge_Bank]] &heart;
***文字コードセットの変更(UTF8->EUC) [#b276e6d3]
Fedoraでは日本語でセットアップしても文字コードセットがUTF8になってしまうため、TeraTermPro等のターミナルでは、文字化けしちゃいます。~
そこで、文字コードセットをUTF8からEUCに変更する方法です。
-LANGの設定
--「/etc/sysconfig/i18n」を編集し「LANG」および「SUPPORTED」の値を変更する。~
変更前~
 LANG="ja_JP.UTF-8"
 SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja"
 SYSFONT="latarcyrheb-sun16"
変更後~
 #LANG="ja_JP.UTF-8"
 #SUPPORTED="en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja"
 LANG="ja_JP.eucJP"
 SUPPORTED="ja_JP.eucJP:ja_JP.ujis:ja_JP:ja"
 SYSFONT="latarcyrheb-sun16"

//*** 複数ファイルの文字コードの一括変換 [#uabcd0d5]
// [root@spirit ja_JP_EUC]# for fname in *.hlp; do
// > nkf -e $fname > $fname.hlp_E;
// > done

*** 複数ファイルの拡張子の一括変換 [#j8f6249f]
- http://homepage2.nifty.com/cs/linux_command/re-command/file_20.html
- 検討中 (以下はだめだった)
 [root@spirit ja_JP_EUC]# for fname in *.hlp.hlp; do
 > mv $fname ${fname%.hlp_E}.hlp;
 > done

*** [[漢字コードの自動変換:http://masaoo.blogspot.com/2009/02/find-nkf-xargs.html]] [#y2f40771]

 root@mythen:# find . *.txt -exec nkf -w --overwrite {} \;

***  CD-ROM から isoイメージを作成する方法 [#g08dbbaf]
- [[mkisofs コマンドを使う方法:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/500cdrom2iso.html]]

 [root@spirit ~]# mkisofs -r -l -J -o /home/munakata/sh2a-linux.iso /media/cdrecorder/
 INFO:   EUC-JP character encoding detected by locale settings.
         Assuming EUC-JP encoded filenames on source filesystem,
         use -input-charset to override.
 Using FS000 for  ./rr_moved/fs (fs)
 Using H000 for  ./rr_moved/h (h)
  (snip)
 1.77% done, estimate finish Tue Dec  5 08:04:56 2006
 3.55% done, estimate finish Tue Dec  5 08:06:48 2006
  (snip)
 97.60% done, estimate finish Tue Dec  5 08:05:43 2006
 99.37% done, estimate finish Tue Dec  5 08:05:40 2006
 Total translation table size: 0
 Total rockridge attributes bytes: 1801799
 Total directory bytes: 4501504
 Path table size(bytes): 20078
 Max brk space used f34000
 281779 extents written (550 MB)

*** iso イメージを CD-ROM に焼かずにマウントする方法 [#a3235bb5]
 mount -t iso9660 -o loop (iso image) /mnt/cdrom

*** kernel source code の導入 [#r579bb0c]
- SRPM ファイルを CD-ROM イメージから規定の場所にコピーする
 cp /mnt/cdrom/FC...iso /usr/src/redhat/SRPM
 cd /usr/src/redhat
 rpmbuild --rebuild SRPMS/kernel-util-***

- git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 

*** Linuxでrootパスワードを忘れた際の復旧方法 [#jbaf915e]
-シングルユーザモードで起動する
--LILOの場合
---電源立ち上げ時に"boot:"と表示されたら"single"シングルユーザモードのオプションを付けて起動します。(他にも"emergency"、"1"、
"-s"など使用している環境によって違います)
---電源立ち上げ時にグラフィカルな画面が表示される場合は[Ctrl]+[X]を押すと(使用している環境によって違います)"boot:"と表示されてテキストモードになりますのでシングルユーザモードのオプションを付けて起動します。
 boot:linux single
--GRUBの場合
---起動するカーネルを選択して[E]を押すと起動コマンドの編集画面になるので、「Kernel 〜」から始まる起動コマンド行を選択して再び[E]
を押します。起動コマンド行の編集でコマンドの末尾に"single"を入力してから[Enter]を押して、編集画面から"single"のオプションが追加されている事を確認し、[B]で起動を行います。
---※シングルユーザモードでのログイン後にドライブが書込み禁止で読み込まれている場合は読み書き許可でリマウントして下さい。
 #mount -o remount,rw /
-ログイン後のパスワード変更
--起動後、すぐにrootユーザとしてログインするので"passwd"コマンドを使ってパスワードを変更します。
 #passwd
 現在使用しているパスワードが要求されるので初期パスワードを入力します。
 Old Password:
 新しく設定するパスワードを入力します。
 New Password:
 確認のために再度、新しく設定するパスワードを入力します。
 Retype New Password:
 設定が完了したらログアウトします。
 #exit
--パスワードの変更を確認する
 "root"を入力します。
 login: root
 次に新しく変更したパスワードを入力してログインできることを確認します。
 password:
 問題無くログイン出来る事を確認したらログアウトします。
 #exit

*** vsftpd で root での ftp を許可する方法 [#u438727a]
-Fedora Core 3 付属の vsftpd で root での ftp を許可する方法。
-初期状態では ftp サーバへ root での接続が出来ない。
-『 root 』と入れただけで【 Permission denined. 】と蹴られてしまう。 
 # ftp 192.168.11.253
 Connected to 192.168.11.253 (192.168.11.253).
 220 (vsFTPd 2.0.1)
 Name (192.168.11.253:zem): root
 530 Permission denied.
 Login failed.
 
- /etc/vsftpd.ftpusers と /etc/vsftpd.user_list 両方から root の記述を削除する。
-(設定ファイル /etc/vsftpd/vsftpd.conf で userlist_enable=YES となっているため、2つのファイルの操作が必要) 
 # ftp 192.168.11.253
 Connected to 192.168.11.253 (192.168.11.253).
 220 (vsFTPd 2.0.1)
 Name (192.168.11.253:zem): root
 331 Please specify the password.
 Password:
 230 Login successful.
-その後は ftp で root ログイン可能。

*** 圧縮・解凍コマンド一覧 [#abf55018]
-解凍(伸展)
LEFT:
|拡張子| 圧縮形式| コマンド |h
|.tar.gz または .tgz|gzip |$ tar zxvf 解凍対象|
|.tar.bz2 または .tbz | bzip2 |$ tar jxvf 解凍対象|
|.gz |gzip| $ gunzip 解凍対象 または $ gzip -d 解凍対象|
|.bz2| bzip2| $ bunzip2 解凍対象 または $ bzip2 -d 解凍対象|
|.lha または .lzh | LZH |$ lha x 解凍対象|
|.zip |zip |$ unzip 解凍対象|
|.jar|JAR|$ jar xf 解凍対象|

-圧縮
|拡張子|圧縮形式|コマンド|h
|.tar.gz |gzip| $ tar zcvf ファイル名.tar.gz 圧縮対象|
|.tar.bz2| bzip2| $ tar jcvf ファイル名.tar.bz2 圧縮対象|
|.gz |gzip |$ gzip 圧縮対象|
|.bz2 |bzip2 |$ bzip2 圧縮対象|
|.lha |LZH| $ lha c ファイル名.lzh 圧縮対象|
|.zip |zip |$ zip ファイル名.zip 圧縮対象|
|.jar |JAR| $ jar cf ファイル名.jar 圧縮対象|

-tar
--tar にはファイルをまとめる機能しかついていません 
--複数のファイルをまとめただけのファイルをアーカイブファイル(tarfile)といいます 
--大抵の場合 gzip フィルタを通して tar.gz のように gz 形式で圧縮します 
--拡張子 tar.gz は tbz と省略されることもあります 
--より圧縮率の高い bzip2 フィルタを通したものが tar.bz2 です 
--拡張子 tar.bz2 は tbz と省略されることもあります 
--複数のファイルをまとめて圧縮することができます 
--ディレクトリをまとめて圧縮することができます 
--主なオプション
|-c (create) | 新しいアーカイブを作成する|
|-x (extract) | アーカイブからファイルを抽出する|
|-v (verbose) | 処理したファイルの一覧を詳しく出力する|
|-z (gzip,unzip) | アーカイブを gzip にファルタする|
|-j (bzip2) | アーカイブを bzip2 にフィルタする|

-gzip, gunzip
--gzip で圧縮されるファイルの拡張子は ,.tgz です 
--gunzip という解凍用コマンドも持っています 
--gnuzip が認識する拡張子は .gz,-gz,.z,-z,_z,.Z,.tgz,.taz です 
--tar のフィルタとしても使われます 
--解凍は gunzip で行います 
--主なオプション
|-d (decompress) | 解凍(伸展)する|
|-c (stdout) | 出力を標準出力に書き出し,元ファイルは変更しない|
|-l (list) | 圧縮された個々のファイルについての情報を列挙|
|-r (recursive) | ディレクトリ構造を再帰的にたどる|

-bzip2, bunzip2
--gzip より高い圧縮率を持っています 
--解凍時に認識される拡張子は .bz2, .bz, .tbz2, .tbz です 
--tar のフィルタとしても使われます 
--解凍は bunzip2 で行います 
--主なオプション
|-d (decompress) | 解凍(伸展)する|
|-c (stdout) | 出力を標準出力に書き出し,元ファイルは変更しない|
|-z (compress) | 起動された名前にかかわらず圧縮|

-zip, unzip
--zip は Windows でよく使われる圧縮形式です 
--解凍は unzip で行います 
--複数のファイルをまとめて圧縮することができます 

-lha
--lha は LZH の圧縮形式を扱います 
--LZH は Windows でよく使われる圧縮形式です 
--LZH は日本人によって作られた圧縮形式です 
--複数のファイルをまとめて圧縮することができます 
--主なオプション
|x | アーカイブファイルからファイルを抽出する|
|c | アーカイブファイルの作成する|

-JAR
--J2SE SDKに含まれているコマンドです 
--Javaプログラムの実行に必要なクラスファイルやデータファイルを一つにまとめるために使われます 
--主なオプション
LEFT:|c | アーカイブを新規作成する |
|t | アーカイブの内容を一覧表示する |
|x | 指定の(またはすべての)ファイルをアーカイブから抽出する |
|u | 既存アーカイブを更新する |
|v | 標準出力に詳細な出力を生成する |
|f | アーカイブファイル名を指定する |
|m | 指定のマニフェストファイルからマニフェスト情報を取り込む |
|O | 格納のみ.ZIP 圧縮を使用しない |
|M | エントリのマニフェストファイルを作成しない|
|i | 指定の jar ファイルのインデックス情報を生成する|
|C | 指定のディレクトリに変更し,以下のファイルを取り込 |

*** 実行中のシステムの情報を表示する(uname -r -m)[#oe89f96f]
- uname  は起動されたマシンと OS に関する情報を出力する。オプションが指定されなかった場合には、~
uname は -s オプションが指定されたかのように動作する。複数のオプションが指定されたり、 -a オプションが~
指定された場合には、選択された情報は ‘snrvm’ の順に空白で区切られて出力される。 オプションは以下のとおり。
+ -m, --machine : マシン (ハードウェア) のタイプを表示する。
+ -n, --nodename : マシンのネットワークノードのホスト名を表示する。
+ -r, --release : OS のリリースを表示する。
+ -s, --sysname : OS の名称を表示する。
+ -v  :  OS のバージョンを表示する。
+ -a, --all : 以上の情報すべてを表示する。
+ --help : 標準出力に使用方法のメッセージを出力して正常終了する。
+ --version : 標準出力にバージョン情報を出力して正常終了する。
*** Linux システム稼働状況の取得 [#o3ff5fcf]
Linux には、複数のリソースチェックコマンドが用意されています。
- top コマンド
-- オプションを指定する事により、他のアプリケーションやファイルに送れます。

 [root@power root]# top -b -n 1
 top - 10:14:01 up 17 days, 21:34,  4 users,  load average: 0.00, 0.00, 0.00
 Tasks: 146 total,   1 running, 145 sleeping,   0 stopped,   0 zombie
 Cpu(s):  6.3% us,  0.6% sy,  0.0% ni, 89.9% id,  3.1% wa,  0.1% hi,  0.0% si
 Mem:   1034748k total,   979436k used,    55312k free,   136484k buffers
 Swap:  2048248k total,       48k used,  2048200k free,   428548k cached 
 
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
     1 root      16   0  3368  460  392 S  0.0  0.0   0:02.28 init
     2 root      34  19     0    0    0 S  0.0  0.0   0:04.99 ksoftirqd/0
     3 root       5 -10     0    0    0 S  0.0  0.0   0:05.35 events/0
     4 root       6 -10     0    0    0 S  0.0  0.0   0:00.01 khelper
 
 

--"load average" の項目が、1プロセッサあたりの瞬間の処理要求数の平均で、左から過去1分間、過去5分間、過去15分間を表し、1を超えた場合は、処理遅延が発生している事を示します。
--"CPU status" の項目が CPU 使用率を表し、左からユーザモード、システムモード、nice されたプロセス、I/O 待ち、アイドルを示します。アイドルが大きい程、余裕がある事になります。
--"Mem" の項目は、メモリ容量を表し、合計、使用中、空き、共有、バッファに用い 
られているメモリです。
--"Swap" の項目は、Swap の利用状況を表し、合計、使用中、空きです。
上記 top コマンドをファイルに取るか、popen で取得し、必要な部分を抜き出せば可能だと思います。その他に下記のコマンドもあります。同じくファイルに取るか、popen で取得出来ます。
- w, uptime コマンド

 [root@power root]# w
  10:12:42 up 17 days, 21:33,  4 users,  load average: 0.00, 0.00, 0.00
 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
 root     :0       -                22Oct05 ?xdm?  16:52   0.39s /usr/bin/gnome-session
 root     pts/2    114.8.221.202.ts 10:11    0.00s  0.00s  0.00s w
 root     pts/1    114.8.221.202.ts 09:46   23:39   0.00s  0.00s -bash

 [root@power root]# uptime
  10:13:20 up 17 days, 21:33,  4 users,  load average: 0.00, 0.00, 0.00

-- 左から現在時間、システム稼働時間、ログインユーザ数、過去1分間、過去5分間、過去15分間での平均負荷を表します。
-- Load average 情報は、top, w, uptime コマンド共、/proc/loadavg を使用して
いるみたいです。

-vmstat コマンド

 [root@power root]# vmstat
 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
  r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
  0  0     48  54672 136364 428548    0    0     8    17    5     9  6  1 90  3

--    procs
---    r: 実行待ちプロセス数
---    b: 割り込み不可のスリープ状態にあるプロセス数
---    w: スワップアウトされている実行可能なプロセス数
--    memory
---    swpd: 仮想メモリの容量 (kbytes)
---    buff: バッファに使用されているメモリの容量 (kbytes)
---    cache: キャッシュに使用されているメモリの容量 (kbytes)
--    swap
---    si: スワップインされているメモリの容量 (kbytes/s)
---    so: スワップアウトされているメモリの容量 (kbytes/s)
--    io
---    bi: ブロックデバイスに送られてブロック (blocks/s)
---    bo: ブロックデバイスから受け取ったブロック (blocks/s)
--    system
---    in: 1秒当たりの割り込み回数
---    cs: 1秒当たりのコンテキストスイッチ回数
--    cpu
---    us: ユーザモードの CPU 使用率
---    sy: システムモードの CPU 使用率
---    id: アイドル時の CPU 使用率

--sysstat パッケージを使用して CPU 使用状況レポートの作成を検証中です。この機能が使用できれば、crond に登録して、10分単位に CPU 使用状況を取れます。( sadc, sar コマンド)

*** パッケージがどの RPM に含まれているかを確認する方法 [#p4ec7f03]
- 特定のプログラムのインストールポイントの確認
 [root@power root]# which iptables
 /sbin/iptables
- このプログラム(ここでは iptables )をインストールした RPM の確認
 [root@power root]# rpm -qif /sbin/iptables
 Name        : iptables                     Relocations: /usr
 Version     : 1.2.9                             Vendor: Red Hat, Inc.
 Release     : 2.3.1                         Build Date: 2004年03月05日 15時00分28秒
 Install Date: 2004年12月24日 16時55分59秒      Build Host: porky.devel.redhat.com
 Group       : システム環境/ベース   
 Source RPM: iptables-1.2.9-2.3.1.src.rpm
 Size        : 383050                           
 License     : GPL
 Signature   : DSA/SHA1, 2004年05月07日 08時10分10秒, Key ID b44269d04f2a6fd2
 Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
 URL         : http://www.netfilter.org/
 Summary     : Linux のパケットフィルタリング機能を管理するためのツール
 Description : Iptables ユーティリティは、ネットワークパケットフィルタリング
               コードをLinux カーネルの中で制御します。ファイアウォールや IP 
               マスカレードをセットアップする必要がある場合には、このパッケージ
               をインストールする必要があります。
- この RPM で同時にインストールされるファイル名の確認
 [root@power root]# rpm -ql iptables-1.2.9-2.3.1
 /etc/rc.d/init.d/iptables
 /etc/sysconfig/iptables-config
 /lib/iptables
 /lib/iptables/libipt_CLASSIFY.so
 /lib/iptables/libipt_CONNMARK.so
 /lib/iptables/libipt_DNAT.so
 /lib/iptables/libipt_DSCP.so
 /lib/iptables/libipt_ECN.so
 /lib/iptables/libipt_LOG.so
 /lib/iptables/libipt_MARK.so
 /lib/iptables/libipt_MASQUERADE.so
 /lib/iptables/libipt_MIRROR.so
 /lib/iptables/libipt_NETMAP.so
*** プログラムにシンボル情報が付いているかを確認する方法 [#ze86e619]
- シンボル情報の有無の確認
 [root@power root]# file /sbin/iptables
 /sbin/iptables: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
 for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
-- "stripped" がシンボル情報が削除されている.... という意味
- strip コマンドによるシンボル情報削除
 [root@power root]# strip (プログラム名) 
 [root@power root]# strip -s (ライブラリー名)
- 特定のディレクトリ下のプログラムのシンボル情報の有無を検索し、シンボルがあるものに自動的に strip 処理をするためのスクリプト ( 日経Linux 2005-12 )
 #!/bin/sh
 
 cd (ターゲットディレクトリ)
 
 for i in `find . -type f`
 do
  A=`file $q | grep archive`
  if [[ ! -z $A ]] ; then
   strip 0S $1
  fi
   B=`file $1 | grep "not stripped"`
  if [[ ! -z $B ]] ; then
   C=`echo $1 | grep lib`
   if [[ ! -z $C ]] ; then
    strip -S $1
   else
    strip $1
   fi
  fi
 done
*** プログラムが使用しているシステムコールの表示 ( strace コマンド) [#fc9f8eaa]
- straceコマンドを利用することで、任意のプロセスが使用しているシステム・コールをトラッキング可能
 [root@power root]# strace /sbin/iptables
 execve("/sbin/iptables", ["/sbin/iptables"], [/* 27 vars */]) = 0
 uname({sys="Linux", node="power.hmuna.com", ...}) = 0
 brk(0)                                  = 0x9ea8000
 open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
 open("/etc/ld.so.cache", O_RDONLY)      = 3
 fstat64(3, {st_mode=S_IFREG|0644, st_size=85651, ...}) = 0
 old_mmap(NULL, 85651, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f98000
 close(3)                                = 0
 open("/lib/libdl.so.2", O_RDONLY)       = 3
 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300HK\000"..., 512) = 512
 fstat64(3, {st_mode=S_IFREG|0755, st_size=16708, ...}) = 0
 old_mmap(0x4b3000, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4b3000
 old_mmap(0x4b5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1000) = 0x4b5000
 close(3)                                = 0
 open("/lib/tls/libc.so.6", O_RDONLY)    = 3
 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\233"..., 512) = 512
 fstat64(3, {st_mode=S_IFREG|0755, st_size=1459344, ...}) = 0
 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f97000
 old_mmap(0x395000, 1162188, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x395000
 old_mmap(0x4ab000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x116000) = 0x4ab000
 old_mmap(0x4af000, 7116, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4af000
 close(3)                                = 0
 mprotect(0x4b5000, 4096, PROT_READ)     = 0
 mprotect(0x4ab000, 4096, PROT_READ)     = 0
 mprotect(0x391000, 4096, PROT_READ)     = 0
 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f97860, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
 munmap(0xb7f98000, 85651)               = 0
 write(2, "iptables v1.2.9: ", 17iptables v1.2.9: )       = 17
 write(2, "no command specified", 20no command specified)    = 20
 write(2, "\n", 1 )                       = 1
 write(2, "Try `iptables -h\' or \'iptables -"..., 61Try `iptables -h' or 'iptables --help' for more information.) = 61
 exit_group(2)                           = ?
 [root@power root]#
*** プロセスの親子関係を表示するコマンド [#b1dfbb19]
- pstrace コマンド
 [root@power root]# pstree
 init─┬─acpid
      ├─2*[antivir]
      ├─atd
      ├─avgated
      ├─avgatefwd───2*[avgatefwd]
      ├─bonobo-activati
      ├─cannaserver
      ├─clock-applet
      ├─courierlogger───authdaemond.pla───5*[authdaemond.pla]
      ├─4*[courierlogger]
      ├─3*[couriertcpd]
      ├─couriertcpd───couriertls───imapd
      ├─cpuspeed
      ├─crond
      ├─cupsd
      ├─dbus-daemon-1
      ├─dhcpd
      ├─eggcups
      ├─events/0─┬─aio/0
      │          ├─kacpid
      │          ├─kblockd/0
      │          ├─khelper
      │          └─2*[pdflush]
      ├─firefox───run-mozilla.sh───firefox-bin
      ├─gconfd-2
*** Fedra core デバイスドライバー(モジュール)の追加 [#g3c15c6f]
- ドライバーのインストールされる場所
 /lib/modules/(2.6.xx-kernel 名)/kernel/drivers
- ドライバー(モジュール)のインストール
 modprobe (パス)ドライバー名[xxx.ko]
上記のデフォルトパスの場合にはパス名の指定は不要
- システム起動時のドライバーのローディング設定 → /etc/modules.conf
*** Linux (UNIX) 環境変数の有功範囲 [#v6fe7aad]
- 質問
 > init.sh実行後にexportを確認したのですが
 > LD_LIBRARY_PATH=/usr/local/pkg/directfb/libが追加されていないようです。
 >
 > コンソールでexport LD_LIBRARY_PATH=/usr/local/pkg/directfb/libを
 > 入力すると正しく追加され、df_andiも実行できるようになりました。
 >
 > シェル内ではexportできないのでしょうか?
 > 恐れ入りますが、ご対応の程お願い致します。
- 回答
-- UNIX の一般論ですが、シェル・スクリプトで export しても、親プロセスには反映されません。
-- &color(red){export コマンドは、実行したシェルの環境変数リストに変数を追加するシェルのビルトイン・コマンドです。};
-- 環境変数は、実行中のプロセスに動的に確保される領域で、プロエス毎に領域を持ちます。
-- 一度、プロセスが起動した後は、直接、実行中のプロセスの環境変数領域を更新しない限り変化しません。
-- bash などの場合、これが export コマンドであり、C 言語の標準ライブラリでは、putenv(3) を使います。~
- また、シェルのプロンプトでシェル・スクリプトを実行しると、実際には、別プロセスで実行されていることにご注意下さい。
-- つまり、親プロセスの環境変数領域には影響しないため、シェル・スクリプトで export を実行しても意味がないわけです。
-- &color(red){ ただし、};
 % . init.sh ~
&color(red){のような実行の仕方をした場合は、別プロセスを実行せずに処理されるため、export の結果も反映されます。};
*** ロードされたモジュールを確認する [#w9a7eae4]
- lsmod を利用する

 [root@spirit ~]# lsmod
 Module                  Size  Used by
 i915                   81221  2
 parport_pc             24577  1
 lp                     12077  0
 parport                37129  2 parport_pc,lp
 i2c_dev                11329  0
 i2c_core               22081  1 i2c_dev
 sunrpc                162725  1
 iptable_filter          2753  1
 ip_tables              16705  3 ipt_REJECT,ipt_state,iptable_filter
 button                  6481  0
*** /dev/ttyS0 (シリアルポート) にアクセスできない [#h78c317e]
- デバイスファイルのパーミッションを変更する

 [root@spirit ~]# ls -al /dev/ttyS0
 crw-rw----  1 root uucp 4, 64  5月 20 23:04 /dev/ttyS0
 
 [root@spirit ~]# chmod o+rw /dev/ttyS0
 
 [root@spirit ~]# ls -al /dev/ttyS0
 crw-rw-rw-  1 root uucp 4, 64  5月 20 23:04 /dev/ttyS0

*** minicom の起動 [#m404e92e]
 [root@spirit ~]# minicom -o -s
- -o = 初期化をしない
- -s = セットアップメニューを表示
-- セットアップ情報をファイルに指定しておくと次回からは....

*** minicom の終了 [#tc079ce1]
- CTRL + Z、 A でメニューが出る
- Q で終了 (リセットして終了)

*** minicom が文字化けする ( Cent OS ) [#zf152b70]
- Cent OS の文字コードセットは UTF-8
- minicom は sjis か EUC を想定している
- Cent OS にバンドルされた minicom を起動するには

 [root@spirit ~]# LANG=ja_JP.eucJP xterm &
-- 起動した xterm 上で minicom  を実行する
-- sjis の場合には jp_JP.ujisJP で起動する

 [root@spirit ~]# minicom -o (セットアップファイル名)
*** sudo が使えるようにする [#w56c1338]
- visudo コマンドで /etc/sudoers を編集する

 [root@spirit ~]# cat /etc/sudoers
  ( snip )   
 # User privilege specification
 root    ALL=(ALL) ALL
 munakata ALL=(ALL) NOPASSWD: ALL  <---- 追加する

- sudoグループがに関する記述があると個別ユーザーやグループにNOPASSWDを追加してもパスワードを要求される。その場合以下のように%sudo行をコ
メントアウトする。
-- &color(red){#};%sudo ALL=(ALL:ALL) ALL

*** sudo で複数コマンドを実行する [#z9a4335d]
- sudo sh -c 'whoami; whoami'

*** rsync によるサーバー間のディレクトリ同期 [#jb497b27]
- コマンド説明 → http://www.infoscience.co.jp/technical/rsync/rsync.html
-- --exculde でバックアップしないファイルを指定することができる
-- --exclude には一つのパターンしか指定できない。 一回のコマンドで複数の --exclude を指定可能
-- パスワード無しで実行させるために "-i" で証明書を指定する場合は ''受信側の秘密鍵'' を指定する

- 同一サーバー内のファイルバックアップ ( cp -ur よりずっと高速 )
-- &color(blue){rsync -avz };&color(red){(ソースファイル) (バックアップファイル)};

 [root@spirit cron.daily]# cat /etc/cron.daily/mail_daily_image_copy
 #!/bin/sh
 
 # stop mail delivery serice
 service postfix stop
 
 # backup each Maildir updates files
 rsync -avz /home/munakata/Maildir    /opt/backup/mail/munakata_image > /dev/null
 rsync -avz /home/public_mail/Maildir /opt/backup/mail/public_image   > /dev/null
 rsync -avz /home/stored_mail/Maildir /opt/backup/mail/stored_image   > /dev/nuli
 
 # restart mail delivery serice
 service postfix start
- Server_A -> Server_B
&color(red){この項、未完成。 検証後に作文すること};

 #!/bin/sh
 # sync server:/home/httpd/html to client:/work/html
 while [ -n "$(echo $1 | grep '^-')" ]; do
     options="$options $1"
     shift
 done
 rsync -auv $options --exclude "*~" server:/home/httpd/html/ /work/html/
- Server_A -> Server_B ( 完全同期=コピー元で削除されたファイルをバックアップからも消す)

 [root@backup script]# cat ./peewee_sync.sh
 #!/bin/sh
 # sync spirit.hmuna.com master peewee data to "backup.hmuna.com" remote copy
 while [ -n "$(echo $1 | grep '^-')" ]; do
      optins="$options $1"
      shift
 done
 rsync -avx --delete -e ssh $options --exclude "*~" spirit.hmuna.com:/home/peewee/ /opt/backup/peewee_backup/

- 参考 URL
-- [[rsyncでお手軽バックアップ:http://linux.paken.org/index.php?rsync%A4%C7%A4%AA%BC%EA%B7%DA%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7]]
-- [[パソコンおやじ:http://www.aconus.com/~oyaji/backup/rsync.htm]]
-- [[Backup by rsync (+ssh):http://www.double-h.com/linux/tipsmemo/others/general01.html]]
-- [[rsync ssh で鍵交換によりパスワードを入力しないで実行させる方法:http://www.palmyra.ne.jp/technical_memo/ssh.html]]

*** Linux 環境変数の設定 [#k19f2417]
- ユーザーがログインすると まず /etc/profile を読み込み、次に (ROOT)/.bash_profileを読み込む
- (ROOT)/.bash_profileが存在しない場合は、(ROOT)/.bash_loginを読み込む
- ログイン時に一度設定すればいいものは.bash_profileに指定する
- (ROOT)/.bashrc は、プロセスとしてbashを起動される毎に読み込まれます。
-- ログイン後でも $bash などとして新しくbashを起動するたびに読み込まれる
-- ゆえに bash を起動するたびに設定したい環境変数は .bashrc に指定する
-- どちらも同じ場合には .bash_profile には source .bashrc だけ書いておいてもよい
- &color(red){これらの環境変数設定ファイルを編集しただけでは変更は反映されない};
-- &color(red){いったんログアウトしてもう1度ログインし直す};
-- &color(red){sourceコマンドを使って環境変数を再初期化する};

 [root@spirit ~]# source /etc/profile    <--- 環境変数の即時有効化

-- /etc/profiled の下の起動シェルスクリプトを呼び出すこともできる

 [root@spirit ~]# ls -l /etc/profile.d/
 合計 96
 -rwxr-xr-x  1 root root  720  8月 23  2005 colorls.csh
 -rwxr-xr-x  1 root root  713  8月 23  2005 colorls.sh
 -rwxr-xr-x  1 root root  192  2月 22  2005 glib2.csh
 -rwxr-xr-x  1 root root  190  2月 22  2005 glib2.sh
 -rwxr-xr-x  1 root root   58  3月  8 23:13 gnome-ssh-askpass.csh
 -rwxr-xr-x  1 root root   70  3月  8 23:13 gnome-ssh-askpass.sh
 -rwxr-xr-x  1 root root  218  3月  9 06:49 krb5.csh
 -rwxr-xr-x  1 root root  210  3月  9 06:49 krb5.sh
 -rwxr-xr-x  1 root root 2182  3月  9 12:35 lang.csh
 -rwxr-xr-x  1 root root 2470  3月  9 12:35 lang.sh
 -rwxr-xr-x  1 root root  122  2月 22  2005 less.csh
 -rwxr-xr-x  1 root root  108  2月 22  2005 less.sh
 -rwxr-xr-x  1 root root   13  8月 22  2005 vim.csh
 -rwxr-xr-x  1 root root  181  8月 22  2005 vim.sh
 -rwxr-xr-x  1 root root  170  2月 22  2005 which-2.sh
- 設定されている環境変数の確認
-- echo → 任意の環境変数を指定して設定内容を確認する

 [root@spirit ~]# echo $PATH
 /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin: ・・・・・・・
-- export → 現在設定されている環境変数の一覧

 [root@spirit ~]# export
 declare -x ANT_HOME="/usr/local/ant-1.6.5"
 declare -x CATALINA_BASE="/usr/java/tomcat-5.5.17"
 declare -x CATALINA_HOME="/usr/java/tomcat-5.5.17"

*** LD_LIBRARY_PATHが無効になってしまう問題 ( [[fedora JP 掲示板 より:http://bbs.fedora.jp/read.php?FID=9&TID=3391]] ) [#rf5e6fdc]
- .bash_profile内でLD_LIBRARY_PATHの設定をして、XでログインするとLD_LIBRARY_PATHが無効(定義無し)になってしまいます。
それ以外の.bash_profile内で定義した変数は通常通り有効になっているのですが。
- [ctrl+alt+F1]で端末を切り替えて、テキストログインすると問題なくきちんと定義されています。LD_LIBRARY_PATHはsetuidされているプログラムでは無視されるということらしいので、gnome-terminalを調べましたがsetuidはされていません。gnome-terminalの設定で「ログインシェルとして実行」を有効にすれば、LD_LIBRARY_PATHも有効になるのですが、「fedora 3」では設定を変えずに有効だったので気になります。
- 結局、こう言う事でしょうか?
 man bashから
 bash が対話的なログインシェルとして起動されるか、 --login オプション付きの非対話的シェルとして
 起動されると、 /etc/profile ファイルが存在すれば、 bash はまずここからコマンドを読み込んで実行します。
 このファイルを読んだ後、 bash は ~/.bash_profile, ~/.bash_login, ~/.profile をこの順番で探します 。 
 bashは 、 この中で最初に見つかり、かつ読み込みが可能であるファイルからコマンドを読み込んで実行します。
 
 noprofile オプションを使ってシェルを起動すれば、この動作を行わないようにできます。
 
 ログインシェルが終了するときには、 ~/.bash_logout ファイルがあれば、 bash はこれを読み込んで実行します。
 
 ログインシェルでない対話的シェルとして起動されると、 ~/.bashrc ファイルがあれば、 bash はここから
 コマンドを読み込み、実行します。この動作は --norc オプションで行わないようにできます。 
 --rcfile file オプションを使うと、コマンドの読み込みと実行を ~/.bashrc からでなく file から行わせることができます。
 
 これと、
 http://lists.debian.or.jp/debian-users/200209/msg00356.html

*** プログラムの実行結果を画面(stdout)に出力しない [#z9089ef7]
LEFT:
|意 味 |Bシェル| Cシェル |BAシェル|h
|標準出力をfに書く |>f| >f| >f|
|標準入力をfから読み込む| <f| <f| <f|
|標準出力をfに追加する | >>f| >>f| >>f |
|標準エラー出力をfに書く| 2>f| 無し| 2>f|
|標準エラー出力をfに追加する| 2>>f| 無し |2>>f|
|標準エラー出力を標準出力と同じところに書く |2>&1| 無し| 2>&1|
|COLOR(red):標準出力,標準エラー出力,ともにfに書く|COLOR(red):>f 2>&1 |COLOR(red):>&f| COLOR(red):>f 2>&1|
|標準出力,標準エラー出力,ともにfに追加する| >>f 2>&1 |>>&f| >>f 2>&1|
|標準出力を強制的にfに書く | 無し |>!f| 無し |
|標準出力を強制的にfに追加する| 無し| >>!f| 無し|
- &color(blue){プログラムの実行結果を出さない  ⇒ コマンド > /dev/null};
- &color(blue){エラーも画面に出さない ⇒ コマンド > /dev/null 2>&1};

*** [[正規表現(Regular Expressions)>RegularExpressions]] [#xee7ccaa]
- &ref(正規表現 _ Evernote Web.pdf);
- &ref(正規表現辞典_改定版新版.pdf);

*** [[sed(Streaming Editor)>STreamingEditor]] [#xee7ccaa]

*** Log Watch の設定 [#d4e81be1]
- Log Watch で Amavisd New のログを出さない設定 /etc/log.d/scripts/services/(サービス名)

 [root@spirit ~]# chmod 000 /etc/log.d/scripts/services/amavis
 
 [root@spirit ~]# ls -l /etc/log.d/scripts/services/ 
 合計 772
 -rwxr-xr-x  1 root root  1519  8月 23  2005 afpd
 ----------  1 root root  7326  8月 23  2005 amavis
 -rwxr-xr-x  1 root root   592  8月 23  2005 arpwatch
 -rwxr-xr-x  1 root root  3487  8月 23  2005 automount
- Log Watch のレポート内容 (permission deny と表示された) 

 --------------------- amavis Begin ------------------------ 
 sh: /etc/log.d/scripts/services/amavis: Permission denied
 ---------------------- amavis End -------------------------

*** 24時間以上古いファイルの削除 ⇒ find の -mtime オプションを利用 [#t6bfa4e5]
- &color(blue){''-mtime +n の書式 = (n+1) * 24h''};
+ mtime +0 : 今から24時間以上前のファイル
+ mtime +1 : 今から48時間以上前のファイル
+ mtime +2 : 今から72時間以上前のファイル
- 現在のディレクトリ下で 24時間以上前のファイルを削除する

 [root@spirit Maildir]# find /home/headline/Maildir/cur -maxdepth 1 -type f -mtime +0 |/usr/bin/xargs /bin/rm -f
- 参考 URL = http://sonic64.com/2005-07-06.html

*** サブディレクトリ以下を再帰的に削除  [#r94d4a67]
 find ./ -name *.tex~ -exec rm {} \;
- rmi とすれば確認付きになる

*** FC5 が selinux の影響で起動できない (HP ProLiant )[#sf5f16d2]
- http://www.linuxquestions.org/questions/showthread.php?t=430015
 checking filesystems 
 FSCK.ext3: permission denied while trying to open /dev/ida!c0d0p2
 
 You must have r/w access to the filesystem or be root ( FAILED) 
 An error occured during the file system check 
 Dropping you to a shell; the system will reboot 
 When you leave the shell 
 Warning ---SELinux is active 
 Disabling security, enforcement for system recovery 
 Run 'setenforce 1' to reenable 
 Give root password for maintenance 
 ( or type control-D to continue ) 
- インストールCDでマシンをブートして :linux rescue でレスキューモードでOSを起動
- インストールボリュームが /mnt/systeminage (?) にマウントされる
- その位置から /mnt/systemimage/etc/selinux/config の中身を編集 (下に降りてしまうと read_only になって編集できない)
 selinux=disabled
- exit でシェルを抜けて、自動リブートで正常に起動する

*** 文字コードセットを Ja_JP.eucJP に変更後に man ページが表示できない問題の対策 (CentOS 4.3 Final) [#t5af7562]
- インストールされている man  関連ファイルを yum で一度削除する

 [root@spirit]#yum remove man
 [root@spirit]#yum remove man-pages.noarch
 [root@spirit]#yum remove man-pages-ja.noarch
 
- lv (less の代わりの日本語対応ファイルビューワー) をインストール
-- [[lv ホームページ:http://www.ff.iij4u.or.jp/~nrt/lv/#eucjapan]] から &ref(lv451.tar.gz,center,ソースファイル ); をダウンロード
-- lv のビルド、インストール

 [root@spirit Downloads]# cd lv451
 [root@spirit lv451]# cd build/
 [root@spirit build]# ../src/configure
 [root@spirit build]# make
 [root@spirit build]# make install
 
 [root@spirit build]# lv -V
 # lv v.4.51 (Jan.16th,2004)
 # All rights reserved. Copyright (C) 1996-2004 by NARITA Tomio
 # ABSOLUTELY NO WARRANTY; for details type `lv -h'
 
 [root@spirit build]# /usr/bin/makewhatis
 [root@spirit build]# which lv
 /usr/local/bin/lv

- 日本語 man ページデータをインストールする
-- [[マニュアルアーカイブ [man-pages-ja-20060915] のダウンロード:http://www.linux.or.jp/JM/download.html]]
-- &ref(man-pages-ja-20060915.tar.gz);
-- man-pages-jp のビルドとインストール

 [root@spirit man-pages-ja-20060915]# make config
 perl -w script/configure.perl
 [INSTALLATION INFORMATION]
 (just Return if you accept default)
    Install directory   [/usr/share/man/ja_JP.eucJP] ?: ja   <---- ja に変更する
  
 ( snip )
 [root@spirit man-pages-ja-20060915]# make
 [root@spirit man-pages-ja-20060915]# make install

- man コマンドのインストール と ビルド 
-- kernel.org  のサイト (http://www.kernel.org/pub/linux/utils/man/ ) から &ref(man-1.5p.tar.bz2,center,ソース ); を落とす

 [root@spirit man-1.5p]# ./configure +lang ja
 [root@spirit man-1.5p]# make
 [root@spirit man-1.5p]# make install

-- &ref(man.conf,center,usr/lib/man.conf); の中の PAGER を lv に変更する

 #PAGER          /usr/bin/less -is
 PAGER           /usr/local/bin/lv
*** [[checkstack.pl で関数のスタック消費量を調べる:http://0xcc.net/blog/archives/000115.html]] [#ka5cef28]
Linux カーネルのソースコードに付属する checkstack.pl を使うと、C/C++ のプログラムの関数のスタック消費量を調べることができます。checkstack.pl は objdump -d のディスアセンブルの出力からスタックポインタの操作をパターンマッチしてスタックの消費量を計算しています。 


- 入手方法
-- checkstack.pl は Linux カーネルのソースコードに付属しています。Debian GNU/Linux sarege なら次のようにコマンドラインから実行して取得できます。ソースツリーに含まれる scripts/checkstack.pl が目的のものです。 

 % apt-get source kernel-source-2.6.8
- [ 使い方 ]
-checkstack.pl の使い方は簡単です。スタックサイズを調べたいバイナリに対して次のように実行します。 

 % objdump -d foo.o | perl checkstack.pl
foo.o の部分は ELFバイナリなら実行ファイルでも共有ライブラリでも大丈夫です。ただし、関数名を表示するにはバイナリにシンボル情報が入っている必要があります。strip したバイナリに対しては関数のアドレスのみが表示されるため、あまりうれしくありません。 

- [ 実験 ]
- それでは次のプログラムに対して checkstack.pl を適用してみます。グローバル変数 void *p を使って妙なことをしているのはコンパイラの最適化によって func() が空になってしまうのを防ぐためです。 

 #include <signal.h>
 void *p;
 void func() {
     struct sigaction x;
     p = &x;
 }
 % gcc -c test.c
 % objdump -d test.o| checkstack.pl
 0x0003 func:                        144

結果は、144バイトになりました。sizeof(struct sigaction) の結果は 140バイトですが、x86_32 用のコードでは gcc はデフォルトでスタックポインタを 16バイトでアライメントして操作しています。サイズによる最適化オプション -Os をつけると 140 になります。 

 % gcc -c -Os test.c
 % objdump -d test.o| checkstack.pl
 0x0003 func:                        140
 #include <signal.h>
 void *p, *q;
 void func() {
     struct sigaction x;
     struct sigaction y;
     p = &x;
     q = &y;
 }

プログラムを次のように変更して struct sigaction の変数を 2つに増やすと、それぞれ -Os なしは 288バイト、 -Os つきは 280 バイトになります。 

 #include <signal.h>
 void *p, *q;
 void func() {
     struct sigaction x;
     struct sigaction y;
     p = &x;
     q = &y;
 }

ところで、手元の checkstack.pl はスタックの消費量が 100 バイト以下の関数は無視するようにコードが書かれていました。100バイト以下の関数も表示する場合は以下のラインをコメントアウトします。 

                 next if ($size < 100);
- [ 仕組み ]
- checkstack.pl の仕組みは簡単です。単純に objdump -d の出力に対し次のようなパターンを探して、esp に対して引き算 (sub)、足し算 (add) する値を表示しているだけです。パターンはいくつかの CPU のアーキテクチャ用に用意されています。 

 /^.*[as][du][db]    \$(0x$x{1,8}),\%esp$/
- [ まとめ ]
-checkstack.pl を使って関数のスタック消費量を調べる方法を紹介しました。通常、スタックの消費量を気にすることはそれほどありませんが、大量のスレッドを生成するプログラムを書く上では、スタックの消費量は重要な要素になります。特に x86_32 ではアドレス空間が限られているため、大量のスレッドを生成するには個々のスレッドのスタックサイズを小さく抑える必要があります。組み込み用途などでメモリの使用量をできるだけ減らしたいときにも checkstack.pl は役に立つのではないかと思います。
*** kernel mmap の over_committe の抑止 [#w8167608]
- 物理メモリ以上にメモリ取得しようとした際にエラーメッセージを表示する

 echo 2 >/prco/sys/vm/overcommit_memory
- malloc の上限を oer_commit_ratio で設定する

 echo 2 >/prco/sys/vm/overcommit_memory
 echo 100 > /proc/sys/vm/overcommit_ratio
 アプリケーションの実行
- [[説明ページ(web 引用)>Linux_Overcommit]]
*** 組み込み機器で malloc を使う時の留意点 [#sc0aa41a]
- malloc / free の繰り返しによるメモリーのフラグメント化に対してどう考えたら良いか ?
-- malloc(3) を使うと、Linux が管理する通常 4KB のページ単位でヒープ領域からメモリが確保されます。
-- malloc(3)/free(3) を繰り返すと断片化は当然起きますが、Linux (UNIX 含め)の特性上 4KB 単位以上の断片化は起こりません。 (ページ単位でメモリを確保するメリット)
-- malloc(3) で確保するメモリの特性上、ポインタが破壊されてしまう配置変換 (defrag) はありません。

- malloc()に対する free()漏れでメモリ不足になることに対して kernel(glibc) 側で何か対策があるか ?
-- これについては kernel 側では何もしません。ユーザプログラムの責任です。

- malloc() したときに確保したいサイズが空いてないときにどうなるか?
-- メモリーが足りなくなると malloc() が内部で sbrk(2) を呼び出してヒープ領域を増やします。
-- 実メモリーが不足してヒープが増やせない場合はメモリが足りないと言うエラーになります。
-- malloc() を使わない時には、ユーザが sbrk(2) を使ってヒープサイズを増やすことも出来ます 

- glibcの関数などで malloc()と同じようにもしくは内部でmalloc()を使って動的にメモリを確保している処理があるか ?
-- glibc 内部で malloc(3) を使うものは strdup(3) など沢山あります。
-- 基本的に構造体を内部で確保するもの(stdio 系など)は危険だと考えて良いと思います。

- 小まめに取得・開放を繰り返すメモリ管理を長時間安定動作させたい場合にはどうすれば良いか
-- メモリを固定サイズで予め確保 (メモリ・プール) して、そこから空いているメモリを渡すようにするべきです。
-- カーネルの実装でよく使われている slab みたいな実装が参考になります。(ITRON でも似たようなものが実装されている)

- メモリーサイズに制約があり SWAP を持っていない組み込み機器で malloc を使う際の設計方針
-- 基本的に malloc(3)/free(3) を小まめに繰り返すものには使用しない。最初に確保したら、最後まで使い続けるようにする。
-- どうしても小まめに確保と開放を繰り返すメモリが必要であれば、別途メモリプールを作る。作ったメモリプールからメモリを取得したり、戻したりする。
-- この実装では、静的に取ったメモリか malloc(3) で確保したメモリを使用する。そうでないと他の malloc(3) を使うコードとのヒープ管理の整合性のが取れなくなる可能性がある。
-- いわゆるオーバーコミットの挙動により malloc(3) や sbrk(2) に成功しても、後々のメモリを使う段階になって落ちるときがあるので、swap を積まないのであれば echo 2 > /proc/sys/vm/overcommit_memory を指定してオーバーコミットをさせないようにしておくべきである

- overcommit_memory = 2 の時のアプリケーションスタックサイズ 
-- デフォルトで、pthread_create(3) を使用して、スレッドを生成すると、スレッド用のスタックを malloc(3) で確保します。
-- この時確保されるスタック・サイズは、仮想メモリ空間上で、連続メモリを確保しなければいけないため、pthread_create(3) で生成時の属性としてスタック・サイズを指定しない限り、使用するか使用しないかに関わらず、システム上で規定される上限Linux で規定されるデフォルトの上限 8MB になります。
-- 通常のデフォルトのLinux の動作では、実際にメモリを使用するまで本当のメモリ確保はシステム的に行われないために、問題なく動作しますが、&color(red){overcommit_memory を 2 に設定すると、本当に 8MB のメモリを確保しに行こうとしてしまう}; のでリソースを圧迫します
+ メモリープールの実装例
*** Linux デバッグに必要は機能 (京都マイクロコンピュータ 資料より) [#n7afc3d5]
http://www.kmckk.co.jp/linux/linux1.html

&ref(kmcc_001.JPG);~
&ref(kmcc_002.JPG);

*** IO scheduler の種類と特徴  (kernel2.6.10 から適用されている)[#fcbd81fa]

- noop スケジューラ
-- noop スケジューラはその名の通り、何もしないスケジューラです。
-- 入出力インタフェースや周辺機器自身がハードウェアレベルで高度な処理を行う場合 (インテリジェントな RAID コントローラなど) や、非常に性能が良い場合 (半導体ディスクなど) は、カーネルはむしろ何もしないほうがシステム負荷が軽減できるという場合があります。 noop スケジューラはこのような場合に指定します。
-- 普通のパソコンでは noop スケジューラを指定すると性能が落ちるでしょう。
- anticipatory スケジューラ
-- anticipatory スケジューラ (as) はデバイスが伝統的なハードディスクと同様の構造を持つと仮定して、将来の入出力要求を予測したスケジューリングを行います。
-- 入出力要求を待っていくつか貯めてから処理を行う性質があるので、レイテンシは悪くなるかもしれません。このスケジューラは比較的低速のハードディスクを用いた環境で良い性能を示すでしょう。

- deadline スケジューラ
-- データベース向きのスケジューラです。スループットよりもレイテンシに最適化したスケジューリングを行います。
-- デスクトップなどの普通のファイルシステムで使用してもあまり良い性能は得られないでしょう。

- &color(red){cfq スケジューラ};
-- Completely Fair Queuing (CFQ) スケジューラは Fedora Core のカーネルパッケージのデフォルトです。 CFQ はプロセス毎の I/O キューを持ち、極力公平なスケジューリングをしようとします。
-- これにより従来の Linux カーネルで見られた「バックグラウンドで I/O 処理が行われているとレスポンスが悪くなる」という現象を抑えています。 
-- CFQ はどのような環境でも比較的良好な性能を示すオールラウンドプレイヤー的な性質を持っているようです。

*** ls でディレクトリ名だけを表示したい [#dc4074bb]
- ls -d */(一覧表示)
 [KGB2] munakata:~/git/linux-firmware$ ls -d */
 3com/       amphion/    av7110/      contrib/   emi26/          ixp4xx/       meson/      ositech/   rtl_bt/   ti-connectivity/  xe/
 acenic/     ar3k/       bnx2/        cpia2/     emi62/          kaweth/       microchip/  powervr/   rtl_nic/  ti-keystone/      yam/
 adaptec/    arm/        bnx2x/       cxgb3/     ene-ub6250/     keyspan/      moxa/       qca/       rtlwifi/  ti/               yamaha/
 advansys/   ath10k/     brcm/        cxgb4/     ess/            keyspan_pda/  mrvl/       qcom/      rtw88/    tigon/

- ls -F | grep / (リスト表示)
 [KGB2] munakata:~/git/linux-firmware$ ls -F | grep /
 3com/
 acenic/
 adaptec/
 advansys/
 airoha/
 amd/


*** ファイルの連結 [#i0cd5277]
- cat コマンドでファイルを連結することができる
- 並べた順番に連結される (ワイルドカードを使った場合の順序に注意)

 [root@spirit ~]# cat maillog.4 maillog.3 maillog.2 maillog.1 maillog > maillog_combined
*** cron はいつ実行されるか  ----> /etc/crontab  で実行時間が決められている [#iaf5b141]

 [root@spirit ~]# cat /etc/crontab
 SHELL=/bin/bash
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 MAILTO=root
 HOME=/ 
 
 # run-parts
 01 * * * * root run-parts /etc/cron.hourly
 02 4 * * * root run-parts /etc/cron.daily
 22 4 * * 0 root run-parts /etc/cron.weekly
 42 4 1 * * root run-parts /etc/cron.monthly

*** HEWで sh4-linux-gccのデバッグ情報が読めるか [#t7505ddd]

日立SK 開発事業部 第2開発本部 第3設計部(s2開32)菅野紀顕 の回答 

- HEWに手を加えていない状態で、gccのデバッグ情報を読むことはできません。
- 読み込むためにはgcc用のオブジェクトリーダーが必要になります。

- KPITで配布している"GNUSH v0603 Windows Tool Chain "(sh-elf-gcc)をインストールすると、HEWのコンポーネントにKPITのgccオブジェクトリーダーが追加されます。
- これで、sh-linux-gccのオブジェクトが読めるようになります。
- この件をKPITに問い合わせたところ、sh-linux-gccオブジェクトをHEWに読み込ませて使うのは動作保証外とのことです。
- ですので、全てのsh-linux-gccが読めるかどうかはわかりません。

- HEWでプログラムを実行させる前にレジスタウインドウからPCの値をオブジェクトの関数に書き換えます(例えば"main")
- そのときに、HEWがソースファイルの場所を聞いてくるのでそこでソースファイルを指定する必要があります。

*** Linux コンソール端末のログインシェルの切替 [#w609e5c8]
- &color(red){[Ctrl]-[ALT]-[F1/2/3/4]}; でログインシェルを切り替えることができる
- グラフィカルログインの途中で止まってしまった場合などに、シェルを切り替えて切り抜けることができる

*** X-window でのグラフィカルログインが出来ない場合の対策 [#s432710c]
- init 3 でテクストモードで起動し、テキストログインする
- シェルから X を起動するために以下のコマンドを使った

 [root@spirit] aticonfig --initial  --input=/etc/X11/xorg.conf
 [root@spirit] startx
- X 関連ファイル
-- /etc/X11/xorg.conf  <---- X 設定ファイル
-- /etc/        <---- gnome ログインシェルを指定している

*** Fedora7 で nVidia のドライバーがインストールできない問題 [#ydabc759]
- インストーラと X11 の整合性がとれていない為の発生 ----> [[詳細:http://www.nvnews.net/vbulletin/showpost.php?p=1225802&postcount=2]]
- インストーラ起動時にオプションを指定する
 # sh NVIDIA-Linux-version.run --x-module-path=`X -showDefaultModulePath 2>&1 | cut -d, -f1` --x-library-path=`X -showDefaultLibPath 2>&1`
-- 会社のマシンに nVidia 用のドライバーをインストールする時に問題が発生、この対策で OK となった

*** git で kernel をダウンロード [#g9fb1fab]
- Fedora7 では yum で git (含 gitk)のインストールができた
- git-clone は su(sudo) でないとできない

 [root@localhost src]# git-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
 Initialized empty Git repository in /home/munakata/src/linux-2.6/.git/
 remote: Generating pack...
 remote: Done counting 552198 objects.
 remote: Deltifying 552198 objects...
 remote:  100% (552198/552198) done
 Indexing 552198 objects...

- &ref(http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html#getting-updates-with-git-pull,center,git tutorial[日本語]);

*** find と組み合わせた file パーミションの一括操作 [#df5e4cbd]

 [root@spirit peewee]# find . -type f -exec chmod 666 {} \;
 [root@spirit peewee]# find . -type d -exec chmod 755 {} \;

*** SDカード FAT マウント時の umask 値設定 [#t40a3941]

 # mount -t vfat -o umask=000 /dev/sd.. /mnt/sd

*** user 空間へのデータコピー [#c95dfefb]

ユーザ空間へのデータコピーは mm/filemap.c の中にある file_read_actor() でやっています(947 行目当たり)。この中
で、何バイトをコピーしていそうか見て頂くと( 971 行目を使っているか、など)、もしかしたら何かが見えるかもしれま
せん。

*** Linux で RAR f形式のアーカイブを解凍する方法 (= &ref(unrar-3.6.2-1.el4.rf.i386.rpm,center,unrar); ) [#d2cbbfab]

 wget http://dag.wieers.com/packages/unrar/unrar-3.6.2-1.el4.rf.i386.rpm
 rpm -Uvh unrar-3.6.2-1.el4.rf.i386.rpm

 unrar x -kb "archibed_file.rar"

*** Sylpheed で外部エディターに秀丸を指定する [#oa08fc90]

 'c:\Program Files\Hidemaru\Hidemaru.exe' '%s'

*** SH-Linux の intevent(割り込み番号)と kernel 割り込みの関係 [#x7e0b4eb]

 Just to follow. Linux kernel for SuperH always uses the 
 following math to convert Intevent Code to IRQ number:
 
 	(intevent >> 5) - 16 = IRQ number
 
 Goda-san's calculation
 
 	(intevent - 0x200) / 0x20
 
 is basically the same as above. ;) You can find this in 
 include/asm-sh/irq.h, evt2irq() macro.

*** SEGV発生箇所の特定方法 [#z29d24b0]
ライブラリ内でSEGV が発生した場合を例にして、
SEGV の発生箇所を特定する方法を記述します。

- カーネルイメージの変更
添付したカーネルイメージを使ってください。SEGV発生時にメッセージを出力するようにしています。
(オリジナルのカーネルイメージは残して置いてください)

- 参考プログラムの作成
ライブラリ内でSEGV を発生させるプログラムの作成

 $ less segvtestlib.c
 #include <stdio.h>
 
 int test_func(void) {
     int *ptr = NULL;
 
     *ptr = 1; 
 
     return 0;
 }
 
 $ less segvtest2.c
 #include <stdio.h>
 
 extern int test_func(void);
 int main() {
 
     test_func();
     return 0;
 }


 $ sh4eb-linux-gcc -shared -Wl,-soname,libsegv.so -o libsegv.so.1 segvtestlib.c
 $ ln -s libsegv.so.1 libsegv.so
 $ sh4eb-linux-gcc segvtest2.c -o segvtest2 -lsegv -L.

- ターゲットボード上で実行

添付したカーネルを使用してターゲットボードを立ち上げ、
プログラムを実行してください。

 # ./segvtest2
 info.si_addr= 0
 pc=2957b6d0 pr=0040062c
 pid=741
 tid=741
 name=segvtest2

SEGV の発生したPCや、
SEGV を発生させたpid, tid、
SEGV を発生させたプログラム名を確認してください。

(注意)
tid は、スレッドID です。
スレッドを作成された際にスレッドID をログに表示しておくと、
そのスレッドがエラーを吐いたか確認できるかと思います。
この際に、gettid(2) を使いスレッドのIDを表示するのではなく、
syscall(__NR_gettid) を使ってください。
(gettid(2) では、pid の値が帰ってきてしまいます)

なお、syscall(__NR_gettid)を使用するために、
以下のマクロを定義し、ヘッダを読み込んでください。

 #define _GNU_SOURCE
 #include <unistd.h>
 #include <sys/syscall.h>
 syscall(__NR_gettid)

- SEGV発生箇所の特定
-- ターゲットボード上で以下を実行してください。

 # ldd segvtest2
         libsegv.so => ./libsegv.so (0x2957b000)
         libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x2958c000)
         libc.so.6 => /lib/libc.so.6 (0x295ad000)
         /lib/ld-linux.so.2 (0x29556000)

前手順で判明したPC より、libsegv.so 内で問題が発生しているのが分かります。

0x2957b6d0 - 0x2957b000 = 0x06d0
ライブラリの上記の位置で問題が発生しています。

・開発機上で以下を実行しライブラリ内の何処で問題
 が発生しているかを確認してください。

(nmコマンドが、ターゲットボード上に存在するなら
ターゲットボード上で実行しても構わないです)

 $ sh4eb-linux-nm ./libsegv.so.1 |sort | less
 
          w _Jv_RegisterClasses
          w __cxa_finalize@@GLIBC_2.2
          w __deregister_frame_info@@GLIBC_2.2
          w __register_frame_info@@GLIBC_2.2
 00000480 T _init
 00000580 t __do_global_dtors_aux
 00000620 t frame_dummy
 000006c0 T test_func
 000006e0 t __do_global_ctors_aux
 00000720 W __gmon_start__
 00000740 T _fini
 00000778 r __EH_FRAME_BEGIN__
 00000778 r __FRAME_END__
 0001077c d __CTOR_LIST__
 00010780 d __CTOR_END__
 00010784 d __DTOR_LIST__
 .....

問題発生箇所が、0x06d0 なので、
test_func の中で問題が発生しているのが分かります。

*** ubbot による uboot の書き換え ( u-boot 上での作業です。) [#bdc377cb]
+ nfs で u-boot.binをメモリにロードする。
+ フラッシュメモリの書き込みたい領域のプロテクトを解除&br; protect off プロテクト解除開始アドレス プロテクト解除終了アドレス
+ フラッシュメモリの書き込みたい領域の領域を初期化&br; erase 初期化開始アドレス 初期化終了アドレス
+ 1 でロードしたu-boot.binイメージをフラッシュに書き込む&br; cp ロードアドレス フラッシュ書き込み開始アドレス サイズ(Hex)

途中でリセットすると、起動できなくなるので、注意してください。

*** マルチメディアコンテンツのヘッダー解析ツール [#s0ed4e61]

http://mediainfo.sourceforge.net/ja  (日本語)
http://mediainfo.sourceforge.net/en (English)

*** Linux performance tuning parameters [#ydf24e88]
Just FYI, some of these writeback parameters can be tuned from /proc:

 damm@rx1 / $ cat /proc/sys/vm/dirty_background_ratio5

Some /proc/sys/ parameters (like the above) will affect performance.~


 Hi Paul,
 
  The cause of the problem that we had has been understood.
  Between kernel-2.6.21 and 2.6.22, the following setting is different.
 
  diff -Nur linux-2.6.21.7/mm/page-writeback.c linux-2.6.22/mm/page-writeback.c
  --- linux-2.6.21.7/mm/page-writeback.c  2007-08-05 01:11:13.000000000 +0900
  +++ linux-2.6.22/mm/page-writeback.c    2007-07-09 08:32:17.000000000 +0900
  @@ -67,12 +67,12 @@
   /*
   * Start background writeback (via pdflush) at this percentage
   */
  -int dirty_background_ratio = 10;
  +int dirty_background_ratio = 5;
 
   /*
   * The generator of dirty data starts writeback at this percentage
   */
  -int vm_dirty_ratio = 40;
  +int vm_dirty_ratio = 10;
 
  5% of the main memory is made a threshold, and pdflush is executed.
  Pdflush is executed by exceeding this limen when "File Copy 4096 bufsize 8000 maxblocks"
  is being tested. Therefore, I understood that the score decreased.
 
  And, kernel-2.6.30 changes this setting again.
 
  http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.30-rc8.bz2
 
  diff --git a/mm/page-writeback.c b/mm/page-writeback.c
  index 74dc57c..bb553c3 100644
  --- a/mm/page-writeback.c
  +++ b/mm/page-writeback.c
  @@ -66,7 +66,7 @@ static inline long sync_writeback_pages(void)
  /*
   * Start background writeback (via pdflush) at this percentage
  */
  -int dirty_background_ratio = 5;
  +int dirty_background_ratio = 10;
 
   /*
   * dirty_background_bytes starts at 0 (disabled) so that it is a function of
  @@ -83,7 +83,7 @@ int vm_highmem_is_dirtyable;
   /*
   * The generator of dirty data starts writeback at this percentage
   */
  -int vm_dirty_ratio = 10;
  +int vm_dirty_ratio = 20;
  
  *** Original linux-2.6.27 for R0P7785LC
  File Copy 1024 bufsize 2000 maxblocks          3960.0      58262.6    147.1
  File Copy 256 bufsize 500 maxblocks            1655.0      19330.0    116.8
  File Copy 4096 bufsize 8000 maxblocks          5800.0      10793.1     18.6
 
  *** linux-2.6.27( changes to dirty_background_ratio=10 and vm_dirty_ratio=20.)
  File Copy 1024 bufsize 2000 maxblocks          3960.0      58957.9    148.9
  File Copy 256 bufsize 500 maxblocks            1655.0      20071.5    121.3
  File Copy 4096 bufsize 8000 maxblocks          5800.0     113057.7    194.9

*** GRUB の再インストール (Ubuntu) [#m5f0bb7b]
- Ubuntu Live CD でシステムを起動
- 最初の起動メニューで [F6]を押して起動オプションを書き換える
 boot=casper ---> boot=/dev/sda1 (Linux を起動したいパーティション名)
- Enter でシステム起動
- HDD から起動した Linux 上から MBR に GRUB をインストール
 sudo /usr/sbin/grub-install /dev/sda

通常はこれで Grub が再設定されるが、これが Windows との dual boot の場合などでうまく行かない場合には~
[[FreeDOS:http://www.freedos.org/]] の iso イメージを焼いてシステムを起動し
 fdisk /mbr 1
で一番目のディスクの MBR への書き込みが行われる。 以降は上記 Ubuntu Live CD の手順を実行すればよい。

*** [Ubuntu] Grubの設定をGUIで [#h73153f1]
 $ sudo apt-get install startupmanager
これを使えば/boot/grub/menu.lstを直接編集せずにGrubの設定を変更出来る。

*** [[Linuxでうっかりrm -rfしちゃったけど復活出来たよ (extundelete):http://d.hatena.ne.jp/y-kawaz/20110123/1295779916]] [#efdf4b86]

- &ref(extundelete-0.2.0.tar.bz2);

 ## こーいうときはまずあれだ、現場保存!
 ## まずは今いるパーティションを確認
 # df -hT
 Filesystem    Type  サイズ  使用  残り 使用% マウント位置
 /dev/sdb2     ext4    193G  6.9G  176G   4% /
 /dev/sdb1     ext3    194M   22M  163M  12% /boot
 /dev/sdb5     ext4    1.2T  752G  371G  67% /home  ←イマココ
 tmpfs        tmpfs    999M     0  999M   0% /dev/shm
 
 ## とりあえず読み込み専用にしておこう!
 # mount -o remount,ro /dev/sdb5
 # touch /home/hoge
 touch: cannot touch `/home/hoge': 読み込み専用ファイルシステムです
 ## うし、ちゃんとリードオンリーになったな
 
 ## あと何だ?とりあえず時間メモ!
 # date
 2011年  1月 23日 日曜日 18:15:22 JST
 
 ## ふぅ、さてひとまずこれでいいだろう、あとはext4の復元方法をググりまくるぞー…。
 ## どうやら extundelete ってのがext3/ext4対応の復活プログラムらしい。
 ## 藁にもすがる思いでインストール。とりあえず/tmpでいいや。
 # cd /tmp
 # mkdir a
 # cd a
 # wget "http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.0/extundelete-0.2.0.tar.bz2? r=http%3A%2F%2Fextundelete.sourceforge.net%2F&ts=1295777113&use_mirror=jaist"
 # ls
 extundelete-0.2.0.tar.bz2
 # tar xfj extundelete-0.2.0.tar.bz2
 # cd extundelete-0.2.0
 # ./configure --prefix=/tmp/a && make && make install
 ## ビルド待ち…、うしっなんか出来たっぽい!
 
 ## んー何々…?
 # /tmp/a/bin/extundelete 
 No action specified; implying --superblock.
  
 Usage: /tmp/a/bin/extundelete [options] [--] device-file
 Options:
   --version, -[vV]       Print version and exit successfully.
   --help,                Print this help and exit successfully.
   --superblock           Print contents of superblock in addition to the rest.
                          If no action is specified then this option is implied.
   --journal              Show content of journal.
   --after dtime          Only process entries deleted on or after 'dtime'.
   --before dtime         Only process entries deleted before 'dtime'.
 Actions:
   --inode ino            Show info on inode 'ino'.
   --block blk            Show info on block 'blk'.
   --restore-inode ino[,ino,...]
                         Restore the file(s) with known inode number 'ino'. 
                         The restored files are created in ./RESTORED_FILES
                         with their inode number as extension (ie, file.12345).
   --restore-file 'path'  Will restore file 'path'. 'path' is relative to root
                         of the partition and does not start with a '/' (it
                         must be one of the paths returned by --dump-names).
                         The restored file is created in the current
                         directory as 'RECOVERED_FILES/path'.
  --restore-files 'path' Will restore files which are listed in the file 'path'.
                         Each filename should be in the same format as an option
                         to --restore-file, and there should be one per line.
  --restore-all          Attempts to restore everything.
  -j journal             Reads an external journal from the named file.
  -b blocknumber         Uses the backup superblock at blocknumber when opening
                         the file system.
  -B blocksize           Uses blocksize as the block size when opening the file
                          system.  The number should be the number of bytes.
 Error parsing command-line options.
 
 ## ふむ、どうやらパーティション&時間指定で復元できるっぽいな?
 ## dtime って何だろ…、helpだと分からんかったのでサイトのマニュアル読む…
 ## エポック秒で指定すればいいんだな。
 ## 取ってて良かった時間メモ、18:15ってことは18:00以降くらいでいいだろ。
 # date -d "18:00"
 2011年  1月 23日 日曜日 18:00:00 JST
 ## うむ、じゃエポックは…、と
 # date -d "18:00" +%s
 1295773200
  
 ## うし、じゃこんな感じかな?
 # /tmp/a/bin/extundelete --after 1295773200 --restore-all /dev/sdb5
 Only show and process deleted entries if they are deleted on or after 1295773200 and before 2147483647.
 
 WARNING: Extended attributes are not restored.
 Loading filesystem metadata ... 9607 groups loaded.
 Loading journal descriptors ... 28902 descriptors loaded.
 Writing output to directory RECOVERED_FILES/
 Searching for recoverable inodes in directory / ... 
 327 recoverable inodes found.
 Looking through the directory structure for deleted files ... 
 Restored inode 3373 to file RECOVERED_FILES/share/家中共有/読み聞かせ/こころ441p.WAV
 Restored inode 3374 to file RECOVERED_FILES/share/家中共有/読み聞かせ/お侍をだましたキツネ.WAV

*** SH-Debian cross toolchain の導入 (chroot 環境で実行) [#v4e7902c]
- パッケージ導入元 = http://debian-sh4.nigauri.org/ (gcc-4.4.1 / gcc-4.3.4 を用意しました)
-- binutils
-- linx-libc-dev
-- gcc*.*

+ 適当なディレクトリに移動
+ mkdir sid-rootfs
+ sudo apt-get update
+ sudo apt-get install debootstrap chroot
+ sudo debootstrap sid sid-rootfs http://ftp.jp.debian.org/debian/
+ sudo chroot sid-rootfs
+ 依存するパッケージのインストール
 dpkg --info gcc-4.3-sh4-linux-gnu_4.3.4-1_i386.deb を実行したときに
 出力される Depends の行が依存するパッケージです。
+ クロスコンパイラのインストール
+ 開発は sid-rootfs の中で行う。

*** GIMP GIF 背景色の透明化 [#nc4906cc]
//- アルファチャンネルの追加
//- 背景色を選択して切り取り
- 編集対象ファイルは GIF 形式でなければならない ( 必要に応じてファイル形式を変換してから GIMP に読み込む )
- 黄色いスポイトで背景色(=抜きたい色を選択、 シフトキーを押しながら連続選択が可能)
- 選択されたら 削除 で色が透明に抜ける

*** Youtube のファイルの扱い [#o8a7f37d]

- .264ファイルは、H.264/AVCのrawストリームファイルです。AVCビデオストリームが格納されているmp4やmovが準備できるようでしたら、'MP4Box'というツールでrawストリームを取り出すことが可能です。

 % MP4Box -raw 2 tronlegacy.mp4
 Extracting MPEG-4 AVC-H264 stream to h264
 % ls
 tronlegacy.mp4  tronlegacy_track2.h264

- mp4やmovファイルに含まれているAVストリームの仕様は 'mediainfo'というコマンドで確認できます。

 % mediainfo tronlegacy.mp4
 General
 Complete name                    : tronlegacy.mp4
 Format                           : MPEG-4
 Format profile                   : Base Media / Version 2
 Codec ID                         : mp42
 File size                        : 35.3 MiB
 Duration                         : 2mn 20s
 Overall bit rate                 : 2 108 Kbps
 Encoded date                     : UTC 2010-03-08 01:48:02
 Tagged date                      : UTC 2010-03-08 01:48:02
 gsst                             : 0
 gstd                             : 140851
 gssd                             : B4A7D6683HH1286348198852986
 gshh                             : v3.lscache3.c.youtube.com
 
 Video
 ID                               : 2
 Format                           : AVC
 Format/Info                      : Advanced Video Codec
 Format profile                   : High@L3.1
 Format settings, CABAC           : Yes
 Format settings, ReFrames        : 3 frames
 Codec ID                         : avc1
 Codec ID/Info                    : Advanced Video Coding
 Duration                         : 2mn 20s
 Bit rate mode                    : Variable
 Bit rate                         : 1 980 Kbps
 Maximum bit rate                 : 12.2 Mbps
 Width                            : 1 280 pixels
 Height                           : 534 pixels
 Display aspect ratio             : 2.35:1
 Frame rate mode                  : Constant
 Frame rate                       : 23.976 fps
 Resolution                       : 8 bits
 Colorimetry                      : 4:2:0
 Scan type                        : Progressive
 Bits/(Pixel*Frame)               : 0.121
 Stream size                      : 33.1 MiB (94%)
 Title                            : (C) 2007 Google Inc. v08.13.2007.
 Encoded date                     : UTC 2010-03-08 01:48:02
 Tagged date                      : UTC 2010-03-08 01:48:02
 
 Audio
 ID                               : 1
 Format                           : AAC
 Format/Info                      : Advanced Audio Codec
 Format version                   : Version 4
 Format profile                   : LC
 Format settings, SBR             : No
 Codec ID                         : 40
 Duration                         : 2mn 20s
 Bit rate mode                    : Variable
 Bit rate                         : 124 Kbps
 Maximum bit rate                 : 220 Kbps
 Channel(s)                       : 2 channels
 Channel positions                : Front: L R
 Sampling rate                    : 44.1 KHz
 Stream size                      : 2.08 MiB (6%)
 Title                            : (C) 2007 Google Inc. v08.13.2007.
 Encoded date                     : UTC 2010-03-08 01:48:02
 Tagged date                      : UTC 2010-03-08 01:48:02

- 'youtube-dl'というツールを使うと、youtubeからビデオを flvやmp4ファイルでダウンロードすることができます。

 % ./youtube-dl -f 18 "http://www.youtube.com/watch?v=TtbrLIwKWWA"
 [youtube] Setting language
 [youtube] TtbrLIwKWWA: Downloading video webpage
 [youtube] TtbrLIwKWWA: Downloading video info webpage
 [youtube] TtbrLIwKWWA: Extracting video information
 [download] Destination: TtbrLIwKWWA.mp4
 [download] 100.0% of 4.25M at  252.82k/s ETA 00:00

- .yuvファイルは、NV12 RAWイメージが連続して格納されたファイルです。前述264ファイルに対して、リリースしたプログラムomxvideodectestを使うとyuvファイルを出力することができます。

 # omxvideodectest -d OMX.re.videodecoder -o output.yuv input.264

- URL
-- [[MP4Box:http://www.videohelp.com/tools/mp4box]]
-- [[mediainfo:http://mediainfo.sourceforge.net/ja]]
-- [[youtube-dl:http://bitbucket.org/rg3/youtube-dl/wiki/Home]]
--- [[数字の意味:http://d.hatena.ne.jp/michinao/20081115/p1]]

*** [[NautilusSVN (RabbitVCS: Linux CVS GUI cleint):http://rabbitvcs.org/]] [#le712e6c]

*** iPad/iPhone 4のビデオ再生仕様 [#vdd16e8c]

- iPad用1024×576 TMPEGENC 設定ファイル ----> &ref(MP4_AVCHD_iPad_1024x576.txp4e);

- H.264ビデオ
-- 最高720p
-- 毎秒30フレーム
-- 最高レベル3.1のメインプロファイル(最高160kbpsのAAC-LC)、 
-- 48kHz、.m4v、.mp4、.movファイルフォーマットのステレオオーディオ 

- MPEG-4ビデオ
-- 最高2.5Mbps、640×480ピクセル
-- 毎秒30フレーム
-- シンプルプロファイル(最高160KbpsのAAC-LC)、 
-- 48kHz、.m4v、.mp4、.movファイルフォーマットのステレオオーディオ 

- Motion JPEG (M-JPEG)
-- 最高35Mbps、1280×720ピクセル、
-- 毎秒30フレーム
-- ulawオーディオ、.aviファイルフォーマットのPCMステレオオーディオ

*** Live Linux USB Creator (LiLi) [#b8bd28a1]
- &ref(LinuxLive USB Creator 2.7.exe);

*** ideapad S10e wlan (BCN4312)ドライバー [#se6a2bb4]
- http://ja.broadcom.com/support/802.11/linux_sta.php から 32bit driverをダウンロード

 $ mkdir hybrid_wl
 $ cd hybrid_wl
 $ tar xzf <ダウンロードしたパス>/hybrid-portsrc.tar.gz
 
 $ make clean   (初めて実行する際は不要)
 $ make

 もし b43-fwcutter をインストーしていたら削除
 $ sudo apt-get remove b43-fwcutter

 ドライバーモジュールをインストール
 $ sudo make install
 $ sudo echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf
 $ sudo echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf
 $ sudo depmod -a 

ここまでで modprobe wl とすればとりあえず利用はできるのだが、もう1ステップおまじない(?)が必要である。
ここでメニューバーの 「システム - システム管理 ー ハードウエアドライバ」で今、作成したドライバの登録を行う。これは modprobe wl 実行後、行ったが自動検索して容易に行えた。画面は次のようなものだ。

*** Ubuntu : scim-anthyのキーバインドやローマ字キーマップを ATOK/IME 互換に変更 [#b584ef8b]
設定方法は,SCIMを起動して右から2番目の[コマンドメニューを表示]をクリックし,更に[SCIMを設定]をクリックします。すると[SCIM入力メソッド設定]が起動するので,左の[Anthy]タブを開きます。[キーバインド]タブの[キーバインドテーマ]をお好みのものにし,さらに[ローマ字入力]タブを開いて[ローマ字テーブル]も変更します。
-&ref(TH400_01.jpg);
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0065 より引用

*** [[virtualbox のクローン作成:http://www.webriverside.com/page_contents/vm/page_virtualbox_copyclone.html]] [#ff478ef5]
- VirtualBoxで作成した仮想マシンのクローンを作成するには3段階の手順を踏む必要があります。
-- &color(red){[注意] VirtualBoxでは、単純に仮想マシンイメージをファイルコピーしてもクローンイメージにはならない。};
- 仮想マシンイメージファイルのクローンイメージをコマンドラインツール (VBoxManager.exe) から作成する
- クローンイメージをGUIツール (Sun xVM VirtualBox) の「仮想メディアマネージャ」に追加する
- 新規仮想マシン作成ウィザードから新規仮想マシンを作成し、仮想メディアマネージャに管理されたクローンイメージに割り当てる

*** [[Magetta (OSS HTML5 authoring tool:http://www.maqetta.org]] [#p1bf8438]
- account = public_mail@hmuna.com
- pass = frex

*** Ubuntu 1104 で無線LANが使えなくなっている問題の対策 [#z848c270]
- https://forums.ubuntulinux.jp/viewtopic.php?id=11372
- 登録されたモジュールのリスト [lsmod]

 munakata@muna-E420:~$ lsmod
 Module                  Size  Used by
 parport_pc             36959  0 
 ppdev                  17113  0
 binfmt_misc            17565  1 
     ↓            ↓   ↓

- インストール(認識)されたハードウエアのリスト [lswh -C]

 munakata@muna-E420:~$ sudo lshw -C network
 [sudo] password for munakata: 
   *-network               
        description: Ethernet interface
        product: RTL8111/8168B PCI Express Gigabit Ethernet controller
        vendor: Realtek Semiconductor Co., Ltd.
        physical id: 0
        bus info: pci@0000:02:00.0
        logical name: eth0
        version: 06
        serial: f0:de:f1:65:e5:0a
        size: 1Gbit/s
        capacity: 1Gbit/s
        width: 64 bits
        clock: 33MHz
        capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
        configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full ip=192.168.1.60 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
        resources: irq:40 ioport:5000(size=256) memory:d0404000-d0404fff memory:d0400000-d0403fff
   *-network DISABLED
        description: Wireless interface
        product: RTL8188CE 802.11b/g/n WiFi Adapter
        vendor: Realtek Semiconductor Co., Ltd.
        physical id: 0
        bus info: pci@0000:08:00.0
        logical name: wlan0
        version: 01
        serial: ec:55:f9:c4:3d:ae
        width: 64 bits
        clock: 33MHz
             ↓
- 無効化されている無線の確認 [rfkill list]

 munakata@muna-E420:~$ rfkill list
 0: hci0: Bluetooth
 	Soft blocked: no
 	Hard blocked: no
 1: tpacpi_bluetooth_sw: Bluetooth
 	Soft blocked: no
 	Hard blocked: no
 2: phy0: Wireless LAN 
 	Soft blocked: yes
 	Hard blocked: no
 3: acer-wireless: Wireless LAN
 	Soft blocked: yes
 	Hard blocked: no

- 無線LANの有効化

 munakata@muna-E420:~$ sudo rmmod -f acer-wmi
 munakata@muna-E420:~$ rfkill unblock all

*** Thinkpad E420 トラックパッドの無効化 (ポインターだけで操作したい) [#j31f9101]
- gpointing-device-settings を追加でインストール
-- タッチパッドの無効化
ーー スクロールは ホイールのエミュレーションを有効にし、2番ボタンをスクロールにあてる。
- http://ishiguso328.appspot.com/article/3

*** Virtualbix のマウス統合機能の無効化、再有効化 [#x746e92d]
- Virtualbox でゲストOS のウインドウの境界部分のポインティングがうまくいかない(ホストOS に制御が取られてしまう)事があった。
- Virtualbox のウィンドウ枠右下の 丸に矢印のついたアイコンをクリックするとマウス統合機能が無効(ホストOSに渡されない) になる。
- この状態からホストOS にマウスを渡すには 右側のコントロールキーを押す。 (デフォルト設定時) Right Control と書いてあるのはその意味。

*** /etc/fstab 設定例 [#mc4ef975]
- [デバイス] [マウントポイント] [ファイルシステム] [マウントオプション] [dumpオプション] [fsckオプション]
-- ローカルファイルシステムもマウントする例
 /dev/sdc1	/mnt	ext3	defaults	1 2
-- NFSの設定例
 192.168.1.1:/exports/www	/exports/www	nfs	rsize=8192,wsize=8192,hard,intr	0	0


-オプション一覧
--デバイス
マウントする為のデバイスファイルを指定します。
通常は、/dev/hda1などのデバイスファイルを直接指定しますが、ext3はLABEL指定も可能です。
また、リモートのファイルサーバなどのNFS、Samba用の記述も可能です。

--マウントポイント
ファイルシステム上のマウントポイントを指定します。
実ディレクトリが存在している必要があります。swapの場合はswapと設定します。

--ファイルシステム
ファイルシステムの形式を指定します。
ext3、xfs、swap、nfs、vfat、iso9660など、サポートされているファイルシステムを指定します。

--マウントオプション
|オプション|意味|h
|async|ファイルシステムへの I/O が非同期で行われます。|
|atime|アクセス毎に inode のアクセスタイムをアップデートします。|
|auto| mount コマンドの -a オプションでマウントされるようにします。|
|codepage| 文字コードの指定|
|COLOR(red):defaults| COLOR(red):デフォルトのオプション(rw, suid, dev, exec, auto, nouser, async)を有効にします。|
|dev| ファイルシステム上のデバイスを利用できるようにします。|
|exec| バイナリの実行を許可します。|
|gid| マウントするグロープIDを指定|
|iocharset| マウントするシステムの文字コード|
|noatime| アクセス毎にinodeのアクセスタイムをアップデートしません。|
|noauto| コマンドで明示的にmountコマンドを実行された場合にのみマウントされます。|
|nodev| ファイルシステム上のデバイスを利用できないようにします。|
|noexec| ファイルシステム上でのバイナリファイルの実行を無効にします。|
|nosuid| SUID や SGID を無効にします。|
|nouser| root以外マウントできないようにします。|
|ro| リードオンリーでファイルシステムをマウントします。|
|rw| 読み込み・書き込みができる状態でファイルシステムをマウントします。|
|suid| SUID および SGID を有効にします。|
|sync| ファイルシステムへのI/Oを同期で行います。|
|user| 一般ユーザでもファイルシステムをマウントできるようにします。|
|uid| マウントするユーザIDを指定|

--dumpオプション
dumpの要否を指定します。
|0|dump不要|
|1|dump必要|

--fsckオプション
OS起動時に、fsckによるファイルシステムチェックの要否を指定します。
|0|チュック無し|
|1|/ 専用でチェック有り|
|2|チェック有り|


*** [[testdisk によるクラッシュしたHDDからのデーター救済手順説明:http://uiuicy.cs.land.to/testdisk/tdisk02.html]] [#taad2e0b]
- [[パーティションテーブルが壊れたHDDを復元するには:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/991testdisk.html]]
- http://www.cgsecurity.org/wiki/PhotoRec  =>  &ref(testdisk-6.13.linux26.tar.bz2);

*** [[Ubuntu 起動時にメッセージを出させる:http://d.hatena.ne.jp/kobapan/20110327/1301459123]] [#lcb64afc]
- /boot/grub/grub.cfg (通常は 444 → 744 にして編集、 編集後には 444 に戻す) の中の quiet と splash を無効に
- /etc/default/rc.s の中の VERBOSE を yes に変更する

*** find の実行で 『find: パス名は評価式の前に置かなければいけません』 というエラーが出て検索できない問題 [#he96a9db]
- [[シェルが勝手にアスタリスクを展開してしまうので,findコマンドにアスタリスクが渡らないため:http://d.hatena.ne.jp/language_and_engineering/20110617/p1]]
- 次のように検索対象ファイルをくくると検索できる
 find ./ -name "*.php"

*** Lenovo E420 で無線LANが使えない問題 [#ca3773b4]
- デフォルトでソフト的に無効になっているのを、設定変更すると使えるようになる。

 munakata@muna-E420:~$ rfkill list
 1: tpacpi_bluetooth_sw: Bluetooth
 	Soft blocked: yes
 	Hard blocked: no
 
 munakata@muna-E420:~$ sudo rmmod -f acer-wmi
 
 munakata@muna-E420:~$ rfkill unblock all

- https://forums.ubuntulinux.jp/viewtopic.php?id=11372
- http://ubuntuforums.org/showthread.php?t=1761472

*** root でも消せないファイルをどうするか [#g4d172f4]
- 例えば

 root@mythen:/home/server-admin# ls -la
 ls: .gvfs にアクセスできません: 許可がありません
 合計 300
 drwxr-xr-x 36 server-admin server-admin  4096 2011-12-31 21:56 .
 drwxr-xr-x  3 root         root          4096 2011-12-17 10:04 ..
 -rw-------  1 server-admin server-admin  7636 2011-12-30 07:18 .ICEauthority
 -rw-------  1 server-admin server-admin   103 2011-12-30 07:18 .Xauthority
 drwx------  3 server-admin server-admin  4096 2011-12-11 21:44 .adobe
 drwx------  3 server-admin server-admin  4096 2011-12-31 22:22 .anthy
 (snip)
 -rw-rw-r--  1 server-admin server-admin   369 2011-12-17 10:10 .gtk-bookmarks
 d?????????  ? ?            ?                ?                ? .gvfs
 drwxrwxr-x  4 server-admin server-admin  4096 2011-12-18 08:22 .icedtea

- このような場合には,lsattrコマンドを利用してファイルの状態 (特にuフラグ) を確認してみよう。
- chattrコマンドで変更すると正常なパーミッションに直すことができる。

*** GUI 画像の一括リネーム 一括リサイズ 一括変換が簡単にできる [#u8662bb2]
- [[GTK Rename and Resize Image :http://ubuntuapps.blog67.fc2.com/blog-entry-238.html]]

*** 画像ファイル整理用のperl スクリプト群 [#b953ac19]
- [[画像ファイルの整理(1):http://penguinclub.net/linux/perl/learn/page11.html]]

*** 画像のリサイズ(コマンドライン) [#pfa83eae]
- imagemagic の ''convert'' コマンドに、「-geometry」オプションを付けて実行します。
 munakata@muna-E450:~/Desktop$ convert -geometry "60%" button1A.jpg button1.jpg 

- convert コマンドの代わりに ''mogrify'' コマンドを使えばファイルの上書きができる。
 munakata@muna-Linux:~/Desktop$ mogrify -resize 60% セレクトール.jpg

*** [[デスクトップにホームディレクトリの内容が表示されてしまった時の対処:https://forums.ubuntulinux.jp/viewtopic.php?id=3273]] [#sb861135]
- 1)$HOME/.config/user-dirs.dirsをエディタで開く。※1
- 2)XDG_なんとか_DIRというキーに対する値が、希望のディレクトリ(存在するディレクトリ)を指し示すように編集し保存。
- 3)再度ログイン。<- 重要!

で直ると思いますよ。この現象が起きたのは、$HOME/デスクトップを削除したからでは?
それをやると、$HOMEがデスクトップに表示されてしまう現象が、他のブログ記事などにも散見されます。

*** ターミナル用フォント ( putty など) [#p20d12fe]
- [[inconsolata:http://www.levien.com/type/myfonts/inconsolata.html]]

*** grep で空行とコメント行を削除する [#ra2f7557]
 grep -v -e '^$' -e '#' (file_name)
 
 cat (file_name) | grep -v "^\s*$" | grep -v "^\s*#"

*** ディレクトリ以下を再帰的にgrepする (新2) [#v9fccf35]
- ディレクトリとファイルタイプを指定して、再起的に検索
 grep -lr (検索文字) --include='*.log' ./app/logs(検索場所)

*** ディレクトリ以下を再帰的にgrepする (新) [#b4d45846]
- grep hoge --include='dir' -r
 [local] munakata:~/latex/LFS301-JP$ grep size --include='*.tex' -r
 CHAPS/memmon/memmon.tex:Hugepagesize:       2048 kB
 CHAPS/memmon/memmon.tex:   RAM plus the size of the swap space. The hard part of this
 CHAPS/memmon/memmon.tex:   exceed the size of RAM plus swap. While this might seem
 CHAPS/memmon/memmon.tex:      when the total memory commit reaches the size of the
 CHAPS/containers/containers1.tex:      \begin{responsevar}{\footnotesize}
 CHAPS/processes/processes1.tex:         as stack size (\verb?-s?)  we could raise back up
 CHAPS/processes/libraries.tex:   \begin{responsevar}{\normalsize}
 CHAPS/processes/libraries.tex:   \begin{responsevar}{\scriptsize}


*** ディレクトリ以下を再帰的にgrepする [#a5cdf576]
 find ./ -name '*' | xargs grep "hogehoge"

*** R-Car で earlyprintk を使う方法 [#m42feab8]
- R-mobile 系は kernel command line での設定で有効となる 
 console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096 rw
- R-Car 系の対応 (r-car 系では SCIF が 0xffxxxxx にマッピングされていて、その場所は ARM が予約済みになっている領域であるため、remap しないといけない)
-- setup-r8a7779.c (= H1)に説明が書いてあります

*** stable tree の fetch と差分の確認 [#f49fb857]
- git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
- git log --oneline v3.4.25..v3.4.47
- git log --oneline v3.4.25..v3.4.47 | wc -l で差分の数を表示

*** ディスク容量(=RootFS の構成) のグラフィカル表示 [#z831f8f0]
- [[baobao:http://www.marzocca.net/linux/baobab/index.html]]
-- ubuntu では 「ディスク使用量の解析」
- xdu
- xdiskusage

*** ビデオコンテンツのプロファイルを確認する [#o77894a6]
 mediainfo

*** アプリケーション実行時の CPU 関連の動作を検証する [#l4de186d]
 usr/bin/time --verbose

*** i2c デバイスの検出 i2cdetect [#fbcff204]
 # i2cdetect -r -y 3
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
 10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 70: -- -- -- -- -- -- -- --

- -y Disable interactive mode. By default, i2cdetect will wait for a confirmation from the user before messing with the I2C bus. When this flag is used, it will perform the operation directly. This is mainly meant to be used in scripts.
- -a Force scanning of non-regular addresses. Not recommended.
- -q Use SMBus "quick write" commands for probing (by default, the command used is the one believed to be the safest for each address). Not recommended. This is known to corrupt the Atmel AT24RF08 EEPROM found on many IBM Thinkpad laptops.
- -r Use SMBus "read byte" commands for probing (by default, the command used is the one believed to be the safest for each address). Not recommended. This is known to lock SMBus on various write-only chips (most notably clock chips at address 0x69).
- -F Display the list of functionalities implemented by the adapter and exit.
- -V Display the version and exit.
- -l Output a list of installed busses.

*** [[Ubuntu 64bit版 で 32bitのライブラリやアプリをコンパイルする環境設定(覚書):http://ankyo.blog.so-net.ne.jp/2010-06-19]] [#qf0a768d]
- sudo apt-get install ia32-libs lib32gcc1 lib32stdc++6 libc6-dev-i386 gcc-multilib

*** upstream kernel / stable-kernel のソース入手 [#p97122fe]
- git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
- git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

*** [[Ubuntu フォント:https://wiki.ubuntulinux.jp/UbuntuTips/Desktop/InstallFont]] [#a53f6e73]
- fc-list|less でインストールされているフォントの一覧が表示される。

*** ディレクトリ以下の全ファイルの文字コードを UTF-8 に一括変換 [#aa94a228]
 find . -type f | xargs -n 10 nkf -w --overwrite

*** 複数ファイルから文字列を一括置換 [#p4f56390]
 find ./path/to/file -type f | xargs sed -i "s/hoge/hage/g"

*** bashのタブ補完で余分なスペースが入るようになった場合の対処 [#l27ba4e7]
 rm /etc/bash_completion.d/acroread.sh

*** dd イメージファイルからパーティション情報を読み出す [#k866f0ce]

munakata@muna-E420:~/volumio/image$ sfdisk -l -uS VolumioBeta1.3BBB.img 
ディスク VolumioBeta1.3BBB.img: ジオメトリを取得できません

ディスク VolumioBeta1.3BBB.img: シリンダ数 229、ヘッド数 255、63 セクタ/トラック
ユニット = 512 バイトのセクタ、0 から数えます

   デバイス ブート    始点      終点    #セクタ  Id システム
VolumioBeta1.3BBB.img1   *      2048      4095       2048   1  FAT12
VolumioBeta1.3BBB.img2          4096   3751935    3747840  83  Linux
シリンダ 233 にパーティションの終点、ディスクの最後を越えています
VolumioBeta1.3BBB.img3             0         -          0   0  空
VolumioBeta1.3BBB.img4             0         -          0   0  空

*** chorome で README.html などのローカルファイルファイルが開かない [#u983ac27]
- セキュリティ対策で chorome ver5 以降はそういう仕様になっている (Firefox などで開くことができる)
- オーバーライドして強制的に開くようにするには起動パラメータを付けてchromeを起動する
-- -allow-file-access-from-files
- [[参考URL(windows と mac の方法が書いてある):http://dev.classmethod.jp/etc/chrome-localfile-security/]]

*** 色々なバージョンの kernel ソースのディレクトリー毎のソース行数をカウントする方法  [#i334ca1e]
- kernel repo から git clone したソースには v2.6.11 以降のソース改定履歴が含まれる
- git checkout で tag を指定して以前のバージョンのソースを得ることができる
- find でファイルを再帰的に探して wc で行数を数えたものを、ディレクトリー名付きで表示する
-- git checkout v2.6.18 -b v2.6.18
-- find . -type f -not -regex '\./\.git.*' -print | xargs cat | wc -l <--- ソース全体の行数
-- find . -type f -not -regex '\./\.git.*' -print0|xargs -0 wc -l <--- ディレクトリー/ファイル単位での行数

*** ファイルの属性変更、確認(書き込み禁止 など) [#lfbfb1a6]
- lsattr [ -RVadv ] [ files...  ]
-- -R     ディレクトリやその内容の属性を再帰的に表示する。
-- -V     プログラムのバージョンを表示する。
-- -a     `.' ではじまるファイルも含め、全てのファイルおよびディレクトリを表示する。
-- -d     ディレクトリの内容ではなく、ディレクトリそのものを表示する。
-- -v     ファイルのバージョン/世代を表示する。

- chattr [ -RV ] [ -v version ] [ mode ] files...
-- `A' 属性が設定されているファイルは、 アクセスされても atime レコードが変更されない。 これはラップトップシステムのディスク I/O をある程度軽減する。

-- `a'     属性が設定されているファイルは、     書き込みの際に追加モードでしかオープンできない。    スーパーユーザーまたはCAP_LINUX_IMMUTABLE ケーパビリティ (capability) を持つプロセスだけが、 この属性を設定・解除できる。
-- `c' 属性が設定されているファイルは、 ディスク上に置かれるときカーネルによって自動的に圧縮される。  このファイルを読み出
すと、伸長されたデータが返ってくる。  このファイルに書き込むと、ディスク上に保存する前にデータが圧縮される。 注意: このドキュメントの最後にある 「バグと制限」のセクションを読んで確かめてほしい。
-- `D' 属性が設定されているディレクトリは、 変更されると同時にディスクにもその内容が書き込まれる。 これは `dirsync' マウントオプションを、 それらのファイルだけに適用するのと同じことである。
-- `d'  属性が設定されているファイルは、 dump(8) プログラムを起動した際にバックアップされない。
-- `E' 属性は実験的な圧縮パッチが用いるもので、 圧縮ファイルに圧縮エラーがあることを示す。 この属性は chattr(1) によって設定したり解除したりすることはできないが、 lsattr(1) を用いて表示させることはできる。
-- `I' 属性は htree コードによって用いられ、  ディレクトリがハッシュツリーを使って索引を付けられることを示す。  この属性は
chattr(1) によって設定したり解除したりすることはできないが、 lsattr(1) を用いて表示させることはできる。
-- i'  属性が設定されているファイルは、変更することができない。  すなわち、削除、名前の変更、このファイルを指すリンクの作成、 このファイルに対するデータの書き込みが禁止される。 スーパーユーザーまたは CAP_LINUX_IMMUTABLE ケーパビリティを持つプロセスだけが、 この属性を設定・解除できる。

*** man ページを日本語表示にする [#p14e6180]
- sudo apt-get install manpages-ja

*** Ubuntu でランレベル毎の自動起動するサービルの指定 [#kb16c3d7]
- sysv-rc-conf
- sysv-rc-conf -list (表示のみ)

*** ディスクパーティションを変更した時の grub の再設定 (>grub rescue と出た時の対応) [#cc3a54ce]
- まず手動で grub にパラメータを渡して Ubuntu を起動する
 grub rescue> ls ← パーティションリストが表示される。/boot/grub のある場所を確認する
 grub rescue> ls (hd0,msdos6)/boot/grub/i386-pc/normal.mod
 grub rescue>set prefix=(hd0,msdos6)/boot/grub
 grub rescue>set root=(hd0,msdo6)
 grub rescue>insmod (hd0,msdos6)/boot/grub/i386-pc/normal.mod
 grub rescue>normal

- 次に grub を再インストールする
-- 通常は
 sudo grub-install /dev/sda
-- 上記でエラーになる場合(パーティションを削除した場合など)
 sudo dpkg-reconfigure grub-pc

*** apt-get で保留されるパッケージのアップグレード [#kbb23d1a]
- 再起動が必要であったり依存関係で削除されるファイルや設定があったり,ということで保留される。 でもサーバ再起動する前などにインストールしちゃいたい時は,
-- $ sudo apt-get -s dist-upgrade で確認て
-- $ sudo apt-get dist-upgrade でインストール

*** Ubuntu には inittab はない。 [#q1248cd7]
- While searching this in various forum, I got to know that /etc/inittab is not anymore used in debian distro.
- It uses /etc/init/rc-sysinit.conf

*** Ubuntu でテキストログイン [#mc833c8d]
- [[「Ubuntu のログインを CUI に変更する」:http://mattintosh.blog.so-net.ne.jp/2012-02-28_ubuntu_login_cui]] を参考に /etc/default/grub を編集

-- /etc/default/grub の GRUB_CMDLINE_LINUX_DEFAULT を変更 

 GRUB_DEFAULT=0
 GRUB_HIDDEN_TIMEOUT=0
 GRUB_HIDDEN_TIMEOUT_QUIET=true
 GRUB_TIMEOUT=10
 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 #GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
 GRUB_CMDLINE_LINUX_DEFAULT="quiet text"
 GRUB_CMDLINE_LINUX=""

- sudo update-grub
- reboot

*** putty で bash の color_shell(色付け)を有効にする方法 [#oec0b51c]
- [接続]-[データ]で端末名を xterm → xterm-256color に変更する
- このメニューは端末起動前でないと表示されない
- &ref(256color.jpg);
- ちなみに Font は Consolas 14pt がきれい

*** bashrc のカスタマイズ(プロンプト関係) [#k6d4e2b1]
ー &ref(bashrc); <- .bashrc にリネームして使う
- /root にもこの bashrc をコピーする(sudo 時に $HOME(=/root) の下に .bashrc が無いと実行されない)
 if [ "$color_prompt" = yes ]; then
 	if [ $UID -eq 0 ]; then
 		PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\][AWS (sudo)]\[\033[01;32m\]\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
 	else
 		PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\][AWS]\[\033[01;32m\] \u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
 	fi
 else
 	if [ $UID -eq 0 ]; then
 		PS1='${debian_chroot:+($debian_chroot)}[AWS (sudo)]:\w\$ '
 	else
 		PS1='${debian_chroot:+($debian_chroot)}[AWS] \u:\w\$ '
 	fi
 fi
 unset color_prompt force_color_prompt

*** Libre Office Impress で PDF 作成時にアニメーションを展開する Addon [#s2a9bb83]
- &ref(ExpandAnimations-0.4.oxt);
-- このファイルを Libre Office Impress で開く → 拡張機能のインストールを実行
-- Libreoffice [ツール]ー[アドオン]ー[Expand Animation] を実行
→ これで アニメーションを展開した元ファイルを自動生成し、更に PDF まで作成する。(オリジナルのファイルには影響しない)

*** 半角/全角キーの無効化キーマップ [#ncf3cea6]
- vi 操作中にご入力で日本語入力になるのを回避するためのキーマップ変更
- [変換]で IME有効化、 [無変換] で IME 無効化する設定
- キーマップファイルは Mozc プロパティのツール から変更できる

-- 変更後キーマップファイル &ref(keymap_disable_HankakuZenkaku.txt);
-- オリジナルキーマップファイル &ref(keymap_default.txt);

*** Ubuntu 18.04 Natilus (File Manager) で Tree View を利用できるようにする [#xd3af4ce]
- dconf-editor をインストールする
- <org>.<gnome>.<nautilus.list-view>, and here a check-box option use-tree-view
- &ref(dconf.jpg);

*** Thinkpad E450 Trackpoint チューニング [#s8f59c22]

 munakata@muna-E450:/sys/devices/platform$ xinput 
 ⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
 ⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
 ⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad        	id=10	[slave  pointer  (2)]
 ⎜   ↳ AlpsPS/2 ALPS DualPoint Stick           	id=11	[slave  pointer  (2)]  <----------------------
 ⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
     ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
     ↳ Power Button                            	id=6	[slave  keyboard (3)]
     ↳ Video Bus                               	id=7	[slave  keyboard (3)]
     ↳ Integrated Camera: Integrated C         	id=8	[slave  keyboard (3)]
     ↳ AT Translated Set 2 keyboard            	id=9	[slave  keyboard (3)]
     ↳ ThinkPad Extra Buttons                  	id=12	[slave  keyboard (3)]

 munakata@muna-E450:/sys/devices/platform$ xinput list-props "AlpsPS/2 ALPS DualPoint Stick"
 Device 'AlpsPS/2 ALPS DualPoint Stick':
 	Device Enabled (142):	1
 	Coordinate Transformation Matrix (144):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
 	libinput Natural Scrolling Enabled (288):	0 
 	libinput Natural Scrolling Enabled Default (289):	0
 	libinput Scroll Methods Available (292):	0, 0, 1
 	libinput Scroll Method Enabled (293):	0, 0, 1
 	libinput Scroll Method Enabled Default (294):	0, 0, 1
 	libinput Button Scrolling Button (306):	2
 	libinput Button Scrolling Button Default (307):	2
 	libinput Middle Emulation Enabled (298):	0
 	libinput Middle Emulation Enabled Default (299):	0
 	libinput Accel Speed (300):	0.798561   <---------------------------------------------------
 	libinput Accel Speed Default (301):	0.000000  <--------------------------------------------
 	libinput Accel Profiles Available (308):	1, 1
 	libinput Accel Profile Enabled (309):	1, 0
 	libinput Accel Profile Enabled Default (310):	1, 0
 	libinput Left Handed Enabled (302):	0
 	libinput Left Handed Enabled Default (303):	0
 	libinput Send Events Modes Available (265):	1, 0
 	libinput Send Events Mode Enabled (266):	0, 0
 	libinput Send Events Mode Enabled Default (267):	0, 0
 	Device Node (268):	"/dev/input/event4"
 	Device Product ID (269):	2, 8
 	libinput Drag Lock Buttons (304):	<no items>
 	libinput Horizontal Scroll Enabled (305):	1



- [[erratic behaviour of trackpoint on thinkpad t420s [UBUNTU 18.04]:https://askubuntu.com/questions/1029119/erratic-behaviour-of-trackpoint-on-thinkpad-t420s-ubuntu-18-04]]

*** ファイル名の一部分を一括変換(Ubuntu での rename コマンドの利用) [#wff8be8d]
- ubuntu だけ rename の構文が異なる

 rename "s/[変更したい部分,変更前]/[変更後の名前]/;" [対象ファイル]

*** ディスク一覧表示で loop デバイス等を表示しない [#uab3e6da]
- lsblk -e 7
 munakata@mvc:~$  lsblk -e 7
 NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
 sda           8:0    0   7.3T  0 disk
 ├─sda1        8:1    0   7.3T  0 part
 │ └─md0       9:0    0   7.3T  0 raid1 /mnt/raid_vol
 └─sda2        8:2    0  1007K  0 part
 sdb           8:16   0   7.3T  0 disk
 ├─sdb1        8:17   0   7.3T  0 part
 │ └─md0       9:0    0   7.3T  0 raid1 /mnt/raid_vol
 └─sdb2        8:18   0  1007K  0 part
 sdc           8:32   0   7.3T  0 disk
 ├─sdc1        8:33   0   7.3T  0 part  /mnt/dtv_h264
 └─sdc2        8:34   0  1004K  0 part
 sdd           8:48   0   2.7T  0 disk
 ├─sdd1        8:49   0   2.7T  0 part  /mnt/dtv_recipe
 └─sdd2        8:50   0  1007K  0 part
 sde           8:64   1   3.7T  0 disk
 ├─sde1        8:65   1   3.7T  0 part  /mnt/dtv_slave
 └─sde2        8:66   1  1007K  0 part
 sdf           8:80   1   7.3T  0 disk
 ├─sdf1        8:81   1   7.3T  0 part  /mnt/dtv_h264B
 └─sdf2        8:82   1  1007K  0 part
 sdg           8:96   1   3.7T  0 disk
 ├─sdg1        8:97   1   3.7T  0 part  /mnt/dtv_recover
 └─sdg2        8:98   1  1007K  0 part
 nvme0n1     259:0    0 232.9G  0 disk
 ├─nvme0n1p1 259:1    0   218G  0 part  /
 ├─nvme0n1p2 259:2    0     1K  0 part
 └─nvme0n1p5 259:3    0    15G  0 part

- df -t ext4
 munakata@mvc:~$ df -t ext4
 Filesystem      1K-blocks       Used  Available Use% Mounted on
 /dev/nvme0n1p1  224824828   10101216  203280108   5% /
 /dev/sdd1      2884152536  879263216 1858359684  33% /mnt/dtv_recipe
 /dev/sdc1      7752326436 4828065860 2533542932  66% /mnt/dtv_h264
 /dev/sdf1      7751408932 3309782296 4050908992  45% /mnt/dtv_h264B
 /dev/sde1      3845577736 1340366468 2309844052  37% /mnt/dtv_slave
 /dev/sdg1      3844640564 2819798184  829475120  78% /mnt/dtv_recover
 /dev/md0       7751235316 3215359744 4145164516  44% /mnt/raid_vol

- df -x squashfs -x tmpfs -x devtmpfs
 munakata@mvc:~$ df -x squashfs -x tmpfs -x devtmpfs
 Filesystem      1K-blocks       Used  Available Use% Mounted on
 /dev/nvme0n1p1  224824828   10101204  203280120   5% /
 /dev/sdd1      2884152536  879572224 1858050676  33% /mnt/dtv_recipe
 /dev/sdc1      7752326436 4828065860 2533542932  66% /mnt/dtv_h264
 /dev/sdf1      7751408932 3309782296 4050908992  45% /mnt/dtv_h264B
 /dev/sde1      3845577736 1340366468 2309844052  37% /mnt/dtv_slave
 /dev/sdg1      3844640564 2819798184  829475120  78% /mnt/dtv_recover
 /dev/md0       7751235316 3215359816 4145164444  44% /mnt/raid_vol

*** Ubuntu パスワード再設定(忘れた時 → リカバリーモードでログインし、rootプロンプト起動) [#z5bc39e8]
+ BIOS起動直後にShiftキー連打
+ GRUBメニューが表示されたら &color(red){Advanced option for Ubuntu}; → (recovery mode) と末尾に書かれているイメージを選択してEnterキーで起動
+ リカバリーメニューが表示されるので root を選択するとシングルユーザーモード(root権限)のシェルが起動
+ shell で以下を実行 
 # mount -o remount,rw / # ファイルシステム全体を読み書き可でマウントし直す
 # pwconv # /etc/passwdと/etc/shadowの整合性を取るようにする
 # passwd user # userのパスワードを変更する対話モードに移る
+ 再起動して通常モードでログイン
 # shutdown -r now

*** [[HW 情報の表示(HW プロファイラー):https://news.mynavi.jp/article/20190917-895254/]] [#u6ea440c]
|コマンド|内容|h
|hwinfo|ハードウェア情報をフル表示|
|lshw|ハードウェア情報をフル表示|
|inxi -Fxz|ハードウェア情報を表示|
|hwinfo --short|ハードウェア情報を表示|
|lshw -short|ハードウェア情報を表示|
|lscpu|CPU情報を表示|
|lshw -C cpu|CPU情報を表示|
|dmidecode -t memory|メモリ情報を表示|
|lshw -short -C memory|メモリ情報を表示|
|lspci | grep -i vga|VGA情報を表示|
|lspci -v -s|デバイス番号	指定したデバイスの情報表示|
|free -m|現在のメモリ使用状況を表示|
|top|現在のメモリ使用状況を表示|
|lshw -short -C disk|ディスク情報を表示|
|hdparm -i|デバイスファイル	ディスク情報を表示|
|lsblk|ディスク情報を表示|
|fdisk -l|ディスク情報を表示|
|blkid|ディスク情報を表示|
|df|マウント情報を表示|
|lsusb|USB情報を表示|
|lspci|PCI情報を表示|
|lshw -C network|ネットワーク情報を表示|
|ifconfig -a|ネットワーク情報を表示|
|ip link show|ネットワーク情報を表示|
|netstat -i|ネットワーク情報を表示|
|ip route|ルーティング情報を表示|
|netstat -r|ルーティング情報を表示|
|dmidecode -t bios|BIOS/UEFI情報を表示|

*** apt 実行時に GPG キーエラーが出たとき → エラーとなった公開鍵を取得する [#ue7c15f5]
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys (エラーとなった公開鍵)
 無視:16 https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 Release.gpg
 パッケージリストを読み込んでいます... 完了                         
 W: GPG エラー: https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 Release: 
 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 68818C72E52529D4
 E: リポジトリ https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 Release は署名されていません。
 N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
 N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
 
 [KGB] munakata:~$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68818C72E52529D4
 Executing: /tmp/apt-key-gpghome.dQV3TadTUX/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 68818C72E52529D4
 gpg: 鍵68818C72E52529D4: 公開鍵"MongoDB 4.0 Release Signing Key <packaging@mongodb.com>"をインポートしました
 gpg: 処理数の合計: 1
 gpg:               インポート: 1

*** [[Linuxカーネルビルド大全:https://qiita.com/progrunner17/items/d2ab0a85b3881a4b7ed8]] [#e4a449d7]

*** [[マザーボード情報確認(dmidecode):https://orebibou.com/ja/home/201706/20170626_001/]] [#o05f8761]
- dmidecode -t BIOS
- dmidecode -t System
- dmidecode -t BaseBoard

*** Linux command line で Markdown を見る方法 [[mdless:https://snapcraft.io/install/mdless/ubuntu]] [#m946f12f]
- Ruby で書かれた Markdown ビューワー 
- snap でインストール可能

*** Ubuntu でスクリーンキャスト(画面の録画) [#ue3b8a20]
- [CTRL] + [SHIFT] + [ALT] + [R] で録画開始
- 再度 [CTRL] + [SHIFT] + [ALT] + [R] で録画終了
- webm フォーマットで動画ファイルが作成され Videos または home フォルダーに保存される
- デフォルトの録画時間は 10秒で、下記の設定で時間制約をキャンセル(マニュアルで停止するまで録画継続)できる
 gsettings set org.gnome.settings-daemon.plugins.media-keys max-screencast-length 0
- この方法では、画面キャストは可能だが &color(red){音声は記録されない}; ことが判明。
- 代替手段として simplescreenrecorder というアプリを利用することが可能
 [local] munakata:~$ sudo apt install simplescreenrecorder


*** gedit で画面を左右分割 [#g8619995]
- [CTRL] + [ALT] + N

*** Ubuntu 20.04 でスケジュール Notify のポップアップを無効化する[#b00d2947]
- [[How to stop evolution-alarm-notify:https://askubuntu.com/questions/1317784/how-to-stop-evolution-alarm-notify]]

 munakata@muna--E14G3:~$ cp /etc/xdg/autostart/org.gnome.Evolution-alarm-notify.desktop ~/.config/autostart/
 munakata@muna--E14G3:~$ sed -i "s/NoDisplay=true/NoDisplay=false/" ~/.config/autostart/org.gnome.Evolution-alarm-notify.desktop
 
 munakata@muna--E14G3:~$ gnome-session-properties 
 
 (gnome-session-properties:201684): Gtk-WARNING **: 09:49:02.072: gtk_window_set_titlebar() called on a realized window
 
 munakata@muna--E14G3:~$ systemctl --user mask evolution-addressbook-factory.service
 Created symlink /home/munakata/.config/systemd/user/evolution-addressbook-factory.service → /dev/null.
 
 munakata@muna--E14G3:~$ systemctl --user mask evolution-calendar-factory.service
 Created symlink /home/munakata/.config/systemd/user/evolution-calendar-factory.service → /dev/null.
 
 munakata@muna--E14G3:~$ systemctl --user mask evolution-source-registry.service
 Created symlink /home/munakata/.config/systemd/user/evolution-source-registry.service → /dev/null.
 
 munakata@muna--E14G3:~$ systemctl --user mask evolution-user-prompter.service
 Created symlink /home/munakata/.config/systemd/user/evolution-user-prompter.service → /dev/null.

*** ゲストOS で ping が使えるようにする [#yb184942]
- sudo apt install iputils-ping net-tools

*** ゲストOS とホストOS 間でコピペが使えるようにする [#j9222d11]
- sudo apt install spice-vdagent

*** [[Ubuntu のマウス中央ボタンでのペーストを無効にする:https://plaza.rakuten.co.jp/spectra/diary/201909200000/]] [#oc4813d0]
- $ sudo apt-get install xbindkeys xsel xdotool
- $ ~/.xbindkeysrcに以下の二行を記入して保存
-- "echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
-- b:2 + Release
- $ xbindkeys -p
- ~/.xsessionrc
-- xbindkeys -p

*** [[GNOME shell extentions:]] のインストール [#c2661c79]
- sudo apt install gnome-shell-extension-prefs

*** [[BIZ UD フォント(モリサワ、無償版):https://fonts.google.com/specimen/BIZ+UDGothic]] [#g8b820fc]

*** [[Dropbox CLI (for Ubuntu-server):https://www.dropbox.com/ja/install?os=linux]] [#l9142299]
- Dropbox デーモンのインストール
 cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
- 上記コマンドの実行で新規作成される .dropbox-dist フォルダで ./dropboxd を実行
 [KGB2] munakata:~/.dropbox-dist$ ./dropboxd
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._openssl.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._padding.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/apex._apex.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_linux.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_posix.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/tornado.speedups.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/wrapt._wrappers.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._openssl.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._padding.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/apex._apex.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_linux.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_posix.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/tornado.speedups.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/wrapt._wrappers.cpython-38-x86_64-linux-gnu.so'
  Dropbox ...
 https://www.dropbox.com/cli_link_nonce?nonce=86e1ae227f3b024ad4ccc3eba8a1b062 
- 最後の行(は、繰り返し表示される)の URL をブラウザーに入力すると、Dropbox アカウントとのリンクをするか確認される。
- リンクが成功したら、上記のデーモンは [CTRL+C] で強制終了してよい
- Dropbox CLI (実態は python スクリプト)をダウンロード
 [KGB2] munakata:~/Downloads$ wget -O dropbox.py https://www.dropbox.com/download?dl=packages/dropbox.py
- CLI の実行 ''python3 dropbox.py コマンド''
 [KGB2] munakata:~/Downloads$ python3 dropbox.py 
 Dropbox command-line interface
 
 commands:
 
 Note: use dropbox help <command> to view usage for a specific command.
 
  autostart    automatically start Dropbox at login
  exclude      ignores/excludes a directory from syncing
  filestatus   get current sync status of one or more files
  help         provide help
  lansync      enables or disables LAN sync
  ls           list directory contents with current sync status
  proxy        set proxy settings for Dropbox
  puburl       get public url of a file in your Dropbox's public folder
  running      return whether Dropbox is running
  sharelink    get a shared link for a file in your Dropbox
  start        start dropboxd
  status       get current status of the dropboxd
  stop         stop dropboxd
  throttle     set bandwidth limits for Dropbox
  update       download latest version of Dropbox
  version      print version information for Dropbox
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py status
 Dropbox isn't running!
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py lansync
 Dropbox isn't running!
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py start
 Starting Dropbox...dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._openssl.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._padding.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/apex._apex.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_linux.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_posix.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/tornado.speedups.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/wrapt._wrappers.cpython-38-x86_64-linux-gnu.so'
 Dropbox isn't running!
 Done!
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py lansync n
 [KGB2] munakata:~/Downloads$ python3 dropbox.py update
 
 Dropbox is the easiest way to share and store your files online. Want to learn more? Head to https://www.dropbox.com/
 
 In order to use Dropbox, you must download the proprietary daemon. [y/n] y
 Downloading Dropbox... 100%
 Unpacking Dropbox... 100%dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64- 168.4.4802/cryptography.hazmat.bindings._openssl.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/cryptography.hazmat.bindings._padding.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/apex._apex.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_linux.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/psutil._psutil_posix.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/tornado.speedups.cpython-38-x86_64-linux-gnu.so'
 dropbox: load fq extension '/raid_vol/home/munakata/.dropbox-dist/dropbox-lnx.x86_64-168.4.4802/wrapt._wrappers.cpython-38-x86_64-linux-gnu.so'
 success!
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py status 
 開始中...
 To link this computer to a Dropbox account, visit the following url:
 https://www.dropbox.com/cli_link_nonce?nonce=c03c0bfb6a8021c89ab900ed32d44c21
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py status 
 同期中(39,682 件のファイル • 17 分)
 39,682 件のファイルをダウンロード中 (0.0KB/秒、17 分)
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py autostart y
 
 [KGB2] munakata:~/Downloads$ python3 dropbox.py status
 同期中(35,890 件のファイル • 1 時間)
 35,890 件のファイルをダウンロード中 (0.0KB/秒、1 時間)

*** Thinkpad E14 で vi 編集中に日本語入力ができなくなる [#t09b0033]
- 一旦 vi 終了し Terminal で [変換] キーを押して Mozc をロードする

*** Ubuntu 22.04 で突然ネットワークが使えなくなった [#jf38cbaf]
- 物理的なネットワークは正常(リンクアップしている)
- 物理的なネットワークカードは認識されている(が、lshw で見ると ''UNCLAIMED'' になっている)
 munakata@muna-Linux:~$ lspci | grep net
 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 11)
 
 munakata@muna-Linux:~$ sudo lshw
 (snip)
 *-network UNCLAIMED
       詳細: Ethernet controller
       製品: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       ベンダー: Realtek Semiconductor Co., Ltd.
       物理ID: 0
       バス情報: pci@0000:03:00.0
       バージョン: 11
       幅: 64 bits
       クロック: 33MHz
       性能: pm msi pciexpress msix vpd bus_master cap_list
       設定: latency=0
       リソース: IOポート:d000(サイズ=256) メモリー:f7100000-f7100fff メモリー:f2100000-f2103fff
- しかし、ネットワークインターフェースが活性化されていない(= enp3s0 が見えない)
 munakata@muna-Linux:~$ ip a
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host 
        valid_lft forever preferred_lft forever
 2: nm-bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
     link/ether da:8f:a5:ad:aa:0c brd ff:ff:ff:ff:ff:ff
 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:e3:40:81 brd ff:ff:ff:ff:ff:ff

- システムSWの更新で、必要なドライバーがインストールされなかった(消された)のが原因
- 現在のシステム環境を確認
 munakata@muna-Linux:~$ uname -r
 6.2.0-26-generic
- ''linux-modules-extra-$(uname -r)'' パッケージを ''https://packages.ubuntu.com/jammy/kernel/'' からダウンロードして再インストールすれば解決する
-- https://packages.ubuntu.com/jammy/kernel/linux-modules-extra-6.2.0-26-generic
- Bootable Ubuntu image (usb) でシステムを起動(すればネットワークは利用可能)
- ブラウザーから上記ファイル(linux-modules-extra-6.2.0-26-generic_6.2.0-26.26~22.04.1_amd64.deb)をダウンロード
- ホストマシン上のディスクをマウントして、書き込み可能エリアにダウンロードしたファイルをコピー
- 再起動後に、上記ファイルをインストールし、再起動
 munakata@muna-Linux:~$ sudo apt install ./linux-modules-extra-6.2.0-26-generic_6.2.0-26.26~22.04.1_amd64.deb 
- [[参考ページ:https://askubuntu.com/questions/1437477/22-04-1-network-unclaimed]]

*** Ubuntu 22.04 以降の画面キャプチャの方法 [#i3eb0e09]
- shutter の領域を指定してキャプチャ機能が使えなくなった
- そのかわり [PrtSc] キーを押すと OS にバンドルされた画面キャプチャ機能(領域指定方式)が起動する
- キャプチャ画面は Picture ホルダーの スクリーンショット というディレクトリに保存される(名前を英語にしたいが)

*** Ubuntu ホスト名の確認 [#e656109c]
- 以前は hostname コマンドを利用していたが、''hostnamectl'' でより詳細な表示がされる
-- KGB2 サーバー
 [KGB2] munakata:~$ hostnamectl 
  Static hostname: kgb2
        Icon name: computer-desktop
          Chassis: desktop
       Machine ID: ad37e2bbaa134fa18321a14b7b21ae30
          Boot ID: 4359753f434d4360930bd9ab267e556c
 Operating System: Ubuntu 22.04.3 LTS              
           Kernel: Linux 5.15.0-92-generic
     Architecture: x86-64
  Hardware Vendor: BIOSTAR Group
   Hardware Model: B550MXC PRO
-- 会社 Linux Desktop
 munakata@muna-Linux:~$ hostnamectl 
  Static hostname: muna-Linux
        Icon name: computer-desktop
          Chassis: desktop
       Machine ID: 30aea48dddb743419e553e95758bddad
          Boot ID: ced5ef1d2556421185469de6f335caf9
 Operating System: Ubuntu 22.04.3 LTS              
           Kernel: Linux 6.5.0-14-generic
     Architecture: x86-64

*** Ubuntu 22.04 で exFAT を利用するには ''exfat-utils'' では無く ''exfatprogs'' をインストールする必要がある [#g9680ff3]
 [KGB2] munakata:~$ sudo apt install exfat-fuse exfatprogs -y

*** [[Ununtu 22.04 で「Press 'Ctrl'+'C'” to cancel filesystem checks in progress」が出て進まない:https://askubuntu.com/questions/1332606/showing-press-ctrlc-to-cancel-filesystem-checks-in-progress-someone-know]] [#a131b37c]
- The key observation here is that normally, there's a loading spinner on this screen. Once the loading spinner disappears (as on the screenshot), we're supposed to launch into the graphical desktop. If this fails, then you'll also get stuck on this screen, even though ''it has nothing to do with fsck''.
- In my case (and I expect this to be not uncommon), this was ''caused by the default nouveau nvidia drivers not supporting my videocard'' (4080 super, it's likely to affect other newish cards too).

*** Ubuntu Server イメージでシステム修復 [#le6197e8]
- Ubuntu Server ISO で起動した場合、Tryモード(インストールせずに利用)に入るには、単純に TTY を別に開けばよい。
-- インストーラープログラム実行中の任意のタイミングで Ctrl+Alt+(F2-F6) を押して、別の TTY を開いてシェルを実行できる。

*** Ubuntu で sudo が使えなくなった場合の回避策 [#ja730a9b]
- (例えば visudo の編集に失敗するなどして)sudo が使えなくなって詰んだ場合の回避方法
-- &color(red){電源 ON 直後に [ESC] キーを連打して GRUB メニューを表示}; させる
-- recovery モードを選択し、&color(red){root を選ぶ};(と、root 権限で実行可能な shell が起動する)
-- shell で必要な操作を実行し reboot する。

*** USB 外付け HDD を含むシステムでのスクリプト実行の問題 [#y34079bb]
- USB 接続のHDDを接続しない状態でバックアップなどのスクリプトを実行すると
-- &color(red){実際の USB HDD ではなく、そのマウントポイントにファイルが書き込まれる};
-- 正常にマウントできた場合には、マウントポイント上のファイルは見えなくなる(が、ディスク領域は消費されている)
-- 一度アンマウントして、マウントポイント上に誤って書かれたファイルを削除する必要がある
-- バックアップスクリプトで、実際にファイルがマウントされているかをチェックするロジックを追加する方が安全
--- ChatGPT のスクリプト案(他にも色々方法の提案あり)
 #!/bin/bash
 
 MOUNT_POINT="/path/to/mount/point"
 
 if grep -qs "$MOUNT_POINT" /proc/mounts; then
   echo "External HDD is mounted."
 else
   echo "External HDD is not mounted. Exiting script."
   exit 1
 fi
--- &ref(backup_auto.sh);

*** Ubuntu Firmware 管理 (fwupdmgr) [#p92bd018]
-- ファームウエアアップデートの実行(可能なもの全て)
 [KGB2] munakata:~$ sudo fwupdmgr update
 Devices with no available firmware updates:
  • CT500P1SSD8
 No updatable devices

-- コマンド使用方法
 [KGB2] munakata:~$ sudo fwupdmgr --help
 Usage:
   fwupdmgr [OPTION…]
 
   activate [DEVICE-ID|GUID]         Activate devices
   block-firmware [CHECKSUM]         Blocks a specific firmware from being installed
   clear-results DEVICE-ID|GUID      Clears the results from the last update
   device-emulate [FILENAME1] [FILENAME2]
                                     Emulate a device using a JSON manifest
   device-test [FILENAME1] [FILENAME2]
                                     Test a device using a JSON manifest
   device-wait GUID|DEVICE-ID        Wait for a device to appear
   disable-remote REMOTE-ID          Disables a given remote
   downgrade [DEVICE-ID|GUID]        Downgrades the firmware on a device
   download LOCATION                 Download a file
   emulation-load FILENAME           Load device emulation data
   emulation-save FILENAME           Save device emulation data
   emulation-tag [DEVICE-ID|GUID]    Adds devices to watch for future emulation
   emulation-untag [DEVICE-ID|GUID]  Removes devices to watch for future emulation
   enable-remote REMOTE-ID           Enables a given remote
   get-approved-firmware             Gets the list of approved firmware
   get-bios-setting [SETTING1] [SETTING2] [--no-authenticate]
                                     get-bios-settingsの別名
   get-bios-settings [SETTING1] [SETTING2] [--no-authenticate]
                                     Retrieve BIOS settings.  If no arguments are passed all settings are returned
   get-blocked-firmware              Gets the list of blocked firmware
   get-details FILE                  Gets details about a firmware file
   get-devices                       Get all devices that support firmware updates
   get-history                       Show history of firmware updates
   get-plugins                       Get all enabled plugins registered with the system
   get-releases [DEVICE-ID|GUID]     Gets the releases for a device
   get-remotes                       Gets the configured remotes
   get-results DEVICE-ID|GUID        Gets the results from the last update
   get-topology                      get-devicesの別名
   get-updates [DEVICE-ID|GUID]      Gets the list of updates for connected hardware
   get-upgrades [DEVICE-ID|GUID]     get-updatesの別名
   inhibit [REASON]                  Inhibit the system to prevent upgrades
   install [DEVICE-ID|GUID] [VERSION]
                                     Install a specific firmware file on all devices that match
   local-install FILE [DEVICE-ID|GUID]
                                     Install a firmware file in cabinet format on this hardware
   modify-config KEY,VALUE           Modifies a daemon configuration value
   modify-remote REMOTE-ID KEY VALUE
                                     Modifies a given remote
   quit                              Asks the daemon to quit
   refresh [FILE FILE_SIG REMOTE-ID]
                                     Refresh metadata from remote server
   reinstall [DEVICE-ID|GUID]        Reinstall current firmware on the device
   report-devices                    Upload the list of updatable devices to a remote server
   report-export                     Export firmware history for manual upload
   report-history                    Share firmware history with the developers
   security                          Gets the host security attributes
   security-fix [APPSTREAM_ID]       Fix a specific host security attribute
   security-undo [APPSTREAM_ID]      Undo the host security attribute fix
   set-approved-firmware FILENAME|CHECKSUM1[,CHECKSUM2][,CHECKSUM3]
                                     Sets the list of approved firmware
   set-bios-setting SETTING1 VALUE1 [SETTING2] [VALUE2]
                                     Sets one or more BIOS settings
   switch-branch [DEVICE-ID|GUID] [BRANCH]
                                     Switch the firmware branch on the device
   sync                              Sync firmware versions to the chosen configuration
   sync-bkc                          syncの別名
   unblock-firmware [CHECKSUM]       Unblocks a specific firmware from being installed
   uninhibit INHIBIT-ID              Uninhibit the system to allow upgrades
   unlock DEVICE-ID|GUID             Unlocks the device for firmware access
   update [DEVICE-ID|GUID]           Updates all specified devices to latest firmware version, or all devices if unspecified
   upgrade [DEVICE-ID|GUID]          updateの別名
   verify [DEVICE-ID|GUID]           Checks cryptographic hash matches firmware
   verify-update [DEVICE-ID|GUID]    Update the stored cryptographic hash with current ROM contents
 
 Help Options:
   -h, --help                Show help options
 
 Application Options:
   -v, --verbose             追加のデバッグ情報を表示します
   --version                 Show client and daemon versions
   --download-retries        Set the download retries for transient errors
   --offline                 Schedule installation for next reboot when possible
   --allow-reinstall         Allow reinstalling existing firmware versions
   --allow-older             Allow downgrading firmware versions
   --allow-branch-switch     Allow switching firmware branch
   --force                   Force the action by relaxing some runtime checks
   -y, --assume-yes          Answer yes to all questions
   --sign                    Sign the uploaded data with the client certificate
   --no-unreported-check     Do not check for unreported history
   --no-metadata-check       Do not check for old metadata
   --no-remote-check         Do not check if download remotes should be enabled
   --no-reboot-check         Do not check or prompt for reboot after update
   --no-safety-check         Do not perform device safety checks
   --no-device-prompt        Do not prompt for devices
   --no-history              Do not write to the history database
   --show-all                Show all results
   --disable-ssl-strict      Ignore SSL strict checks when downloading files
   --p2p                     Only use peer-to-peer networking when downloading files
   --filter                  Filter with a set of device flags using a ~ prefix to exclude, e.g. 'internal,~needs-reboot'
   --filter-release          Filter with a set of release flags using a ~ prefix to exclude, e.g. 'trusted-release,~trusted-metadata'
   --json                    Output in JSON format
   --no-security-fix         Do not prompt to fix security issues
   --no-authenticate         Don't prompt for authentication (less details may be shown)
 
 This tool allows an administrator to query and control the fwupd daemon, allowing them to perform actions such as installing or downgrading firmware.

-- 管理対象デバイスの表示
 [KGB2] munakata:~$ sudo fwupdmgr get-devices
 BIOSTAR Group B550MXC PRO
 │
 ├─AMD Ryzen 5 5600G with Radeon Graphics:
 │ │   Device ID:          4bde70ba4e39b28f9eab1628f9dd6e6244c03027
 │ │   Current version:    0x0a50000d
 │ │   Vendor:             Advanced Micro Devices, Inc.
 │ │   GUIDs:              79759cdc-94db-5098-be7b-eb02521fbbec ← CPUID\PRO_0&FAM_19&MOD_50
 │ │                       20b595b0-5892-5870-8e4c-688133ad6e34 ← CPUID\PRO_0&FAM_19&MOD_50&STP_0
 │ │   Device Flags:       • Internal device
 │ │
 │ └─Secure Processor:
 │       Device ID:        c54ab0237d7a8db8c717b68e0be78e4374a2a079
 │       Current version:  00.11.02.7b
 │       Bootloader Version:00.11.02.7b
 │       Vendor:           Advanced Micro Devices, Inc. (PCI:0x1022)
 │       GUIDs:            0e8dc554-a0a2-51fb-b439-1eb72b14ec38 ← PCI\VEN_1022&DEV_15DF
 │                         bd5a5081-60b8-57cb-91d6-78e850123204 ← PCI\VEN_1022&DEV_15DF&SUBSYS_102215DF
 │       Device Flags:     • Internal device
 │
 ├─CT500P1SSD8:
 │     Device ID:          8e92eda1ab953dd9f27d11cd320c36e5d1127030
 │     Summary:            NVM Express solid state drive
 │     Current version:    P3CR021
 │     Vendor:             Micron/Crucial Technology (NVME:0xC0A9)
 │     Serial Number:      2127300AAAB9
 │     GUIDs:              43fd42e8-36d1-5486-9b96-cbac3cef2fbe ← NVME\VEN_C0A9&DEV_5403
 │                         cad63970-876b-50ef-8576-36ffa129c1fa ← NVME\VEN_C0A9&DEV_5403&SUBSYS_C0A91100
 │                         375730e6-e87b-5a4c-9ee3-034f2d6cf2e2 ← CT500P1SSD8
 │     Device Flags:       • Internal device
 │                         • Updatable
 │                         • System requires external power source
 │                         • Needs a reboot after installation
 │                         • Device is usable for the duration of the update
 │
 ├─Cezanne [Radeon Vega Series / Radeon Vega Mobile Series]:
 │ │   Device ID:          f0c42c4d354e719e9d5cd3366ebe367cbd98e2bf
 │ │   Summary:            Cezanne Generic VBIOS
 │ │   Current version:    017.010.000.030.000000
 │ │   Vendor:             Advanced Micro Devices, Inc. [AMD/ATI] (PCI:0x1002, PCI:0x1022)
 │ │   GUID:               abf6849d-1bc5-5941-80f8-babdaf0e46fc ← AMD\13-CEZANNE-019
 │ │   Device Flags:       • Cryptographic hash verification is available
 │ │
 ├─Mass storage controller:
 │     Device ID:          08740947f5235290dc47990eb8e3468dad7fe6b8
 │     Current version:    02
 │     Vendor:             ASMedia Technology Inc. (PCI:0x1B21, PCI:0x1022)
 │     GUIDs:              210819f3-da74-587f-a857-8d4e38c8af93 ← PCI\VEN_1B21&DEV_1064
 │                         08903ce1-1a19-53cd-b343-239f3b7182dc ← PCI\VEN_1B21&DEV_1064&SUBSYS_21162116
 │                         340dec82-fc69-5ccc-8971-dfe6ffc1f4e5 ← PCI\VEN_1022&DEV_43EA
 │                         e2758d1c-dbd1-55fe-a571-3596a56e547f ← PCI\VEN_1022&DEV_43EA&SUBSYS_1B213308
 │     Device Flags:       • Internal device
 │                         • Cryptographic hash verification is available
 │
 └─TPM:
       Device ID:          c6a80ac3a22083423992a3cb15018989f37834d6
       Summary:            TPM 2.0 Device
       Current version:    3.84.0.5
       Vendor:             Advanced Micro Devices, Inc. (TPM:AMD)
       GUIDs:              9305de1c-1e12-5665-81c4-37f8e51219b8 ← TPM\VEN_AMD&DEV_0001
                           78a291ae-b499-5b0f-8f1d-74e1fefd0b1c ← TPM\VEN_AMD&MOD_AMD
                           65a3fced-b423-563f-8098-bf5c329fc063 ← TPM\VEN_AMD&DEV_0001&VER_2.0
                           5e704f0d-83cb-5364-8384-f46d725a23b8 ← TPM\VEN_AMD&MOD_AMD&VER_2.0
       Device Flags:       • Internal device
                           • System requires external power source
                           • Needs a reboot after installation
                           • Device can recover flash failures
                           • Full disk encryption secrets may be invalidated when updating
                           • Signed Payload

*** fail2ban [#dd24732f]
- 設定
-- インストール
 sudo apt update
 sudo apt install fail2ban
-- 動作確認(インストール後)
 sudo systemctl status fail2ban
active (running) になっていればOKです。
-- SSH 用の保護設定(jail.local)
設定ファイルをコピーしてカスタマイズします:
 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
 sudo vi /etc/fail2ban/jail.local
以下のような項目を編集・確認します([sshd] セクション):
 [sshd]
 enabled = true
 port    = ssh
 filter  = sshd
 logpath = /var/log/auth.log
 maxretry = 3
 bantime  = 3600
 findtime = 600
|項目|説明|h
|enabled|SSH 用保護を有効に|
|port|SSH ポート(変更してる場合は合わせて)|
|maxretry|失敗回数(3回失敗したら)|
|bantime|BAN する秒数(3600秒 = 1時間)|
|findtime|この秒数内に maxretry 回失敗したら発動|
-- 設定反映(fail2ban 再起動)
 sudo systemctl restart fail2ban

- 動作確認
 [KGB2] munakata:~$ sudo fail2ban-client status sshd
 Status for the jail: sshd
 |- Filter
 |  |- Currently failed:	1
 |  |- Total failed:	3240
 |  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
 `- Actions
    |- Currently banned:	0
    |- Total banned:	38
    `- Banned IP lis

*** Ubuntu NotePC (Ubuntu 24.04) から kgb2 のボリューム(winshare)をマウント [#t6c9d50c]
- あらかじめサーバー側で 192.168.11.x からの NFS 接続を許可
 [KGB2] munakata:~/winshare/haicon$ sudo apt install nfs-kernel-server
 
 [KGB2] munakata:~/winshare/haicon$ sudo vi /etc/exports
 
 [KGB2] munakata:~/winshare/haicon$ cat /etc/exports
  /raid_vol/home/munakata/winshare 192.168.11.0/24(rw,sync,no_subtree_check,no_root_squash)
 
 [KGB2] munakata:~/winshare/haicon$ sudo exportfs -ra
 
 [KGB2] munakata:~/winshare/haicon$ sudo systemctl restart nfs-server.service
 
 [KGB2] munakata:~/winshare/haicon$ systemctl status nfs-server.service
 ● nfs-server.service - NFS server and services
      Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; preset: enabled)
      Active: active (exited) since Sat 2025-12-13 11:23:40 JST; 11s ago
     Process: 298135 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
     Process: 298137 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
    Main PID: 298137 (code=exited, status=0/SUCCESS)
         CPU: 9ms
 
 12月 13 11:23:40 kgb2 systemd[1]: Starting nfs-server.service - NFS server and services...
 12月 13 11:23:40 kgb2 systemd[1]: Finished nfs-server.service - NFS server and services.
 
 [KGB2] munakata:~/winshare/haicon$ exportfs -v
 /raid_vol/home/munakata/winshare
                 192.168.11.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

- クライアント側で
 munakata@muna-E14G3:sudo apt install nfs-common
  
 munakata@muna-E14G3:sudo mkdir /mnt/samba_winshare
 
 munakata@muna-E14G3:sudo mount -t nfs4 192.168.11.20:/raid_vol/home/munakata/winshare /mnt/samba_winshare

*** scp でリモートファイルをコピーする [#j3361974]

scp -P(ポート)-i(秘密鍵)user@server:file_location/name .(local point)

 munakata@muna-U2404:~$ scp -P 8722 -i ~/.ssh/office2025 munakata@kgb2.hmuna.com:auth.log.1 .
 auth.log.1                                                                                                                                            100%
 195KB   3.0MB/s   00:00    
 munakata@muna-U2404:~$

*** [[The advanced color palette editor (Pallette App):https://www.bairesdev.com/tools/color-palette-app/]] [#k5448719]

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