Gentoo/LinuxのApache2が起動できない問題
GentooでApache2を起動しようとした際, 2箇所ハマったので対処法をまとめておきます.
1. 80番ポートに関する問題
以下のエラーメッセージが出た時の対処方法.
# /etc/init.d/apache2 start * Starting apache2 ... (98)Address already in use: make_sock: could not bind to address [::]:80
80番ポートが既に使われているというメッセージです.
このメッセージは, Apache2を再起動した際によく見られるみたいです.
その場合は, 以下のコマンドでポートを専有しているApache2プロセスを終了して対処します.
# emerge lsof # lsof -i | grep http httpd 1638 root 3u IPv4 9004 0t0 TCP *:http (LISTEN) httpd 1638 root 4u IPv4 9013 0t0 TCP *:https (LISTEN) # kill -9 1638 # lsof -i | grep http # /etc/init.d/apache2 start
しかし, 今回は"lsof -i | grep http"した時に, 何も出なかった場合の対処法です.
つまり, 専有しているプロセスがないにもかかわらず, 80番ポートが既に使われている状況です.
もしかしてと思い, バーチャルホストのポート設定を見てみました.
バーチャルホストとは, 単独サーバで複数ドメインのWebページを公開する機能です.
こちらのバーチャルホストの80番ポートの指定をコメントアウトしたら直りました.
これが本当に正しいのかはわからないので, 詳しい方がいたら是非教えて下さい.
以下その手順です.
# nano /etc/apache2/vhosts.d/00_default_vhost.conf Listen 80 ← この行の文頭に#をつけてコメントアウトする.
2. start-stop-daemonになる問題
以下のエラーメッセージが出た時の対処法.
# /etc/init.d/apache2 start * Starting apache2 ... * start-stop-daemon: failed to start `/usr/sbin/apache2' * apache2: caught SIGINT, aborting
/usr/sbin/apache2の起動に失敗したというメッセージです.
このメッセージは, /etc/hostsにドメインやホストネームが書かれていないために起きます.
そこで, 以下のように/etc/hostsを書き換えます.
# nano /etc/hosts 127.0.0.1 localhost ↓ 127.0.0.1 localhost.localdomain localhost hostname ここで, hostnameとは/etc/conf.d/hostnameで設定した名前です. # /etc/init.d/apache2 start * Starting apache2 ...
参考文献
ApacheがRestartできない!(98)Address already in use: make_sock… | Weblogy
In the name of SUDO • Apache in Gentoo
Gentooのインストール方法
Webサーバが欲しくなったので, 余っているマシンにGentooをインストールします.
カーネルはマニュアルコンフィグレーションで, その手順を備忘録として残します.
設定については吟味していません.
使用するコマンドの意味までは言及しないので, 調べ理解した上で先に進んで欲しいです.
なお, 以下の手順でインストールした際のいかなる損害やトラブルの責任は一切負いかねるので, パソコンから火が出て爆発したり, 宇宙線の影響でデータが破損しても知りません.
1. Gentooインストールの準備
まず, GentooミラーサイトからMinimalCDイメージをダウンロードします.
releases/各自のアーキテクチャ/autobuilds/current-isoに最新版のisoが置いてあります.
以下, amd64を選択したものとしてインストールを行います.
CDに書き込み出来たらさっそくインストールCDをブートします.
boot: gentoo
と入力してしばらく待つと, キーボード選択画面になるので好きな番号を押します.
日本語のキーボードが良い人は22と入力します.
livecd ~ #
とrootでログインが出来たはずです.
ネットワークが設定されていない場合, 以下のツールで簡単に設定出来ます.
# net-setup enp2s0
次に, カーネル構築を簡単にするために以下のコマンドを実行し, 赤字部分をメモしておきます.
# lspci -k |grep driver Kernel driver in use: pcieport Kernel driver in use: uhci_hcd Kernel driver in use: echci-pci Kernel driver in use: snd_hda_intel Kernel driver in use: e1000e Kernel driver in use: ahci Kernel driver in use: pata_jmicron # lspci -k |grep modules Kernel modules: uhci_hcd Kernel modules: ata_piix, pata_acpi, ata_generic Kernel modules: snd_hda_intel Kernel modules: e1000e Kernel modules: ahci Kernel modules: pata_jmicron, pata_acpi, ata_generic
2. パーティションの作成
パーティションの作成にはfdiskを使います.
# fdisk /dev/sda
用途や環境に応じて分割の基準は変わるので, 今回行った構成を例として載せておきます.
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x99089908 Device Boot Start End Blocks Id System /dev/sda1 * 2048 20973567 10485760 83 Linux /dev/sda2 20973568 54527999 16777216 82 Linux swap / Solaris /dev/sda3 54528000 222300159 83886080 83 Linux /dev/sda4 222300160 1953525167 865612504 5 Extended /dev/sda5 222302208 327159807 52428800 83 Linux /dev/sda6 327161856 1953525167 813181656 83 Linux
3. ファイルシステムの作成
各パーティションに, 今回はext4ファイルシステムを適用します.
(btrfsではないです)
# mkfs.ext4 /dev/sda1 (bootパーティションへの適用) # mkswap /dev/sda2 (swapパーティションの初期化) # swapon /dev/sda2 (swapパーティションの有効化) # mkfs.ext4 /dev/sda3 (rootパーティションへの適用) # mkfs.ext4 /dev/sda5 (homeパーティションへの適用) # mkfs.ext4 /dev/sda6 ( varパーティションへの適用)
4. パーティションのマウント
# mount /dev/sda3 /mnt/gentoo (rootパーティションのマウント) # mkdir /mnt/gentoo/boot (boot用のディレクトリ作成) # mount /dev/sda1 /mnt/gentoo/boot (bootパーティションのマウント)
5. 日時の確認
# date もしズレていたら, 以下のように設定. # date MMDDhhmmYYYY M(月), D(日), h(時), m(分), Y(年)
6. 各種ダウンロードとインストール
インストール先のマウントポイントへ移動し, stageとportageのダウンロード.
# cd /mnt/gentoo # links http://www.gentoo.org/main/en/mirrors.xml releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-.tar.bz2 snapshots/portage-latest.tar.bz2
stageとportageのインストール.
# tar xvjpf stage3-*.tar.bz2 # tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
7. chrootで新しい環境へ入る
chrootの準備として, 各種設定を行います.
ミラーサイトとSYNC変数の設定.
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf # mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
DNS情報のコピー.
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
/proc, /devファイルシステムのマウント.
# mount -t proc none /mnt/gentoo/proc # mount --rbind /dev /mnt/gentoo/dev
新しい環境へのchroot.
# chroot /mnt/gentoo /bin/bash # env-update # source /etc/profile # export PS1="(chroot) $PS1"
8. portageシステムの設定
chrootで新しい環境へ入ったので, portageツリーを更新します.
# emerge --sync --quiet
自分にあったprofileの選択をします.
# eselect profile list # eselect profile set 設定したい番号
9. コンパイルオプションとUSEフラグの設定
コンパイルオプションの設定をします.
# gcc -v -xc -march=native /dev/null 2>&1|grep cc1 >> /etc/portage/make.conf # nano -w /etc/portage/make.conf
make.confに次のような行が追記されます.
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -quiet -v /dev/null -march=core2...
-marchから-quietまでをCFLAGSの-pipe以下に貼り付けます.
USEフラグは, make.confのUSEよりあとに記述します.
用途や環境に応じて変わるので, 必要だと思うものを設定してください.
10. glibcのロケール設定
必要なロケールを指定します. 今回は私の例を載せておきます.
# nano -w /etc/locale.gen en_US ISO-8859-1 en_US.UTF-8 UTF-8 ja_JP.EUC-JP EUC-JP ja_JP.UTF-8 UTF-8 ja_JP EUC-JP # locale-gen
11. カーネルのマニュアルコンフィグレーション
いよいよお待ちかねのカーネルのマニュアルコンフィグレーションです.
ソースをインストールします.
# emerge gentoo-sources
シンボリックリンクの確認をします.
# ls -l /usr/src/linux lrwxrwxrwx 1 root root 20 Feb 25 00:00 /usr/src/linux -> linux-3.10.25-gentoo
カーネルのマニュアル設定を行います.
# cd /usr/src/linux # make menuconfig
まず, "/"キーを押してSearch Configuration Parameterを開きます.
ここで, 1章にてメモしたドライバとモジュールを検索し設定します.
残りは, 環境によって違うので簡単な流れだけ載せておきます.
・Processor familyをマシン構成に併せて設定.
・要らないドライバやモジュールを削る.
・nVidiaカードを使っている人はnouveauにチェックを入れ以下を行う.
/etc/portage/make.confにVIDEO_CARDS="nouveau"と追記. emerge -1 xorg-driversを行う.
構成が完璧に出来たと思ったら, コンパイルとインストールをします.
実際には出来ていない事が多いですが, とりあえず先に進みます.
(ext4やdevtmpfsは最近だとチェック済みなので死ぬことは少ないと思います)
# make && make modules_install && make install
12. Gentooのシステム設定
fstabを作成しファイル情報を記入します.
以下は私の設定例です.
# nano -w /etc/fstab /dev/sda1 /boot ext4 noauto,noatime 0 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext4 noatime 0 1 /dev/sda4 none ext4 noatime 0 2 /dev/sda5 /home ext4 noatime 0 2 /dev/sda6 /var ext4 noatime 0 2 /dev/cdrom /mnt/cdrom auto noauto,ro 0 0
ホストネームの設定
# nano -w /etc/conf.d/hostname hostname="お好みで"
ネットワークの恒久設定(DHCPの場合)
# nano -w /etc/conf.d/net config_enp2s0="dhcp" # cd /etc/init.d # ln -s net.lo net.enp2s0 # rc-update add net.enp2s0 default # emerge dhcpcd
13. ブートローダの設定
今回はgrub2を使った設定例を載せておきます.
# mount /boot # emerge grub # grub2-install /dev/sda # nano -w /boot/grub/grub.cfg default 0 timeout 2 menuentry 'Gentoo Linux 3.10.25' { root=hd0,1 linux /boot/vmlinuz-3.10.25-gentoo root=/dev/sda3 } menuentry 'Gentoo Linux 3.10.25 (rescue)' { root=hd0,1 linux /boot/vmlinuz-3.10.25-gentoo root=/dev/sda3 init=/bin/bb } # grub2-mkconfig -o /boot/grub/grub.cfg
この後, /etc/default/grubに色々できるので次からそちらを変更してください.
エラーがなければrootのパスワードを設定した後, rebootしてください.
もし, カーネルパニックが起きた場合, 再度マウントしてchrootし調整してください.
無事にGentoo/Linuxが起動できれば成功です.
この後は, LM(SLiM)やWM(Awesome)を入れGUI環境を整えたり, 細かい設定を行い自分好みのマシンに仕上げていきましょう.
参考文献
Gentoo Linux -- Gentoo Linux News
nouveau - Gentoo Wiki
GRUB2 Quick Start - Gentoo Wiki
GentooでECM-PCV80Uマイクをクリアな音質で使う方法
Gentooと書いていますが, 他のLinuxディストリでも簡単に利用できると思います.
今回, GentooでSkypeを使い通話をするために以下のマイク(ECM-PCV80U)を購入しました.
(レビューでノイズがあるという方は, おそらくUSB接続ではないか設定の問題だと思います)
1. ECM-PCV80Uの導入
まず, SkypeとPulseAudioの初期設定だが, これはGentoo Wiki等を参考してもらいたいです.
次に, 付属のUSBオーディオボックス(UAB-80)経由にて先程のマイクを接続します.
USBケーブルを抜き差しし, 認識しているかチェックします.
# dmesg |grep Sony # ここに, Sony Corporation UAB-80が含まれた表示があればよいです.
PulseAudioにて, プロファイルとしてUAB-80が読み込まれているか確認します.
ここでは, 簡単に出来るように音量調節ツールのpavucontrolを使います.
# emerge pavucontrol
pavucontrolを起動し, 設定画面を押し以下のようにUAB-80があるか確認します.
もし, UAB-80が見当たらない場合, USBオーディオに関するカーネルの設定ができていないと思われます. 落ち着いてみんな大好きカーネルコンフィグレーションを行いましょう.
カーネルの設定画面を開きます.
# mount /boot # cd /usr/src/linux # make menuconfig
以下をカーネルに組み込みます.
Device Drivers -> Sound card support -> Advanced Linux Sound Architecture -> USB sound devices -> <*> USB Audio/MIDI driver
設定をインストールします.
# make && make modules_install && make install # umount /boot # reboot
もう一度起動して, UAB-80が出たら成功です.
2. PulseAudioでの設定
ここの設定は, 好みもあると思うので私の設定画面を一例として載せます.
基本的に, UAB-80のミュートを外して音が出るようにすればよいです.
今回は, PC -> UAB-80 -> イヤフォン, PCV80Uマイクという接続を想定します.
再生について.
録音について.
出力装置について.
入力装置について.
設定について.
録音画面は, Skypeでの通話時に現れるので音声テスト等で設定します.
もし, ノイズがひどい場合はPulseAudioのスケジュール手法が問題の場合があります.
以下を試すと直るかもしれないです.
適当なエディタで, /etc/pulse/default.paと/etc/pulse/system.paを次のように編集.
load-module module-udev-detect ↓ load-module module-udev-detect tsched=0
書き換え終わったら, PulseAudioデーモンを再起動します.
libxml2[icu]によってブロックされるqtwebkitの解決
qtwebkitやそれを含んだqt-metaをemergeする際, 次のようなメッセージが出てブロックされてしまうことがあります.
# emerge qtwebkit [ebuild R ] dev-libs/libxml2-2.9.1-r1 USE="python readline" [ebuild N ] dev-qt/qtwebkit-4.8.5 USE="exceptions gstreamer jit" !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: dev-libs/libxml2:2 (dev-libs/libxml2-2.9.1-r1::gentoo, ebuild scheduled for merge) pulled in by dev-libs/libxml2:2[!icu?] required by (dev-qt/qtwebkit-4.8.5::gentoo) (dev-libs/libxml2-2.91-r1::gentoo, installed) pulled in by dev-libs/libxml2:=[icu] required by (www-client/chromium-32.0.1700.77) dev-libs/libxml2:2/2=[icu] required by (www-client/chromium-32.0.1700.77)
icuに関する問題とわかるので,フラグの確認を行います.
$ euse -i icu global use flags (searching: icu) [- ] icu - Enable ICU (Internationalization Components for Unicode) support, using dev-libs/icu local use flags (searching: icu) no matching entries found
上記の場合, /etc/portage/make.confのグローバルのUSEフラグにicuを追加すればよいです.
参考文献
Gentoo Forums :: View topic - libxml2[icu] is blocking qt-webkit [SOLVED]
Da Vinci 32U with Arduino BootloaderにGentooで書き込み
Gentooでダ・ヴィンチ 32Uマイコンボードに書き込みを行う方法です.
# emerge -avq icedtea crossdev layman
icedtea :
Arduino IDEは, Javaで書かれているので好きなJavaプラットフォームを入れます.
crossdev, layman :
ツールチェイン構成用.
インストールが終わったら, 以下のように設定を行います.
# echo "source /var/lib/layman/make.conf" >> /etc/portage/make.conf # mkdir -pv /usr/local/portage
以下のようにツールチェインを作成します.
# USE="-openmp" crossdev -t avr -s4 -S --without-headers
ツールチェインの作成には,少し時間がかかるかもしれないので気長に待ちます.
もし, 以下のようなエラーメッセージが出た場合,
please convert /etc/portage/package.use to a directory
次のようにします.
# mv /etc/portage/package.use /etc/portage/use_backup # rm /etc/portage/package.use # mkdir /etc/portage/package.use
修正が終わったら,もう一度ツールチェインの作成コマンドを入力します.
2. カーネルの設定
みんな大好きカーネルコンフィグレーションを行います.
一応, ttyとuucpをユーザに追加します.
# gpasswd -a YOUR_USERNAME tty # gpasswd -a YOUR_USERNAME uucp
カーネルの設定画面を開きます.
# cd /usr/src/linux # make menuconfig
以下の2つをモジュールに設定します.
Device Drivers -> USB support -> USB Serial Converter support -> [M] USB FTDI Single Port Serial Driver Device Drivers -> USB support -> [M] USB Modem (CDC ACM) support
設定をインストールします.
# make && make modules && make modules_install && modprobe ftdi_sio
ここまで終わったら, ダ・ヴィンチをPCに接続します.
dmesgで認識しているか確認できたら次に進みます.
3. Arduino IDEのインストール
Arduino IDEのインストールをします.
# emerge -avq arduino
起動するか確認してください.
4. Da Vinci 32Uのドライバ設定
初期状態では, Arduino IDEのメニュー -> ツール -> マイコンボードにDa Vinci 32Uはないと思うので設定ファイルを書き追加します.
# cd /usr/share/arduino/hardware/arduino
お好きなエディタでboards.txtを開き末尾に以下を追加します.
davinci.name=Da Vinci 32U davinci.upload.protocol=avr109 davinci.upload.maximum_size=28672 davinci.upload.speed=57600 davinci.upload.disable_flushing=true davinci.bootloader.low_fuses=0xff davinci.bootloader.high_fuses=0xd8 davinci.bootloader.extended_fuses=0xcb davinci.bootloader.path=caterina davinci.bootloader.file=davinci.hex davinci.bootloader.unlock_bits=0x3F davinci.bootloader.lock_bits=0x2F davinci.build.mcu=atmega32u4 davinci.build.f_cpu=16000000L davinci.build.vid=0x1774 davinci.build.pid=0x8032 davinci.build.core=arduino davinci.build.variant=leonardo
Arduino IDEを起動し, Da Vinci 32Uがあるのを確認し選択します.
5. Da Vinci 32Uへの書き込み
スケッチに以下のLEDをチカチカさせるプログラムを書き込み, 確認を行います.
int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); delay(100); }
もし, 以下のようなエラーメッセージが出た場合,
/usr/libexec/gcc/avr/ld: cannot open linker script file ldscripts/avr5.x: No such file or directory
次のコマンドを入力.
# ln -s /usr/lib/binutils/avr/YOUR_VERSION/ldscripts /usr/avr/lib/ldscripts
Da Vinci 32Uに書き込み, LEDが高速でチカチカしたら成功です.
参考文献
Arduino Playground - Gentoo
GentooでARM(CortexA8)クロスコンパイル環境の構築 » 旧・LGA128のメモ帳
Strawberry Linux ダ・ヴィンチ32U with Arduino Bootloader のメモ | 趣味関係のメモ帳