Slackware Linux 14.1のインストール

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

目次

概要

この記事はSlackware Linux 14.1をEFIブートでインストールして、日本語環境で日常的な作業ができるまでの設定をまとめるつもりだったが、その後だらだらと情報を付け加えている。

サーバ向けにSlackware Linuxをインストールしてみたところ、大変安定していることを実感し、さらに後述のSlackBuildsを使うことで標準パッケージ以外のソフトウェアも簡単にインストールできることを知った。 筆者のデスクトップには以前はLinux Mintを使っていたが、アップデートでよく不安定になるのとパッケージのカスタマイズ(ビルドオプションの変更など)がしにくいと感じたので、デスクトップもSlackware Linuxに以降した。

Slackware Linuxはパッケージをフルインストールしても最低限のものしか入っていないので、その他に必要なパッケージがあると「自分で全部ビルドする」イメージが強いかもしれない。 しかし実は、Slackware Linuxのパッケージ管理はSlackBuildsを使えばそれほど大変ではない。 Slackware LinuxではSlackBuildというソースコードをビルドしてパッケージ化するまでの作業をシェルスクリプトがある。 誰かが作ってくれたすでにあるSlackBuildスクリプトを使えば、ビルド作業は簡単である。 そして、多数のソフトウェアのSlackBuildが管理されているSlackBuildsのGitリポジトリを使えば他のパッケージ管理システムを持つディストリビューションに引けをとらない数のソフトウェアのビルドが可能である。 今や、Slackware LinuxはSlackBuildsがあってこそ一つのディストリビューションとして完成していると言っても過言ではないだろう。 さらにSlackBuildsのGitリポジトリをフォークすれば、公式リポジトリの更新をマージしながら自前のSlackBuildsを追加するという、公式のパッケージ管理と独自のカスタマイズの両立が可能なのだ。

Slackware Linuxはカスタマイズ性が高い上に非常に安定したディストリビューションである。

手順

  • 適当なミラーからイメージファイルを入手する。この記事を書いた時はslackware64-14.1-install-dvd.isoをダウンロードした。
  • CD/DVDを使う場合は、イメージファイルをCD/DVDへ焼く。
  • 仮想マシンを使う場合は、EFIを有効にしておく。
  • CD/DVDまたはISOファイルから起動。
  • GRUB2が起動する。一番上のエントリーでEnter。
  • キーマップの選択:普通の日本語キーボードを使っているなら、"1"を押してqwerty/jp106.mapを選択。キー入力テスト画面に移るので、テストしてみて問題なければ"1"を入力してEnter、キーマップを別のものに変更したかったら"2"を入力してEnter。
  • ログイン画面に移るので、rootでログイン。
  • gdiskでパーティショニングする[1][2]

一番目のストレージデバイス(/dev/sda)へインストールすることとする。 gdiskを実行する:

# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.5

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): 

oで空のGUID パーティションテーブル (GPT)を作成する。

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

EFIパーティションを作る。

Command (? for help): n
Partition number (2-128, default 1):
First sector (34-209715166 default = 2048) or {+-}size{KMGT}:
Last sector (2048-209715166, default = 209715166) or {+-}size{KMGT}: +128M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L ←Lでコードを確認できる
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8300 Linux filesystem      8301 Linux reserved      
8e00 Linux LVM             a500 FreeBSD disklabel     a501 FreeBSD boot        
a502 FreeBSD swap          a503 FreeBSD UFS           a504 FreeBSD ZFS         
a505 FreeBSD Vinum/RAID    a800 Apple UFS             a901 NetBSD swap         
a902 NetBSD FFS            a903 NetBSD LFS            a904 NetBSD concatenated 
a905 NetBSD encrypted      a906 NetBSD RAID           ab00 Apple boot          
af00 Apple HFS/HFS+        af01 Apple RAID            af02 Apple RAID offline  
af03 Apple label           af04 AppleTV recovery      be00 Solaris boot        
bf00 Solaris root          bf01 Solaris /usr & Mac Z  bf02 Solaris swap        
bf03 Solaris backup        bf04 Solaris /var          bf05 Solaris /home       
bf06 Solaris alternate se  bf07 Solaris Reserved 1    bf08 Solaris Reserved 2  
bf09 Solaris Reserved 3    bf0a Solaris Reserved 4    bf0b Solaris Reserved 5  
c001 HP-UX data            c002 HP-UX service         ef00 EFI System          
ef01 MBR partition scheme  ef02 BIOS boot partition   fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed system type of partition to 'EFI System'

一応swap用のパーティションを作っておく。

Command (? for help): n
Partition number (1-128, default 2):
First sector (34-209715166, default = 264192) or {+-}size{KMGT}:
Last sector (264192-209715166, default = 209715166) or {+-}size{KMGT}: +8G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed system type of partition to 'Linux swap'

Linux filesystemを作る。

Command (? for help): n
Partition number (1-128, default 3):
First sector (34-209715166, default = 17041408) or {+-}size{KMGT}:
Last sector (17041408-209715166, default = 209715166) or {+-}size{KMGT}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed system type of partition to 'Linux filesystem'

pでパーティションの確認。

Command (? for help): p
Disk /dev/sda: 209715200 sectors, 100.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): ********-****-****-****-************
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 16777182
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          264191   128.0 MiB   EF00  EFI System
   2          264192        17041407   8.0 GiB     8200  Linux swap
   3        17041408       209715166   91.9 GiB     8300  Linux filesystem

wでGPTを書き込み。

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
  • パーティションのフォーマット

次のように手動でフォーマットするか、

# mkfs.vfat /dev/sda1 
# mkfs.ext4 /dev/sda3

次のSlackware Linux Setupの途中のダイアログでもできる。

  • Slackware Linux Setup

setupと打って実行:

# setup
  1. もしswapパーティションがあるならば、ADDSWAPを選択->SWAP SPACE DETECTEDで該当するswapパーティションを選択してOK->CHECK SWAP PARTITIONS FOR BAD BLOCKS?で選択したスワップパーティションの不良ブロックをチェックするか聞かれるので、チェックしたいならYes、不要ならNo->SWAP SPACE CONFIGUREDで/etc/fstabへswapが登録されたとお知らせが出る。OK->次のTARGETの項目へ。
  2. TARGETを選択 -> ルートパーティションにするデバイス(この記事の場合は/dev/sda3)を選択->Format->ext4(または好きなファイルシステムを選択)-> ルートパーティションが/etc/fstabに追記されたとのお知らせ、OK->EFIシステムが見つかったのでフォーマットするかと聞かれるのでOK -> EFIパーティションが/etc/fstabに追記されたとのお知らせ、OK
  3. NTFSやFATパーティションがあればFAT or NTFS PARTITIONS DETECTEDの項目が出て/etc/fstabへそれらのパーティションを登録して起動時に指定のアクセス権限でマウントするかを聞かれる。
  4. SOURCE MEDIA SELECTIONでインストールメディアを選択ISOから起動したなら1 -> SCANNING FOR CD or DVD DRIVEではautoを選択
  5. PACKAGE SERIES SELECTIONでインストールするパッケージを選択する。はじめからほとんどの項目がチェックされており、それらすべてインストールするのがおすすめと書かれている。選択し終わったらOK -> SELECT PROMPTING MODEではインストールプロセスでどのくらいプロンプトに表示するかを選択する。fullでよい。OK->インストールが開始される。
  6. インストールが終わったら、MAKE USB FLASH BOOTで何らかの不具合でブートできなくなった時のためのUSBブートスティックを作るかと聞かれるので、全部中身が消えて良いUSBフラッシュメモリを挿してUSBブートスティックを作成する。
  7. UEFI FIRMWARE DETECTEDでUEFIでブートするようになっているがBIOSでブートしたいならLILOをインストールできるという説明が出る。UEFIでブートするため必要ないので、skipを選択。
  8. INSTALL ELILOでEFIパーティションへELILOをインストールするかと聞かれるのでinstallを選択。次にINSTALL BOOT MENU ENTRY?でSlackware用のメニューエントリーを作成するかと聞かれる。installを選択。次にEFI BOOT ENTRY INSTALLEDでメニューエントリの詳細が表示される。OK。
  9. MOUSE CONFIGURATIONでマウスデバイスの種類を選択する。後で変更したいときは/dev/mouseのリンクを変更すれば良いとある。環境に合わせて選択。今どきはだいたいusbだろう。
  10. GPM CONFIGURATIONでバーチャルコンソール中でマウスが使えるようにするgpmを起動時に有効にするかと聞いてくる。どちらでもいいけど、とりあえずYES。
  11. CONFIGURE NETWORK?と聞かれるので、YES。
  12. ENTER HOSTNAMEでホスト名を入力する。例)VirtualSlack
  13. ENTER DOMAINNAME FOR '<HostName>'でドメイン名を聞かれるので入力。例)hogehoge.net
  14. CONFIGURATION TYPE FOR '<HostName.DomainName>'でネットワークの接続方法が聞かれる。static IPやDHCPから選択する。
  15. SET DHCP HOSTNAMEでDHCPサーバーのホスト名が聞かれる。あれば入力。無ければEnter。
  16. CONFIRM SETUP COMPLETEでネットワーク設定の確認が表示される。それでよければYes、設定し直すならNO。
  17. CONFIRM STARTUP SERVICES TO RUNで起動した時にスタートさせるサービスを選択する。選択し終わったらOK。
  18. CONSOLE FONT CONFIGURATIONでカスタムフォント設定をするか聞かれる。Noで良い。
  19. HARDWARE CLOCK SET TO UTC?でハードウェアクロックをUTC(世界標準時)に合わせるか、ローカルタイムに合わせるか聞かれる。日本で使うならローカルタイムにしたいのでNOにする。->TIMEZONE CONFIGURATIONでAsia/Tokyoを選択。
  20. SELECT DEFAULT WINDOW MANAGER FOR XでXのデフォルトウィンドウマネージャを選択する。好みだが、xinitrc.xfceを選択。
  21. WARNING: NO ROOT PASSWORD DETECTEDでrootのパスワードが設定されていないと言われるので、Yesを選択、New password:というのが下に出てくるので、設定したいパスワードを入力する。2回確認用に入力して、Enter。
  22. SETUP COMPLETEで設定完了。EXITを選択してsetupを終了し、
    reboot
    で再起動する。

VirtualBoxの仮想マシン上にインストールしたときの起動設定

VirtualBoxの仮想マシン上にインストールしたときは、もう少し設定が必要だ[3]

再起動すると、Slackwareを起動できず、UEFI Interactive Shellが起動する。 適当なキーを押して、シェルにexitと入力してシェルを抜け、 Boot Maintenance Manager->Boot Options->Add Boot Optionの順で選択すると、File Explorerが出てきて、EFIパーティションのあるハードディスクを選択し、EFI->Slackware->elilo.efiの順で選択。 Modify Boot Option Descriptionが出てくるので、Input the descriptionを選択し、Slackwareと入力後、Commit Changes and Exitを選択する。 Boot Maintenance ManagerをEscで抜け出し、Boot Managerを選択すると、Slackwareという項目が出てくるので、それを選択すればSlackwareが起動する。

まだこのままだと、毎回Boot Managerの項目を選択しないとSlackwareが起動しない。 次回から自動でSlackwareが起動するようにするには、 Boot Maintenance Manager->Boot Options->Change Boot OrderでSlackwareの起動順序を+でEFI Hard Driveより上にあげて、Commit Changes and Exitで保存すればよい。

トラブルシュート

elilo.conf

elilo.confのrootが指定されていなくてカーネルパニックで起動しないことがある。 もう一度インストールDVD/CDを起動してrootでログインし、elilo.confの内容を書き換える。 /dev/sda1へEFIパーティションがある場合、

# mkdir /mnt/sda1
# mount /dev/sda1 /mnt/sda1
# vi /mnt/sda1/EFI/Slackware/elilo.conf

次のように、root=の値にルートファイルシステムのあるデバイス(この記事の場合、/dev/sda3)をデバイス名またはUUIDで指定する:

chooser=simple
delay=1
timeout=1
#
image=vmlinuz
        label=vmlinuz
        read-only
        root=/dev/sda3
        #root="UUID=********-****-****-****-************"
        append="vga=nomal ro"

この設定で保存し、再起動してみる。

/etc/fstabがおかしい

fsck.ext2が失敗するというのでうまく起動しなかったが、 /etc/fstabへルートファイルシステムがなぜか書かれていなかった。 /etc/fstabへ、

/dev/sda3      /             ext4     defaults      1   1

を加えたらうまく起動した。

liloのインストールが失敗する(MBRブートの場合)

UEFIブートではなくMBRブートでインストールしたとき、liloのインストールが失敗したことがあった。

grubをインストールした。 setupスクリプトによるインストール直後に再起動せずインストールする場合は

chroot /mnt

してからインストールをする[4]

/dev/sdaのMBRへインストールする場合、

grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

としてgrubをインストールする。

インストール後の設定

ユーザーの追加

普段使うユーザーを追加する。

adduser hoge

そのユーザーでsudoを使う場合はsudoersへ追加しておく。

# visudo

例えば、以下の行を追加。

hoge ALL=(ALL) ALL

システムのキーボードを変更

日本語キーボードにする場合

起動スクリプト/etc/rc.d/rc.keymapでシステムのキーマップを読み込んでいる[5]ので、これを編集する:

sudo vim /etc/rc.d/rc.keymap
#!/bin/sh
# Load the keyboard map.  More maps are in /usr/share/kbd/keymaps.
if [ -x /usr/bin/loadkeys ]; then
 /usr/bin/loadkeys jp106.map
fi

CapsLockとCtrlとEscapeを入れ替えたDvorak配列にする場合(ハッカー向け&腱鞘炎対策)

キーマップファイルをコピーする

sudo cp /usr/share/kbd/keymaps/i386/dvorak/dvorak.map.gz /usr/share/kbd/keymaps/i386/dvorak/dvorak-hackers.map.gz

編集(vimはgzファイルを勝手に解凍圧縮してくれる[6])

sudo vim /usr/share/kbd/keymaps/i386/dvorak/dvorak-hackers.map.gz
keycode   1 = Escape
keycode  58 = Caps_Lock
keycode  97 = Control

を以下のように変える

keycode   1 = Caps_Lock
keycode  58 = Control
keycode  97 = Escape

rc.keymapを編集

sudo vim /etc/rc.d/rc.keymap
#!/bin/sh
# Load the keyboard map.  More maps are in /usr/share/kbd/keymaps.
if [ -x /usr/bin/loadkeys ]; then
 /usr/bin/loadkeys dvorak-hackers.map
fi

Xのキーボードレイアウトを変更

システムレベルでのXのキーボード配列を変更する場合は、まず設定ファイルを次のようにコピーする[7]

sudo cp /usr/share/X11/xorg.conf.d/90-keyboard-layout.conf /etc/X11/xorg.conf.d

/etc/X11/xorg.conf.d/90-keyboard-layout.confを編集して設定を行なう。

日本語キーボード配列にする

システムのキーマップをそのまま使うなら変更の必要はない。 Xではキーボードが英語キーボード設定になっているので、日本語キーボード(jp106)を設定する場合 /etc/X11/xorg.conf.d/90-keyboard-layout.confを次のような内容で編集する:

Section "InputClass"
    Identifier "keyboard-all"
    MatchIsKeyboard "on"
    MatchDevicePath "/dev/input/event*"
    Driver "evdev"
    Option "XkbModel" "jp106"
    Option "XkbLayout" "jp"
EndSection

CapsLockとCtrlとEscapeを入れ替えたDvorak配列にする場合(ハッカー向け&腱鞘炎対策)

/etc/X11/xorg.conf.d/90-keyboard-layout.confを次のような内容で編集する[8]:

Section "InputClass"
        Identifier "keyboard-all"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbLayout" "us"
        Option "XkbVariant" "dvorak"
        Option "XkbOptions" "terminate:ctrl_alt_bksp"
        Option "XkbOptions" "ctrl:swapcaps"
EndSection

なお、Fcitxを使う場合、デフォルトではこの設定がFcitxによって上書きされてしまう。 バージョン4.2.7からは~/.Xmodmapがあったら読み込んでくれる[9]そうなので、~/.Xmodmapを以下のように作成する[10]

!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Escape
keysym Caps_Lock = Control_L
keysym Escape = Caps_Lock
add Lock = Caps_Lock
add Control = Control_L

メンテナンス

ftp://ftp.slackware.com/pub/slackware/ 以下にSlackwareのバージョンごとにパッケージやそのソースコード、パッチ適用済のパッケージなどがある。

ソースコード

Slackwareのインストール時に入っているパッケージを自分でビルドしたいときは、SlackBuildsのソースコードが公開されているので使うとよい。

セキュリティ更新

Slackwareのセキュリティ情報は http://www.slackware.com/security/ に掲載される。Slackware Linux Project Mailing Listsを購読するのが良いだろう。

パッチ適用済のパッケージは以下にある。

該当パッケージをまとめてアップグレードする:

SLACKVER=14.1
mkdir -p patches/packages
cd patches/packages
mkdir ${SLACKVER}
cd ${SLACKVER}
lftp -c "open ftp://ftp.slackware.com/pub/slackware/slackware64-${SLACKVER}/patches/packages/; mirror -c -e -n ."
sudo /sbin/upgradepkg --install-new *.txz

ただし、後述の#slackware64-compat32のパッケージをインストールしている場合は、上記のアップグレードをすると64bitのみのパッケージに置き換えられてしまうので、multilibの方のアップデートを待ってそちらを適用する。 slackware64-compat32なgccとglibcをアップグレードする場合は、

 SLACKVER=14.1
 mkdir multilib
 cd multilib
 lftp -c "open http://taper.alienbase.nl/mirrors/people/alien/multilib/ ; mirror -c -e -n ${SLACKVER}"
 cd ${SLACKVER}
 sudo /sbin/upgradepkg --install-new *.t?z

とする。

パッケージのインストール

パッケージのインストールの一つの方法は、

# installpkg package-x.x.x-x86_64.tgz

というようにinstallpkgコマンドで.tgz(または.tbz,.tlz,.txz)の圧縮形式でアーカイブされたものであるSlackware packageをシステムへ展開するというものである。

インストールされたパッケージは/var/log/packages/以下にバージョンを含むパッケージ名(.tgzや.txzの前の文字列)のファイル名を持つテキストで列挙されていて、それらテキストの中にパッケージのサイズ、説明、含んでいるファイルのリストなどが記述されている。 ゆえに、パッケージがインストールされているか確かめる一つの単純な方法として、

ls /var/log/packages/|grep パッケージ名

が挙げられる。

installpkgコマンドの他にupgradepkgコマンドがあり、こちらはすでにインストールされているパッケージと同名だが異なるバージョンのものを上書きしてインストールする

# upgradepkg package-x.x.y-x86_64.tgz

注意したいのが、あくまで異なるバージョンならばインストールするということなので、アップグレードと言いながらもより新しいバージョンをインストールするだけでなく、より古いバージョンでもインストールする点である。 --install-newオプションを付ければ、すでにインストールされているパッケージのアップグレードに加えて、同名のパッケージがインストールされていなくてもインストールする。

# upgradepkg --install-new package-x.x.y-x86_64.tgz

アンインストール

インストールされているパッケージをアンインストールするには、removepkgコマンドを用いる:

# removepkg パッケージ名

SlackBuilds

SlackBuildsはソースファイルからビルドしてパッケージを作成する手順を記述したスクリプトである。 SlackBuildsのGitリポジトリがあるので、これを利用すればパッケージのビルド・インストールが楽にできる。 まずはgit cloneしよう。

% git clone git://slackbuilds.org/slackbuilds.git

<appname>というアプリケーションをインストールする手順は次のようにする。 アプリケーションのディレクトリへ移動:

% cd slackbuilds/<category>/<appname>

.infoファイルがあるので、中を見る:

% cat <appname>.info
PRGNAM="name of application"
VERSION="version of application"
HOMEPAGE="homepage of application"
DOWNLOAD="direct download link(s) of application source tarball(s) arch-independent or x86"
MD5SUM="md5sum(s) of the source tarball(s) defined in DOWNLOAD"
DOWNLOAD_x86_64="direct download link(s) of application source tarball(s), x86_64 only"
MD5SUM_x86_64="md5sum(s) of the source tarball(s) defined in DOWNLOAD_x86_64"
REQUIRES="%README%"
MAINTAINER="name of SlackBuild script maintainer"
EMAIL="email address of author"

DOWNLOADまたはDOWNLOAD_x86_64のリンクからソースをダウンロードする。

% wget <direct download link(s) of application source tarball(s) arch-independent or x86>

また、REQUIRESにあるアプリケーションがインストールされているか確認しておく。 インストールされているパッケージを確認するには/var/log/packages以下から探す。

% ls /var/log/packages | grep <appname>

.SlackBuildファイルを実行可能にして、root権限で実行する。

% chmod +x <appname>.SlackBuild
% sudo ./<appname>.SlackBuild

ビルドに成功したら、/tmp/<appname>-<version>-<archtecture>-<build>_SBo.tgzというファイルができているので、/sbin/installpkgでインストールする。

% sudo /sbin/upgradepkg --installnew /tmp/<appname>-<version>-<archtecture>-<build>_SBo.tgz

インストールには/sbin/installpkgを使っても良いが、すでに別バージョンの同じパッケージがインストールしている場合にはアップグレード、まだインストールされていなければインストールをしてくれる/sbin/upgradepkg --installnewでインストールするのが便利である。ただし、同じバージョン・同じパッケージを再インストールする場合は/sbin/installpkgを使うと良い。

これでインストールは完了だ。

SlackBuildsのGitリポジトリをフォークすれば公式リポジトリからの更新を受け取りながら独自のSlackBuildsを追加していくことができる。 自分でSlackBuildsを作成するときは、テンプレートを利用すると良いだろう。

シェルのカスタマイズ

自分の好みのシェルの設定をする。 私の場合はzshを使うのでbashからzshへの乗り換えを行う。

Vim

Slackware Linux 14.1でインストールされているVimは、Vim内でのコピー(ヤンク)をXのクリップボードへ反映させる+clipboardビルドオプションが有効になっていない。 個人的にはそれでは不便なので、SlackwareのSlackbuildに変更を加え、ビルド・インストールした。 変更を加えたvimのSlackBuildsはGitLabへアップしておいた。

nvidia

nvidiaのビデオカードを使っている場合は、SlackBuildsの公式のGitリポジトリから以下のパッケージをインストールする[note 1]

  • system/nvidia-kernel
  • system/nvidia-driver

なお、nvidiaドライバをやめてnouveauドライバに戻す場合は、まず、

# nvidia-switch --remove

を実行して、nvidiaで作られたリンクを全て削除してから、 nvidiaドライバを削除する。

# removepkg nvidia-driver-340.58-x86_64-1_SBo nvidia-kernel-340.58_3.18.3-x86_64-1_SBo

次に/usr/share/X11/xorg.conf.d/の設定を書き換え:

# cd /usr/share/X11/xorg.conf.d/
# cp 10-nvidia.conf 10-nouveau.conf
# vim 10-nouveau.conf
Section "Device"
    Identifier  "Device0"
    Driver  "nouveau"
    VendorName "freedesktop.org"
    BoardName ""
EndSection
# mv 10-nvidia.conf 10-nvidia.conf.orig

日本語環境

フォント

~/.bashrcなどで環境変数LANGを日本語にしてやればXの表示は日本語になるはずだ。

export LANG=ja_JP.UTF-8

ただし、X以外のCUIではLANG=ja_JP.UTF-8だと日本語が表示できず文字化けしてしまう。

また、違和感のあるフォントは中国語フォントであるためで、

# unlink /etc/fonts/conf.d/44-wqy-zenhei.conf
# fc-cache -f

で解決できる[11]。44-wqy-zenhei.confはローカルの設定やnonlatinの設定より早く呼び出されるので、優先になってしまうらしい。

新しくフォントを入れる場合は、 root権限で.ttfまたは.otf形式のフォントを次の対応するフォルダへコピーする[12]

/usr/share/fonts/TTF
/usr/share/fonts/OTF

追加した先のフォルダで次を実行

# mkfontdir
# mkfontscale
# fc-cache

これで新しいフォントが登録されたので、fc-listで一覧表示させて確認する:

fc-list |grep フォント名

/etc/fonts/local.confを作成して編集する。次の設定はMigMixフォントの例[13]:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/local.conf file for local customizations -->
<fontconfig>
    <alias>
        <family>serif</family>
        <prefer><family>MigMix 1P</family></prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer><family>MigMix 1P</family></prefer>
    </alias>
    <alias>
        <family>sans</family>
        <prefer><family>MigMix 1P</family></prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <family>DejaVu Sans Mono</family>
            <family>MigMix 1M</family>
        </prefer>
    </alias>
</fontconfig>

編集後起動したアプリケーションには設定が反映されているはずだ。

入力

ibus

日本語入力にibus-anthyを使う場合は、SlackBuilds公式Gitリポジトリから以下のパッケージをインストールする。

  • python/pyxdg
  • misc/ibus
  • misc/ibus-anthy

skkを使う場合は、

  • python/pyxdg
  • misc/ibus
  • development/gnome-common
  • libraries/json-glib
  • libraries/libgee
  • libraries/libgee1
  • development/vala
  • libraries/libskk
  • misc/ibus-skk

を入れる。

~/.zshrcや~/.bashrcへ次の行を追加:

source /etc/profile.d/ibus.sh
export LANG=ja_JP.UTF-8
fcitx

SlackBuildsから

をインストール。

XDG互換デスクトップでは[14]

cp /usr/share/applications/fcitx.desktop ~/.config/autostart/fcitx.desktop

として自動起動するようにしておく。この方法でなくともデスクトップ起動時にfcitxが起動さえすればよい。

~/.bashrcや~/.zshrcへ次の行を追加。

source /etc/profile.d/fcitx.sh
export LANG=ja_JP.UTF-8

NTP

NTPで時刻合わせをする場合は、まず空のログファイルを作って[15]

# touch /var/log/ntp.log

/etc/ntp.confをJSTなら例えば次のように編集して、

driftfile /etc/ntp/drift
logfile /var/log/ntp.log

server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

server 127.127.1.0
fudge 127.127.1.0 stratum 10

restrict default nomodify nopeer notrap
restrict 127.0.0.1 mask 255.0.0.0

rcスクリプトを自動起動するようにしておく(インストール時に選択していたら不要):

# chmod 755 /etc/rc.d/rc.ntpd

ntpdを起動

# /etc/rc.d/rc.ntpd start

/etc/ntp.confへntpサーバーを入れておく:

server <ntpサーバーのアドレス>

プリンタ

ntpdと同様にcupsが起動するようにしておいて、startしておく。

# chmod 755 /etc/rc.d/rc.cups
# /etc/rc.d/rc.cups start

http://localhost:631 へアクセスすればプリンタの設定ができる。 管理者としてはrootのユーザー名とパスワードで入れる。

SlackBuildsのソフトウェア

マルチメディア

デコーダ・エンコーダ

  • multimedia/gst-plugins-ugly : Amarokでmp3を再生するのに必要[16]
    • development/orc
    • audio/a52dec
    • audio/opencore-amr
    • libraries/lame
    • libraries/libmpeg2
    • audio/twolame
    • multimedia/x264
  • multimedia/gst-plugins-bad
  • multimedia/gst-ffmpeg
  • audio/faad2
  • audio/faac

ffmpeg

  • multimedia/ffmpeg

ffmpegの各種デコーダ・エンコーダのサポートは何も指定せずSlackBuildを実行するとデフォルトのままになるので、multimedia/ffmpeg/READMEを参照して必要なビルドオプションを与える。 例えば、libfaacを有効にするには、faacをインストールした上で、以下のようにFAAC=yesという変数の指定をしてSlackBuildを実行する。

sudo FAAC=yes ./ffmpeg.SlackBuild

~/.asoundrc

複数のアプリケーションから同時に音を聴けるようにするには、~/.asoundrcへ次のような設定を行なっておく[17]

pcm.!default {
    type plug
	slave.pcm "dmix"
}

JACK

JACKを使う場合は次のパッケージが必要[18]

  • audio/jack-audio-connection-kit
  • libraries/alsa-plugins : audio/jack-audio-connection-kitをインストールしてからlibraries/alsa-pluginsをビルドしなければビルドは成功するものの/usr/lib64/alsa-lib/libasound_module_pcm_jack.soが無くてJACK-ALSAが機能しないので注意。
  • libraries/lame
  • multimedia/x264
  • multimedia/ffmpeg

JACKのリアルタイムスケジューリングを有効にするには、[19]

# cp /sbin/initscript.sample /etc/initscript

としたのち、/etc/initscriptに

ulimit -l unlimited
ulimit -r 65

の2行を加える:

# vim /etc/initscript
  # Set umask to safe level, and enable core dumps.
  umask 022
  ulimit -c 2097151
  ulimit -l unlimited
  ulimit -r 65
  PATH=/bin:/sbin:/usr/bin:/usr/sbin
  export PATH

  # Execute the program.
  eval exec "$4"

その後、再起動する。

あとは、ALSA-JACK間でルーティングするために、~/.asoundrcを次のように作成しておく[20]

pcm.rawjack {
    type jack
    playback_ports {
        0 system:playback_1
        1 system:playback_2
    }
    capture_ports {
        0 system:capture_1
        1 system:capture_2
    }
}

pcm.jack {
    type plug
    slave { pcm "rawjack" }
    hint {
 	description "JACK Audio Connection Kit"
    }
}

pcm.!default {
    type plug
    slave { pcm "rawjack" }
}
  • audio/qjackctl

JACKのGUIインターフェースにはqjackctlが使いやすい。 qjackctlを使うときは、設定->その他で次の項目がチェックされていることを確認する[21]

  • D-Bus インターフェイスの有効化
  • JACKオーディオサーバーの自動起動
  • システムトレイアイコンを有効にする
  • 開始時にシステムトレイに最小化する

次の項目は無効にする

  • アプリケーション終了の確認
  • サーバーのシャットダウンを確認する

JACKの動作確認は、次のようにする。

% aplay -Drawjack <some file>
トラブルシューティング
  • connect(2) call to /dev/shm/jack-1000/default/jack_0 failed (err=そのようなファイルやディレクトリはありません)

qjackctlの設定->名前の値が"(default)"になっていると

/dev/shm/jack-1000/\(default\)/jack_0

というパスになってしまうのが原因で、名前を「既定」に戻すと解決した。

  • ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_jack.so aplay: main:722: audio open error: そのようなデバイスやアドレスはありません

audio/jack-audio-connection-kitを先にインストールしてから libraries/alsa-pluginsをビルドしなければlibasound_module_pcm_jack.soが存在しないパッケージを作ってしまうらしい。libraries/alsa-pluginsをビルド・インストールし直すと解決。

VLC

VLCメディアプレイヤーはビルドが面倒なので、alienパッケージの恩恵にあずかると楽である。

mkvtoolnix

mkvファイルを扱う場合はあると便利。

  • multimedia/mkvtoolnix
  • multimedia/subtitleeditor
    • libraries/gstreamermm
    • libraries/gtkmm
      • libraries/atkmm
        • libraries/pangomm
          • libraries/cairomm
            • libraries/glibmm
              • libraries/libsigc++
      • libraries/mm-common
    • libraries/libxml++
      • libraries/glibmm
      • libraries/mm-common
    • multimedia/gst-ffmpeg [22]

ビデオエディタ

  • multimedia/kdenlive
    • audio/amrnb
    • multimedia/dvdauthor
    • multimedia/dvgrab
      • libraries/libavc1394
      • libraries/libdv
      • libraries/libiec61883
    • audio/faac
    • audio/faad2
    • libraries/gsm
    • libraries/lame
    • multimedia/mlt
      • multimedia/ffmpeg
      • libraries/libquicktime
    • desktop/recordmydesktop
    • multimedia/schroedinger
      • development/orc
    • multimedia/x264
    • multimedia/xvidcore

スクリーンレコーダー

  • desktop/ssr

グラフィックス

  • graphics/inkscape
    • libraries/gsl
    • libraries/gtkmm
    • python/lxml
      • libraries/BeautifulSoup
    • development/numpy
    • office/pstoedit : LaTeXをIncscape上で使う場合に必要[23]

ネットワーク

ブラウザ

Google-Chrome

上記のextra/google-chrome以下のファイルをダウンロードし、同じディレクトリへ http://www.google.com/chrome より32bitまたは64bitのdebパッケージをダウンロードして配置し、 rootでgoogle-chrome.SlackBuildを実行する。 /tmp以下にパッケージができるのでインストールする。

upgradepkg --install-new /tmp/google-chrome-10.0.648.151-x86_64-1.txz
Chromium
  • alienパッケージのchromium : "illegal hardware instruction (core dumped)"で頻繁に落ちる。
  • network/chromium : APIキーがないとgoogleアカウントにログインできない。
IceCat
  • network/icecat
flashplayer
  • alienパッケージのchromium-pepperflash-plugin
  • multimedia/flashplayer-plugin : バージョンが11.2.202.425で終わってるので使えないサービスが多い。
freshplayerplugin

freshplayerpluginでpepperflashをFirefoxで使える。 次のSlackBuildsをインストールしておく。

  • development/kelbt
  • development/ragel
  • libraries/libconfig

また、alienパッケージのchromium-pepperflash-pluginをインストールしておく。

wget http://www.slackware.com/~alien/slackbuilds/chromium -pepperflash-plugin/pkg64/14.1/chromium-pepperflash-plugin-16.0.0.291-x86_64-1alien.txz
sudo /sbin/installpkg chromium-pepperflash-plugin-16.0.0.291-x86_64-1alien.txz

さらに、glesv2が必要なので、MesaLibをビルドしなおさなければならない[24]:

wget -m -np -p http://slackbuilds.org/mirror/slackware/slackware-14.1/source/x/mesa/ 
cd slackbuilds.org/mirror/slackware/slackware-14.1/source/x/mesa/

./configureのオプションの行に--enable-gles2 \を入れる。

CFLAGS="$SLKCFLAGS" \
./configure \
  --enable-gles2 \
  --prefix=/usr \
  --sysconfdir=/etc \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --mandir=/usr/man \
  --docdir=/usr/doc/mesa-$VERSION \
  --with-dri-driverdir=/usr/lib${LIBDIRSUFFIX}/xorg/modules/dri \
  --with-dri-drivers="$DRI_DRIVERS" \
  --with-gallium-drivers=nouveau,r300,r600,svga \
  --enable-gallium-llvm \
  --enable-shared-glapi \
  --enable-xa \
  --enable-osmesa \
  --build=$ARCH-slackware-linux 

mesa.SlackBuildを実行してインストール:

chmod 755 mesa.SlackBuild
sudo ./mesa.SlackBuild
sudo /sbin/installpkg /tmp/mesa-9.1.7-x86_64-1.txz

freshplayerpluginをダウンロードしてビルドする[note 2]

git clone https://github.com/i-rinat/freshplayerplugin.git
cd freshplayerplugin
mkdir build
cd build
cmake ..
make

できたlibfreshwrapper-pepperflash.soをユーザーのmozillaプラグインのフォルダへコピーする。

mkdir -p ~/.mozilla/plugins
cp libfreshwrapper-pepperflash.so ~/.mozilla/plugins

freshplayerpluginのdata/freshwrapper.conf.exampleを~/.config/freshwrapper.confへコピーして、 freshwrapper.confのpepperflash_pathの値にlibpepflashplayer.soのパスを指定する。

cp ../data/freshwrapper.conf.example ~/.config/freshwrapper.conf
vim ~/.config/freshwrapper.conf
# Path to the Pepper Flash plugin
pepperflash_path = "/usr/lib64/PepperFlash/libpepflashplayer.so"

以上。

メーラー

  • network/sylpheed

その他

  • misc/nixnote
evernoteのクローン。nixnote-1.6にはSSLv3が無効にされているらしくサーバーへの接続がうまくいかなかった[25]。代替としてNeighborNoteというのがある。
  • python/turses
CUIなTwitterクライアント。
    • python/httplib2
    • python/tweepy
      • python/pip
      • python/requests-oauthlib
        • python/python-requests
        • python/python-oauthlib
      • python/six

インスタントメッセージング

  • network/bitlbee : 各種インスタントメッセージングサービスの仲介をしてくれる。

XMPP

サーバー
  • network/prosody
    • development/lua
    • libraries/luasocket
    • libraries/luaexpat
    • libraries/lua-filesystem
クライアント
  • network/gajim
    • python/pyOpenSSL
      • python/cryptography
        • python/pyasn1
        • libraries/cffi
          • python/pysetuptools
          • libraries/pycparser
        • python/six
        • libraries/enum34
        • libraries/ipaddress
        • python/idna
          • python/pysetuptools
    • python/python-nbxmpp
  • network/psi
  • network/profanity : CUIベースのXMPPクライアント。
    • libraries/libstrophe

WiFi

サーバーなど、有線接続に限る用途の場合は/etc/rc.d/rc.inet1を使った接続が良いが、 ラップトップで有線接続にしたり無線接続にしたりする場合は/etc/rc.d/rc.inet1で無線接続を設定することは可能ではあるが、wicdで接続設定をした方が便利である。

/etc/rc.d/rc.inet1.confでは接続しない設定にしておいて、wicdをextraパッケージからインストールし、wicdサービスを開始する[26]

# rc.inet1.conf
# =============
# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="no"
DHCP_HOSTNAME[0]=""
# Default gateway IP address:
GATEWAY=""
# installpkg /path/to/extra/wicd/wicd-1.6.2.1-1.txz
# chmod +x /etc/rc.d/rc.wicd
# /etc/rc.d/rc.wicd start

接続設定はデスクトップ上でwicd-clientにより設定すれば良い。

細かいが、ラップトップで有線・無線を状況に応じて切り替えるが、有線があればそちらを優先したいというときは、「設定」→「利用できる場合は、優先接続へ常に切り替える」にチェックをしておくとよい。

bluetooth

bluetoothを使う場合は、/etc/rc.d/rc.bluetoothを実行可能にしておく。

sudo chmod 755 /etc/rc.d/rc.bluetooth
sudo /etc/rc.d/rc.bluetooth start

デスクトップ

  • desktop/josm
Javaで書かれたOpenStreetMapのエディタ。

オフィス

TexLive

  • office/texlive
  • office/texlive-texmf-extra

追加したフォントの埋め込みをする場合は、/usr/share/texmf-dist/fonts/以下にリンクまたはコピーしておく[27]:

sudo ln -s /usr/share/fonts/TTF/newfont-* /usr/share/texmf-dist/fonts/truetype/
sudo update-texmf -v

LibreOffice

  • office/libreoffice

PDFの編集

  • office/MasterPDFEditor

財務

  • office/gnucash
    • libraries/libofx
    • libraries/libgnomecanvas
    • libraries/goffice0.8
    • libraries/webkitgtk
      • libraries/libwebp

辞書

  • office/dictd
    • libraries/libmaa

インストール後、/etc/rc.d/rc.dictdが実行可能なパーミッションになっていることを確認した上で、/etc/rc.d/rc.localに以下のような行を追加する。

  if [ -x /etc/rc.d/rc.dictd ]; then
    /etc/rc.d/rc.dictd start
  fi

システムモニタ

  • system/conky
    • libraries/libgee1
    • libraries/json-glib
    • system/p7zip
  • desktop/conky-manager

Administration

  • system/htop
  • system/iotop

Games

  • games/playonlinux
    • system/cabextract
    • system/wine
    • libraries/wxPython
    • development/icoutils
    • libraries/php-imagick
    • system/p7zip
  • games/pychess
    • python/pygtksourceview
      • libraries/gtksourceview
    • python/gnome-python-desktop
      • python/gnome-python
        • libraries/libgnome
          • system/gnome-vfs
            • misc/gnome-mime-data
            • libraries/libbonobo
              • libraries/ORBit2
        • python/pyorbit

Wakeup On Lan

  • network/wakeonlan[28]
    • python/pysetuptools

GIS

  • gis/qgis
    • gis/gdal
      • gis/geos
      • gis/proj
    • libraries/libspatialindex
    • libraries/libspatialite
      • gis/proj
      • gis/geos
      • libraries/freexl
      • gis/postgis
        • gis/gdal
          • gis/geos
          • gis/proj
        • libraries/json-c
        • system/postgresql
    • development/numpy
    • development/psycopg2
      • system/postgresql
    • libraries/qwtpolar
      • libraries/qwt

CAD

  • graphics/FreeCAD
    • graphics/OpenCASCADE
    • development/Pivy
      • development/SoQt
        • development/Coin
    • libraries/eigen3
    • libraries/xerces-c
  • libraries/assimp
    • libraries/libminizip

slackware64-compat32

64bitのslackware上で32bitアプリケーションが実行できるように、32bitと64bit両方が用意されているパッケージ群multilibがある。 詳しくは、slackware:multilib - SlackDocsを参照。

multilibなgccおよびglibcをインストールするには、次のようにする[29]:

# SLACKVER=14.1
# mkdir multilib
# cd multilib
# lftp -c "open http://taper.alienbase.nl/mirrors/people/alien/multilib/ ; mirror -c -e ${SLACKVER}"
# cd ${SLACKVER}
# upgradepkg --reinstall --install-new *.t?z

memtest86

  • system/memtest86

memtest86

  • system/memtest86

Notes

  1. noveauが問題を起こす場合は、nouveauを無効化する。/etc/modprobe.d/blacklist.confを作成して以下の行を入れておく:
    blacklist nouveau
    
  2. makeで次のようなエラー:
    [ 98%] Built target freshwrapper-pepperflash
    Linking C executable dep_check
    ../libfreshwrapper-pepperflash.so: `X509_NAME_get_index_by_NID' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `X509_get_serialNumber' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `X509_get_subject_name' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `X509_free' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `X509_NAME_get_entry' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `X509_NAME_ENTRY_get_data' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `X509_get_issuer_name' に対する定義されていない参照です
    ../libfreshwrapper-pepperflash.so: `d2i_X509' に対する定義されていない参照です
    collect2: エラー: ld はステータス 1 で終了しました
    make[2]: *** [src/dep_check] エラー 1
    make[1]: *** [src/CMakeFiles/dep_check.dir/all] エラー 2
    make: *** [all] エラー 2
    

    が出るときは、sslのリンクライブラリが入ってないので、src/CMakeLists.txtの102行目の部分にsslを追加したらうまくいった:

    target_link_libraries(freshwrapper-pepperflash
        dl
        ssl
        ${REQ_LIBRARIES}
        ${PULSEAUDIO_LIBRARIES}
    )
    

References

  1. Rod Smith, A gdisk Walkthrough
  2. Seiji Momoto, GPT規格のディスクにSyslinuxをインストールする - momoto.github.io
  3. Ubuntu VirtualBox その22 - UEFIでUbuntuをインストールした後、UEFIの設定が保存されない時は - Ubuntu kledgeb
  4. slackware docs, Setting up GRUB 2 on install (without rebooting) http://docs.slackware.com/howtos:slackware_admin:grub_on_first_install
  5. Keyboard layout in Slackware 13 http://www.linuxquestions.org/questions/slackware-14/keyboard-layout-in-slackware-13-a-751778/
  6. vim will auto gunzip a file for you. : vim https://www.reddit.com/r/vim/comments/285116/vim_will_auto_gunzip_a_file_for_you/
  7. howtos:window_managers:keyboard_layout - SlackDocs http://docs.slackware.com/howtos:window_managers:keyboard_layout
  8. CapsLockをCtrlにするまとめ - Λlisue's blog http://lambdalisue.hatenablog.com/entry/2013/09/27/212118
  9. Fcitx メモ http://1204lts.blogspot.jp/2013/12/fcitx.html
  10. Remap Caps Lock http://c2.com/cgi/wiki?RemapCapsLock
  11. Slackware-HOWTO そのいち - リククーブログ
  12. http://docs.slackware.com/howtos:general_admin:install_fonts
  13. openSUSE で標準の日本語フォントを変更する | まじかりらくす http://relx.jp/blog/?p=316
  14. Configure (Other) - Fcitx https://fcitx-im.org/wiki/Configure_%28Other%29
  15. howtos:network_services:ntp - SlackDocs http://docs.slackware.com/howtos:network_services:ntp
  16. Amarok refuses to play mp3 files on slackware64-14.0rc4 http://www.linuxquestions.org/questions/slackware-14/amarok-refuses-to-play-mp3-files-on-slackware64-14-0rc4-4175426774/
  17. CentOS 5 で同時に複数のアプリからの音を再生する - Enjoi Blog http://blog.enjoitech.com/article/97
  18. Alien Pastures » Setting up Jack Audio in Slackware http://alien.slackbook.org/blog/setting-up-jack-audio-in-slackware/
  19. studioware:tips_and_hints - SlackDocs http://docs.slackware.com/studioware:tips_and_hints
  20. JACK Audio Connection Kit|How do I route audio to/from generic ALSA-using applications? http://jackaudio.org/faq/routing_alsa.html
  21. JACK Audio Connection Kit (日本語) - ArchWiki https://wiki.archlinux.org/index.php/JACK_Audio_Connection_Kit_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29#GUI
  22. subtitleeditor codec [SOLVED] https://lists.ubuntu.com/archives/kubuntu-users/2010-January/048528.html
  23. LaTeX - Inkscape Wiki http://wiki.inkscape.org/wiki/index.php/LaTeX
  24. Fresh Player no Slackware (sim, FRESH) [Artigo] http://www.vivaolinux.com.br/artigo/Fresh-Player-no-Slackware-sim-FRESH
  25. NixNote / Support Requests / #21 Problem connecting to Evernote - i386
  26. slackbook:wifi - SlackDocs http://docs.slackware.com/slackbook:wifi
  27. dvipdfmx の日本語フォントの設定方法 - My Emaps http://d.hatena.ne.jp/tama_sh/20120505/1336203065
  28. @IT:Wakeup On LANを使うには http://www.atmarkit.co.jp/flinux/rensai/linuxtips/709usewol.html
  29. slackware:multilib - SlackDocs http://docs.slackware.com/slackware:multilib