φ(.. ) 備忘録
   
  
ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示

2021年9月26日日曜日

既存UbuntuサーバをWindows10のWSL2に置換する!(其の六)

 其の六:WSL2にapache2とMySQL、phpmyadminをインストールする

今回は、WSL2のUbuntu 20.04 LTSに、apache2(ウェブサーバ)とMySQL、phpmyadminをインストールする。非常に簡単だった。


■apache2(ウェブサーバ)のインストール

パッケージをインストールして、起動用のバッチを編集。

$ sudo apt install apache2
$ vi wsl2_apach2_start.bat
起動用のバッチの内容は以下。Windows10側でportproxyの設定とWSL側でapache2を起動する。なぜかlistenport=80でアクセスできなかったので、listenport=3000で実施する。
@echo off
for /f "usebackq" %%t in (`wsl -d Ubuntu-20.04 exec hostname -I`) do set IP=%%t
netsh.exe interface portproxy delete v4tov4 listenport=3000
netsh.exe interface portproxy add v4tov4 listenport=3000 connectaddress=%IP% connectport=80
wsl -d Ubuntu-20.04 -u root service apache2 start
上記のバッチを管理者権限で実行すると、localhost:3000でアクセスできる。

■MySQLのインストール

パッケージをインストール。
$ sudo apt install mysql-server
次に、mysqlを起動し、rootのパスワード設定。
$ sudo service mysql start
$ sudo mysql_secure_installation
起動用バッチ(wsl2_mysql_start.bat)を作成。内容は以下。
@echo off
wsl -d Ubuntu-20.04 -u root service mysql start
PC再起動時は上記起動用バッチを管理者権限で実行すれば、MySQLを起動できる。

■phpmyadminインストール

パッケージをインストール。
$ sudo apt install phpmyadmin
コンフィグレーションが実行されるので、質問に答える。Webサーバは先ほどインストールしたapache2を選択しOK。


あとは、全部YesでOK(途中でパスワードを聞かれるので、パスワードも入力)。
コンフィグレーションを正しく設定できるとapache2側の/etc/apache2/conf-availableと/etc/apache2/conf-enabledにphpmyadmin設定が自動で設定されるので、apache2を再起動。
$ sudo service apache2 restart
apache2再起動後、localhost:3000/phpmyadminでアクセスできる。ユーザ名はphpmyadmin、パスワードはコンフィグレーション時に設定したもの。

2021年9月23日木曜日

既存UbuntuサーバをWindows10のWSL2に置換する!(其の五)

其の五:hubotの文字化けを直す

前回、hubotが無事インストールできたので、文字化けを対策する。

hubotで扱う文字コードはUTF-8が前提となっており、会社で使っているISO-2022-JPのチャットサーバーだと、文字化けを起こしてしまう。

以前perlのnkfモジュールを用いて対策を行ったことがあったが、coffeeスクリプトで対策できることが分かったので、そちらで対策する。

まずは、hubotをインストールしたディレクトリに移動して、必要なモジュール(jschardet、iconv)を追加インストールする。

$ cd ~/hubot
$ npm install jschardet
$ npm install iconv
次に、irc.coffeeに修正を加える。
$ cd ~/hubot/node_modules/hubot-irc/src
$ cp irc.coffee irc.coffee.org
$ vi irc.coffee
修正内容(diffイメージ)は以下で、最初にrequireで追加したモジュールをロード。
日本語のチャンネル名が指定された場合に備えて、チャンネル名をUTF8からISO-2022-JPに変更する処理を追加。
sendメソッドとnoticeメソッドに文字コードをUTF-8からISO-2022-JPに変更する処理を追加。messageやchannelを受け取るbotListener(message,notice等)に受け取った文字をUTF-8に変更する処理を追加。
ちなみに、iconv生成時のパラメータで指定している『TRANSLIT//IGNORE』はコード変換失敗時にエラーを無視するためのおまじないみたい。
 # Irc library
 Irc = require 'irc'

+# for ISO-2022-JP
+Jschardet = require 'jschardet'
+Iconv = (require 'iconv').Iconv
+
 class IrcBot extends Adapter
   send: (envelope, strings...) ->
     # Use @notice if SEND_NOTICE_MODE is set
@@ -15,6 +19,8 @@
       return console.log "ERROR: Not sure who to send to. envelope=", envelope

     for str in strings
+      iconv = new Iconv('UTF-8','ISO-2022-JP//TRANSLIT//IGNORE')
+      str = iconv.convert(str).toString()
       @bot.say target, str

   topic: (envelope, strings...) ->
@@ -52,6 +58,8 @@
       if not str?
         continue

+      iconv = new Iconv('UTF-8','ISO-2022-JP//TRANSLIT//IGNORE')
+      str = iconv.convert(str).toString()
       @bot.notice target, str

   reply: (envelope, strings...) ->
@@ -131,11 +139,15 @@

     do @checkCanStart

+    iconv = new Iconv('UTF-8','ISO-2022-JP//TRANSLIT//IGNORE')
+    roomsValue = iconv.convert(process.env.HUBOT_IRC_ROOMS).toString()
+
     options =
       nick:     process.env.HUBOT_IRC_NICK or @robot.name
       realName: process.env.HUBOT_IRC_REALNAME
       port:     process.env.HUBOT_IRC_PORT
-      rooms:    process.env.HUBOT_IRC_ROOMS.split(",")
+#      rooms:    process.env.HUBOT_IRC_ROOMS.split(",")
+      rooms:    roomsValue.split(",")
       ignoreUsers: process.env.HUBOT_IRC_IGNORE_USERS?.split(",") or []
       server:   process.env.HUBOT_IRC_SERVER
       password: process.env.HUBOT_IRC_PASSWORD
@@ -189,15 +201,27 @@

     if options.connectCommand?
       bot.addListener 'registered', (message) ->
+        detectResult = Jschardet.detect(message)
+        iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+        message = iconv.convert(message).toString()
+
         # The 'registered' event is fired when you are connected to the server
         strings = options.connectCommand.split " "
         self.command strings.shift(), strings...

     bot.addListener 'names', (channel, nicks) ->
+      detectResult = Jschardet.detect(channel)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      channel = iconv.convert(channel).toString()
+
       for nick of nicks
         self.createUser channel, nick

     bot.addListener 'notice', (from, to, message) ->
+      detectResult = Jschardet.detect(message)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      message = iconv.convert(message).toString()
+
       if from in options.ignoreUsers
         console.log('Ignoring user: %s', from)
         # we'll ignore this message if it's from someone we want to ignore
@@ -209,6 +233,10 @@
       self.receive new TextMessage(user, message)

     bot.addListener 'message', (from, to, message) ->
+      detectResult = Jschardet.detect(message)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      message = iconv.convert(message).toString()
+
       if options.nick.toLowerCase() == to.toLowerCase()
         # this is a private message, let the 'pm' listener handle it
         return
@@ -231,6 +259,10 @@
       self.receive new TextMessage(user, message)

     bot.addListener 'action', (from, to, message) ->
+      detectResult = Jschardet.detect(message)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      message = iconv.convert(message).toString()
+
       console.log " * From #{from} to #{to}: #{message}"

       if from in options.ignoreUsers
@@ -247,9 +279,17 @@
       self.receive new TextMessage(user, message)

     bot.addListener 'error', (message) ->
+      detectResult = Jschardet.detect(message)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      message = iconv.convert(message).toString()
+
       console.error('ERROR: %s: %s', message.command, message.args.join(' '))

     bot.addListener 'pm', (nick, message) ->
+      detectResult = Jschardet.detect(message)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      message = iconv.convert(message).toString()
+
       console.log('Got private message from %s: %s', nick, message)

       if process.env.HUBOT_IRC_PRIVATE
@@ -267,21 +307,37 @@
       self.receive new TextMessage({reply_to: nick, name: nick}, message)

     bot.addListener 'join', (channel, who) ->
+      detectResult = Jschardet.detect(channel)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      channel = iconv.convert(channel).toString()
+
       console.log('%s has joined %s', who, channel)
       user = self.createUser channel, who
       user.room = channel
       self.receive new EnterMessage(user)

     bot.addListener 'part', (channel, who, reason) ->
+      detectResult = Jschardet.detect(channel)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      channel = iconv.convert(channel).toString()
+
       console.log('%s has left %s: %s', who, channel, reason)
       user = self.createUser '', who
       user.room = channel
       self.receive new LeaveMessage(user)

     bot.addListener 'kick', (channel, who, _by, reason) ->
+      detectResult = Jschardet.detect(channel)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      channel = iconv.convert(channel).toString()
+
       console.log('%s was kicked from %s by %s: %s', who, channel, _by, reason)

     bot.addListener 'invite', (channel, from) ->
+      detectResult = Jschardet.detect(channel)
+      iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE')
+      channel = iconv.convert(channel).toString()
+
       console.log('%s invited you to join %s', from, channel)

       if from in options.ignoreUsers

本来なら、環境変数もしくはコマンドパラメータで変換する文字コードを指定すべきだが、今回はそこまでやってない。
上記修正が正しく動作するか確認するために、hubot-scriptsのhttp-post-say.coffeeを使ったため、それの設定方法も残しておく。
まず、hubotインストールディレクトリに移動して、hubot-scripts.jsonを編集。
$ cd ~/hubot
$ vi hubot-scripts.json
hubot-scripts.jsonの内容は以下。他に追加したいスクリプトがあればカンマ(,)区切りで追加すればよい。
["http-post-say.coffee"]
hubotの待ち受けポートは、デフォルト8080になっている。変更する場合には、以下のようにhubot起動スクリプトに環境変数PORTの設定処理を追加し、起動すればよい。
$ vi runbot.sh
#!/bin/bash
# hubot http port setting
export PORT=9999
# runhubot
export HUBOT_IRC_NICK="hubot"
export HUBOT_IRC_ROOMS="#test01,#test02"
export HUBOT_IRC_SERVER="localhost"
#export HUBOT_IRC_PASSWORD="hoge"
bin/hubot -a irc
$ .runbot.sh 
http-post-say.coffeeを使って、http経由でhubotに発言させるにはcurlコマンド等で以下のようにすればよい。
$ curl -X POST http://localhost:9999/hubot/say -d message=文字化けた? -d room='#test01'
ISO-2022-JPのチャットサーバって、世の中一般では、レアなんですかね。。。うちの会社だけなのかなぁ。。。。

あと、おまけで、hubotの発言をnoticeにする方法がわかった。すごく簡単で、起動時に環境変数HUBOT_IRC_SEND_NOTICE_MODEにtrueを設定するだけだった。イメージは以下。
#!/bin/bash
# hubot http port setting
export PORT=9999
# runhubot
export HUBOT_IRC_NICK="hubot"
export HUBOT_IRC_ROOMS="#test01,#test02"
export HUBOT_IRC_SERVER="localhost"
#export HUBOT_IRC_PASSWORD="hoge"
export HUBOT_IRC_SEND_NOTICE_MODE="true"
bin/hubot -a irc

2021年9月22日水曜日

既存UbuntuサーバをWindows10のWSL2に置換する!(其の四)

   其の四:wsl2にhubotをインストールする

いよいよ本格的な移行作業として、wsl2のUbuntu 20.04 LTSにhubotをインストールする。いろんなサイトを参考にインストールしてみたがうまくいかず、かなり試行錯誤を繰り返したが、ようやくIRCチャットルームにbotをログインさせるところまで来たので、その手順を紹介する。

まず、hubotに必要なパッケージをインストールする。

$ sudo apt-get install nodejs npm coffeescript libicu-dev
次に、hubotをgit clone後、任意でディレクトリ名を変更し、ディレクトリを移動する。
$ git clone https://github.com/jgable/hubot-irc-runnable
$ mv hubot-irc-runnable hubot
$ cd hubot
次に、npmインストール実行。
$ npm install
次に、hubot-scripts.jsonを一応バックアップして編集。hubot-scripts.jsonうち、使用しないスクリプトを削除する。
$ cp hubot-scripts.json hubot-scripts.json.org
$ vi hubot-scripts.json
今回は全部つかわないので、以下の内容に変更。
[]
次に起動スクリプト(runbot.sh)を編集。
$ vi runbot.sh
内容は以下。ニックネームとかJOINするチャンネルとかは適当に変えてください。尚、同一WSL2内のチャットサーバに接続する場合には、以下設定(localhost)で接続できた。redis brainは今回使わないので起動しているところをコメントアウト。
#!/usr/bin/env sh

# Set Environment Variables
export HUBOT_IRC_NICK=hubot
export HUBOT_IRC_SERVER=localhost
export HUBOT_IRC_ROOMS="#test01,#test02"

# Using SSL?
#export HUBOT_IRC_PORT=6697
#export HUBOT_IRC_USESSL=true
#export HUBOT_IRC_SERVER_FAKE_SSL=true

# Server password?
#export HUBOT_IRC_PASSWORD=password

# Don't let hubot flood the room.
export HUBOT_IRC_UNFLOOD=true

# Output environment variables
echo HUBOT_IRC_NICK=$HUBOT_IRC_NICK
echo HUBOT_IRC_SERVER=$HUBOT_IRC_SERVER
echo HUBOT_IRC_ROOMS=$HUBOT_IRC_ROOMS

#echo HUBOT_IRC_PORT=$HUBOT_IRC_PORT
#echo HUBOT_IRC_USESSL=$HUBOT_IRC_USESSL
#echo HUBOT_IRC_SERVER_FAKE_SSL=$HUBOT_IRC_SERVER_FAKE_SSL
#echo HUBOT_IRC_PASSWORD=$HUBOT_IRC_PASSWORD

# Start the redis brain
#echo ""
#echo "Starting Redis Server"
#/usr/local/bin/redis-server > /dev/null &

echo ""
echo "Starting bot"
./bin/hubot -a irc

実行権を付与。
  $ chmod 755 runbot.sh
スクリプトを起動。正常に接続できると以下の応答がコンソールに出力される。
hubot has joined #test01
hubot has joined #test02
以上でインストールと起動は完了。ただし、hubotの文字コードはUTF-8が前提となっているため、ISO-2022-JP(Shift-jis)が前提のサーバだと、文字化けする。次回はこの文字化けを解消する。

既存UbuntuサーバをWindows10のWSL2に置換する!(其の三)

  其の三:wsl2にIRCチャットサーバをインストールする

hubotのwsl2移行のために、テスト用のIRCチャットサーバをwsl2で立ち上げる。手順は非常に簡単。

まず、wsl2のUbuntuにngircdをインストールする。

$ sudo apt install ngircd

次に、portproxyの設定とUbuntuのngircdサービスを起動するため、以下のバッチを作成する。バッチでは、wsl側のUbuntuが使用しているIPアドレスをwslコマンドで取得し、変数に設定。それを使って、portproxyを設定後、root権限でngircdサービスを起動する。

@echo off
for /f "usebackq" %%t in (`wsl -d Ubuntu-20.04 exec hostname -I`) do set IP=%%t
netsh.exe interface portproxy delete v4tov4 listenport=6667
netsh.exe interface portproxy add v4tov4 listenport=6667 connectaddress=%IP%
wsl -d Ubuntu-20.04 -u root service ngircd start

上記バッチをC:\Users\ユーザ名\tools\wsl\wsl2_ngircd_start.batとかに保存し、管理者権限で実行する。

これで、limechatとかでサーバをlocalhost:6667でつなげば、チャットが使用できる。

外部からのアクセスを許可する場合には、Windows Defender ファイアウォールの「受信の規則」でTCPポート6667番を許可に設定する必要があります。ご注意を!

 

2021年9月21日火曜日

既存UbuntuサーバをWindows10のWSL2に置換する!(其の二)

 其の二:wsl2にCygwinからsshログインする

まず、wsl2のUbuntuにopensshをインストールする。

$ sudo apt install openssh-server

次に、以下コマンドで鍵を作成する。

$ sudo ssh-keygen -A

次に、/etc/ssh/sshd_configのPasswordAuthenticationをyesに変更する。これをやらないと『Permission denied(publickey)』で怒られる。

PasswordAuthentication yes

次に、portproxyの設定とUbuntuのsshdサービスを起動するため、以下のバッチを作成する。バッチでは、wsl側のUbuntuが使用しているIPアドレスをwslコマンドで取得し、変数に設定。それを使って、portproxyを設定後、root権限でsshサービスを起動する。

@echo off
for /f "usebackq" %%t in (`wsl -d Ubuntu-20.04 exec hostname -I`) do set IP=%%t
netsh.exe interface portproxy delete v4tov4 listenport=22
netsh.exe interface portproxy add v4tov4 listenport=22 connectaddress=%IP%
wsl -d Ubuntu-20.04 -u root service ssh start

上記バッチをC:\Users\ユーザ名\tools\wsl\wsl2_ssh_start.batとかに保存し、管理者権限で実行する。

以上で、Cygwinからwslにsshログインできるようなる。
Windows起動時にこのバッチを起動するようタスクスケジューラに設定すれば、自動起動できると思う。
外部からのアクセスを許可する場合には、Windows Defender ファイアウォールの「受信の規則」でTCPポート22番を許可に設定する必要があります。ご注意を!






既存UbuntuサーバをWindows10のWSL2に置換する!(其の一)

其の一:WSL2のUbuntu 20.04 LTSをインストール

会社で使っている既存Ubuntuサーバの老朽化が心配・・・。Ubuntuサーバと言っても若手の転勤で不要となったデスクトップPCにUbuntuをインストールしただけの激安サーバである。ただし、もう7年くらい不具合なく常時稼働(ビル停電以外は常時ON)している。優秀。FUJITSU最高。

このサーバでは全文検索ツールとIRCチャットのbot(hubot)が動作しているため、故障に備えて、別なPCにあらかじめ環境を構築していつでも移行できるように作業を進めたい。

移行先は、別PCにUbuntuを入れるもしくは、仮想化マシンにする等あるが、今回はWindows10のWSL2に構築してみる。 

まず、WSL2のインストール。

  1. Windows->設定->プログラムと機能->Windowsの機能の有効化または無効化で『Linux用Windowsサブシステム』と『仮想マシンプラットフォーム』をチェックし再起動。
  2. Linux カーネル更新プログラム パッケージをダウンロードし、インストールする。https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  3. Windows PowerShellを起動し、『wsl --set-default-version 2』を実行し、WSL 2 を既定のバージョンとして設定する。
  4. MicroSoft Store からUbuntu 20.04 LTSをインストール。https://www.microsoft.com/store/apps/9n6svws3rx71
  5. スタートメニューからUbuntu 20.04 LTSを起動し、ユーザとパスワード設定。
  6. Windows PowerShellで『wsl -l -v』WSLの状態確認。STATEがRunning、VERSIONが2となっていればOK。
以上、これでWSL2のインストールは完了。詳しい手順は、https://docs.microsoft.com/ja-jp/windows/wsl/install-win10に書いてある。





2014年9月14日日曜日

ubuntu14.04 redmineのガントチャートに日付を表示させる

以下の手順でプラグインをインストールするだけ。
% cd /usr/share/redmine/plugins
% sudo git clone https://github.com/vividtone/redmine_gantt_with_date.git
% sudo service apache2 restart
お決まりのrakeなんちゃらは不要。

Kindle Fire HDX 7 16GB タブレット
Amazon (2013-11-28)
売り上げランキング: 145

ubuntu14.04 redmineにプラグインをインストールする

まずはpluginsディレクトリを作成
% sudo mkdir /usr/share/redmine/plugins
次にプラグインをダウンロード
% cd /usr/share/redmine/plugins
% sudo git clone https://github.com/onozaty/redmine-view-customize.git view_customize
そして、お決まりの手順を実施。
% cd /usr/share/redmine
% sudo rake redmine:plugins:migrate RAILS_ENV=production 
最後に、passenger経由で実施しているからかプラグインのスタイルシートがなぜか組み込まれないので、手動で無理やり読み込ませる。
% sudo mkdir /usr/share/redmine/public/plugin_assets
% cd /usr/share/redmine/public/plugin_assets
% sudo ln -s /usr/share/redmine/plugins/view_customize/assets view_customize
これでインストール完了。今回インストールしたview_customizeプラグインは、自作のjavascriptとstylesheetをredmineに組み込むことができ、redmineの見た目を劇的に変更することができる。
ためしにチケット一覧でチケットの内容を表示するスクリプトを作ったので公開しておく。

■Path pattern 「/issues」
■Type 「JavaScript」
■Code
// 題名のtitleに内容を設定する機能
$(function(){
  var subject_col=0;var id_col=0;
  $.each($('table.list th'), function(i){
    if($(this).text() == "題名") subject_col=i;
    if($(this).text() == "#") id_col=i;
  });
  if(subject_col!=0){
    $.each($('table.list tbody tr'), function(){
      var cells = $(this).children();
      cells.eq(subject_col).hover(
        function(){
          if($(this).attr("title")) return;
          var target=$(this);
          $.getJSON("../../issues/"+cells.eq(id_col).text()+".json",
            function(json){
              target.attr("title",json.issue.description);
            }
          );
        },function(){}
      );
    });
  }
});
題名欄をhoverするとチケット情報を取得して内容をtitle属性に設定するため、その後題名にマウスカーソルを合わせると内容が表示されるようになる。

Crucial MX100 2.5インチ内蔵型SSD 512GB SATAIII CT512MX100SSD1
Crucial Technology (2014-06-05)
売り上げランキング: 101

2014年9月13日土曜日

ubuntu14.04にredmineをインストールする

まずは、apache2とmysqlをインストール
% sudo apt-get install apache2
% sudo apt-get install mysql-server
mysql-serverは途中でユーザ名とパスワードを聞かれるので注意。わかんなければ全部rootで入れとけばおk。
次にredmineのインストール。途中でデータベースの設定があるので注意。mysqlインストール時に設定したユーザ名とパスワードを設定する。
% sudo apt-get install redmine redmine-mysql
次にpassengerのインストール。途中でwebserverの設定先を聞かれるのでapache2を選択すること。
% sudo apt-get install libapache2-mod-passenger
次にbundlerをインストール。ルート権限で実行しないとエラーになる模様。
% sudo gem install bundler
次はapache2の設定。apache2は、/etc/apache2/sites-available/000-default.conf
のVirtualHostタグ内に以下を追加。
<Directory /var/www/html/redmine>
       RailsBaseURI /redmine
       PassengerResolveSymlinksInDocumentRoot on
       PassengerDefaultUser www-data
</Directory>
サイトを設置するため、シンボリックリンクを追加。
% ln -s /usr/share/redmine/public /var/www/html/redmine
次にpassengerの設定。/etc/apache2/mods-available/passenger.confに以下を追加。
% /etc/apache2/mods-available/passenger.conf
最後にパーミッションを設定後、apache2を再起動。
% sudo chmod 777 /usr/share/redmine
% sudo service apache2 restart
 これでhttp://localhost/redmineにアクセスすると使えるようになる。ちなみにログインはadmin/admin。

Redmine超入門 (日経BPムック)

日経BP社 (2013-12-11)
売り上げランキング: 28,006

2014年6月29日日曜日

Linuxマシン上のeclipseをWindows7で操作する

前回VirtualBox上のUbuntu13.10にeclipse lunaをインストールした。VirtualBoxの仮想画面上でも操作できなくないが、ウィンドウサイズなどの制限をうけちゃうので、ホストのWindows7のデスクトップに直接ひらくことにした。無料でw。。
WindowsではXアプリケーションのウィンドウは開くことはできないので、フリーのXサーバーをウィンドウズ側にインストールする必要がある。私はXmingを愛用している。ほぼインストールしたまま設定せずにつかえるし、ある程度安定している。ちなみにCygwinのXサーバも試したことがあるが当時が安定してなかった記憶がある。今はどうかわからんが・・・。
Xmingは以下をダウンロードしてインストール。
インストール後、「C:\Program Files (x86)\Xming\X0.hosts」に接続するホストのIPアドレスを追記する。こんなかんじに。
localhost
192.168.0.10
192.168.0.14
次に、Linux側の日本語入力環境を整えるため、scim-anthyをインストール。
% sudo apt-get install scim-anthy
eclipseで日本語を入力できるようにするため、~/.bashrcとかに以下を追加。
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
以上で設定は完了。
Windows7上からの起動方法は以下。
1.Xlaunch起動
 スタートメニュー→Xming→Xlaunch
2.マルチプルウィンドウモードでXming起動。
 Multiple windows→次へ→start no client→次へ→次へ→完了
3.Cygwinやteraterm等でLinuxマシンにログイン
4.DISPLAY変数を設定
 % export DISPLAY=192.168.0.3:0.0
    ※192.168.0.3はWindows7のIPアドレス
5.eclipse起動
 % cd /home/user/tools/eclipse
 % ./eclipse
うちの環境では半角/全角キーで日本語入力切替ができた。皆様の環境ではctrl+spaceかもしれません。以上、参考になれば幸いです。。。

ピカピカふぁんたじん (初回限定盤A) (DVD付)
きゃりーぱみゅぱみゅ
ワーナーミュージック・ジャパン (2014-07-09)
売り上げランキング: 50

2014年6月28日土曜日

homeディレクトリに最新版eclipseをインストールする

会社で古いLinux32bitマシンにユーザ権限でeclipse環境を構築するミッションがあり思考錯誤中。手始めに家のVirtualBox上のUbuntu13.10で試したのでログを残す。結構簡単にできた。

1.以下をダウンロードし、/home/user/tools配下に配置。
eclipse本体<eclipse-standard-luna-R-linux-gtk.tar.gz>
eclipseCDT<eclipse-cpp-luna-R-linux-gtk.tar.gz>
JRE<jre-7u60-linux-i586.tar.gz>
日本語化キット<pleiades.zip>
2.以下を順番に実施
% cd /home/user/tools
% tar zxvf eclipse-standard-luna-R-linux-gtk.tar.gz
% unzip jre-7u60-linux-i586.tar.gz
% tar zxvf eclipse-cpp-luna-R-linux-gtk.tar.gz
% cd /home/user/tools/eclipse
% unzip ../pleiades.zip
% ln -s ../jre1.7.0_60 jre
3./home/user/tools/eclipse/eclipse.iniに以下2行を追加
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-Xverify:none
4.eclipse起動
% cd /home/user/tools/eclipse
% ./eclipse -clean
これで日本語化eclipse+CDTの環境が構築できた。
最新版のeclipseにはgit用のプラグインとかデフォルトで入っているね。
とくにいじらなくても普通につかえそう。
次回は、RHEL4に上記手順が通用するか試してみる。結果はまたブログで。。。。
(追記)RHEL4へのeclipse lunaインストールはglibc2.4の壁に阻まれ断念した。

Eclipse 4.3 完全攻略
Eclipse 4.3 完全攻略
posted with amazlet at 14.06.28
宮本 信二
SBクリエイティブ
売り上げランキング: 22,397

2014年6月7日土曜日

hubot-loggerを設定する

hubot-loggerを設定する。文字化け対策もやる。対策に使うnkf.plは本ブログの過去記事を参照すること。ログの保存はutf-8になる。noticeでもログはとる。設定は以下。
(1)~/tools/hubot/package.jsonを修正。青字追加。
   :
  "dependencies": {
    "hubot": "~2.5.1",
    "hubot-scripts": ">= 2.1.0",
    "optparse": "1.0.3",
    "hubot-irc": "0.1.x",
    "hubot-logger": "~0.0.11"  },
   :
(2)~/tools/hubot/external-scripts.jsonを以下の内容で作成。
["hubot-logger"]
(3)% npm install
(4)~/tools/hubot/node_modules/hubot-logger/scripts/hubot-logger.coffeeを修正。
        :
log_message = (root, date, type, channel, meta) ->
  mkdirp(path.resolve root, channel)
  log_file = path.resolve root, channel, date.toString("%Y-%m-%d") + '.txt'
  meta.date = date
  meta.channel = channel
  meta.type = type
  if meta.message
    cmd = "~/tools/hubot/perl/nkf.pl -in " + escape(meta.message)
    exec = require('child_process').exec
    exec cmd, (err,stdout,stderr) ->
      meta.message=stdout
      fs.appendFile log_file, JSON.stringify(meta) + '\n', (err) ->
        if err
          throw err
  else

    fs.appendFile log_file, JSON.stringify(meta) + '\n', (err) ->
      if err
        throw err
        :
    robot.adapter.bot.on 'message', (nick, to, text, message) ->
      result = (text + '').match(/^\x01ACTION (.*)\x01$/)
      if !result
        log_message(logs_root, new Tempus(), "message", to, {nick: nick, message: text, raw: message })
      else
        log_message(logs_root, new Tempus(), "action", to, {nick: nick, action: result[1], raw: message })
    robot.adapter.bot.on 'notice', (nick, to, text, message) ->
      result = (text + '').match(/^\x01ACTION (.*)\x01$/)
      if !result
        log_message(logs_root, new Tempus(), "message", to, {nick: nick, message: text, raw: message })
      else
        log_message(logs_root, new Tempus(), "action", to, {nick: nick, action: result[1], raw: message }) 

        :
(5) ~/tools/hubot/runbot.shに以下の設定追加。
export IRCLOGS_PORT=3001 #expressがlistenするポート番号
export IRCLOGS_FOLDER="chatlogs" #ログの保存先
以上を設定すると、http://localhost:3001/irclogsでログを参照することができる。

2014年6月5日木曜日

hubotのbotスクリプトをperlで書く

hubotのbotスクリプトはcoffeescriptで書かれていて、ところどころ非同期動作となり初心者には難しく感じた。ある程度勉強してそれなりにかけるようになったが、複雑な処理をやらせようとするといつも私は壁に当たってしまう。めんどくさくなったので使い慣れたperlで書くことにした。
perlで書くといってもircとの接続部分はhubotを使うのでperlを起動し結果をircに渡す最低限の箇所だけcoffeescriptで書き、あとはperlで実装する方式を採用する。
実際、やってみたがあっさりできた。DB連携でき文字化けもせず今のところ問題ない。
やり方を公開しとく。
1.まず最初にやるのは本ブログで紹介したirc.coffeeの文字化け対策。詳細はこちら
2.次にbotをircに接続するため、以下の内容で
  ~/tools/hubot/node_modules/hubot-scripts/src/scripts/tellme.coffeeを作成。
# tellme.coffee
module.exports = (robot) ->
  robot.hear /^(tellme_del|tellme_add|tellme)(\ | ).+/i, (msg) ->
    cmd = "~/tools/hubot/perl/dbbot.pl "+escape('tellme')+" "+ escape(msg.match[0])
    exec = require('child_process').exec
    exec cmd, (err,stdout,stderr) ->
      msg.send stdout
3.runbot.shで上記スクリプトが読み込まれるよう
  ~/tools/hubot/hubot-scripts.jsonに以下青字を追加
["redis-brain.coffee", "shipit.coffee", "tellme.coffee"]
4.perlスクリプトを以下内容で~/tools/hubot/perl/dbbot.plに作成。mysqlのアカウントとパスワードは環境により修正要!
#!/usr/bin/perl
use utf8;
use DBI;
use Encode;
use URI::Escape;
exit if($#ARGV < 1);
$maxcnt=5; # 最大表示レコード数
$tbl=uri_unescape(decode("utf-8",$ARGV[0]));
$tbl=~s/%u([0-9a-fA-F]{4})/pack("U",hex($1))/ego;
$str=uri_unescape(decode("utf-8",$ARGV[1]));
$str=~s/%u([0-9a-fA-F]{4})/pack("U",hex($1))/ego;
$str=~s/\ /\ /g;$pos=index($str,' ');
exit if($pos == -1);
$exeid=substr($str,0,$pos);$key=substr($str,$pos+1);$exeid=~tr/A-Z/a-z/;
if($exeid =~ /.+_add$/){
    $pos=index($key,' ');
    if($pos == -1){print "内容がないよぅ\n";exit;}
    $val=substr($key,$pos+1);$key=substr($key,0,$pos);
}
if($key eq "help"||$key eq "?"||$key eq "?"){
    $exeid =~ tr/A-Za-z//;
    print "■".$exeid."マクロの使い方\n";
    print "\t登録・・・『 ".$exeid."_add <key> <val> 』\n";
    print "\t削除・・・『 ".$exeid."_del <key> 』\n";
    print "\t参照<完全一致>・・・『 ".$exeid." <key> 』\n";
    print "\t参照<部分一致>・・・『 ".$exeid." %<key>% 』\n";
    print "\t参照<前方一致>・・・『 ".$exeid." <key>% 』\n";
    print "\t参照<後方一致>・・・『 ".$exeid." %<key> 』\n";
    print " ※情報が複数ある場合は最大".$maxcnt."つまで表示する\n";
    exit;
}
if($exeid =~/.+_add/ || $exeid =~ /.+_del/){
    $dbh=DBI->connect('DBI:mysql:hubot', 'root', 'root');
    $dbh->do("set names utf8");
    $sql='SELECT * FROM `'.$tbl.'` WHERE `key` = '.$dbh->quote($key);%rows=();
    $sth=$dbh->prepare($sql);$sth->execute;
    while ($row = $sth->fetchrow_hashref()){$rows{$row->{key}}=$row->{val};}
    $sth->finish;
    if(scalar(keys(%rows)) == 0){
        if($exeid =~ /.+_del/){
            $dbh->disconnect;print "そんなキーワードないよ!!\n";exit;
        }
        $sql='INSERT INTO `hubot`.`'.$tbl.'` (`key`, `val`) VALUES ('.
            $dbh->quote($key).', '.$dbh->quote($val).');';
        $val="追加しました!!";
    }
    else{
        if($exeid =~ /.+_del/){
            $sql='DELETE FROM `hubot`.`'.$tbl.'` WHERE `'.$tbl.'`.`key` = '.
                $dbh->quote($key).';';
            $val="削除しました!!";
        }
        else{
            $sql='UPDATE `hubot`.`'.$tbl.'` SET `val` = '.$dbh->quote($val).
                ' WHERE `'.$tbl.'`.`key` = '.$dbh->quote($key).';';
            $val="更新しました!! 旧->".decode("utf-8",$rows{encode("utf-8",$key)});
        }
    }
    $sth=$dbh->prepare($sql);$sth->execute;
    if($sth->err){print "ERROR! ".$sth->errstr."\n";}else{print $val."\n";}
    $sth->finish;$dbh->disconnect;
}
else{
    $dbh=DBI->connect('DBI:mysql:hubot', 'root', 'root');
    $dbh->do("set names utf8");
    if($key =~ /.*%.*/){$ope="LIKE";}else{$ope="=";}
    $sql='SELECT * FROM `'.$tbl.'` WHERE `key` '.$ope.' '.$dbh->quote($key);
    $sth=$dbh->prepare($sql);$sth->execute;%rows=();
    while ($row = $sth->fetchrow_hashref()){$rows{$row->{key}}=$row->{val};}
    $sth->finish;$dbh->disconnect;
    if(scalar(keys(%rows)) == 0){print "そんなキーワードないですよ!!\n";exit;}
    foreach $key(keys(%rows)){
        print "%u0016".$key."%u000f ".$rows{$key}."\n" if($ope eq "LIKE");
        print $rows{$key}."\n" if($ope eq "=");
        $maxcnt--;last if($maxcnt < 1);
    }
    print "・・・以下省略。ほかにもあるよ!!\n" if(scalar(keys(%rows)) > 5)
}
5.DB準備。
 (1)MySqlインストール
 (2)DB作成。名前は「hubot」
 (3)テーブル作成。名前は「tellme」。カラム数は2
 (4)テーブルの構造設定。
   1カラム目:名前「key」データ型「char」長さ「255」照合順序「utf8-bin」
   2カラム目:名前「val」データ型「char」長さ「255」照合順序「utf8-bin」

これで準備完了。cd ~/tools/hubot ; ./runbot.shで起動するとmybot君がチャットに登場する。
使い方は、
 tellme_add キーワード 内容
でDBに情報登録
 tellme キーワード
でDBの情報をチャットに出力
 tellme_del キーワード
でDBのレコードを削除
ちなみに、tellme.coffeeの robot.hearの行を
 robot.hear /^(なんとか_del|なんとか_add|なんとか)(\ | ).+/i, (msg) ->
にかえると、「なんとか」でbotが反応するようになる。
また
    cmd = "~/tools/hubot/perl/dbbot.pl "+escape('tellme')+" "+ escape(msg.match[0])
のtellmeを「なんとか」にかえるとテーブル名「なんとか」でDB登録参照するようになる。

ゼロからわかる Perl言語超入門
高橋 順子
技術評論社
売り上げランキング: 81,545

2014年5月31日土曜日

hubot文字化け対策

会社のchatbotが調子悪そうなので、新しいマシンにhubotをインストールして構築しなおしている。チャットの文字コードはISO-2022-JPだが、hubotがutf-8しか対応していないので結構文字化けに悩まされた。
ちまたでは、ZNCなどのプロキシを使うのが常套手段らしいがメンテするツールが増えるのがいやだったので、coffeescriptの改版で乗り切ったので備忘録を残しておく。
改版するスクリプトはこれ。
 hubot/node_modules/hubot-irc/src/irc.coffee

■変更箇所①sendするところでutf-8からISO-2022-JPに変換するperlを起動する。
      8   send: (envelope, strings...) ->
      9     mybot = @bot
     10     # Use @notice if SEND_NOTICE_MODE is set
     11     return @notice envelope, strings if process.env.HUBOT_IRC_SEND_NOTICE_MODE?
     12
     13     target = @_getTargetFromEnvelope envelope
     14
     15     unless target
     16       return console.log "ERROR: Not sure who to send to. envelope=", envelope
     17
     18     for str in strings
     19       cmd = "hubot/perl/nkf.pl -out " + escape(str)
     20       exec = require('child_process').exec
     21       exec cmd, (err,stdout,stderr) ->
     22         mybot.say target, stdout

■変更箇所②message受信時にISO-2022-JPからutf-8に変換するperlを起動する。
    215     bot.addListener 'message', (from, to, message) ->
    216       cmd = "hubot/perl/nkf.pl -in " + escape(message)
    217       exec = require('child_process').exec
    218       exec cmd, (err,stdout,stderr) ->
    219         message = stdout
    220         if options.nick.toLowerCase() == to.toLowerCase()
    221           # this is a private message, let the 'pm' listener handle it
    222           return
    223
    224         if from in options.ignoreUsers
    225           console.log('Ignoring user: %s', from)
    226           # we'll ignore this message if it's from someone we want to ignore
    227           return
    228
    229         console.log "From #{from} to #{to}: #{message}"
    230
    231         user = self.createUser to, from
    232         if user.room
    233           console.log "#{to} <#{from}> #{message}"
    234         else
    235           unless message.indexOf(to) == 0
    236             message = "#{to}: #{message}"
    237           console.log "msg <#{from}> #{message}"
    238
    239         self.receive new TextMessage(user, message)
以上、2箇所。noticeもかえたければ上記を参考に変更する。220行目以降は変更はないが、インデントを2文字ずつ後ろにする必要がある。これをやらないとうまくうごかないぞ!
次は文字コード変換perl。
※ここはperlのnkfモジュールを使うように以前の投稿から変更する。以前はファイル出力しnkfコマンドを使っていたがモジュールを使うことにする。
perlのnkfモジュールは sudo apt-get install libnkf-perlでインストールできる。
■hubot/perl/nkf.pl
#!/usr/bin/perl
use utf8;use NKF;use URI::Escape;
exit if($#ARGV < 1);
$str=uri_unescape($ARGV[1]);
if($ARGV[0] eq "-in"){print nkf("--oc=utf-8 --ic=ISO-2022-JP",$str);}
else{
    $str=~s/%u([0-9a-fA-F]{4})/pack("U",hex($1))/ego;
    print nkf("--ic=utf-8 --oc=ISO-2022-JP",$str);
}

chmod 755 nkf.pl を忘れずに!。
これでほぼ文字化けは回避できた。ポイントは文字をescapeしてからperlに渡しているところで、これをしないと「Д」とか「:」が入力されたとき動作がおかしくなる。


つくって覚えるCoffeeScript入門
飯塚直
アスキー・メディアワークス
売り上げランキング: 292,335

2014年5月20日火曜日

Ubuntuでリモコンを使う。その2

赤外線リモコンの設定を前回紹介したが、そんなのがなくてもipadがあればXBMCのリモコン操作が可能なことを発見した。アプリはこれ。

Official XBMC Remote - iTunes - Apple


Android版はこれ。


ios版しか試してないが、XBMCのyoutubeアドオンの検索において、デスクトップ上ですらできない日本語入力があっさりできてしまう優れもの。
これは常用してもいいかも。

2014年5月10日土曜日

Ubuntuでリモコンを使う

WindowsXPのサポート終了を契機に、XPの自作省電力TV録画PCをUbuntuに更改した。どーせならxbmcをいれて、youtubeや写真などをテレビでみれるようにしようと思い作業を開始。
使ったリモコンは、家に転がっていたやつ。

BUFFALO パソコン用地デジチューナー専用リモコン DT-OP-RC
バッファロー (2008-12-10)
売り上げランキング: 7,428

以前Vistaパソコンをメディアサーバーにしようとしてたときにかったやつ。これのいいところはドライバのインストールがいらないところ。なぜいらないかというとパソコン側はUSBキーボードがつながったと認識するから。なのでUbuntuでも普通に使える。安かったのに結構つかえるリモコンだね。
早速設定。
つなげるとUbuntuはキーボードがつながったと認識するので、リモコンボタンによる操作の割付は基本キーボードショートカットのカスタマイズで行う。Ubuntu標準のUnityをデスクトップとして使っているならその設定は、CompizConfig 設定マネージャーで可能(不具合がでているので注意。詳細は追伸参照)。インストールは以下。
$ sudo apt-get install compizconfig-settings-manager
すでにある標準のキーボードショートカットをリモコンで実施したい場合は、compizconfigの一般オプション内にあるキー割り当てで割り当てが可能。
標準のキーボードショートカットで満足できない人は、compizconfigのコマンドタブでの設定をおすすめする。こちらはボタン毎に動作するコマンドを設定することができる。もちろん自作のシェルスクリプトなどを動作させることが可能。
WindowsではAutohotkeyを常用していたため、おなじようなものがUbuntuにないか探したが最終的に自分のやりかったことはこのcompizconfigのコマンドタブでひととおりできそう。とりいそぎxbmcのリモコン操作はできるようになった。


追伸
本件。しばらく運用していたらショートカットの設定が消え去る事象が発生。その都度設定するも解決手段がわからず・・・。compizconfig設定マネージャーではなく、dconf-editorで設定して様子を見る。dconf-editorで設定後、compizconfig設定マネージャーでみると設定は消える模様。なので、しばらくcompizconfigは起動禁止してみる。
再度追伸
やっぱり設定が消える。これはログイン契機にコマンドで毎回設定するしかないな。以下のシェルを毎回起動しよっとw

#!/bin/sh
/usr/bin/dconf load / <<"EOF"
[org/compiz/integrated]
command-1='/etc/acpi/powerbtn.sh'
command-2='~/xbmc/sh/xbmc_start_stop.sh'
run-command-1=['<Control><Alt>h']
run-command-2=['<Control><Shift>b']
EOF

2014年5月5日月曜日

Ubuntuでリモートデスクトップ

Ubuntuで手軽にリモートデスクトップを実施するならvino-serverがよい。
 $ sudo apt-get install xrdp
でxrdpインストール後、ログインしてGUIから設定するだけでWindowsのリモートデスクトップ接続で普通につながる。ただし、以下の不具合がある。
・カーソルアニメーションが動作しない。常に矢印の状態。
・半角/全角キーがきかない。
常用するにはちょっと致命的。なので、私はx11vncを使うことにした。設定方法は以下。
<Ubuntu側の設定方法>
  1. vino-serverを使用するために設定したデスクトップの共有設定を削除
  2. x11vncをインストール
  3. $ sudo apt-get install x11vnc
  4. 自動起動するアプリケーションに以下を設定。※repeatをつけるとキーリピートが有効になる。
  5. $ /usr/bin/x11vnc -forever -nossl -noncache -nolookup -bg -usepw -repeat 
  6. 接続用パスワード設定
$ x11vnc -storepasswd
<クライアント側>
  1. VNC-Viewer-5.1.1-Windows-64bit.exeをインストール
  2. VNC Server欄にIPアドレス:5900を設定しConnectボタンクリックで接続可能。
接続するだけなら以上。半角/全角キーをつかうなら、IBus-Anthyとか自分使っている入力メソッドの設定を開き、「Key Binding」タブのon_offに「Zenkaku」と「Hankaku」をセットするとキーが有効になる。「Zenkaku_Hankaku」でないところがミソ!

デスクトップ画面を共有するなら上記が簡単便利。会社などで同じサーバーを複数人で使用するシチュエーションでは、デスクトップを共有しないxdmcp+Xmingがおすすめ。

超かんたんUbuntu 100%活用ガイド
佐々木 康之
技術評論社
売り上げランキング: 12,247

2014年2月22日土曜日

CygwinのminttyをLinux login terminalとして常用する

UbuntuなどのLinuxホストにWindowsからログインする際、poderosaのマクロを常用していた。poderosaは完成されたフリーソフトで便利であるが、私の環境ではマクロがフリーズする謎事象が発生し、ストレスとなっていた。せっかくCygwinの環境も整えたのでこの際Cygwinターミナルのminttyに切り替えようと思う。
まずは、ログインマクロをどうするかだが、最初はexpectを試した。ログインまでは問題ない。しかし日本語入力しようとするとセッションが切れる事象が発生し使い物にならなかった。この事象が回避できれば問題なく使える。
次、sshpass。これはコマンドパラメータにパスワードを書いておけばパスワードの入力をサボれるすぐれもの。こっちが本命。とても便利。インストールから使い方を書いておく。
インストールは以下。
% cd /usr/local/src
% wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz
% tar zxvf sshpass-1.05.tar.gz
% cd /usr/local/src/sshpass-1.05/
% ./configure --prefix=/usr/local
% make
% make install
使い方は以下。※opensshをインストールしてない人はsetup.exeでインストールすること。
% sshpass -p 'pass' ssh user@hostname
上記のpassとuser@hostnameは適宜変更すること。
しばらく常用しているが、不具合はまったく発生していない。むしろ快適。poderosaではウィンドウサイズをかえるとresizeコマンドでいちいち設定しなおす必要があったが、そんなことをしなくてもちゃんと自動で調整してくれる。ウィンドウの透明化も可能だし文字コードまわりも安定している。

実用SSH 第2版―セキュアシェル徹底活用ガイド
Daniel J. Barrett Richard E. Silverman Robert G. Byrnes
オライリー・ジャパン
売り上げランキング: 489,114

2014年2月2日日曜日

ddコマンドでMBR復旧

hdd破損に備えて、ddコマンドでいろいろバックアップを取っておこう。
#これは完全に俺個人の備忘録だなw
  1. まずは、適当なUSBスティックメモリにUbuntuをインストール。
  2. 次に、BIOS画面でF12を押してboot menu起動。Ubuntu選択。
  3. Ubuntuがスタートしたらターミナルを起動
これで、ddコマンドが使えるようになる。
ちなみに理由は不明だが、普通はUnity上のハードディスクアイコンをクリックすると自動マウントされ中身が参照できるが、USBのUbuntuはクリックでマウントできない事象が発生した。要因はマウント先のディレクトリがないからで、mkdirするとマウントできる。
最初は、全面バックアップでもしようかと思ったが、時間と容量が勿体ないのでやめた。
最低限の範囲にする。
  • MBRバックアップ方法
% sudo dd if=/dev/sda bs=512 count=1 | gzip -c > mbr.dump.gz
 →これでMBRとパーティションテーブルに一部がバックアップできる。
  •  パーティションバックアップ
% sudo dd if=/dev/sda1 bs=512 | gzip -c > Partition1.dump.gz
  • 復旧方法
% zcat ファイル名 | dd of=デバイス名
 MBRの復旧は結構めんどくさい。とくにWindowsは厄介だ。インターネットで調べればいくつか方法はでてくるが、どれも俺にとっては難易度が高い。
あらかじめバックアップしておくことをおすすめする。なにかあってからではおそい。

Acronis True Image 2014 Premium
Acronis True Image 2014 Premium
posted with amazlet at 14.02.02
Acronis (2013-11-15)
売り上げランキング: 266

Acer Aspire L5100にUbuntuインストール

Acer Aspire L5100は、Windows Vistaプリインストールの小型PCで、当時は録画PCとしてテレビの後ろで活躍していたが、省電力自作PCに活用場所をうばわれて、昨年末時点ではお蔵入り状態。もったいないので、Ubuntuをインストールしてみた。 まずはスペックのおさらい。
名前Aspire L5100
CPUAthlon 64 X2 5600+ 2.9GHz
メモリDDR2 PC2-5300 2GB (スロット数2)
ビデオチップAMD 690G
HDD容量320GB(7200rpm)
光学ドライブDVD±R/±RW/RAM/±RDL
LAN10/100/1000Mbps
無線LANIEEE802.11b(11Mbps)
IEEE802.11g(54Mbps)
その他機能 HDMI端子
光デジタル端子
IEEE1394
ワイヤレス操作
このパソコンは、リカバリ用のデータがHDD上にあるタイプなので、普通にUbuntuをクリアインストールしてしまうと、二度とWindows Vistaに戻せなくなるので注意が必要。私は怖いので、その辺に転がっていたHDDに換装して実施した。ちなみに換装のとき、やぶるとサポートを受けられなくなるシールをやぶったので、今後メーカーサポートはうけれなくなった。まぁ、価値もほぼないし、問題ない。いざ、インストール!
まず、ためしたのは、Ubuntu13.10→HDMIで音がでない。
次、Ubuntu12.10→HDMIで音がでない。
・・・
Ubuntu7.10→ばっちり!!
でも、7.10じゃー古すぎて使い勝手が悪い。。。
アップグレード→HDMIで音がでなくなった(T_T)
悪の元凶は、AMD 690G。対応しているXのバージョンが古いため、最新のUbuntuでは、いろいろやらないと音はでるようにならない模様。
音なしでのNAS利用も考えたが、あきらめて、Vistaにもどそうw。


超かんたんUbuntu 100%活用ガイド
佐々木 康之
技術評論社
売り上げランキング: 24,489