query: tag:ubuntu

 VagrantでUbuntu環境を立ち上げようとするとChefでのProvision中にabortするというのが発生していてしばらく原因が分からなかったのですが、名前解決できなかったのが問題だったようです。

 私のケースでは config.vm.box に chef/ubuntu-14.04 を指定して、 chef.run_list では apt, sqlite, redisio などの cookbook を指定した状態で vagrant up すると、下記のようにProvision中にabortしていました。

sh>>
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'chef/ubuntu-14.04'...
==> default: Matching MAC address for NAT networking...
〜〜〜中略〜〜〜
==> default: [2014-11-16T11:51:03+00:00] WARN: Cloning resource attributes for package[tar] from prior resource (CHEF-3694)
==> default: [2014-11-16T11:51:03+00:00] WARN: Previous package[tar]: /tmp/vagrant-chef-3/chef-solo-1/cookbooks/redisio/recipes/default.rb:23:in block in from_file' ==> default: [2014-11-16T11:51:03+00:00] WARN: Current package[tar]: /tmp/vagrant-chef-3/chef-solo-1/cookbooks/ruby_build/recipes/default.rb:34:in block in from_file'
<<--

 このときVMの状態は abort になります。

sh>>
$ vagrant status
Current machine states:

default aborted (virtualbox)
<<--

 provisionなしでの起動はできるので、試しに再度 vagrant up したあとに vagrant ssh してUbuntuにログインし、 sudo apt-get update してみました。

sh>>
vagrant@vagrant:~$ sudo apt-get update
0% [Connecting to us.archive.ubuntu.com] [Connecting to security.ubuntu.com]Connection to 127.0.0.1 closed by remote host.
Connection to 127.0.0.1 closed.
<<--

 securiy.ubuntu.com に接続しようとしているときに終了してしまっているようです。このときVMはまたaborted状態になります。VM上からインターネットへのアクセスはできていたのですが、どうも名前解決あたりが怪しそうだと思って調べていたところ、下記記事を発見。

Virtual Box ゲストから外部ネットワークにつながらない(解決済み)

 上記サイトで紹介されている通り、config.vm.provider の設定にNAT接続時のDNSの挙動に関連する、natdnshostresolver1、natdnsproxy1 を追加します。

ruby>>
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ['modifyvm', :id, '--memory', '1024']
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
<<--

 この設定を追加することで、VM上での名前解決要求がホストマシンのDNSサーバによって行われるようになります。

9.11.5. Enabling DNS proxy in NAT mode

9.11.6. Using the host's resolver as a DNS proxy in NAT mode

 上記設定を追加して一旦 vagrant destroy したあとに vagrant up し直したところ、無事Provisionが完了するようになりました。

posted by akanuma akanuma on Sun 16 Nov 2014 at 21:28 with 0 comments

/etc/sysctl.d/以下の設定を反映させるには、

pre>>

sysctl -p

<<--

で良いみたいですが、ubuntu (13.04) 環境ではうまく反映されなかったので、

pre>>

sysctl -p /etc/sysctl.d/60-foobar

<<--

のように直接 path を指定する必用があるようです。

posted by genki genki on Thu 7 Nov 2013 at 20:42 with 0 comments

isoファイルを直接mountするには、以下のようなコマンドを実行すれば良いようです。

pre>>
mkdir -p /media/cdrom
mount -t iso9660 -o loop /path/to/file.iso /media/cdrom
<<--

posted by genki genki on Thu 7 Jul 2011 at 06:21 with 0 comments

普段サーバの監視にmonitを使っていますが、ubuntu nattyの環境に入れようとしたところ、monitが起動しないという問題に遭遇しました。

理由を調べてもなかなか分からなかったのですが、どうやらパッケージインストール時に最初にある設定ファイルのままhttpdの設定を行うと起動しないようです。

sh>>
set httpd port 2812
use address localhost # <- これがあると起動しない
allow localhost
<<--

posted by genki genki on Tue 28 Jun 2011 at 00:13 with 0 comments

ubuntuでパッケージのインストールを行ったとたん、
掲題のエラーメッセージが出るようになりました。
なかなか原因が分からなかったのですが、一つの原因として、

  • 削除されたディレクトリの中で何かしらコマンドを実行すると発生する

ようです。存在するディレクトリにcdしてからもう一度確認すると、何事もなかったように元の状態に戻りました。
レアな問題のようですね。

posted by genki genki on Tue 21 Jun 2011 at 21:07 with 0 comments

ubuntuのバージョンを調べるには

pre>>
% lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick
<<--

とやれば良いらしい。

posted by genki genki on Fri 6 May 2011 at 04:32 with 0 comments
posted by genki genki on Fri 6 May 2011 at 02:54 with 0 comments

Ubuntu 10.04 では、JDKのデフォルトが SunJDK から OpenJDK に変更され、SunJDK はパッケージにも含まれなくなりました。
恐らく、今後の Sun によるサポートを不安視する声が多く、
将来的に安定したパッケージリリースを行うために独立する流れになったのだと思われます。

しかしながら、OpenJDKは若干機能的にSunJDKに遅れている事もあり、
SunJDKが使えないと困る局面があるのも事実です。
その場合、以下のpartnerパッケージを追加することで、
10.04でもSunJDKが利用できるようです。

shell>>
deb http://archive.canonical.com/ lucid partner
<<--

shell>>

aptitude update

aptitude search sun-java6

p ia32-sun-java6-bin ...
p sun-java6-bin ...

aptitude install sun-java6-jdk

<<--

また、OpenJDKと併用している場合は、
下記でパッケージのデフォルト設定を SunJDK にすることが可能です。

shell>>

update-alternatives --config java

<<--

posted by maiha maiha on Thu 27 May 2010 at 14:16 with 0 comments

今までのネットワーク接続はeth0でTAP-WIN32のアダプタに接続し、ホストマチン(Windows)のインターネット共有している。この方法で簡単にゲストのLinuxから外部(インターネットなど)に接続することはできるけど、外部(社内ネットワーク)からはゲストので動いているサーバへアクセスできない。社内ネットワークではcoLinuxのインスタンスに勝手にIPアドレスを与えることはできない場合サーバを公開したいならホストからゲストへポートをフォーワードするしかない。

以下の設定はetho0にTAP-WIN32の設定が既にあることを前提としている。

  1. ホスト(Windows)側のcoLinuxの設定ファイルにslirpのインタフェースを追加する:
    shell-unix-generic>>
    eth1=slirp,,tcp:22:22/tcp:80:80/tcp:443:443
    <<shell-unix-generic

  2. ゲスト(Linux)側の/etc/network/interfacesにeth1を追加:
    shell-unix-generic>>

secondary network for external network access

iface eth1 inet static
address 10.0.2.15
network 10.0.2.0
broadcast 10.0.2.255
netmask 255.255.255.0
gateway 10.0.2.2
<<shell-unix-generic
10.0.2.15は適当なアドレスだけど、gatewayの10.0.2.2は特別で、slirpデーモンのデフォルトアドレスだ。

この記事ではcolinux0.7.3のUbuntuで行なったけど、DebianやFedoraでも設定が同じだろう。ちなみに、XAMPPやandLinuxのようなパッケージを使えばこの設定は不要らしい。

注意点

  • windows側のfirewall設定
  • 複数default gatewayのルーティング問題。解決策が二つ:
  1. SLiRPのgatewayのみにする。要するにeth0/tapにgatewayを定義せず、インターネットの通信をslirpに通す。このやりかたがわりと簡単だけど、SLiRPが若干遅いことと10.0.2.2(slirpデーモン)以外のところにpingできない
  2. 複数default gatewayのルーティングの設定をする (iproute2でpolicy routing)
  3. SLiRPはIPv6に対応していないため、ゲスト側で効果したいサービスがIPv6のアドレスにバインドしてしまうとうまくいかない。netstat -n --inet6 --listeningなどで確認んできる。たとえば、sshの場合は:
    shell-unix-generic>>
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp6 0 :::22 :::* LISTEN
    <<shell-unix-generic
    この問題を解決するにはIPv6を無効化にするか、各種サービスを明示的にIPv4のアドレスに設定する。

参考

posted by lchin lchin on Thu 27 Nov 2008 at 15:59 with 0 comments