$ make CXXFLAGS=-Wno-deprecated-declarations-Wnoを指定すれば、その警告は無効できるので、CXXFLAGS(やCFLAGS)にそれを指定します。
なお、autotoolsで作成したMakefileに対しては上記の対応で効果がありましたが、Makefileの書き方によっては、-Wnoオプションがコンパイラに渡されるようにする必要があるかもしれません。
$ make CXXFLAGS=-Wno-deprecated-declarations-Wnoを指定すれば、その警告は無効できるので、CXXFLAGS(やCFLAGS)にそれを指定します。
この仮想マシンへのサスペンド要求は、対応する VMware Tools スクリプトが正常に実行されなかったため失敗しました。カスタム サスペンド スクリプトをこの仮想マシンで構成している場合は、スクリプトにエラーがないことを確認してください。この操作を再試行すると、スクリプト エラーは無視されます。サポート リクエストを提出してこの問題を報告することもできます。
--- /root/backup/network 2014-12-03 11:25:20.064316662 +0900 +++ /etc/vmware-tools/scripts/vmware/network 2014-12-03 11:25:28.083514028 +0900 @@ -263,7 +263,7 @@ main() { rm -f $activeList ;; suspend-vm) - TranquilizeNetworkManager + #TranquilizeNetworkManager exitCode=$? if [ $exitCode != 0 ]; then save_active_NIC_list @@ -272,7 +272,7 @@ main() { fi ;; resume-vm) - WakeNetworkManager + #WakeNetworkManager exitCode=$? if [ $exitCode != 0 ]; then # According to hfu, "/etc/init.d/networking restart" on Debian 5.0
- name: cpu_source # interval: 600 interval: 60 meters: - "cpu" sinks: - cpu_sink
(gdb) catch throw参考: http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-4.18/gdb_6.html
$ ssh target_host -R 1080:proxy:8000上記のproxyには、squidのようなHTTPプロクシが稼働しており、かつ、接続元ホストからアクセス可能なホストを指定する。もちろん、条件を満たすならlocalhostでもよい。
$ export http_proxy=http://localhost:1080 $ apt-get install coreutils
git diff --color=always | less -r
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVEそして、サービスを再起動
# service nova-compute restart
opera:config#UserPrefs例えば、タスクトレイに表示されるアイコンを非表示にするには、上記ページ中のShow Tray Iconのチェックボックスを非選択にする。
auto p1p1.40
iface p1p1.40 inet manual
up ip addr add 192.168.40.11/24 dev p1p1.40
up ip link set p1p1.40 up
ceilometer alarm-create --name cpu-util-10min-50per --meter-name cpu_util --comparison-operator ge --threshold 50 --matching-metadata resource=eb79c816-8994-4e21-a26c-51d7d19d0e45 --period 600
#SELINUX=enforcing SELINUX=disabled一時的な変更ならば、コマンドラインで以下のように入力する。
# setenforce 0
# route add -net 192.168.30.0 netmask 255.255.255.0 gw 172.16.32.11 dev eth0恒久的な設定なら、/etc/sysconfig/network-scripts/route-eth0に次のように書く。
192.168.30.0/24 via 172.16.32.11 dev eth0
DISTCC_HOSTS='localhost sv1 sv2 sv3 sv4' make -j20 CC=distcc CXX=distccautotoolsでMakefileを作ったC++プログラムの場合、以下のエラーが出る事がある。
/usr/bin/ld: main.o: undefined reference to symbol '__cxa_free_exception@@CXXABI_1.3' //usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command lineその場合は、CXXLDを明示することで回避できる。
DISTCC_HOSTS='localhost sv1 sv2 sv3 sv4' make -j20 CC=distcc CXX=distcc CXXLD=g++
--- distcc.orig 2014-09-02 09:44:05.437179718 +0900 +++ distcc 2014-09-02 09:51:15.492544164 +0900 @@ -6,7 +6,7 @@ # # STARTDISTCC="true" -STARTDISTCC="false" +STARTDISTCC="true" # # Which networks/hosts should be allowed to connect to the daemon? @@ -16,7 +16,7 @@ # # ALLOWEDNETS="127.0.0.1" -ALLOWEDNETS="127.0.0.1" +ALLOWEDNETS="0.0.0.0/0" # # Which interface should distccd listen on? @@ -24,7 +24,6 @@ # # LISTENER="127.0.0.1" -LISTENER="127.0.0.1" # # You can specify a (positive) nice level for the distcc process here
SESSION_TIMEOUT = 3600 * 24 * 365※実際は、他にも制限があるようで、上記の設定をしても数十分程度でやはりタイムアウトする。
# ip tunnel add tunne_name mode gre remote 192.168.254.11 local 192.168.254.1 ttl 255
削除
# ip tunnel del tunne_name
# ip link add gretap10 type gretap remote 192.168.254.11 local 192.168.254.1 key 10参考:物理インターフェイスがアップした後、自動的にトンネルを作る例(Ubuntu: /etc/network/interfaces)
auto eth0 iface eth0 inet static .... post-up ip link add gretap3011 type gretap remote 192.168.254.11 local 192.168.254.1 key 3011 post-up ip link set dev gretap3011 up mtu 1500 post-down ip link del name gretap3011
auto br0
iface br0 inet static
address 192.168.1.10
...
dns-nameservers 192.168.1.2
dns-search banana
dns-domain banana
> show dbs; admin (empty) ceilometer 0.203125GB local 0.078125GB > use ceilometer; switched to db ceilomete
glance image-create --name ubuntu14-14.04.1-server --disk-format=raw --container-format=bare --is-public True --copy-from https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
modprobe openvswitch modprobe kvm modprobe vhost_net modprobe nbd modprobe ip6table_filterまた、NTPサーバーをホストで動かす。各コンテナへのインストールは不要。
# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = mngbr0
あとは、公式マニュアルどおりでOK。
# Network configuration lxc.network.type = veth lxc.network.flags = up lxc.network.link = mngbr0 lxc.network.type = veth lxc.network.flags = up lxc.network.link = databr0 lxc.network.mtu = 1550 lxc.network.type = veth lxc.network.flags = up lxc.network.link = extbr0 lxc.aa_profile = unconfined次のパッケージをインストールする
# apt-get install iptables
# Network configuration lxc.network.type = veth lxc.network.flags = up lxc.network.link = mngbr0 lxc.network.type = veth lxc.network.flags = up lxc.network.link = databr0 lxc.network.mtu = 1550
--- a/tmp/nova-compute.conf +++ b/etc/init/nova-compute.conf @@ -14,7 +14,7 @@ pre-start script mkdir -p /var/lock/nova chown nova:root /var/lock/nova/ - modprobe nbd + #modprobe nbd # If libvirt-bin is installed, always wait for it to start first if status libvirt-bin; thenデバイスファイルを作成する。
# mknod /dev/kvm c 10 232 # chmod 666 /dev/kvm # mkdir -p /dev/net # mknod /dev/net/tun c 10 200
lxc.aa_profile = unconfinedこれにより、コンテナ上でmountが失敗するなどの制限が解消する。
auto mybr0 iface mybr0 inet static address 192.168.81.1 network 192.168.81.0 netmask 255.255.255.0 broadcast 192.168.81.255 bridge_ports noneなお、bridge_ports noneという行は、Bridge起動時点で、そのBridgeに所属するinterfaceが何もない場合に指定する必要がある。
iface eth0 ine manual iface mybr0 inet static <同上> bridge_ports eth0
# Network configuration (最初からエントリ) lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxcbr0 lxc.network.type = veth lxc.network.flags = up lxc.network.link = mybr0なお、これらNICのための新たなBridgeをホストに作成する方法は以下を参照。
$ nova list --all-tenantそのIDを指定してreset-stateコマンドを実行。
$ nova reset-state --active 3275980c-3142-489f-b722-fca73adb98c3
マシンが停止している場合、ハードリブートすれば、再起動する。
# apt-get install redmine libapache2-mod-passenger # gem install bundler/etc/apache2/sites-available/000-default.confのVirtualHostタグ内に次の内容を追加
<Directory /var/www/html/redmine> RailsBaseURI /redmine PassengerResolveSymlinksInDocumentRoot on </Directory>/etc/apache2/conf.d/passenger.confに次の内容を記述
RailsBaseURI /redmineリンクを作成。
ln -s /usr/share/redmine/public /var/www/html/redmine
# chmod 666 /usr/share/redmine/*必要に応じて以下のパーミッションを確認
/var/lib/dbconfig-common/sqlite3/redmine/instances/default/redmine_default
$ glance image-create --name='image name' --is-public=true --container-format=bare --disk-format=qcow2 < file.imgイメージを標準入力から受け取るので、以下のようにcurlでダウンロードしながら、それを登録することもできる。
$ curl https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img | glance image-create --name='Ubuntu Server 14.04 LTS' --is-public=true --container-format=bare --disk-format=qcow2
# /etc/init.d/neutron-server start neutron-db-check: ERROR: neutron database does not have version information. You must run the "neutron-db-manage stamp" command before starting neutron services.以下のようにするとこの問題は解決した。
# neutron-db-manage --config-file /etc/neutron/neutron.conf stamp havana No handlers could be found for logger "neutron.common.legacy" INFO [alembic.migration] Context impl MySQLImpl. INFO [alembic.migration] Will assume non-transactional DDL.
mysql> grant all privileges on foo.* to 'user'@'%';
$ git log -1 --pretty=format:"%s"
$ git diff 8044225f2 --shortstatファイル単位なら、--stat。
$ git diff 8044225f2 --stat book/src/abc.c | 74 +++++++++++++++++++++++++++++++++++++++++---- book/src/page.c | 16 +++++++++--- book/test/foo.c | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 198 insertions(+), 12 deletions(-)
$ Xephyr :1 -screen 800x600:1はXserver番号。大元のXserverのそれは通常:0なので、:1以上を指定すればよい。Xephyrを2個以上起動する場合、番号が重複しないように:2とか:3とかそれぞれに指定する。-screenオプションはなくてもいいが、サイズを指定する場合は必要。
$ gnome-tweak-tool私は、HintingはNoneで、AntialiasingはGrayscaleが好み。
$ sudo apt-get install gnome-tweak-tool
Ctrl-s(エスケープ) ↓ : (:が画面左下に表示される) ↓ defflow off追記:実はもっと簡単にできました。 http://transparent-to-radiation.blogspot.jp/2015/06/screenctrl-s.html
# yum localinstall http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
bios.forceSetupOnce = "TRUE"
# yum localinstall http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# apt-get install software-properties-common # apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db # add-apt-repository 'deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.0/ubuntu trusty main' # apt-get update
# apt-get install mariadb-galera-server mariadb-client galera/etc/mysql/my.confに以下のような内容を追加する。青字の部分は適宜変更が必要。
wsrep_cluster_name=mycluster wsrep_cluster_address=gcomm://192.168.71.11 wsrep_node_address=192.168.71.12 wsrep_provider='/usr/lib/galera/libgalera_smm.so' wsrep_sst_method=rsync wsrep_slave_threads=4 default_storage_engine=InnoDB binlog_format=ROW innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1最初のノードを起動する際、次のwsrep_cluster_addressを指定する。これは、最初のノードであることを意味する。指定しないとmy.confに記述したノードに接続しようとするが、まだ起動していないのでエラーになる。
# service mysql start --wsrep_cluster_address=gcomm://
gcc -dM -E -c -xc /dev/nullG++ (C++の場合)
gcc -dM -E -c -xc++ /dev/null
$ wget https://launchpad.net/debian/sid/+source/qpid-tools/0.14-1/+files/qpid-tools_0.14.orig.tar.gz $ tar xvf qpid-tools_0.14.orig.tar.gz $ qpid-tools-0.14/src/py/qpid-config Total Exchanges: 8 topic: 3 headers: 1 fanout: 1 direct: 3 Total Queues: 6 durable: 0 non-durable: 6
$ mysql -uroot [snip] mysql> GRANT USAGE ON *.* TO ''@'localhost';
AC_LANG([C++])ある区間のチェックのみC++コンパイラを使うなら、AC_LANG_PUSH()/POP()が使える。
AC_LANG_PUSH([C++]) AC_CHECK_HEADERS([iostream]) AC_LANG_POP([C++])
$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1では、どうすればいいかというと、次のように設定ファイルbaseにnameserverを記述して、再起動すればよい。
$ cat /etc/resolvconf/resolv.conf.d/base nameserver 8.8.8.8参考:
auto eth0 iface eth0 inet static address 192.168.71.10 netmask 255.255.255.0 gateway 192.168.71.1
# client側ではclientと記述 client # L3接続ならtun, L2接続ならtap dev tap # 通常はudpでいい。tcp over tcpは再送等の問題あり proto udp # サーバ名 or IPとport番号 remote server_name 1194 # サーバの名前解決ができないときも、無限にリトライする # たぶん、デフォルトはこの設定(無限)のはず。 # 上記remote項目で、複数のサーバーを指定している場合、この値が有限時間なら、その時間経過後に次のサーバへの接続を試みる resolv-retry infinite # OpenVPN 2.3.2では不要。エラーになる no bind # なくても、自動でネゴシエーションすると思うが、サーバー側と同じのを記載するとログにWARNINGがでなくなる cipher AES-256-GCM # persistentオプションは、再起動で特権ダウングレードによりアクセスできなくリソースへのアクセスを回避するよう試みる persist-key persist-tun # クライアント認証のためのキーと証明書 ca ca.crt cert client.crt key client.key # HMAC用の共有キー。メッセージが改ざんされていなことを保証するために使用 # 暗号化そのものはメッセージを秘匿するが、改ざんそのものを検出することはできないので、この仕組み(HMAC)で補完 tls-auth ta.key 1 # 圧縮アルゴリズム。サーバ設定にもよるがサーバ側からpushされるので、なくてもいいかも。 comp-lzo # ログの詳細レベル verb 3
./build-key client1ちなみに、ta.keyを作成するのは、次のコマンド。
openvpn --genkey --secret ta.key
port 1194 proto udp dev tap ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key # This file should be kept secret dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem ifconfig-pool-persist ipp.txt server-bridge 172.16.32.1 255.255.255.0 172.16.32.10 172.16.32.100 client-to-client keepalive 10 120 tls-auth ta.key 0 comp-lzo persist-key persist-tun status openvpn-status.log verb 3 mssfix 1280 up "/etc/openvpn/up.sh【参考】
$ gpg --gen-keyもし、作成の途中で下記のようなメッセージが表示された場合、他のアプリでキー入力を 伴う作業をキー作成が完了するまで行ってください。例えば、ブラウザでの何か検索したり、エディタで文書を編集します。
passphrase not correctly repeated; try again. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 274 more bytes)コマンドが終了して、ホームディレクトリに以下のファルが作成されていば成功です。
$ ls .gnupg/ gpg.conf pubring.gpg pubring.gpg~ random_seed secring.gpg trustdb.gpg
$ gpg -c abc.txtそうすると、拡張子として.gpgがついたファイルが生成されています。内容も 暗号化されています。
$ od abc.txt.gpg 000000 8c 0d 04 03 03 02 5e 31 88 83 af 89 cd 59 60 c9 >......^1.....Y`.< 000010 20 80 6f 47 16 43 6d 29 1d b3 c9 5d 18 4a a7 ce > .oG.Cm)...].J..< 000020 58 e3 0a 9c 36 d3 e9 69 6d e0 dc 02 99 ca df b3 >X...6..im.......< 000030 85 >.< 000031
$ gpg abc.txt.gpg
# Print debugging output (set logging level to DEBUG instead # of default WARNING level). (boolean value) #debug=false debug=Trueなお、ログは通常以下のディレクトリに作成される。
$ curl http://169.254.169.254/latest/user-data/Meta dataも同様に下記のようにする。
$ curl http://169.254.169.254/latest/meta-data/上記コマンドでは、取得できる項目やディレクトリが表示されるので、それらをURLに指定してGETすることで、その値を取得できる。例えば、ami-idなら、次のとおり。
$ curl http://169.254.169.254/latest/meta-data/ami-id
$ curl http://169.254.169.254/openstack/latest/user_data $ curl http://169.254.169.254/openstack/latest/meta_data.json他にも、passowrdとvendor_data.jsonも取得可能。
$ curl http://169.254.169.254/openstack/latest meta_data.json user_data password vendor_data.jsonなお、169.254.169.254への通信ができない場合は、こちらの記事も参照。
enable_isolated_metadata = True
# service neutron_dhcp_agent restart設定が正常に反映された場合、dnsmasqの--dhcp-optsfileに指定されている設定ファイルの内容は、次のように169.254.169.254への静的ルートを含む。
# cat /var/lib/neutron/dhcp/04911b6c-d75a-4744-b604-c99a342ca95f/opts tag0,option:classless-static-route,169.254.169.254/32,192.168.150.101 tag0,249,169.254.169.254/32,192.168.150.101
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.169.254 192.168.150.101 255.255.255.255 UGH 0 0 0 eth0 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
# nova-manage vm listホスト(compute node)の一覧表示
# nova-manage host list
$ chmod 600 .ssh/amazon.pemそれを秘密鍵として指定し、eu2-userでログインする。
ssh -i .ssh/amazon.pemなお、IP_addressには、EC2コンソールのPublic IP列の値を指定する。-l ec2-user IP_address
LXC_DHCP_RANGE="10.0.3.100,10.0.3.254"その後、システムをリセットする。
# ifconfig lxcbr0 down # brctl delbr lxcbr0
# initctl stop lxc # initctl start lxcdnsmaqのオプションをが指定したとおりになっていれば成功。
# ps ax | grep lxc-dnsmasq 6097 ? S 0:00 dnsmasq -u lxc-dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/lxc/dnsmasq.pid --conf-file= --listen-address 10.0.3.1 --dhcp-range 10.0.3.100,10.0.3.254 --dhcp-lease-max=253 --dhcp-no-override --except-interface=lo --interface=lxcbr0 --dhcp-leasefile=/var/lib/misc/dnsmasq.lxcbr0.leases --dhcp-authoritative
... debug1: Remote: No xauth program; cannot forward with spoofing. X11 forwarding request failed on channel 0
# fsck -c /dev/sdb1もしくは、不良セクタの情報をファイルに書き出し、それをfsckに読み込ませる。
# badblocks -vs -o sdb1.badblocks /dev/sdb1 # fsck -l sdb1.badblocks /dev/sdb1badblocksの引数の-vは冗長な出力、-sは、進捗表示をそれぞれ意味する。
# ovs-vsctl add-port ovsbr0 veth-lxc特別なことは、ほとんどないが、以下の点に注意が必要。
# ceilometer meter-list測定値を見る。下記の
# ceilometer sample-list -m特定のリソースIDのものを抽出する場合、-qオプションを利用する。
# ceilometer sample-list -m cpu -q 'resource_id=9e571f72-fc21-42a5-8899-a87736dda57a'
$ dpkg -S /bin/ls coreutils: /bin/ls
$ rpm -qf /bin/ls coreutils-8.4-31.el6_5.1.x86_64
キー | キャプチャ範囲 |
---|---|
command + shift + 3 | 全画面 |
command + shift + 4 | マウスで選択した範囲 |
DEVICE=mybr0 BOOTPROTO=static BROADCAST=192.168.118.255 GATEWAY=192.168.158.2 IPADDR=192.168.118.1 NETMASK=255.255.255.0 ONBOOT=yes TYPE=Bridge
# ifup mybr0ブリッジが作成できているかはifconfigコマンドで確認できる。また、次のコマンドで、ブリッジの構成について確認できる。 (なお、この例ではまだ、interfaceがブリッジに追加されていない)
# brctl show bridge name bridge id STP enabled interfaces mybr0 8000.000000000000 no
> select * from sqlite_master; table|t1|t1|2|CREATE TABLE t1(id integer primary key, a integer, b integer) index|i_b|t1|4|CREATE INDEX i_b ON t1(b) index|i_ab|t1|5|CREATE INDEX i_ab ON t1(a,b)このテーブルのカラムは、左から、以下のようになっています。
カラム名 | 説明 |
---|---|
type | tableかindex |
name | テーブル名、または、インデックス名 |
tbl_name | テーブル名 |
root_page | - |
sql | そのテーブル(またはインデックス)を作るためのSQLステートメント |
> select * from sqlite_master where type='table';
-datadir = /var/lib/mysql +datadir = /dev/shm/mysql新しいディレクトリにDBを作成するため、以下を実行する。
# mysql_install_dbそして、mysqldを起動する。
/etc/init.d/mysqld startなお、mysql_install_dbで作成したファイルは、再起動したら消えてしまうので、 /etc/init.d/mysqldの最初に実行するように書いておくとよいかも。
/dev/shm/mysql/** rwk,
# apt-get install sysv-rc-confその後、コマンド実行する。実行するデーモンには[X]印が表示される。スペースでON/OFFできる。
foo ALL=(ALL) NOPASSWD:ALLつぎのように%から始めると、グループで指定できる。
%admin ALL=(ALL) NOPASSWD:ALLなお、sudoグループがに関する記述があると個別ユーザーやグループにNOPASSWDを追加しても、パスワードを要求される。その場合、以下のように%sudo行をコメントアウトする。
#%sudo ALL=(ALL:ALL) ALLただし、複数ユーザー環境では、他のユーザーがsudoできなくなる可能性があるの要注意。
# lxc-create -t ubuntu -n container-name-tに使用するテンプレートは、/usr/share/lxc/templatesの下にある。
# lxc-start -n container-name
none /cgroup cgroup defaults 0 0/cgroupsを以下のようにマウントする。
# mkdir /cgroup # mount /cgroup
# lxc-console -n container-name
# lxc-shutdown -n container-name
# lxc-attach -n container-name
lxc.network.link = lxcbr0
lxc.network.veth.pair = veth-mycontainer
/etc/udev/rules.d/70-persistent-net.ruleこの機能は、便利ではありますが、不都合な場合もあります。例えば、Diskイメージをコピーして、他の環境で使う場合に、1枚目のNICがeth1になるなどです。 上記の振る舞いを抑制するには、下記のファイルを編集します。
/lib/udev/rules.d/75-persistent-net-generator.rules以下の行を削除または、コメントアウトします。
DRIVERS=="?*", IMPORT{program}="write_net_rules"なお、上記は、自動的に追加することを抑止しますが、すでに70-persistent-net.ruleなどに設定がある場合、それは依然として有効のままです。無効にする場合は、70-persistent-net.rulの中の該当する行を削除します。また、/etc/sysconfig/network-scripts/ifcfg-eth0の中にもMACアドレスの記載がある場合、それも削除します。
# /etc/init.d/mysqld start Another MySQL daemon already running with the same unix socket. mysqld を起動中: [失敗]このような症状の原因候補のひとつとして、mysql.sockが、残ったままになっていることが挙げられます。
# ls -l /var/lib/mysql/mysql.sock srwxrwxrwx 1 mysql mysql 0 2月 21 10:34 2014 /var/lib/mysql/mysql.sock上記のようにファイルが残っている場合、次のように削除することで、正常に起動できるようになります。
# rm -f /var/lib/mysql/mysql.sock
$ netstat -rn192.168.0.10へのGatawayを192.168.158.20にする例。
# route add -net 192.168.0.10 192.168.158.20192.168.1.0/24へのGatawayを192.168.158.10にする例。
# route add -net 192.168.1.0/24 192.168.158.10
Host big-bang Hostname 10.1.1.1 User bean Host atom HostName 192.168.100.5 User mine ProxyCommand ssh big-bang nc %h %p
$ sudo pip install requestspipのインストールについては、 こちら の記事を参照ください。
$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py > get-pip.py2. 実行する
$ sudo python get-pip.py
blacklist rtl8192cu blacklist btusbその後、システムを再起動する。rmmodなどで、そのカーネルモジュールをアンロードしてもよいが、不安定などの理由でロードを抑止する場合、一度でもカーネルにロードされたなら、安全のため再起動するのがよい。
tcpdump -n -s 0 -i eth0 -w dump.dat
青字不部分は適宜変更
オプション | 説明 |
---|---|
-n | IPアドレスのまま出力する(DNSを引かない) |
-s 0 | キャプチャするパケットサイズの上限を無制限 |
-i | キャプチャ対象のネットワークデバイスを指定 |
-w | 作成するキャプチャファイル名を指定 |
$ nova boot --flavor 1 --key_name mykey --image a7822d3f-5ba2-4248-9a3e-a946257b637c --security_group default --nic net-id=662fd507-eb19-4b98-a912-519e92846957 instance_nameflavaor一覧の調べ方
$ nova flavor-listkey一覧の調べ方
$ nova keypair-listimage一覧の調べ方
$ nova image-listsecurity group一覧の調べ方
$ nova secgroup-listnetwork一覧の調べ方
$ nova net-listプロジェクト名(テナント名)の変更と、ホストの指定も含む例。
$ nova --os-tenant-id e318a792ec044e1a838b14ead24828b9 boot --flavor d6bb73d1-6b4f-42ea-858d-cd1b0d48dd15 --key_name mykey --image 5060bbcb-a361-4e5a-ac26-9864143050e5 --security_group default --nic net-id=6505d940-df5c-4b2e-8da0-dbeda4343cd0 --availability-zone nova:host instance_name
MALLOC_CHECK_=2ちなみに設定する値によって、次の振る舞いになります。
# neutron port-list +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+ | 02cd18bc-768b-4b9b-937b-40dfe66fe33e | | fa:16:3e:41:3f:01 | {"subnet_id": "2cc97205-b498-4e53-8fe5-21dd6f5da317", "ip_address": "192.168.30.128"} | | 897101af-581f-42da-b8b6-56b8352cf53f | | fa:16:3e:b2:47:71 | {"subnet_id": "ad914263-519c-40eb-a9b4-421485e5ece3", "ip_address": "192.168.50.101"} | | ace36996-0315-4a7d-8eaa-379bb67bd688 | | fa:16:3e:95:40:18 | {"subnet_id": "ad914263-519c-40eb-a9b4-421485e5ece3", "ip_address": "192.168.50.100"} | | bc538543-d817-48a9-9dd3-9803fe6cf058 | | fa:16:3e:63:c9:12 | {"subnet_id": "ad914263-519c-40eb-a9b4-421485e5ece3", "ip_address": "192.168.50.1"} | +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+次で、以下のように実際にマッピングを作成します。
# neutron floatingip-create --port-id ace36996-0315-4a7d-8eaa-379bb67bd688 --fixed-ip-address 192.168.50.100 ext-net Created a new floatingip: +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | fixed_ip_address | 192.168.50.100 | | floating_ip_address | 192.168.30.129 | | floating_network_id | 2635ab5a-0784-4898-b91d-dbe1228f31cf | | id | ba6e13f3-0768-4d8f-8cd6-91217ea558aa | | port_id | ace36996-0315-4a7d-8eaa-379bb67bd688 | | router_id | 612dafe5-c553-4103-a5d2-96e379ed2e50 | | tenant_id | 4df9786b5d044f5e8ae1593e105546d4 | +---------------------+--------------------------------------+
# neutron floatingip-create ext-net +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | fixed_ip_address | | | floating_ip_address | 192.168.158.82 | | floating_network_id | 53fe6eb3-6558-47a5-a758-3b2aa1f102ce | | id | b4cd47df-92e1-433d-b48f-152b79063984 | | port_id | | | router_id | | | tenant_id | c5f8ac76b2a541c09da7c0fa8f23c03f | +---------------------+--------------------------------------+ # neutron floatingip-associate b4cd47df-92e1-433d-b48f-152b79063984 ace36996-0315-4a7d-8eaa-379bb67bd688上記こまんどの第二引数はfloatingipのID、第三引数はport_idを表す。
# iptables -t nat -A POSTROUTING -s 192.168.118.0/24 -j MASQUERADE
# iptables -t nat -A PREROUTING -p tcp --dport 8022 -j DNAT --to-destination 192.168.118.10:22
# echo 1 > /proc/sys/net/ipv4/ip_forward
#include <stdio.h> #include <stdlib.h> #define MAX_NAME_LENGTH 100 int main(void) { char name[MAX_NAME_LENGTH]; printf("What are your name ? : "); fgets(name, MAX_NAME_LENGTH, stdin); printf("Hello, %s\n", name); return EXIT_SUCCESS; }これを前回と同じく次のようにビルドします。
$ gcc my_prog2.c -o my_prog2さて、実行させると次のようになります。
$ ./my_prog2 What are your name ? :ここで、Lionと入力してみましょう。
$ ./my_prog2
What are your name ? : Lion (キーボードで入力する)
Hello, Lion
そうすると、Hello, [入力した名前]が表示されました。
char 変数名[最大の文字数];
# ovs-vsctl show
# ovs-vsctl BRIDGE_NAME PORT_NAMEPortを追加 (VLAN tagを指定)
# ovs-vsctl BRIDGE_NAME PORT_NAME tag=TAG_ID
# ovs-vsctl del-port PORT_NAME
# ovs-ofctl show SWITCH_NAME
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
# brctl show bridge name bridge id STP enabled interfaces qbr655843be-3b 8000.f258a8426856 no qvb655843be-3b tap655843be-3bqvbとqvoは、virtual ethernet tunnel (veth)の両端のデバイスである。qvbはBridge側に、qvoはOpen vSwitch側に接続されている。
# ip netns qdhcp-26ac80d0-9f3d-46bf-9c04-27ecdcbd7800 qrouter-f53f573b-5c5f-4136-af7b-c7879cde9ed3 qrouter-d1982370-acba-4861-b706-185ccfd52cce qdhcp-6e1aec2f-ad9c-4aec-b49e-cc5a85a1f1e5また、次のようにnetwork namespaceを指定して、コマンド実行することで、その空間でのinterface一覧を取得できる。
# ip netns exec qdhcp-26ac80d0-9f3d-46bf-9c04-27ecdcbd7800 ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) ns-9e1da44f-f2 Link encap:Ethernet HWaddr FA:16:3E:AA:A4:B2 inet addr:10.5.20.3 Bcast:10.5.20.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:feaa:a4b2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:468 (468.0 b) TX bytes:468 (468.0 b)
#include <stdio.h> #include <stdlib.h> int main(void) { printf("Hello, World!\n"); return EXIT_SUCCESS; }
$ gcc my_prog1.c -o my_prog1エラーが表示されなければOKです。
$ ./my_prog1 Hello, World!
(gdb) py out=gdb.execute("i proc map", to_string=True); import re; [re.search("Named", line) and print(line) for line in out.split("\n")];
(gdb) py a=gdb.execute("bt",to_string=True); import subprocess; subprocess.Popen("echo '%s' | grep main" % a, shell=True).wait()
なお、上記のいずれも技術的には、Pythonをワンライナを使用しています。
繰り返しはリスト包含(list comprehension)、分岐(if)にはand/orの遅延評価を利用しています。
関数はlamdaで変数にしています。$ gdb -q /bin/cat Reading symbols from /bin/cat...(no debugging symbols found)...done. (gdb) run Starting program: /bin/cat ^C <= 実行を中断するためにCTRL + Cを入力 Program received signal SIGINT, Interrupt. 0x00007ffff7afe6a0 in __read_nocancel () at ../sysdeps/unix/syscall-template.S:81 81 ../sysdeps/unix/syscall-template.S: No such file or directory. (gdb) i proc maps Too many parameters: maps (gdb) i proc map process 19540 Mapped address spaces: Start Addr End Addr Size Offset objfile 0x400000 0x40b000 0xb000 0x0 /bin/cat 0x60a000 0x60b000 0x1000 0xa000 /bin/cat 0x60b000 0x60c000 0x1000 0xb000 /bin/cat 0x60c000 0x62d000 0x21000 0x0 [heap] 0x7ffff7a12000 0x7ffff7bcf000 0x1bd000 0x0 /lib/x86_64-linux-gnu/libc-2.17.so 0x7ffff7bcf000 0x7ffff7dcf000 0x200000 0x1bd000 /lib/x86_64-linux-gnu/libc-2.17.so 0x7ffff7dcf000 0x7ffff7dd3000 0x4000 0x1bd000 /lib/x86_64-linux-gnu/libc-2.17.so 0x7ffff7dd3000 0x7ffff7dd5000 0x2000 0x1c1000 /lib/x86_64-linux-gnu/libc-2.17.so 0x7ffff7dd5000 0x7ffff7dda000 0x5000 0x0 0x7ffff7dda000 0x7ffff7dfd000 0x23000 0x0 /lib/x86_64-linux-gnu/ld-2.17.so 0x7ffff7fcc000 0x7ffff7fcf000 0x3000 0x0 0x7ffff7ff8000 0x7ffff7ffa000 0x2000 0x0 0x7ffff7ffa000 0x7ffff7ffc000 0x2000 0x0 [vdso] 0x7ffff7ffc000 0x7ffff7ffd000 0x1000 0x22000 /lib/x86_64-linux-gnu/ld-2.17.so 0x7ffff7ffd000 0x7ffff7fff000 0x2000 0x23000 /lib/x86_64-linux-gnu/ld-2.17.so 0x7ffffffde000 0x7ffffffff000 0x21000 0x0 [stack] 0xffffffffff600000 0xffffffffff601000 0x1000 0x0 [vsyscall]上記では、マップされているライブラリの数がそれほど多くないので、目視で、目的のファイルを探すことも、それほど困難ではありませんが、firefoxやchromeのような大規模なプログラムでは数百行以上表示されます。 これを、stackの入っている行のみを表示させるには次のように入力します。かなりシンプルになることが理解いただけると思います。
(gdb) py out=gdb.execute("i proc map", to_string=True); import re; [re.search("stack", line) and print(line) for line in out.split("\n")];
0x7ffffffde000 0x7ffffffff000 0x21000 0x0 [stack]
# cat /sys/module/kvm_intel/parameters/nested Y
2014-01-26 16:16:15.038 2814 WARNING keystoneclient.middleware.auth_token [-] Verify error: Command 'openssl' returned non-zero exit status 4 2014-01-26 16:16:15.039 2814 WARNING keystoneclient.middleware.auth_token [-] Authorization failed for token 7cd65acbdf1048d97f6629c2614eb9f8このような事は、OpenStackコンポーネントのアップデートなどを繰り返しているうちに発生することがあります。 対処法は、/var/lib/neutron/keystone-signingを削除(あるいは別名に)します。
# tcpdump -i eth0
# tcpdump -i eth0 port 80
# tcpdump -i lo port 35357 -X tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes 13:47:55.102252 IP ika.52727 > ika.35357: Flags [S], seq 2674919811, win 32792, options [mss 16396,sackOK,TS val 27498856 ecr 0,nop,wscale 7], length 0 0x0000: 4500 003c 90eb 4000 4006 286c c0a8 000a E..<..@.@.(l.... 0x0010: c0a8 000a cdf7 8a1d 9f70 0983 0000 0000 .........p...... 0x0020: a002 8018 7016 0000 0204 400c 0402 080a ....p.....@..... 0x0030: 01a3 9968 0000 0000 0103 0307 ...h........
# tcpdump -i eth0 port 80 -l | grep GET
2014-01-25 23:13:34,980 21326 ERROR django.request Internal Server Error: /dashboard/
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 89, in get_response
response = middleware_method(request)
File "/usr/lib/python2.6/site-packages/django/middleware/common.py", line 55, in process_request
host = request.get_host()
File "/usr/lib/python2.6/site-packages/django/http/__init__.py", line 223, in get_host
"Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host)
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 192.168.158.20
上記に該当する場合、/etc/openstack-dashboard/local_settingsのALLOWED_HOSTS行に上記のログで表示されている最後の部分(青色で強調)を追加するとうまくいきます。
ALLOWED_HOSTS = ['192.168.158.20', '192.168.0.10', 'ika.localdomain', 'localhost', ]
最後に、httpd (apache)を再起動します。
RedHat系ならコマンドラインで、
# service httpd restartなお、これはHorizonというよりDjangoのアクセス制御機構に起因する問題です。
# ln -fs /lib/systemd/system/multi-user.target /etc/systemd/system/default.target正しく設定できているかは、次のようにして確認できます。
# ls -l /etc/systemd/system/default.target lrwxrwxrwx. 1 root root 37 1月 24 20:29 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target
# grep GRUB_CMDLINE_LINUX /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) rhgb quiet net.ifnames=0"
grub2-mkconfig -o /boot/grub2/grub.cfg
$ grep range /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf range 192.168.158.128 192.168.158.254;
$ gdb /bin/cat
[略]
(gdb) run
Starting program: /bin/cat
^C <= CTRL + Cを押して実行を中断します。
Program received signal SIGINT, Interrupt.
0x00007ffff7afe6a0 in __read_nocancel () at ../sysdeps/unix/syscall-template.S:81
81 ../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) info proc map
process 31692
Mapped address spaces:
Start Addr End Addr Size Offset objfile
0x400000 0x40b000 0xb000 0x0 /bin/cat
0x60a000 0x60b000 0x1000 0xa000 /bin/cat
0x60b000 0x60c000 0x1000 0xb000 /bin/cat
0x60c000 0x62d000 0x21000 0x0 [heap]
0x7ffff7a12000 0x7ffff7bcf000 0x1bd000 0x0 /lib/x86_64-linux-gnu/libc-2.17.so
0x7ffff7bcf000 0x7ffff7dcf000 0x200000 0x1bd000 /lib/x86_64-linux-gnu/libc-2.17.so
0x7ffff7dcf000 0x7ffff7dd3000 0x4000 0x1bd000 /lib/x86_64-linux-gnu/libc-2.17.so
0x7ffff7dd3000 0x7ffff7dd5000 0x2000 0x1c1000 /lib/x86_64-linux-gnu/libc-2.17.so
0x7ffff7dd5000 0x7ffff7dda000 0x5000 0x0
0x7ffff7dda000 0x7ffff7dfd000 0x23000 0x0 /lib/x86_64-linux-gnu/ld-2.17.so
0x7ffff7fcc000 0x7ffff7fcf000 0x3000 0x0
0x7ffff7ff8000 0x7ffff7ffa000 0x2000 0x0
0x7ffff7ffa000 0x7ffff7ffc000 0x2000 0x0 [vdso]
0x7ffff7ffc000 0x7ffff7ffd000 0x1000 0x22000 /lib/x86_64-linux-gnu/ld-2.17.so
0x7ffff7ffd000 0x7ffff7fff000 0x2000 0x23000 /lib/x86_64-linux-gnu/ld-2.17.so
0x7ffffffde000 0x7ffffffff000 0x21000 0x0 [stack]
0xffffffffff600000 0xffffffffff601000 0x1000 0x0 [vsyscall]
また、類似のコマンドにinfo sharedがあります。こちらは、マップされている共有ライブラリのみを列挙します。Syms Readという列は、デバッグ用のシンボル情報が読み込まれているか否かを示します。
(gdb) info shared From To Syms Read Shared Object Library 0x00007ffff7ddaaa0 0x00007ffff7df5439 Yes /lib64/ld-linux-x86-64.so.2 0x00007ffff7a313c0 0x00007ffff7b7c39f Yes /lib/x86_64-linux-gnu/libc.so.6
$ cat hello.py #!/usr/bin/env python import sys sys.stdout.write('Hello, my first script.\n')GDBを起動して、実行します。
(gdb) source hello.py Hello, my first script.
[target.cc] #include <cstdio> #include <cstdlib> #include <time.h> int getval(int div) { return time(NULL) / div; } int main(void) { printf("val: %d\n", getval(5)); return EXIT_SUCCESS; }これをshow-bt.pyで次の4つのことを行います。
[show-bt.py] gdb.execute('b getval') gdb.execute('run') gdb.execute('bt') gdb.execute('p/x $rax')以下はコマンドラインからスクリプトを実行させる例です。 コマンドライン引数の-qは、GDB起動時のcopyrightなどの表示を抑制します。-xで実行するスクリプトファイルを指定します。
$ gdb -q -x show-bt.py target Reading symbols from /home/foo/target...done. Breakpoint 1 at 0x400627: file target.cc, line 7. Breakpoint 1, getval (div=5) at target.cc:7 7 return time(NULL) / div; #0 getval (div=5) at target.cc:7 #1 0x0000000000400656 in main () at target.cc:12 #2 0x00007ffff72d2ead in __libc_start_main (main=, argc= , ubp_av= , init= , fini= , rtld_fini= , stack_end=0x7fffffffe128) at libc-start.c:228 #3 0x0000000000400539 in _start () $1 = 0x7ffff763aee8
$ cat show-bt-and-format.py gdb.execute('b getval') gdb.execute('run') bt = gdb.execute('bt', to_string=True) for line in bt.split('\n'): words = line.split(' ') print '%s %s' % (words[0], words[-1])
$ gdb -q -x show-bt-and-format.py target Reading symbols from /home/foo/target...done. Breakpoint 1 at 0x400627: file target.cc, line 7. Breakpoint 1, getval (div=5) at target.cc:7 7 return time(NULL) / div; #0 target.cc:7 #1 target.cc:12 #2 libc-start.c:228 #3 ()