Linux ディストリビューション Manjaro Linux の使い方 vol.1

  • 41
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

最強の Linux ディストリビューション である Manjaro Linux を紹介します。

Manjaro Linuxは、Arch Linux を基に GUI 環境をプラスしたディストリビューションです。

インストールが簡単であり、基本アプリ以外に不要なアプリが入っていないので、開発環境としても、個人のデスクトップ環境としても最適です。

感想

Manjaro Linuxの良い所は、Arch Linuxのような壊れやすさがないという点と、初期設定が楽という点です。

そして、Arch Linuxの良い所は、不要なアプリが入ってない点です。これは、セキュリティ的に見てもプラス要因です。

もちろん、入っているアプリが少ないということは、低スペックマシンでも快適に動作します。

ただし、この点は、ハイスペックすぎるマシンが溢れている現代において、問題になることは少ないと思われます。

私は、DesktopにAwesomeを使っています。

Awesomeの良い所は、ウィンドウ操作が定型的である点と、カスタマイズしやすい点です。

個人的には、Windows,Mac,Ubuntuなどの一般的なOSには、無駄なスペックを消費する使わないアプリが沢山インストールされていると思っています。

この点で、パソコン用途が多岐に渡らないのならば、Arch系のOSを使う価値は十分にあると考えます。ちなみに、私は、Gentoo系よりも、Arch系のほうが好きです。

理由としては、最新パッケージが試しやすいから...という理由ではなく、ロゴがカッコいいからなんですけどね。

デスクトップ

デスクトップは、以下のタイプがあります。好みのものを選んでください。

イメージ

ダウンロード

Awesome

個人的には、Awesomeを使っていますので、こちらからダウンロードします。

MacBook Air

ハードにインストールするには、ISOイメージをUSBかDVDに書き込み、それをハードで読み込む必要があります。

ここでは、USBを使用します。

読み書き可能な UDIF に変換した後、USBメモリを挿し、情報を確認します。そして、当該ディスクをアンマウントした後に書き込みを実行します。

$ hdiutil convert -format UDRW -o manjaro-awesome-0.8.8-b4.1-x86_64.dmg manjaro-awesome-0.8.8-b4.1-x86_64.iso

$ diskutil list

$ sudo diskutil umountDisk /dev/disk1

$ sudo dd if=./manjaro-awesome-0.8.8-b4.1-x86_64.dmg of=/dev/disk1 bs=1m

ディスクを取り出すには、以下のコマンドです。

$ sudo diskutil eject /dev/disk1

CUIインストール

GUIを使ったインストールについての解説は省略します。CUIの場合は、以下のページを参考にします。

http://wiki.manjaro.org/index.php/Installation_Guide_for_Beginners_0.8.2

重要なのは、インストールディスクの設定と、ブートローダーの設定でしょう。

これで、GUIインストールが上手く動作しないハードにもインストールが出来ます。

Manjaro Linux の初期設定

パッケージマネージャーを動かしていきます。

遅いので、デフォルトのミラーサーバーを変更しますね。

$ sudo vi /etc/pacman-mirrors.conf
/etc/pacman-mirrors.conf
##
## /etc/pacman-mirrors.conf
##

## Branch Pacman should use (stable, testing, unstable)
Branch=stable

## Generation method
## 1) rank   - rank mirrors depending on their access time
## 2) random - randomly generate the output mirrorlist
Method=rank

## Specify to use only mirrors from a specific country
## Disabled by default
OnlyCountry=Japan

## Input mirrorlist directory
MirrorlistsDir="/etc/pacman.d/mirrors"

## Output mirrorlist
OutputMirrorlist="/etc/pacman.d/mirrors/Japan"

応答速度を書き込みます。

$ sudo pacman-mirrors -g

参考:
http://wiki.manjaro.org/index.php/Rankmirrors_to_Set_the_Fastest_Download_Server

アップデートなどは、以下の様な感じのコマンドで行ってください。

# ソフトのインストール
$ sudo pacman -S pacman

# システムのアップデート
$ sudo pacman -Syu

# レポジトリと同期
$ sudo pacman -Syy

オススメのソフトなどは、初回に選択できるようになっているみたいですが、自分でインストールしました。ちなみに、初回に起動するスクリプトは、数字を入力して選択していきます。

参考:
http://tibiwan8-linux.blogspot.jp/2012/11/manjaro.html

次に、Awesomeのキーの確認でもしていきます。なお、ここでいうMCommandキーやWindowsキーのことです。

キー 内容
M-S-q シャットダウンなど{s}
M-S-c アプリの終了
M-h,l ウィンドウ幅を調整
M-Enter ターミナル起動
M-t ウィンドウマネージャ起動
M-d ブラウザ起動
M-j フォーカス移動
M-f ウィンドウ最大化
M-Space ウィンドウの配置転換

Yaourt

# 各種パッケージのインストール
$ pacman -S base-devel

# Yaourtのインストール
$ sudo pacman -Sy yaourt

# キャッシュの削除
$ sudo pacman -Scc

参考:
https://wiki.archlinux.org/index.php/Yaourt

Clipboard

sudo pacman -S xsel

GRUB-Customizer

ブートローダーのカスタマイズをしましょう。

ブートローダーというのは、簡単に言うと、OSを選択するためのものです。電源ボタンを押すと、一番に起動するシステムです。

ただし、これが壊れると修復には面倒が伴いますので、 GUI で操作するのが良いと思われます。

$ sudo pacman -S grub-customizer

$ sudo grub-customizer

参考:
http://wiki.manjaro.org/index.php?title=Grub-Customizer

SiML

SLiM は、ログインマネージャーです。

ここでは、SLiM のデフォルト設定が、「起動時にログイン画面を表示する」となっているため、自動ログインを可能にしてみることにします。

$ $ sudo echo -e "default_user $USER\nauto_login yes" >> /etc/slim.conf

私の場合、ウィンドウマネージャは Awesome なので、自動起動するようにします。

$ cat ~/.xinitrc

$ sed -i '$d' !$ && echo exec \"awesome\" >> !$

後は、再起動でもして確認してみてください。

$ reboot

なお、Awesomeの再起動は、M-C-rだったと思います。

これで、面倒なログイン画面が消えましたね。

SLiM 自体を無効にしてもいいのですが、OSの基本機能として残しておいたほうが良いです。

Keyboard

続いてキーボードの設定です。まずは、好みのキー設定を行います。キーコードを確認しながら変更していきましょう。

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
$ localectl status

$ localectl list-keymaps

$ mkdir ~/tmp

$ cp /usr/share/kbd/keymaps/i386/qwerty/jp106.map.gz .

$ gunzip jp106.map.gz

$ mv jp106.map jp106_mac.map

$ vim jp106_mac.map

############################
# keycode  58 = Caps_Lock 行を編集
keycode  58 = Control

# keycode  89 = backslash underscore 行を編集
keycode  89 = underscore
############################

$ gzip jp106_mac.map

$ sudo mv jp106_mac.map.gz /usr/share/kbd/keymaps/i386/qwerty

$ loadkeys jp106_mac

$ sudo vim /etc/vconsole.conf

############################
KEYMAP="jp106_mac"
############################

$ sudo vim /etc/X11/xorg.conf.d/20-keyboard.conf

############################
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbModel" "jp106_mac"
Option "XkbLayout" "jp"
#Option "XkbVariant" ""
EndSection
############################

もっと快適にしたい場合は、以下の設定ファイルを使いましょう。

http://d.hatena.ne.jp/munepi/20120114/mba

Firefox

私は、MacやWindowsでは、Chrome(Chromium)を使いますが、Linuxでは、Firefoxを使うという少し変わった人です。

なので、インストール後に最低限の設定をしていきます。

$ sudo pacman -Sy firefox

$ firefox &

vimperatorというアドオンをダウンロードします。

設定は、ホームディレクトリに設定ファイルを置きます。

" 移動幅変更
noremap j 5<C-e>
noremap k 5<C-y>

" ブックマーク追加
map a :bmarks<CR>

" 戻る/進む
noremap h <A-Left>
noremap l <A-Right>

プラグインマネージャーもあります。

https://github.com/cd01/vimppm

Lilyterm

最強のターミナルアプリ。軽量、高機能で言うことなし。

$ sudo pacman -S lilyterm

設定は、以下の設定ファイルを編集します。ここでは、デフォルトテーマを変更します。

$ vim ~/.config/lilyterm/default.conf

ウィンドウの透過は、以下のような項目を変更します。

~/.config/lilyterm/default.conf
transparent_window = 1

window_opacity = 0.120

https://wiki.archlinux.org/index.php/LilyTerm

Awesome

色々なツールを使い出してきたら、Awesomeの設定を行ってみます。

~/.config/awesome/rc.lua
-- https://github.com/silenvx/dotfiles/blob/master/misc/default/XDG_CONFIG_HOME/awesome/rc.lua
-- Terminal
terminal = "lilyterm"

-- Applications
-- Firefox
awful.key({modkey}, "d", function () awful.util.spawn_with_shell("firefox") end),


-- モニターのフォーカスを変更する
awful.key({modkey,            }, "F1",     function () awful.screen.focus(1) end),
awful.key({modkey,            }, "F2",     function () awful.screen.focus(2) end),
-- モニターからモニターにウィンドウを移動させる
awful.key({ modkey,           }, "i",      function(c) awful.client.movetoscreen(c,c.screen-1) end ),
awful.key({ modkey,           }, "o",      function(c) awful.client.movetoscreen(c,c.screen+1) end ),

参考:
https://wiki.archlinux.org/index.php/Awesome

GParted

フォーマットやパーティションの分割など。

$ sudo pacman -S gparted

$ sudo !$

http://rionaoki.net/misc/ubuntu/grub-2-basics

日本語入力

iBus

$ sudo yaourt mozc

$ ibus-setup

$ sudo vim /etc/X11/xinit/xinitrc.d/99-ibus
/etc/X11/xinit/xinitrc.d/99-ibus
#!/bin/bash
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="xim"
ibus-daemon -d -x
$ sudo chmod +x !$

かな、英数変換は、Capsキーに設定してみます。

ASCII キーボードで CapsLock キーを英数キーとして使用する

uim

ibusかuimのどちらを使うかは、好みの問題です。

$ yaourt -S uim-mozc

参考:
https://wiki.archlinux.org/index.php/Input_Japanese_using_uim

tmux

tmux-powerlineが連続して出てくるので、以下を設定します。

/etc/locale.conf
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
#LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

LC_NUMERIC="en_US.UTF-8"はコメントアウトしないと、 /etc/X11/xorg.conf.d/20-keyboard.confが書き換えられてしまう。

fdisk

復旧には、LiveUSBなどを使います。HDDをマウントしましょう。

$ fdisk -l

$ mount /dev/sda3 /mnt/sda3

Zsh

最低限の思いつき設定をしてみます。

~/.zshrc
autoload -U compinit colors zcalc
compinit
colors

setopt correct          # Auto correct mistakes
setopt extendedglob     # Extended globbing
setopt nocaseglob       # Case insensitive globbing
setopt rcexpandparam    # Array expension with parameters
setopt nocheckjobs      # Don't warn about running processes when exiting
setopt numericglobsort  # Sort filenames numerically when it makes sense
setopt nohup            # Don't kill processes when exiting
setopt nobeep           # No beep
setopt appendhistory    # Immediately append history instead of overwriting
setopt histignorealldups #If a new command is a duplicate, remove the older one

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'       # Case insensitive tab completion
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"         # Colored completion (different colors for dirs/files/etc)

bindkey -e
bindkey '^[[7~' beginning-of-line                   # Home key
bindkey '^[[8~' end-of-line                         # End key
bindkey '^[[2~' overwrite-mode                      # Insert key
bindkey '^[[3~' delete-char                         # Delete key
bindkey '^[[A'  up-line-or-history                  # Up key
bindkey '^[[B'  down-line-or-history                # Down key
bindkey '^[[C'  forward-char                        # Right key
bindkey '^[[D'  backward-char                       # Left key
bindkey '^[[5~' history-beginning-search-backward   # Page up key
bindkey '^[[6~' history-beginning-search-forward    # Page down key

HISTFILE=~/.zhistory
HISTSIZE=10000
SAVEHIST=10000

alias sudo='sudo '
alias ls='ls --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias ll='ls -l --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias la='ls -la --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias grep='grep --color=tty -d skip'
alias cp="cp -i"                        # Confirm before overwriting something
alias df='df -h'                        # Human-readable sizes
alias free='free -m'                    # Show sizes in MB

# ex - archive extractor
# usage: ex <file>
ex() {
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xjf $1   ;;
      *.tar.gz)    tar xzf $1   ;;
      *.bz2)       bunzip2 $1   ;;
      *.rar)       unrar x $1     ;;
      *.gz)        gunzip $1    ;;
      *.tar)       tar xf $1    ;;
      *.tbz2)      tar xjf $1   ;;
      *.tgz)       tar xzf $1   ;;
      *.zip)       unzip $1     ;;
      *.Z)         uncompress $1;;
      *.7z)        7z x $1      ;;
      *)           echo "'$1' cannot be extracted via ex()" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}

# zaw
source /home/manjaro/dotfiles/.zsh/tools/zaw/zaw.zsh

# prompt
source /home/manjaro/dotfiles/.zsh/tools/zsh_prompt/.zshrc.prompt

# autojump
export FPATH="$FPATH:/usr/share/zsh/site-functions/"
[[ -s /home/manjaro/.autojump/etc/profile.d/autojump.sh ]] && source /home/manjaro/.autojump/etc/profile.d/autojump.sh

# http://d.hatena.ne.jp/yarb/20110126/p1
function mkcd() {
if [[ -d $1 ]]; then
echo "It already exsits! Cd to the directory."
cd $1
else
echo "Created the directory and cd to it."
mkdir -p $1 && cd $1
fi
}

# http://d.hatena.ne.jp/hiboma/20120315/1331821642
pbcopy-buffer(){
print -rn $BUFFER | xsel
zle -M "xsel: ${BUFFER}"
}

zle -N pbcopy-buffer
bindkey '^p^p' pbcopy-buffer

#google
function go() {
local str opt
if [ $ != 0 ]; then
for i in $*; do
str="$str+$i"
done
str=`echo $str | sed 's/^\+//'`
opt='search?num=50&hl=ja&lr=lang_ja'
opt="${opt}&q=${str}"
fi
w3m http://www.google.co.jp/$opt
}

# complete
autoload -U compinit
compinit
zstyle ':completion:*:default' menu select=2
zstyle ':completion:*' verbose yes
zstyle ':completion:*' completer _expand _complete _match _prefix _approximate _list _history
zstyle ':completion:*:messages' format '%F{YELLOW}%d'$DEFAULT
zstyle ':completion:*:warnings' format '%F{RED}No matches for:''%F{YELLOW} %d'$DEFAULT
zstyle ':completion:*:descriptions' format '%F{YELLOW}completing %B%d%b'$DEFAULT
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:descriptions' format '%F{yellow}Completing %B%d%b%f'$DEFAULT
zstyle ':completion:*' list-separator '-->'
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*' group-name ''

# zaw
bindkey '^x^x' zaw

# cd ls
function chpwd() { ls -aF }

# color
autoload colors
colors
source /home/manjaro/dotfiles/.zsh/tools/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

# code
export LANG=en_US.UTF-8

# alias
alias tmux="tmux -2"
alias ll="ls -Fa"
alias zs="source ~/.zshrc && exec $SHELL"
alias vs="vim ~/.vimrc"
alias ts="vim ~/.tmux.conf"

# tmux
# tmux自動起動
if [ -z "$TMUX" -a -z "$STY" ]; then
if type tmux >/dev/null 2>&1; then
if tmux has-session && tmux list-sessions | /usr/bin/grep -qE '.*]$'; then
tmux attach && echo "tmux attached session "
else
tmux new-session && echo "tmux created new session"
fi
fi
fi

参考:
http://mba-hack.blogspot.jp/2013/03/zsh.html

Vim

最低限の思いつき設定をしてみます。

 if has('vim_starting')
   set nocompatible               " Be iMproved
   set runtimepath+=~/.vim/bundle/neobundle.vim/
 endif

 call neobundle#rc(expand('~/.vim/bundle/'))

 " Let NeoBundle manage NeoBundle
 NeoBundleFetch 'Shougo/neobundle.vim'

 " Recommended to install
 NeoBundle 'Shougo/vimproc', {
  \ 'build' : {
  \     'windows' : 'make -f make_mingw32.mak',
  \     'cygwin' : 'make -f make_cygwin.mak',
  \     'mac' : 'make -f make_mac.mak',
  \     'unix' : 'make -f make_unix.mak',
  \    },
  \ }

 " My Bundles here:
 " Refer to |:NeoBundle-examples|.
 "
 " Note: You don't set neobundle setting in .gvimrc!

NeoBundle "Shougo/unite.vim"
NeoBundle "Shougo/neosnippet.vim"
NeoBundle "Shougo/neosnippet-snippets"
NeoBundle "Shougo/vimfiler.vim"
NeoBundle "Shougo/neocomplete.vim"
NeoBundle "t9md/vim-smalls"
NeoBundle "rhysd/clever-f.vim"
NeoBundle "kana/vim-textobj-user"
NeoBundle "tpope/vim-surround"
NeoBundle "osyo-manga/vim-over"

" color theme
NeoBundle 'nanotech/jellybeans.vim'
NeoBundle 'w0ng/vim-hybrid'
NeoBundle 'vim-scripts/twilight'
NeoBundle 'jonathanfilip/vim-lucius'
NeoBundle 'jpo/vim-railscasts-theme'
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'vim-scripts/Wombat'
NeoBundle 'tomasr/molokai'
NeoBundle 'vim-scripts/rdark'

 filetype plugin indent on     " Required!
 "
 " Brief help
 " :NeoBundleList          - list configured bundles
 " :NeoBundleInstall(!)    - install(update) bundles
 " :NeoBundleClean(!)      - confirm(or auto-approve) removal of unused bundles

 " Installation check.
 NeoBundleCheck


" keymap
inoremap <silent><C-j> <ESC>
inoremap <silent>jj <ESC>
nmap <C-p> "*p
nmap Q :q!<CR>

" color
colorscheme molokai
syntax on
set t_Co=256
" plugin
" vim-smalls

nmap s <Plug>(smalls-excursion)
let g:smalls_auto_excursion_min_input_length = 2
let cli_table_custom = {
      \ }
call smalls#keyboard#cli#extend_table(cli_table_custom)

let excursion_table_custom = {
      \ "\<CR>": 'do_set',
      \ "\;": 'do_jump',
      \ }
call smalls#keyboard#excursion#extend_table(excursion_table_custom)

"vim-over
nnoremap <silent> <C-n> :OverCommandLine<CR>%s/

" code
set encoding=utf-8

" clipboard
set clipboard=unnamedplus,unnamed

" commnet
" https://gist.github.com/rbtnn/8540338
augroup auto_comment_off
  autocmd!
  autocmd BufEnter * setlocal formatoptions-=ro
augroup END

参考:
http://mba-hack.blogspot.jp/2013/02/vim.html

Nexus7

Nexus7をマウントするには、以下のツールを使います。MTPをインストールします。MTPとは、メディア転送プロトコルの略です。

$ sudo yaourt -S go-mtpfs-git

$ cd

$ mkdir Android

$ go-mtpfs Android

Androidはポイントです。アンマウントは、以下の通りです。

$ fusermount -u Android

参考:
https://wiki.archlinux.org/index.php/MTP