highlight.xcode

2018年4月11日水曜日

Debian stretch もしかして腐ってる? 代理マシン編 その1



以前「GA-MA78GPM-DS2H」+「AMD Athlon X2 5050e」にインストールした Debian stretch の調子が悪い…。

症状としては、突然再起動がかかる、気が付くと電源が落ちている、といった感じなのだが、一番の問題はログが残らないので、原因の特定が困難な事…。症状から察するにハードウェア関係、またはドライバ関係の問題っぽいのだが、マイナートラブルなのか、アップデートで問題が解消される訳でもなく、ネットで検索してみても話題にすらなって無いっぽい…。

という事で、余ってるマシンを代理マシンにする事にした。

今回のターゲットPCは「TOSHIBA dynabook EX/35LWHKS」というラップトップ PC。 構成としては「インテル Celeron プロセッサー 900」+「モバイル インテル GL40 Expressチップセット」、グラフィックは「モバイル インテル GMA 4500M」という感じ。

例によって Debian stretch は32bit(i386)版です。

で、タイトルの「Debian stretch もしかして腐ってる?」についてなんですが、今回のインストール中にも、突然ハングアップする、突然再起動する、といった症状が出てしまい、結局何回もインストールし直したり、設定を変えてみたりを繰り返すはめになった為、この様なタイトルになってしまいました…。

以下、素人なりの分析。
  1. 前回の「GA-MA78GPM-DS2H」+「AMD Athlon X2 5050e」が Debian stretch インストール直後から調子が悪い。が、その直前までは Debian wheezy で問題無く使用出来ていた為、ハードウェアの不具合は考えにくい。
  2. ログも吐かずに突然再起動する、電源が切れるといった症状から、ハードウェア周りか、ドライバ周りの問題の可能性が高い。
  3. 今回の「TOSHIBA dynabook EX/35LWHKS」に Debian stretch をインストールしても、ハングアップする、突然再起動する、といった症状が出てしまったが、主にドライバの設定で回避できた。
結果、Debian stretch のドライバ周りは腐ってるっ!(※個人の感想です)


それと、前回のインストールではデスクトップ環境として「CINNAMON」を選択したんですが、今回は結局ハードウェアレンダリングを無効化しなければならなくなった為、デスクトップ環境とし「MATE」を選択する事にしました。ちなみに「メイト」と読むものだと思っていたら、「マテ」と読むのが正解でした…。

以下、インストールログです。
  1. PC に CD をセットして起動、インストールを開始する。
  2. 最初のメニューでグラフィカルインストールを選択。無事インストール開始。
  3. 言語は日本語、インストール対象は「Debian デスクトップ環境」、「MATE」、「標準システムユーティリティ」のみ。インストールが始まるのでしばらく待つ。
  4. インストールが完了すると CD が排出され、再起動するかと聞かれるので CD を回収し再起動。
  5. 再起動すると GRUB のメニューが表示され、デフォルトで先ほどインストールしたシステムが起動される。
  6. 起動ログが流れていき、ログイン画面が出るか、というタイミングでクラッシュ!
    画面が虹色モザイクというか何というか、表示が完全に崩れ、しかも何の操作も受け付けなくなりました。
    Ctrl + Alt + F1 等で他のコンソールに切り替える事も出来ません。
  7. 電源ボタンの長押しで再起動する…。
で、ここからの試行錯誤が非常に長かったんですが、先に結果だけ書き留めておきます。
  1. "/etc/X11/xorg.conf" ファイルを作り、グラフィックドライバの設定を変更する。
  2. グラフィックドライバは "intel" を指定。
  3. グラフィックドライバのオプション "NoAccel" を指定し、ハードウェアアクセラレーションをオフる。
  4. "/etc/default/grub" ファイルへカーネルパラメーターを追加し、"execlist" を無効化する。
これでやっとまともにログインし、デスクトップにたどり着けました…。

"xorg.conf" の作り方については「debian squeeze で xorg.conf が無い場合の対処法 | ラムダ算法書店」を参考にさせてもらいました。"intel" グラフィックドライバの設定等に関しては「Intel Graphics - ArchWiki」を参考にさせてもらいました。

特に「Intel Graphics - ArchWiki」は、"intel" グラフィックドライバに関して、色々な環境、いろいろなトラブルについて詳細に書かれており、大変参考になりました。その反面、膨大な情報の中から自分の環境に合った正解に辿り着くまでに、大変な時間を要しました。もちろん私の場合は解決に至ったので、大変感謝しています!


以下、個別の作業メモです。

通常通り起動してしまうとグラフィカルログイン前、またはログイン後に、クラッシュやフリーズをしてしまうので、"GRUB" メニューの "Advanced options for Debian GNU/Linux" -> "recovery mode" から、リカバリーモードに "root" でログインして作業を行います。
  1. コンソールが日本語に対応していない為、日本語メッセージが化けてしまうので、言語設定を英語にする。
  2. "Xorg -configure" コマンドで "/root/xorg.conf.new" ファイルを作成。
  3. "/root/xorg.conf.new" ファイルを、"/etc/X11/xorg.conf" へと移動、改名。
  4. "/etc/X11/xorg.conf" ファイルを編集し、グラフィックドライバの設定を変更。
  5. "/etc/default/grub" ファイルを編集し、カーネルパラメーターを追加。
  6. "update-grub2" コマンドで GRUB を更新。
  7. 再起動。
"/etc/X11/xorg.conf" ファイル編集までのコマンドです。
# export LANG=C
# Xorg -configure
# mv /root/xorg.conf.new /etc/X11/xorg.conf
# vi /etc/X11/xorg.conf
"/etc/X11/xorg.conf" ファイルの内容です。Identifier "Card0"、"Card1" と 2モード分のグラフィックデバイスの設定が有るので、ここに "NoAccel" オプションを追加します。
 (省略)
Section "Device"
 (省略)
 Identifier  "Card0"
 Driver      "intel"
 Option      "NoAccel" "True"
 BusID       "PCI:0:2:0"
 (省略)
EndSection

Section "Device"
 (省略)
 Identifier  "Card1"
 Driver      "intel"
 Option      "NoAccel" "True"
 BusID       "PCI:0:2:1"
 (省略)
EndSection
 (省略)
"/etc/default/grub" ファイルを編集します。
# vi /etc/default/grub
"/etc/default/grub" ファイルの内容です。"GRUB_CMDLINE_DEFAULT" へ "i915.enable_execlists=0" を追加し、"execlist" を無効化します。
(省略)
GRUB_CMDLINE_DEFAULT="quiet i915.enable_execlists=0"
(省略)
"update-grub2" コマンドで GRUB を更新し、再起動します。
# update-grub2
# reboot
無事、グラフィカルログインも成功し、デスクトップが表示されました!


今回の環境「TOSHIBA dynabook EX/35LWHKS」では、ハードウェアアクセラレーションの無効化、"execlist" の無効化で、なんとか使える環境まで持っていけました。その他ソフトウェアのインストールや、システムの移行が完了したら、「GA-MA78GPM-DS2H」+「AMD Athlon X2 5050e」にも再挑戦しようと思っています。やっぱグラフィックドライバ周りが原因なのかなぁ…。

2017年11月1日水曜日

Gedit が使いづらいのでエディタを SciTE に乗り換える



※この記事の設定はその後見直しました。

何回使っても Gedit が使いづらい。特に検索が酷い。あと、プラグインが微妙…。純正プラグインはまあ良いとして、それだけでは機能が足りないので野良プラグインで補完しようとするも、バージョン間の互換性が低いせいで、上手く動かなかったりする事が多い気がする…。

で、割とまともなエディタ「SciTE」に乗り換えます。まあ、毎度のパターン。

SciTE をインストールします。
# aptitude install scite

メニューの「プログラミング」に登録されるみたいです。


SciTE を起動し、設定を整えていきます。
メニュー「Options」->「Open User Options File」を開き、設定を変更します。
とりあえず個人的な定番設定を書き込み、保存します。
# 行番号の表示
line.margin.visible=1
line.margin.width=1+
margin.width=4

# 矩形選択時 改行より右にカーソルがいけるようにする
virtual.space=1

# 文字コード
character.set=128
code.page=65001
if PLAT_GTK
 LC_CTYPE=ja_JP.UTF-8
 output.code.page=65001

# フォント
technology=0
font.base=font:!Monospace Regular,size:9
font.small=font:!Monospace Regular,size:8
font.comment=$(font.base)
font.code.comment.box=$(font.comment)
font.code.comment.line=$(font.comment)
font.code.comment.doc=$(font.comment)
font.code.comment.nested=$(font.comment)
font.text=$(font.base)
font.text.comment=$(font.base)
font.embedded.base=$(font.base)
font.embedded.comment=$(font.base)
font.monospace=$(font.base)
font.vbs=$(font.base)
font.js=$(font.base)

# タブの幅
tabsize=8
indent.size=8

# 空白文字の表示
view.whitespace=1

# 選択部分の色
selection.fore=#000000;
selection.back=#ffd700
selection.alpha=256
find.mark.indicator=style:roundbox,colour:#0080FF,under,outlinealpha:140,fillalpha:80

# 出力ウィンドウを横分割にする
split.vertical=0

# 終了時に折りたたみを保存する
session.folds=1

設定方法は「SciTE Documentation」に有るんですが、英語なので正直メンドイんですよねぇ…。

2017年10月31日火曜日

Cinnamon のウィンドウスナップ・ウィンドウタイリングをオフる



しばらく様子を見ていたんだけど、Cinnamon のウィンドウスナップ機能、ウィンドウタイリング機能がウザすぎてオフった。

デスクトップ環境で使うにはメリットが一切感じられないんだけどなぁ…。これってタブレット端末とか用の機能じゃないのかね?

まあ、簡単にオフれるから良いけど…。

メニューから「設定」->「ウィンドウタイル表示」をクリック。


「ウィンドウのタイル表示とスナップ化を有効化」が「オン」になっているので…


「オフ」にするだけ。


この機能が最初からオフになっていると、機能の存在自体が埋もれてしまうので、デフォルトでオンにしてるんだろうけど…。まあ、デスクトップユーザーには要らない機能よなぁ…。

2017年10月23日月曜日

Debian stretch + Cinnamon に Dropbox をインストール



Debian stretch + Cinnamon 環境に Dropbox をインストールしたのでメモ。

Gnome系 のファイルマネージャー Nautilus の場合は、普通に nautilus-dropbox パッケージを導入すれば問題無いと思いますが、Cinnamon のファイルマネージャー Nemo の場合は、nemo-dropbox パッケージを導入するみたいです。で・す・が、Debian stretch のリポジトリには存在しないっていうね…。Ubuntu のリポジトリには普通に有るみたいなんだけどなぁ…。

色々と検索して調べてみたら「nemo-extensions/nemo-dropbox at master · linuxmint/nemo-extensions · GitHub」でソースが公開されているので、これを使ってみるのも有りかもしれません。

ですが、今回は「Linux Packages Search - pkgs.org」という、Linux 関係のパッケージが集積されたサイトと出会ったので、これを利用してみます。

nemo-dropbox_2.0.1+lmde_i386.deb Debian Download」から deb ファイルをダウンロード。今回は nemo-dropbox_2.0.1+lmde_i386.deb というファイルでした。

私の環境では python-gpgme パッケージのみが足りてなかったので、事前にインストールしておきます。
# aptitude install python-gpgme
dpkg コマンドで deb ファイルからパッケージをインストール。
# dpkg -i nemo-dropbox_2.0.1+lmde_i386.deb
特に問題無くインストール出来ました。
普通にメニューにも登録されます。

自動起動にも。


しっかし、何で Debian stretch のリポジトリには nemo-dropbox が無いんだろ…。
謎だ…。

2017年10月21日土曜日

Debian stretch に VirtualBox をインストール



Debian stretch に VirtualBox をインストールしたのでメモ。

以前は backports とかからインストール出来てたと思ったんだけど、配布元サーバーも Oracle に移動したみたいです。

How to Install VirtualBox on Debian 9 Stretch - LinuxBabe.Com」に、そのものズバリが書いてあるので参考にさせてもらいました。

まずは APT ラインを追加します。
/etc/apt/sources.list.d/ 以下に virtualbox.list を新規に追加し、編集します。
# vi /etc/apt/sources.list.d/virtualbox.list
以下の APT ラインを追加し、保存します。
deb http://download.virtualbox.org/virtualbox/debian stretch contrib
配布元サーバーの公開鍵をダウンロードし、インストールします。
# wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -
パッケージの情報を更新します。
# aptitude update
VirtualBox をインストールします。
# aptitude install virtualbox-5.1
Dynamic Kernel Modules Support をインストールします。
これをインストールすると、カーネルが更新された場合に自動的にカーネルモジュールも更新される様です。
# aptitude install dkms
カーネルモジュールを見てみると vbox で始まるモジュールが4つ位見つかります。 多分これらが VirtualBox のカーネルモジュールだと思います。
~# lsmod | grep vbox
vboxpci                24576  0
vboxnetadp             32768  0
vboxnetflt             28672  0
vboxdrv               303104  3 vboxnetadp,vboxnetflt,vboxpci
インストールが完了すれば、Cinnamon のメニューにも自動的に登録されます。

2017年10月20日金曜日

Debian stretch その 7 環境整備編⑥



Debian GNU/Linux を更新したのでメモ。

ターゲットPCは GA-MA78GPM-DS2H + AMD Athlon X2 5050e。
今回は /var の移動を行います。


/var の移動先は RAID なので、RAID の自動マウントを先に設定します。

まずは RAID の中には古い var が残っているので、ディレクトリの名前を変更しておきます。
# mkdir /mnt/md0
# mount /dev/md0 /mnt/md0
# mv /mnt/md0/var /mnt/md0/var.old
次に自動マウントの設定を fstab に追加します。
元のファイルは一応バックアップ、blkid コマンドで RAID の UUID を取得し fstab の最後に追加、その後整形します。
# cp /etc/fstab /etc/fstab.default
# blkid /dev/md0 >> /etc/fstab
# vi /etc/fstab
fstab の最後に、blkid コマンドの結果が追加されているので、これを整形します。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sda2 during installation
UUID=6c2a6e8d-ea3f-4786-96ee-f1c83c56fd64 /               ext4    errors=remount-ro 0       1# swap was on /dev/sda1 during installation
UUID=dce66cfb-5f5d-4e49-8e4b-dc38266a585d none            swap    sw              0       0
# swap was on /dev/sdb1 during installation
UUID=59080742-ca1e-444d-9330-04ee5737e65d none            swap    sw              0       0
# swap was on /dev/sdc1 during installation
UUID=be2ce936-0aef-4753-9f36-02bd4ee4068e none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/md0: UUID="2ca55f1b-a25c-486e-8cc5-98d6c7c7e3d2" TYPE="ext4"
blkid コマンドの結果を編集し、以下の様にします。
(省略)
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sda2 during installation
UUID=6c2a6e8d-ea3f-4786-96ee-f1c83c56fd64 /               ext4    errors=remount-ro 0       1# swap was on /dev/sda1 during installation
UUID=dce66cfb-5f5d-4e49-8e4b-dc38266a585d none            swap    sw              0       0
# swap was on /dev/sdb1 during installation
UUID=59080742-ca1e-444d-9330-04ee5737e65d none            swap    sw              0       0
# swap was on /dev/sdc1 during installation
UUID=be2ce936-0aef-4753-9f36-02bd4ee4068e none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
UUID=2ca55f1b-a25c-486e-8cc5-98d6c7c7e3d2 /mnt/md0        none    defaults        0       2
再起動してみて自動的に RAID がマウントされていれば OK。


いよいよ /var を移動します。

まず GRUB のメニューからリカバリーモードへ入り、ログイン、su します。
さらにシングルユーザモードへ移行します。
念のため /var を使用しているプロセスが居ないことも確認。
# init 1
# lsof | grep /var
新しい var (RAIDの 方)を作成、現在の var の中身を、新しい var (RAIDの 方) へとコピー、現在の var をバックアップ、マウントポイントを作成しておきます。
# mkdir -p /mnt/md0/var
# cp -prf /var/* /mnt/md0/var
# mv /var /var.old
# mkdir -p /var
/var の自動マウントの設定を fstab に追加します。
# vi /etc/fstab
RAID の var を、/var へマウントします。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sda2 during installation
UUID=6c2a6e8d-ea3f-4786-96ee-f1c83c56fd64 /               ext4    errors=remount-ro 0       1# swap was on /dev/sda1 during installation
UUID=dce66cfb-5f5d-4e49-8e4b-dc38266a585d none            swap    sw              0       0
# swap was on /dev/sdb1 during installation
UUID=59080742-ca1e-444d-9330-04ee5737e65d none            swap    sw              0       0
# swap was on /dev/sdc1 during installation
UUID=be2ce936-0aef-4753-9f36-02bd4ee4068e none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
UUID=2ca55f1b-a25c-486e-8cc5-98d6c7c7e3d2 /mnt/md0        none    defaults        0       2
/mnt/md0/var    /var                                      none    bind            0       0
再起動して /var が自動的にマウントされていれば OK。 というか、上手くいってなければ起動時にエラーが発生して、勝手にリカバリーモードへ入る事になると思います。


環境整備編はこれにて終了かなぁ…。

Debian stretch + Cinnamon ディスプレイマネージャーの再起動



Cinnaomon のパネルにアプレットを追加したり削除したりして遊んでたら、マウスーカーソルは動くものの、何しても反応しなくなっちゃった…。 デスクトップ環境だけがフリーズしちゃったのか?

Ctrl + F6 でターミナルに降りて、ログイン、su してからディスプレイマネージャーを再起動。
# service lightdm restart
これでログイン画面に戻れたよ…。
何でフリーズしちゃったのかは謎…。