Ubuntu
2019/05/23更新
対応バージョン: 18.04
破損したzipファイルは内包されているファイルのうち整合性が取れているものがあればそのファイルだけ取り出すことができる。
zipコマンドのバージョン
$ zip --version Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license. This is Zip 3.0 (July 5th 2008), by Info-ZIP. :
破損状態確認
$ unzip a.zip Archive: a.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in one of a.zip or a.zip.zip, and cannot find a.zip.ZIP, period.
破損状態のzipファイルから整合性の取れる部分のみを取り出す
$ zip -FF a.zip --out b.zip Fix archive (-FF) - salvage what can zip warning: Missing end (EOCDR) signature - either this archive is not readable or the end is damaged Is this a single-disk archive? (y/n): y Assuming single-disk archive Scanning for entries... copying: a.txt (234 bytes)
zipファイル解凍
$ unzip b.zip Archive: b.zip extracting: a.txt
参考サイト
zip技術情報 (Qiita)
2016/05/03更新
対応バージョン: 0.6.5.6

ここでは3本のUSBメモリを使ってZFSプールとファイルシステムを作成し、あとからUSBメモリを1本追加して容量を動的に拡張する手順を示す。
ZFSカーネルモジュール有効化、関連ユーティリティインストール
ZFSカーネルモジュールはデフォルトでは無効になっているためmodprobeで有効にしつつ、OS起動時にも有効になるように/etc/modulesにも"zfs"を追加しておく。
# modprobe zfs # dmesg | grep -i zfs [ 5601.061318] ZFS: Loaded module v0.6.5.6-0ubuntu3, ZFS pool version 5000, ZFS filesystem version 5 # lsmod | grep zfs zfs 2813952 0 zunicode 331776 1 zfs zcommon 57344 1 zfs znvpair 90112 2 zfs,zcommon spl 102400 3 zfs,zcommon,znvpair zavl 16384 1 zfs # echo "zfs" >> /etc/modules
続いてZFS関連ユーティリティをインストールする。
# apt install zfsutils-linux
これでZFSが使用可能になる。
ストレージプール作成

まずそれぞれのUSBメモリをマシンに挿すと以下のようなデバイスファイルとして認識される。
/dev/sde1 (ELECOM 8GB)
/dev/sdf1 (ELECOM 8GB)
/dev/sdg1 (ELECOM 8GB)
このデバイスファイル名はOSが動的に割り当てるものなので他のデバイスとの兼ね合いなどから割り当てが変わる場合があってストレージプールの構成要素として使用するには不安定である。
そこでデバイス名として、10ディスク以下程度の小規模の構成であればby-id名での指定を、大規模用途であればby-path名をそれぞれ使うとよい。こうすることでデバイスファイル名に左右されず、同じデバイスであれば常に同じ名前が使える。
ここではby-id名を指定する。by-id名は以下の方法で確認できる。
# ls -l /dev/disk/by-id | egrep sd[e-g]1 ... usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 -> ../../sde1 ... usb-ELECOM_MF-JSU3_1550311382300006-0:0-part1 -> ../../sdf1 ... usb-ELECOM_MF-JSU3_2612923140060010-0:0-part1 -> ../../sdg1
このsdxxにシンボリックリンクが張られたファイルがby-id名である。ストレージプール作成時にはこのby-id名を指定する。
まずは中身をフォーマットする。ファイルシステムはxfsとする。なおxfsを使用するにはxfsprogsパッケージが必要になるのであわせてインストールする。
# umount /dev/sde1 # umount /dev/sdf1 # umount /dev/sdg1 # apt install xfsprogs # mkfs.xfs -f /dev/disk/by-id/usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 # mkfs.xfs -f /dev/disk/by-id/usb-ELECOM_MF-JSU3_1550311382300006-0:0-part1 # mkfs.xfs -f /dev/disk/by-id/usb-ELECOM_MF-JSU3_2612923140060010-0:0-part1
続いてストレージプールを作成する。ストレージプール名はrpoolとし、上記の3デバイスを指定する。
# zpool create -f rpool \ /dev/disk/by-id/usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 \ /dev/disk/by-id/usb-ELECOM_MF-JSU3_1550311382300006-0:0-part1 \ /dev/disk/by-id/usb-ELECOM_MF-JSU3_2612923140060010-0:0-part1
ストレージプールが作成され、3つのデバイスが含まれていることが確認できる。
# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 21.6G 70K 21.6G - 0% 0% 1.00x ONLINE - # zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-JSU3_1550311382300006-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-JSU3_2612923140060010-0:0-part1 ONLINE 0 0 0 errors: No known data errors
デフォルトでは単一スライスが作成されるが他にも以下のような構成が組める。
ミラー
# zpool create rpool mirror <デバイス1> <デバイス2> ...
(*)サイズの違うデバイス同士でミラーを作成した場合、ストレージプールのサイズは(当然ではあるが)一番小さいデバイスと同サイズになる。
RAID-Z
# zpool create rpool raidz <デバイス1> <デバイス2> ...
パリティ付RAID-Z(パリティはシングル、ダブル、トリプルの3種類)
# zpool create rpool raidz1 <デバイス1> <デバイス2> ... # zpool create rpool raidz2 <デバイス1> <デバイス2> ... # zpool create rpool raidz3 <デバイス1> <デバイス2> ...
他にスペアデバイス、ログデバイス、キャッシュデバイスなども明示的に指定できる。
# zpool create rpool mirror <デバイス1> <デバイス2> spare <デバイス3> log <デバイス4> cache <デバイス5>
作成したストレージプールは自動的に/配下にマウントされる。
# df -h /rpool Filesystem Size Used Avail Use% Mounted on rpool 21G 0 21G 0% /rpool
アンマウントする時は以下のようにする。
# zfs unmount rpool
ストレージプールを削除する場合は以下のようにする。
# zpool destroy rpool
ストレージプールからは別のストレージプールを切り出すことができる。
# zfs create rpool/sub # df -h -t zfs Filesystem Size Used Avail Use% Mounted on rpool 21G 0 21G 0% /rpool rpool/sub 21G 0 21G 0% /rpool/sub
こうすることで同じストレージプール内に独立したファイルシステムを作成することができる。
マウントポイントをデフォルト以外の場所にしたい場合は以下のようにする。
# zfs umount rpool/sub # mkdir /mnt/sub # zfs set mountpoint=/mnt/sub rpool/sub # zfs mount rpool/sub # df -h -t zfs Filesystem Size Used Avail Use% Mounted on rpool 21G 0 21G 0% /rpool rpool/sub 21G 0 21G 0% /mnt/sub
各種設定
プロパティ設定
ストレージプールには様々なプロパティが設定されており、これを操作することで細かい制御ができる。
現在のプロパティの設定情報を参照するにはgetサブコマンドに続いて参照したいプロパティ名を指定する。
# zfs get <プロパティ> <ストレージプール>
全てのプロパティを参照するにはプロパティ名に「all」を指定する。
# zfs get all rpool NAME PROPERTY VALUE SOURCE rpool type filesystem - rpool creation 火 5月 3 17:02 2016 - rpool used 95K - rpool available 20.9G - rpool referenced 19K - rpool compressratio 1.00x - rpool mounted yes - rpool quota none default rpool reservation none default rpool recordsize 128K default rpool mountpoint /rpool default rpool sharenfs off default rpool checksum on default rpool compression off default rpool atime on default rpool devices on default rpool exec on default rpool setuid on default rpool readonly off default rpool zoned off default rpool snapdir hidden default rpool aclinherit restricted default rpool canmount on default rpool xattr on default rpool copies 1 default rpool version 5 - rpool utf8only off - rpool normalization none - rpool casesensitivity sensitive - rpool vscan off default rpool nbmand off default rpool sharesmb off default rpool refquota none default rpool refreservation none default rpool primarycache all default rpool secondarycache all default rpool usedbysnapshots 0 - rpool usedbydataset 19K - rpool usedbychildren 76K - rpool usedbyrefreservation 0 - rpool logbias latency default rpool dedup off default rpool mlslabel none default rpool sync standard default rpool refcompressratio 1.00x - rpool written 19K - rpool logicalused 38K - rpool logicalreferenced 9.50K - rpool filesystem_limit none default rpool snapshot_limit none default rpool filesystem_count none default rpool snapshot_count none default rpool snapdev hidden default rpool acltype off default rpool context none default rpool fscontext none default rpool defcontext none default rpool rootcontext none default rpool relatime on temporary rpool redundant_metadata all default rpool overlay off default
プロパティはストレージプール毎に設定されるのでrpoolとrpool/subのプロパティは別物である。
# zfs get all rpool/sub NAME PROPERTY VALUE SOURCE rpool/sub type filesystem - rpool/sub creation 火 5月 3 17:02 2016 - rpool/sub used 19K - rpool/sub available 20.9G - rpool/sub referenced 19K - rpool/sub compressratio 1.00x - rpool/sub mounted yes - rpool/sub quota none default rpool/sub reservation none default rpool/sub recordsize 128K default rpool/sub mountpoint /mnt/sub local rpool/sub sharenfs off default rpool/sub checksum on default rpool/sub compression off default rpool/sub atime on default rpool/sub devices on default rpool/sub exec on default rpool/sub setuid on default rpool/sub readonly off default rpool/sub zoned off default rpool/sub snapdir hidden default rpool/sub aclinherit restricted default rpool/sub canmount on default rpool/sub xattr on default rpool/sub copies 1 default rpool/sub version 5 - rpool/sub utf8only off - rpool/sub normalization none - rpool/sub casesensitivity sensitive - rpool/sub vscan off default rpool/sub nbmand off default rpool/sub sharesmb off default rpool/sub refquota none default rpool/sub refreservation none default rpool/sub primarycache all default rpool/sub secondarycache all default rpool/sub usedbysnapshots 0 - rpool/sub usedbydataset 19K - rpool/sub usedbychildren 0 - rpool/sub usedbyrefreservation 0 - rpool/sub logbias latency default rpool/sub dedup off default rpool/sub mlslabel none default rpool/sub sync standard default rpool/sub refcompressratio 1.00x - rpool/sub written 19K - rpool/sub logicalused 9.50K - rpool/sub logicalreferenced 9.50K - rpool/sub filesystem_limit none default rpool/sub snapshot_limit none default rpool/sub filesystem_count none default rpool/sub snapshot_count none default rpool/sub snapdev hidden default rpool/sub acltype off default rpool/sub context none default rpool/sub fscontext none default rpool/sub defcontext none default rpool/sub rootcontext none default rpool/sub relatime on temporary rpool/sub redundant_metadata all default rpool/sub overlay off default
以下、いくつかのプロパティの設定手順を紹介する。
quota
ディスククォータを設定する。
例えば以下のように一つのストレージプールを複数のファイルシステムに分割して使用している場合を考える。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 95K 20.9G 19K /rpool rpool/sub 19K 20.9G 19K /mnt/sub
この中でrpool/subに対して1GBのクォータを設定する場合は以下のようにする。
# zfs set quota=1g rpool/sub
これによりrpool/subの使用可能サイズは1GBになる。それ以外は以前と同じままである。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 95K 20.9G 19K /rpool rpool/sub 19K 1024M 19K /mnt/sub
クォータの解除はサイズに「none」を指定して再設定すればよい。
# zfs set quota=none rpool/sub # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 95K 20.9G 19K /rpool rpool/sub 19K 20.9G 19K /mnt/sub
reservation
ディスク領域を予約する。
これは前述のクォータのようにファイルシステムの最大サイズを制限するのとは逆に、あらかじめ指定したサイズの領域を確保する方法である。
例えばrpool/subに対して4GBの領域を確保する場合は以下のようにする。
# zfs set reservation=4g rpool/sub
これによりrpool/sub以外の使用可能サイズが21GB中の17GBになり、結果的にrpool/subのために(最低)4GBが確保されたことになる。
% zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 4.00G 16.9G 19K /rpool rpool/sub 19K 20.9G 19K /mnt/sub
領域の予約解除はサイズに「none」を指定して再設定すればよい。
# zfs set reservation=none rpool/sub # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 101K 20.9G 19K /rpool rpool/sub 19K 20.9G 19K /mnt/sub
compression
ファイルシステム内を圧縮モードにする。
# zfs set compression=on rpool/sub # zfs get compression NAME PROPERTY VALUE SOURCE rpool compression off default rpool/sub compression on local
圧縮モードの解除は「off」を指定して再設定すればよい。
# zfs set compression=off rpool/sub # zfs get compression NAME PROPERTY VALUE SOURCE rpool compression off default rpool/sub compression off local
その他、様々なプロパティが存在するがここでは割愛する。
OS起動時・停止時の挙動
/etc/default/zfsの以下の設定を変更することによってOS起動時・停止時の挙動を制御することができる。
OS起動時にプールメンバを自動的に追加しマウントするまでの待ち時間(秒)
5 ZFS_AUTOIMPORT_TIMEOUT='30'
OS起動時にshareするか(yes|no)
9 ZFS_SHARE='no'
OS停止時にunshareするか(yes|no)
12 ZFS_UNSHARE='no'
カーネルモジュール(zfs.ko)をビルドする際に--enable-debugオプション、--enable-debug-dmu-txオプションを付けるか(yes|no)
15 ZFS_DKMS_ENABLE_DEBUG='no' 18 ZFS_DKMS_ENABLE_DEBUG_DMU_TX='no'
カーネルモジュール(zfs.ko)をビルドする際にデバッグシンボルを残すか(yes|no)
21 ZFS_DKMS_DISABLE_STRIP='no'
ストレージプール拡張

ここでは写真のUSBメモリを使用する。デバイスとしては以下のように認識されるので、先ほどと同様にby-id名を確認してフォーマットする。
/dev/sdh1 (SONY 1GB)
# ls -l /dev/disk/by-id | grep sdh1 ... usb-Sony_Storage_Media_1A07031203610-0:0-part1 -> ../../sdh1 # umount /dev/sdh1 # mkfs.xfs -f /dev/disk/by-id/usb-Sony_Storage_Media_1A07031203610-0:0-part1
続いてストレージプールrpoolに上記デバイスを追加する。
# zpool add -f rpool \ /dev/disk/by-id/usb-Sony_Storage_Media_1A07031203610-0:0-part1
ストレージプールが拡張され、1GB容量が増えていることが確認できる。
# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 22.5G 138K 22.5G - 0% 0% 1.00x ONLINE - # zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-JSU3_1550311382300006-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-JSU3_2612923140060010-0:0-part1 ONLINE 0 0 0 usb-Sony_Storage_Media_1A07031203610-0:0-part1 ONLINE 0 0 0 errors: No known data errors # df -h /rpool Filesystem Size Used Avail Use% Mounted on rpool 22G 0 22G 0% /rpool
(拡張前)
# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 21.6G 70K 21.6G - 0% 0% 1.00x ONLINE - # zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-JSU3_1550311382300006-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-JSU3_2612923140060010-0:0-part1 ONLINE 0 0 0 errors: No known data errors # df -h /rpool Filesystem Size Used Avail Use% Mounted on rpool 21G 0 21G 0% /rpool
このようにシステムを止めたりディスクのアンマウント/マウント操作をすることなくストレージ容量の拡張ができ、各種オプションも動的に変更できるのでストレージの柔軟な運用が可能になる。
参考サイト
ZFS技術情報 (Qiita)
2014/06/18更新
対応バージョン: 0.6.3
公式サイト
準備
導入OS
Ubuntu 14.04
インストール
リポジトリ追加
% sudo apt-add-repository --yes ppa:zfs-native/stable
/etc/apt/sources.list.d/zfs-native-stable-trusty.listが作成される。中身は以下の通り。
deb http://ppa.launchpad.net/zfs-native/stable/ubuntu trusty main # deb-src http://ppa.launchpad.net/zfs-native/stable/ubuntu trusty main
ZFS on Linuxインストール
% sudo apt-get update % sudo apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs
インストール確認
zfsモジュールを組み込み、有効になったことを確認する。
% sudo modprobe zfs % dmesg | grep zfs ZFS: Loaded module v0.6.3-2~trusty, ZFS pool version 5000, ZFS filesystem version 5
ストレージプール作成

まずそれぞれのUSBメモリをマシンに挿すと以下のようなデバイスファイルとして認識される。
/dev/sde1 (SONY 1GB)
/dev/sdf1 (ELECOM 8GB)
このデバイスファイル名はOSが動的に割り当てるものなので他のデバイスとの兼ね合いなどから割り当てが変わる場合があってストレージプールの構成要素として使用するには不安定である。
そこでデバイス名として、10ディスク以下程度の小規模の構成であればby-id名での指定を、大規模用途であればby-path名をそれぞれ使うとよい。こうすることでデバイスファイル名に左右されず、同じデバイスであれば常に同じ名前が使える。
ここではby-id名を指定する。by-id名は以下の方法で確認できる。
% ls -l /dev/disk/by-id | grep sde1 ... usb-Sony_Storage_Media_1A07031203610-0:0-part1 -> ../../sde1 % ls -l /dev/disk/by-id | grep sdf1 ... usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 -> ../../sdf1
このsdxxにシンボリックリンクが張られたファイルがby-id名である。ストレージプール作成時にはこのby-id名を指定する。
まずは中身をフォーマットする。ファイルシステムはext4とする。
% sudo umount /dev/sde1 % sudo umount /dev/sdf1 % sudo mke2fs -t ext4 /dev/disk/by-id/usb-Sony_Storage_Media_1A07031203610-0:0-part1 % sudo mke2fs -t ext4 /dev/disk/by-id/usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1
続いてストレージプールを作成する。ストレージプール名はrpoolとし、2つのデバイスを指定する。
% sudo zpool create rpool /dev/disk/by-id/usb-Sony_Storage_Media_1A07031203610-0:0-part1 \ /dev/disk/by-id/usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1
ストレージプールが作成され、2つのデバイスが含まれていることが確認できる。
% sudo zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 8.12G 128K 8.12G 0% 1.00x ONLINE - % sudo zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 usb-Sony_Storage_Media_1A07031203610-0:0-part1 ONLINE 0 0 0 usb-ELECOM_MF-BSU3_070844129E20AC46-0:0-part1 ONLINE 0 0 0 errors: No known data errors
デフォルトでは単一スライスが作成されるが他にも以下のような構成が組める。
ミラー
% sudo zpool create rpool mirror <デバイス1> <デバイス2>
(*)サイズの違うデバイス同士でミラーを作成した場合、ストレージプールのサイズは(当然ではあるが)一番小さいデバイスと同サイズになる。
RAID-Z
% sudo zpool create rpool raidz <デバイス1> <デバイス2> ...
パリティ付RAID-Z(パリティはシングル、ダブル、トリプルの3種類)
% sudo zpool create rpool raidz1 <デバイス1> <デバイス2> ... % sudo zpool create rpool raidz2 <デバイス1> <デバイス2> ... % sudo zpool create rpool raidz3 <デバイス1> <デバイス2> ...
他にもキャッシュデバイスやログデバイスも指定できる。
% sudo zpool create rpool mirror <デバイス1> <デバイス2> cache <デバイス3> log <デバイス4>
作成したストレージプールは自動的に/配下にマウントされる。
% df -h /rpool Filesystem Size Used Avail Use% Mounted on rpool 8.0G 0 8.0G 0% /rpool
アンマウントする時は以下のようにする。
% sudo zfs unmount rpool
ストレージプールを削除する場合は以下のようにする。
% sudo zpool destroy rpool
ストレージプールからは別のストレージプールを切り出すことができる。
% sudo zfs create rpool/sub % df -h -t zfs Filesystem Size Used Avail Use% Mounted on rpool 8.0G 128K 8.0G 1% /rpool rpool/sub 8.0G 128K 8.0G 1% /rpool/sub
こうすることで同じストレージプール内に独立したファイルシステムを作成することができる。
マウントポイントをデフォルト以外の場所にしたい場合は以下のようにする。
% sudo zfs umount rpool/sub % sudo mkdir /mnt/sub % sudo zfs set mountpoint=/mnt/sub rpool/sub % sudo zfs mount rpool/sub % df -h -t zfs Filesystem Size Used Avail Use% Mounted on rpool 8.0G 0 8.0G 0% /rpool rpool/sub 8.0G 0 8.0G 0% /mnt/sub
各種設定
OS起動時・停止時の挙動
/etc/default/zfsの以下の設定を変更することによってOS起動時・停止時の挙動を制御することができる。
OS起動時にmountするか(yes|no)
5 ZFS_MOUNT='no'
OS停止時にunmountするか(yes|no)
9 ZFS_UNMOUNT='no'
OS起動時にshareするか(yes|no)
13 ZFS_SHARE='no'
OS停止時にunshareするか(yes|no)
16 ZFS_UNSHARE='no'
プロパティ設定
ストレージプールに作成したファイルシステムには様々なプロパティが設定されており、これを操作することで細かい制御ができる。
現在のプロパティの設定情報を参照するにはgetサブコマンドに続いて参照したいプロパティ名を指定する。
% zfs get <プロパティ> <ファイルシステム>
全てのプロパティを参照するにはプロパティ名に「all」を指定する。
% sudo zfs get all rpool NAME PROPERTY VALUE SOURCE rpool type filesystem - rpool creation 水 6月 18 0:14 2014 - rpool used 112K - rpool available 8.00G - rpool referenced 30K - rpool compressratio 1.00x - rpool mounted yes - rpool quota none default rpool reservation none default rpool recordsize 128K default rpool mountpoint /rpool default rpool sharenfs off default rpool checksum on default rpool compression off default rpool atime on default rpool devices on default rpool exec on default rpool setuid on default rpool readonly off default rpool zoned off default rpool snapdir hidden default rpool aclinherit restricted default rpool canmount on default rpool xattr on default rpool copies 1 default rpool version 5 - rpool utf8only off - rpool normalization none - rpool casesensitivity sensitive - rpool vscan off default rpool nbmand off default rpool sharesmb off default rpool refquota none default rpool refreservation none default rpool primarycache all default rpool secondarycache all default rpool usedbysnapshots 0 - rpool usedbydataset 30K - rpool usedbychildren 82.5K - rpool usedbyrefreservation 0 - rpool logbias latency default rpool dedup off default rpool mlslabel none default rpool sync standard default rpool refcompressratio 1.00x - rpool written 30K - rpool logicalused 42.5K - rpool logicalreferenced 15K - rpool snapdev hidden default rpool acltype off default rpool context none default rpool fscontext none default rpool defcontext none default rpool rootcontext none default rpool relatime off default % sudo zfs get all rpool/sub/dev NAME PROPERTY VALUE SOURCE rpool/sub/dev type filesystem - rpool/sub/dev creation 水 6月 18 0:30 2014 - rpool/sub/dev used 30K - rpool/sub/dev available 8.00G - rpool/sub/dev referenced 30K - rpool/sub/dev compressratio 1.00x - rpool/sub/dev mounted yes - rpool/sub/dev quota none default rpool/sub/dev reservation none local rpool/sub/dev recordsize 128K default rpool/sub/dev mountpoint /rpool/sub/dev default rpool/sub/dev sharenfs off default rpool/sub/dev checksum on default rpool/sub/dev compression off inherited from rpool rpool/sub/dev atime on default rpool/sub/dev devices on default rpool/sub/dev exec on default rpool/sub/dev setuid on default rpool/sub/dev readonly off default rpool/sub/dev zoned off default rpool/sub/dev snapdir hidden default rpool/sub/dev aclinherit restricted default rpool/sub/dev canmount on default rpool/sub/dev xattr on default rpool/sub/dev copies 1 default rpool/sub/dev version 5 - rpool/sub/dev utf8only off - rpool/sub/dev normalization none - rpool/sub/dev casesensitivity sensitive - rpool/sub/dev vscan off default rpool/sub/dev nbmand off default rpool/sub/dev sharesmb off default rpool/sub/dev refquota none default rpool/sub/dev refreservation none default rpool/sub/dev primarycache all default rpool/sub/dev secondarycache all default rpool/sub/dev usedbysnapshots 0 - rpool/sub/dev usedbydataset 30K - rpool/sub/dev usedbychildren 0 - rpool/sub/dev usedbyrefreservation 0 - rpool/sub/dev logbias latency default rpool/sub/dev dedup off default rpool/sub/dev mlslabel none default rpool/sub/dev sync standard default rpool/sub/dev refcompressratio 1.00x - rpool/sub/dev written 30K - rpool/sub/dev logicalused 15K - rpool/sub/dev logicalreferenced 15K - rpool/sub/dev snapdev hidden default rpool/sub/dev acltype off default rpool/sub/dev context none default rpool/sub/dev fscontext none default rpool/sub/dev defcontext none default rpool/sub/dev rootcontext none default rpool/sub/dev relatime off default
以下、いくつかのプロパティの設定手順を紹介する。
quota
ディスククォータを設定する。
例えば以下のように一つのストレージプールを複数のファイルシステムに分割して使用している場合を考える。
% zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 228K 8.00G 31K /rpool rpool/sub 92K 8.00G 32K /rpool/sub rpool/sub/dev 30K 8.00G 30K /rpool/sub/dev rpool/sub/pub 30K 8.00G 30K /rpool/sub/pub
この中でrpool/sub/pubに対して1GBのクォータを設定する場合は以下のようにする。
% sudo zfs set quota=1g rpool/sub/pub
これによりrpool/sub/pubの使用可能サイズは1GBになる。それ以外は以前と同じままである。
% zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 230K 8.00G 31K /rpool rpool/sub 92K 8.00G 32K /rpool/sub rpool/sub/dev 30K 8.00G 30K /rpool/sub/dev rpool/sub/pub 30K 1024M 30K /rpool/sub/pub
クォータの解除はサイズに「none」を指定して再設定すればよい。
% sudo zfs set quota=none rpool/sub/pub % zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 230K 8.00G 31K /rpool rpool/sub 92K 8.00G 32K /rpool/sub rpool/sub/dev 30K 8.00G 30K /rpool/sub/dev rpool/sub/pub 30K 8.00G 30K /rpool/sub/pub
reservation
ディスク領域を予約する。
これは前述のクォータのようにファイルシステムの最大サイズを制限するのとは逆に、あらかじめ指定したサイズの領域を確保する方法である。
例えばrpool/sub/devに対して4GBの領域を確保する場合は以下のようにする。
% sudo zfs set reservation=4g rpool/sub/dev
これによりrpool/sub/dev以外の使用可能サイズが8GB中の4GBになり、結果的にrpool/sub/devのために(最低)4GBが確保されたことになる。
% zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 4.00G 4.00G 31K /rpool rpool/sub 4.00G 4.00G 32K /rpool/sub rpool/sub/dev 30K 8.00G 30K /rpool/sub/dev rpool/sub/pub 30K 4.00G 30K /rpool/sub/pub
領域の予約解除はサイズに「none」を指定して再設定すればよい。
% sudo zfs set reservation=none rpool/sub/dev % zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 226K 8.00G 31K /rpool rpool/sub 92K 8.00G 32K /rpool/sub rpool/sub/dev 30K 8.00G 30K /rpool/sub/dev rpool/sub/pub 30K 8.00G 30K /rpool/sub/pub
compression
ファイルシステム内を圧縮モードにする。
% sudo zfs set compression=on rpool/sub/dev % sudo zfs get compression NAME PROPERTY VALUE SOURCE rpool compression off local rpool/sub compression off inherited from rpool rpool/sub/dev compression on local rpool/sub/pub compression off inherited from rpool
圧縮モードの解除は「off」を指定して再設定すればよい。
% sudo zfs set compression=off rpool/sub/dev
その他、様々なプロパティが存在するが、ここでは割愛する。
2016/10/19更新
対応バージョン: 16.04
ASUS E200HAの日本語キーボードは「87キー日本語キーボード」という特殊な配列で、Ubuntu環境では以下のキーが入力できない。「|」「\」「_」「fn」「無変換」「変換」「ひらがな」
これらのキーはそもそもxevで確認しても入力イベントが取得できないのでここではUNIX利用で必須となる「|」「\」「_」についてxmodmapを使って他のキーに割り当てる手順を示す。
やり方としては通常UNIXでは使わない「Windows」キーをモディファイアキーとし、モディファイアキーと他のキーの組み合わせとして定義する。
「Windows」+「^」(keycode 21) → 「|」(bar)
「Windows」+「[」(keycode 35) → 「\」(backslash)
「Windows」+「/」(keycode 61) → 「_」(underscore)
定義は~/.Xmodmapに記述し、ログイン時に適用されるようにする。
内容は以下の通りで、まず上記3キーをモディファイアキーとの組み合わせでそれぞれの文字に割り当て、最後に「Windows」キーをモディファイアキーに割り当てる。
! モディファイアキー + keycode の割り当て keycode 21 = asciicircum asciitilde bar bar keycode 35 = bracketleft braceleft backslash backslash keycode 61 = slash question underscore underscore ! Windowsキー(keycode 133 = Super_L)をモディファイアキー(Mode_switch)に割り当て keycode 133 = Mode_switch
いったんログアウトしてログインし直せば設定が有効になる。
関連資料・記事
参考サイト
xmodmap技術情報 (Qiita)
ASUS E200HAをLinux機にする (Cloud Ninja)
2016/5/1更新
対応バージョン: 15.04〜16.04
ロジテックの無線LANアダプタ「LAN-WH300NU2」はRealtek社のrtl8192cuドライバで動作するが、Ubuntu 15.04〜16.04に同梱されているバージョンは古く、動作しない。
そこでGitHubで公開されているrtl8192cu-fixesを入手してDKMS(Dynamic Kernel Module Support)を使用して組み込むことで動作するようになる。
以下、その手順を示す。
入手
% git clone https://github.com/pvaret/rtl8192cu-fixes.git
ビルド
% sudo dkms add ./rtl8192cu-fixes Creating symlink /var/lib/dkms/8192cu/1.10/source -> /usr/src/8192cu-1.10 DKMS: add completed. % sudo dkms install 8192cu/1.10 Kernel preparation unnecessary for this kernel. Skipping... Building module: : DKMS: install completed.
モジュールリスト更新
% sudo depmod -a
公式ドライバをブラックリスト化
% sudo cp -p ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
電源管理無効化(一部のハードウェア)
電源管理に不具合のあるハードウェアがあるのでWi-Fi接続後にパケットが捨てられてしまう場合はこの機能を無効にする。
% sudo cp -p ./rtl8192cu-fixes/8192cu-disable-power-management.conf /etc/modprobe.d/
後片付け
% rm -rf ./rtl8192cu-fixes/
以上を実施してOSを再起動するとアダプタが使用可能になる。
確認
USBデバイスの確認
# lsusb : Bus 001 Device 013: ID 0789:016d Logitec Corp. : % modinfo 8192cu | grep v0789 alias: usb:v0789p016Dd*dc*dsc*dp*ic*isc*ip*in*
Vendor ID: 0789
Product ID: 016d
NICとしての認識
% iwconfig : wlx3495db0f69a3 IEEE 802.11bgn ESSID:"xxxxxxx" Mode:Managed Frequency:2.432 GHz Access Point: xx:xx:xx:xx:xx:xx Bit Rate=1 Mb/s Tx-Power=20 dBm Retry short limit:7 RTS thr=2347 B Fragment thr:off Power Management:off Link Quality=42/70 Signal level=-68 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:1008 Missed beacon:0
2014/2/17更新
対応バージョン: 13.04
libvirt導入によって仮想ブリッジvirbr0が作成されOS起動時に自動起動されるが、これを無効化/有効化する手順を示す。
virbr0無効化
virbr0削除
% sudo virsh net-destroy default
自動起動無効化
% sudo virsh net-autostart default --disable
確認
% virsh net-list --all Name State Autostart Persistent ---------------------------------------------------------- default inactive no yes
virbr0有効化
virbr0作成
% sudo virsh net-start default
自動起動有効化
% sudo virsh net-autostart default
確認
% virsh net-list --all Name State Autostart Persistent ---------------------------------------------------------- default active yes yes % ifconfig virbr0 virbr0 Link encap:Ethernet HWaddr da:5d:72:0e:b3:db inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
設定ファイル
設定ファイルはvirbr0の有効/無効に関わらず/etc/libvirt/qemu/networks/default.xmlに格納される。中身はシンプルなので説明不要。
<network> <name>default</name> <uuid>5501a721-9db6-1ad2-13f2-f87759ca8543</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0' /> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254' /> </dhcp> </ip> </network>
virbr0が有効化されているとこのファイルへのシンボリックリンクが作成される。
% ls -l /etc/libvirt/qemu/networks/autostart lrwxrwxrwx 1 root root 38 2月 17 00:57 default.xml -> /etc/libvirt/qemu/networks/default.xml
設定の編集は以下のコマンドで行う。
% sudo virsh net-edit default
2016/10/22更新
対応バージョン: 16.04
ASUS E200HAのタッチパッドは面積が広く感度も高いのでキー入力中などに意図せぬ動きをしてしまうことがある。そこでデフォルトの動作を一部変更して快適な環境を整える。
設定はSynapticsインプットドライバのconfファイルを変更することで行う。
ここでは以下の設定変更を行うが、他にも多くの設定があるのでsynaptics(4)のmanや後述の資料等を参照するとよい。
右端ドラッグ時の縦スクロール無効化(デフォルトでは有効)
VertEdgeScroll: on -> off
惰性スクロール無効化(デフォルトではタッチパッドを離したあともスマートフォンのように惰性でしばらくスクロール)
CoastingSpeed: 20 -> 0
タッチパッドに指が触れた・離れたことを検知する圧力変更(デフォルトよりやや強めにタッチしないと触れたと判断しないようにする)
FingerLow: 25 -> 30 (指の圧力がこの値を下回ると指が離れたと判定する)
FingerHigh: 30 -> 50 (指の圧力がこの値を上回ると指が触れたと判定する)
設定手順
まずconfファイルを雛形からコピーする。
% sudo mkdir /etc/X11/xorg.conf.d % sudo cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d
次にこのファイルを編集して以下の設定を追加する。
% sudo vi /etc/X11/xorg.conf.d/50-synaptics.conf : Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Option "VertEdgeScroll" "off" # 右端ドラッグ時の縦スクロール無効化 Option "CoastingSpeed" "0" # 惰性スクロール無効化 Option "FingerLow" "30" # 指が離れたと判断する圧力 Option "FingerHigh" "50" # 指が触れたと判断する圧力 EndSection
いったんログアウトしてログインし直せば設定が有効になる。
ちなみにSynapticsで設定できるオプションはsynclientコマンドを実行すると確認できる。
% synclient Parameter settings: LeftEdge = 124 RightEdge = 2996 TopEdge = 92 BottomEdge = 1624 FingerLow = 30 FingerHigh = 50 MaxTapTime = 180 MaxTapMove = 156 MaxDoubleTapTime = 100 SingleTapTimeout = 180 ClickTime = 100 EmulateMidButtonTime = 0 EmulateTwoFingerMinZ = 282 EmulateTwoFingerMinW = 7 VertScrollDelta = 71 HorizScrollDelta = 71 VertEdgeScroll = 0 HorizEdgeScroll = 0 CornerCoasting = 0 VertTwoFingerScroll = 1 HorizTwoFingerScroll = 0 MinSpeed = 1 MaxSpeed = 1.75 AccelFactor = 0.0561798 TouchpadOff = 0 LockedDrags = 0 LockedDragTimeout = 5000 RTCornerButton = 2 RBCornerButton = 3 LTCornerButton = 0 LBCornerButton = 0 TapButton1 = 1 TapButton2 = 3 TapButton3 = 0 ClickFinger1 = 1 ClickFinger2 = 3 ClickFinger3 = 0 CircularScrolling = 0 CircScrollDelta = 0.1 CircScrollTrigger = 0 CircularPad = 0 PalmDetect = 0 PalmMinWidth = 10 PalmMinZ = 200 CoastingSpeed = 0 CoastingFriction = 50 PressureMotionMinZ = 30 PressureMotionMaxZ = 160 PressureMotionMinFactor = 1 PressureMotionMaxFactor = 1 ResolutionDetect = 1 GrabEventDevice = 0 TapAndDragGesture = 1 AreaLeftEdge = 0 AreaRightEdge = 0 AreaTopEdge = 0 AreaBottomEdge = 0 HorizHysteresis = 17 VertHysteresis = 17 ClickPad = 1 RightButtonAreaLeft = 1560 RightButtonAreaRight = 0 RightButtonAreaTop = 1407 RightButtonAreaBottom = 0 MiddleButtonAreaLeft = 0 MiddleButtonAreaRight = 0 MiddleButtonAreaTop = 0 MiddleButtonAreaBottom = 0
タッチパッドの詳細は/proc/bus/input/devicesファイルの該当箇所を見れば把握できるのでその他細かい設定が必要な場合はこの情報をもとに調査するとよい。
% cat /proc/bus/input/devices : I: Bus=0018 Vendor=04f3 Product=0009 Version=0000 N: Name="Elan Touchpad" P: Phys= S: Sysfs=/devices/pci0000:00/808622C1:02/i2c-10/i2c-ELAN0100:00/input/input7 U: Uniq= H: Handlers=mouse0 event7 B: PROP=5 B: EV=b B: KEY=e520 10000 0 0 0 0 B: ABS=663800013000003 :
関連資料・記事
参考サイト
Synaptics技術情報 (Qiita)
Synapticsタッチパッド (ArchWiki)
2016/09/12更新
対応バージョン: 16.04
swap領域を拡張する手順を示す。
手段としてはサイズ変更可能なファイルシステムを使用したり新たにディスクパーティションを切り出す方法など様々あるが、ここではOS稼働中でも作業可能なファイルを用いた方法を用いる。
現状確認
まず現在のswapの状態を確認しておく。
% cat /etc/fstab : <file system> <mount point> <type> <options> <dump> <pass> : UUID=xxxxx-xxx-xxxx none swap sw 0 0 : % swapon -s Filename Type Size Used Priority /dev/mmcblk0p3 partition 4084732 56704 -1 % free -h total used free shared buff/cache available Mem: 3.8G 2.1G 162M 500M 1.5G 941M Swap: 3.9G 55M 3.8G
swapファイル作成
通常のファイルをswapファイルとして設定する。ここでは2GBのファイルを作成する。
% sudo fallocate -l 2G /swapfile % ls -lh /swapfile -rw-r--r-- 1 root root 2.0G 9月 12 22:10 /swapfile
このファイルをrootにしか読み書きできないようにパーミッション変更する。
% sudo chmod 600 /swapfile % ls -lh /swapfile -rw------- 1 root root 2.0G 9月 12 22:10 /swapfile
ファイルをswap領域として設定する。
% sudo mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) ラベルはありません, UUID=e9036b95-b824-4585-a995-5426de792c04
swap割り当て
先ほど作成したファイルをswap領域として割り当てる。
% sudo swapon /swapfile
これで既存のswap領域が拡張される。
% swapon -s Filename Type Size Used Priority /dev/mmcblk0p3 partition 4084732 56704 -1 /swapfile file 2097148 0 -2 % free -h total used free shared buff/cache available Mem: 3.8G 2.1G 162M 500M 1.5G 941M Swap: 5.9G 55M 5.9G
恒久設定
上記のswaponコマンドでswapを拡張しただけだとOSを再起動した際に元の割当に戻ってしまうので恒久的に割り当てたい場合は/etc/fstabで指定する。
% sudo cp -p /etc/fstab{,.bak} % echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab /swapfile none swap sw 0 0
swap割り当て解除
割り当てたswapを解除するのは簡単で、swapoffコマンドで解除したいファイルを指定するだけでよい。
/etc/fstabを変更していた場合は元に戻す。
swapファイルは再利用もできるが、不要であれば削除してよい。
% sudo swapoff /swapfile % swapon -s Filename Type Size Used Priority /dev/mmcblk0p3 partition 4084732 56704 -1
/etc/fstabを変更していた場合
% sudo mv /etc/fstab{.bak,}
swapファイルが不要な場合
% sudo rm /swapfile
2009/7/12更新
対応バージョン: 9.04
この場合、手動で強制アンマウントすればよい。
% fusermount -zu <マウントポイント>
LANG=Cの環境では「Transport endpoint is not connected」というメッセージが出る。
関連資料・記事
2012/11/3更新
対応バージョン: 11.04~12.10
sshfsを使用するには基本的にクライアント側での設定だけでよく、サーバ側ではsshdが起動していて必要に応じてsftp-serverが起動するようになっていればよい。
以下、クライアント側の設定を示す。
sshfsパッケージインストール
% sudo apt-get install sshfs
マウント
以下の要領でファイルシステムをマウントする。これはスーパーユーザである必要はない。
% sshfs [-p <接続ポート>] [アカウント@]<サーバ>:[ディレクトリ] <マウントポイント>
例えば、クライアント側と同じアカウントがサーバにあってそのホームディレクトリを~/serverにマウントする場合は以下のようにする。
% sshfs <サーバ>: ~/server
(*) <サーバ>の後の「:」を忘れないこと。
% mount : <アカウント>@<サーバ>: on /home/<ローカルアカウント>/server type fuse.sshfs (rw,nosuid,nodev,max_read=65536,user=<ローカルアカウント>)
アンマウント
アンマウントは以下の手順で行う。
% fusermount -u <マウントポイント>
関連資料・記事
2012/10/31更新
対応バージョン: 9.04~12.10
サービス有効化
initスクリプト設定
/etc/rc?.d/配下から/etc/init.d/<サービス>へのシンボリックリンクを作成する。
% sudo update-rc.d <サービス> defaults [<起動/停止順> | <起動順> <停止順>]<起動/停止順>を指定するとシンボリックリンクの先頭が起動用も停止用も同じ数字になる。省略すると20が使用される。
サービス起動
% sudo service <サービス> start
サービス無効化
サービス停止
% sudo service <サービス> stop
initスクリプト設定解除
/etc/rc?.d/配下から/etc/init.d/<サービス>へのシンボリックリンクを削除する。
% sudo update-rc.d -f <サービス> remove
2012/9/29更新
対応バージョン: 12.04
Ubuntuでスキャナ「Canon LiDE 200」を使用するには以下の手順で行う。
libusb-dev,libsane-devインストール
% sudo apt-get install libusb-dev libsane-dev
設定ファイル編集
/etc/sane.d/genesys.confの任意の場所に以下の設定を追加する。
# Canon LiDE 200 usb 0x04a9 0x1905
2019/12/14更新
対応バージョン: 18.04

Dec 14 11:02:20 zero kernel: [374.597] pcieport 0000:00:1c.7: AER: Corrected error received: id=00e7 Dec 14 11:02:20 zero kernel: [374.612] pcieport 0000:00:1c.7: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=00e7(Transmitter ID) Dec 14 11:02:20 zero kernel: [374.621] pcieport 0000:00:1c.7: device [8086:a297] error status/mask=00001000/00002000 Dec 14 11:02:20 zero kernel: [374.627] pcieport 0000:00:1c.7: [12] Replay Timer Timeout
具体的にはGRUBの設定でカーネル起動オプション「pci=nommconf」(PCIデバイスアクセスにおけるMMCONFIGの使用を無効化)を付けて再起動すればよい。
$ uname -a Linux zero 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 $ cd /etc/default $ sudo cp -p grub{,.bak} $ sudo vi grub (変更前) GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" (変更後) GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nommconf" $ sudo update-grub $ sudo reboot
参考サイト
ubuntu技術情報 (Qiita)
2014/11/09更新
対応バージョン: 14.04
Linuxでは特別なソフトウェアを使わなくても/dev/urandomを使ってランダムなパスワードを簡単に生成することができる。
trやfoldとの組み合わせなので不要な文字を取り除いたり桁数を変えたりすることも簡単にできる。
以下にいくつか例を示す。
英数字
(foldとheadを使って12桁のパスワードを10個生成)
% cat /dev/urandom | tr -dc "[:alnum:]" | fold -w 12 | head -n 10 a4QW6L1ZEmR8 Q09o986mrvso FSOD8ilCHV5Z QcjDXLLH1xSL tHdHNO1i2xYG qwZdRyXxb8ut 1q8wifhvh5pv jEB9MmRQG0h3 aw9K7HpGy66x Yr5s5JcJub8v
英数字 + 記号
% cat /dev/urandom | tr -dc "[:graph:]" | fold -w 12 | head -n 10 n1ETpKJ([L3f (D*{Q-9O'}QA 0Fy+d{iU\.AP Uj^h/_vray\D l<dEC&}ein'h uZ'ylP1a?({. &;G450jKww*8 fk>hI6%@[Qgu qyEkx|[V3d9[ LF(AgM=riBw*
上記から間違えやすい文字(*)を省いたもの
(*) 1(数字のイチ)とI(英大文字のアイ)とl(英小文字のエル)、0(数字のゼロ)とO(英大文字のオー)、~(チルダ)と^(カレット)
% cat /dev/urandom | tr -dc "[:graph:]" | tr -d "1Il0O~^" | fold -w 12 | head -n 10 tjzuG5bCn6[& n[!DnN$W}&|> }xm>awYZsoHs g9*JWqi*Vc4f cRE|aLMK_emz k&.{Q|8=Gw=9 +(auXxm`g4Gr mBBH8i.;u_!4 rV/(MU5<[fB& >@cb}Zn>(]VD
このようにワンライナーで簡単にランダムなパスワードが生成できるのでシェルスクリプトなどに組み込むのも簡単である。
#!/bin/sh passwd=`cat /dev/urandom | tr -dc "[:graph:]" | head -c 12`
2010/5/5更新
対応バージョン: 10.04
UbuntuでObjective-CのFoundationクラスを使用するには以下の手順で行う。
libgnustep-base-devパッケージインストール
% sudo aptitude install libgnustep-base-dev
gccのオプション指定
% gcc <ソース> -lobjc -lgnustep-base -I/usr/include/GNUstep \ -fconstant-string-class=NSConstantString
-fconstant-string-class=NSConstantStringオプション
ソース中の@"..."ディレクティブをNSConstantStringクラスのインスタンスとして処理するためのオプション。
これを付けないとNXConstantStringクラスのインスタンスとして処理されるので以下のエラーになる。
error: cannot find interface declaration for NXConstantString
ソースにメモリ自動解放機構組み込み
main()関数の先頭でオブジェクトの自動解放プールを生成し、メモリ管理を行いたいオブジェクトからautoreleaseメッセージを送信してプールに登録、最後にプールからdrainメッセージを送ってプールを破棄する。
void main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; : id <オブジェクト> = [[<クラス> alloc] autorelease]; : [pool drain]; }
コード例)
% vi test.m #import <Foundation/NSObject.h> #import <Foundation/NSString.h> #import <Foundation/NSAutoreleasePool.h> #import <stdio.h> // クラス宣言 @interface Text : NSObject { NSString *message; } - (void)setMessage :(NSString *)text; - (void)printMessage; @end // クラス定義 @implementation Text : NSObject - (void)setMessage :(NSString *)text { message = text; } - (void)printMessage { printf("%s\n", [message UTF8String]); } @end // メイン void main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; id text = [[Text alloc] autorelease]; [text setMessage:@"Hello World"]; [text printMessage]; [pool drain]; } % gcc test.m -lobjc -lgnustep-base -I/usr/include/GNUstep \ -fconstant-string-class=NSConstantString % ./a.out Hello World
関連資料・記事
2010/5/1更新
対応バージョン: 9.04~10.04
UbuntuでObjective-Cのテスト環境を用意するにはgobjcパッケージをインストールするだけでよい。
% sudo aptitude install gobjc
あとはgccのオプションで-lobjcを付けてソースをコンパイルする。
例)
% vi hello.m #import <objc/Object.h> int main() { printf("Hello World!\n"); return 0; } % gcc -lobjc hello.m % ./a.out Hello World!
関連資料・記事
2010/5/1更新
対応バージョン: 9.04~10.04
ntpdインストール
% sudo apt-get install ntp
設定ファイル記述
/etc/ntp.confを記述する。パラメータについてはFedoraのNTPクライアントの設定と同様なので割愛する。
関連資料・記事
ntpd起動
ntpdを再起動する(インストール時に自動起動されるため)。
% sudo service ntp restart
確認方法
NTPサーバへの接続状況はntpqコマンドで確認できる。
% ntpq -p remote refid st t when poll reach delay offset jitter ========================================================================= *ntp1.jst.mfeed. 210.173.160.86 2 u 436 1024 377 8.928 -0.093 0.079 +ntp2.jst.mfeed. 210.173.160.86 2 u 249 1024 377 9.415 -0.206 1.206 +ntp3.jst.mfeed. 210.173.176.251 2 u 255 1024 377 8.811 0.048 0.084
サーバ毎の接続状況のチェック方法もFedoraのNTPクライアントの設定に記載しているので割愛する。
関連資料・記事
2012/4/29更新
対応バージョン: 11.10
Ubuntu 11.10のデフォルト状態ではBroadcom BCM4312が認識されず、syslogに以下のメッセージが出力される。
b43-phy0 ERROR: Firmware file "b43/ucode15.fw" not found b43-phy0 ERROR: Firmware file "b43-open/ucode15.fw" not found
デバイスとしては認識されているがFirmwareが正しくインストールされていない。
% lspci -vvnn|grep BCM4312 Broadcom Corporation BCM4312 802.11b/g LP-PHY
この場合、以下のパッケージをインストールすれば当該Firmwareがインストールされる。
% sudo apt-get install b43-fwcutter firmware-b43-lpphy-installer (modprobe b43は自動実行される)
尚、2012/4/29時点でのFirmwareは以下のファイルである。
http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
また、Firmwareの各ファイルは/lib/firmware/b43配下にインストールされる。
2012/11/3更新
対応バージョン: 11.10~12.10
/etc/network/interfacesに記述する。
例えばeth0に対して2つのIPエイリアスを設定する場合はそれぞれ「:0」「:1」付きの設定を加える。
例)
% sudo vi /etc/network/interfaces : auto eth0:0 iface eth0:0 inet static address 192.168.0.110 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 auto eth0:1 iface eth0:1 inet static address 192.168.0.111 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1
設定後、以下のコマンドで設定を有効にする。
% sudo service networking restart % ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:22:68:5c:42:28 brd ff:ff:ff:ff:ff:ff inet 192.168.0.11/24 brd 192.168.0.255 scope global eth0 inet 192.168.0.110/24 brd 192.168.0.255 scope global secondary eth0:0 inet 192.168.0.111/24 brd 192.168.0.255 scope global secondary eth0:1 inet6 fe80::222:68ff:fe5c:4228/64 scope link valid_lft forever preferred_lft forever
eth0:0とeth0:1が追加されているのが確認できる。
関連資料・記事
2009/11/26更新
対応バージョン: 9.04
mountコマンドを使用してリモートホストのファイルシステムをNFSマウントしようとすると以下のエラーが出てマウントに失敗する。
% sudo mount -v -o tcp server:/data /mnt mount: 間違ったファイルシステムタイプ、不正なオプション、 server:/data のスーパーブロックが不正、コードページまたは ヘルパープログラムの未指定、或いは他のエラー (for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so
これはnfs-commonパッケージがインストールされていないことが原因なのでインストールして再度mountを実行する。
% sudo aptitude install nfs-common
2012/11/3更新
対応バージョン: 9.04~12.10
NetworkManagerを使用せずにネットワークの設定をするには以下の手順で行う。
NetworkManager無効化
(12.04)
% sudo service network-manager stop % sudo update-rc.d -f network-manager remove
(9.04)
% sudo service NetworkManager stop % sudo update-rc.d -f NetworkManager remove
関連資料・記事
設定ファイル編集
% sudo vi /etc/network/interfaces : auto eth0 iface eth0 inet static address <IPアドレス> netmask <ネットマスク> gateway <デフォルトGW> :
スタティックルートを設定したい場合はupに続いてrouteコマンドを記述する。
up route add -net <宛先ネットワーク> netmask <ネットマスク> gw <転送先GW>
例)
auto eth0 iface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 220.158.1.1 220.158.1.2 up route add -net 172.20.10.0 netmask 255.255.255.0 gw 192.168.1.1
(*) resolvconfパッケージを入れている場合、dns-nameserversに指定しておいた設定が自動的に/etc/resolv.confに反映されるので/etc/resolv.confには何も書かないようにする。
DNSリゾルバ設定
% sudo vi /etc/resolv.conf nameserver <DNSサーバ>
networkingサービス再起動
% sudo service networking start
2014/08/04更新
対応バージョン: 14.04
ファイルシステムを作る場合、普通は物理的なHDDや論理ボリュームなどを用意するが、一般的なファイルをループバックデバイスを用いてマウントすることで簡単にファイルシステムを作ることができる。
この方法は一時的にファイルシステム固有の仕様を調べる時などに便利である。
ここではext4上のファイルをXFSに仕立ててみる。
パッケージインストール
まずパッケージをインストールする。
% sudo apt-get install xfsprogs
これでファイルシステムを作成する/sbin/mkfs.xfsをはじめ、/sbinと/usr/sbinに各種管理ツール(xfs*)がインストールされる。
XFSのバックアップ/リストア用のコマンド(xfsdump/xfsrestore)を使いたい場合はxfsdumpパッケージもインストールする。
空ファイル作成
まずddで任意のサイズの空ファイルを作る(ここでは1MB x 100回 = 100MB)。
% cd /var/tmp % dd if=/dev/zero of=dummy.xfs bs=1M count=100 % ls -l dummy.xfs -rw-rw-r-- 1 neo neo 104857600 8月 04 13:40 dummy.xfs % file dummy.xfs dummy.xfs: data
フォーマット
作成されたファイルをXFSでフォーマットする。
% mkfs -t xfs dummy.xfs meta-data=dummy.xfs isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 % file dummy.xfs dummy.xfs: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
マウント
ループバックデバイスを用いてマウントする。
% sudo mkdir /mnt/xfs % sudo mount -t xfs -o loop dummy.xfs /mnt/xfs % sudo chmod 1777 /mnt/xfs % mount | grep xfs /var/tmp/dummy.xfs on /mnt/xfs type xfs (rw) % df /mnt/xfs Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop0 97600 5280 92320 6% /mnt/xfs % df -i /mnt/xfs Filesystem Inodes IUsed IFree IUse% Mounted on /dev/loop0 102400 3 102397 1% /mnt/xfs % xfs_info /mnt/xfs meta-data=/dev/loop0 isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
尚、ループバックデバイスが使えるかどうかは/proc/devicesを見ればよい。左の番号はデバイスのメジャー番号である。
% cat /proc/devices : Block devices: : 7 loop : % ls -l /dev/loop? brw-rw---- 1 root disk 7, 0 8月 4 15:59 /dev/loop0 brw-rw---- 1 root disk 7, 1 8月 4 13:20 /dev/loop1 brw-rw---- 1 root disk 7, 2 8月 4 13:20 /dev/loop2 brw-rw---- 1 root disk 7, 3 8月 4 13:20 /dev/loop3 brw-rw---- 1 root disk 7, 4 8月 4 13:20 /dev/loop4 brw-rw---- 1 root disk 7, 5 8月 4 13:20 /dev/loop5 brw-rw---- 1 root disk 7, 6 8月 4 13:20 /dev/loop6 brw-rw---- 1 root disk 7, 7 8月 4 13:20 /dev/loop7
テスト
ここではXFS特有の機能をいくつか使ってみる。
ファイルシステム一時停止
xfs_freezeコマンドによりファイルシステムを一時停止させることができる。
% sudo xfs_freeze -f /mnt/xfs
この状態で何かファイルを作ったり更新したりしようとしても待たされる。
% touch /mnt/xfs/test <- 待たされる
一時停止を解除すれば待たされていた処理は実行される。
% sudo xfs_freeze -u /mnt/xfs
バックアップ、リストア
バックアップとリストアにはxfsdumpとxfsrestoreを使用する。
まずバックアップを試してみる。
-lオプションでダンプレベル(0-9)を指定し、-fオプションでバックアップ先デバイスを指定する(ファイルも可)。
% sudo xfsdump -l 0 -f backup.dmp /mnt/xfs xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.1 (dump format 3.0) - type ^C for status and control ======================= dump label dialog ======================== please enter label for this dump session (timeout in 300 sec) -> full backup <- 任意のラベル名を付ける session label entered: "full backup" --------------------------- end dialog --------------------------- xfsdump: level 0 dump of k1:/mnt/xfs xfsdump: dump date: Mon Aug 4 16:13:59 2014 xfsdump: session id: d2c67c66-e997-4de8-87a9-d912bdecbc6f xfsdump: session label: "full backup" xfsdump: ino map phase 1: constructing initial dump list xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 21120 bytes xfsdump: /var/lib/xfsdump/inventory created ======================= media label dialog ======================= please enter label for media in drive 0 (timeout in 300 sec) -> full backup media <- 任意のメディアラベル名を付ける media label entered: "full backup media" --------------------------- end dialog --------------------------- xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 21328 bytes xfsdump: dump size (non-dir files) : 0 bytes xfsdump: dump complete: 62 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /var/tmp/backup.dmp OK (success) xfsdump: Dump Status: SUCCESS % ls -l /var/tmp/backup.dmp -rw-r--r-- 1 root root 21328 8月 4 16:15 /var/tmp/backup.dmp % file /var/tmp/backup.dmp /var/tmp/backup.dmp: xfsdump archive (version 3)
バックアップ情報は/var/lib/xfsdump/inventory配下に保存される。内容を確認するにはxfsrestoreの-Iオプションを使用する。
% xfsrestore -I file system 0: fs id: 252b9f88-d7a3-455b-918d-992c92cc0407 session 0: mount point: k1:/mnt/xfs device: k1:/dev/loop0 time: Mon Aug 4 16:13:59 2014 session label: "full backup" session id: d2c67c66-e997-4de8-87a9-d912bdecbc6f level: 0 resumed: NO subtree: NO streams: 1 stream 0: pathname: /var/tmp/backup.dmp start: ino 131 offset 0 end: ino 132 offset 0 interrupted: NO media files: 1 media file 0: mfile index: 0 mfile type: data mfile size: 21328 mfile start: ino 131 offset 0 mfile end: ino 132 offset 0 media label: "full backup media" media id: bcbe47ed-258c-4e40-8449-7ffa7fff3269 xfsrestore: Restore Status: SUCCESS
このバックアップ情報を削除するには単に/var/lib/xfsdump/inventoryをディレクトリ毎削除すればよい。
次にリストアを試してみる。
上記で確認したようにバックアップ毎にsession idが一意に付与されるので、リストア時にはこのsession idを指定する。
% rm /mnt/xfs/test <- 最初に作ったテストファイルを削除する % sudo xfsrestore -f /var/tmp/backup.dmp -S d2c67c66-e997-4de8-87a9-d912bdecbc6f -r /mnt/xfs xfsrestore: using file dump (drive_simple) strategy xfsrestore: version 3.1.1 (dump format 3.0) - type ^C for status and control xfsrestore: using online session inventory xfsrestore: searching media for directory dump xfsrestore: examining media file 0 xfsrestore: reading directories xfsrestore: 1 directories and 1 entries processed xfsrestore: directory post-processing xfsrestore: restoring non-directory files xfsrestore: restore complete: 0 seconds elapsed xfsrestore: Restore Summary: xfsrestore: stream 0 /var/tmp/backup.dmp OK (success) xfsrestore: Restore Status: SUCCESS % ls -l /mnt/xfs -rw-rw-r-- 1 neo neo 0 8月 4 16:11 test drwx------ 2 root root 73 8月 4 16:23 xfsrestorehousekeepingdir/
リストア前に削除したファイルが復元されていること、また管理情報を格納するためのxfsrestorehousekeepingdirディレクトリが作成されている。
% sudo ls -l /mnt/xfs/xfsrestorehousekeepingdir -rw------- 1 root root 4152 8月 4 16:23 dirattr -rw------- 1 root root 0 8月 4 16:23 dirextattr -rw------- 1 root root 4111 8月 4 16:23 namreg -rw------- 1 root root 24576 8月 4 16:23 state -rw------- 1 root root 58753024 8月 4 16:23 tree
その他、XFSにはいろいろな機能があるがここでは割愛する。
2016/2/7更新
対応バージョン: 15.10
Lubuntuでログイン時に表示されるキーリングの解除ダイアログ。

これを表示させたくない場合、以下の手順を実施する。
※セキュリティレベルが下がるので使い勝手とのトレードオフであることを考慮した上で設定する。
GnuPGのGNOMEフロントエンドであるseahorseをインストール
% sudo apt install seahorse
[スタート] > [アクセサリ] > [パスワードと鍵]を選択
seahorseが起動するので[Default keyring]を右クリックして[パスワードの変更]を選択

キーリングの元のパスワードを入力

新しいパスワードに空のパスワードを設定(何も入力せず「続ける」をクリック)

確認ダイアログに対して「続ける」をクリック

2015/12/27更新
対応バージョン: 15.10
Ubuntu15.10のUnityデスクトップでCaps LockキーをCtrlキーにするには以下の手順で設定する。
まずUnity/GNOMEのキーボードプラグインを有効化する。
% dconf reset /org/gnome/settings-daemon/plugins/keyboard/active
Caps Lockキーの設定は/org/gnome/desktop/input-sources/xkb-optionsで設定するのでまず現在の値を見る。
% dconf read /org/gnome/desktop/input-sources/xkb-options
デフォルトは未設定で、この場合だとCaps LockキーはCaps Lockとして、CtrlキーはCtrlとしてそれぞれ動作する。
この値を目的に応じて設定する。
Caps LockキーとCtrlキーを交換する
% dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:swapcaps']"
Caps LockキーをCtrlキーに割り当てる(元々のCtrlキーはそのままCtrlとして動作する)
% dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:nocaps']"
Caps Lockキーの割り当てを元に戻す
% dconf reset /org/gnome/desktop/input-sources/xkb-options
関連資料・記事
2012/10/31更新
対応バージョン: 11.10~12.10
Ubuntu11.10以降のUnityデスクトップでCaps LockキーをCtrlキーにするには以下の手順で設定する。
「システム設定」コントロールパネルから「キーボードレイアウト」を選択
「オプション」をクリック
「Ctrlキーの位置」トグルを開き「Make CapsLock an additional Ctrl」を選択
関連資料・記事
2018/6/1更新
対応バージョン: 9.10~18.04
UbuntuでIPv6を無効にするには/etc/sysctl.confに以下の行を追加し、sysctlコマンドで反映させるかOSを再起動する。
尚、この設定はNetworkManagerを使用しているかどうかに関係なく同じ方法である。
設定
(Ubuntu 11.10~18.04)
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
(Ubuntu 9.10~11.04)
net.ipv6.conf.all.disable_ipv6 = 1
反映
% sudo sysctl -p
反映後、ip aコマンド(以前はifconfig)を実行して「inet6」行が表示されなければIPv6は無効になっている。
% ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether d8:50:e6:bd:6f:f8 brd ff:ff:ff:ff:ff:ff 3: wlx3495db0f69a3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 34:95:db:0f:69:a3 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global dynamic wlx3495db0f69a3 valid_lft 23586sec preferred_lft 23586sec
2013/12/24更新
対応バージョン: 13.04
メニューの[システムツール]-[IBus]やibus-setupコマンド等でIBusのデーモンを起動してもログインし直すと自動起動しないことがある。
これは例えばファイルシステムが100%になった場合など、何らかの原因でユーザのホームディレクトリに0バイトの.xinputrcが残ってしまった時に起こる。
対策としては.xinputrcを削除して再度ログインし直せばよい。
2014/01/01更新
対応バージョン: 13.04
ibus-anthyのキー割当は/usr/share/ibus-anthy/setup/anthyprefs.pyで定義されているので、割当を変更したい場合はこのファイルを変更してコンパイルし、pycファイルを作ればよい。
例えばカタカナ変換をデフォルトの「F7」キーから「Ctrl+K」キーにするには以下のようにする。
% cd /usr/share/ibus-anthy/setup % sudo vi anthyprefs.py (変更前) 938 'convert_to_katakana': ['F7'], (変更後) 938 'convert_to_katakana': ['Ctrl+K'], % sudo python -m py_compile anthyprefs.py % ls -l anthyprefs.py* -rw-r--r-- 1 root root 29980 01月 01 00:02 anthyprefs.py -rw-r--r-- 1 root root 21443 01月 01 00:02 anthyprefs.pyc
pycファイルができあがったらいったんログアウトしてログインし直せば設定が有効になる。
2013/12/24更新
対応バージョン: 13.04
LubuntuでIBusのアイコンをパネルに表示するにはメニューの[設定]-[キーボード・インプットメソッド]で「システムトレイにアイコンを表示する」をチェックしただけではダメで、以下のパッケージをインストールする必要がある。
% sudo apt-get install python-appindicator
2016/10/23更新
対応バージョン: 16.04
ASUS E200HAはWindows 10プリインストールモデルしか販売されていないのでWindowsを削除してUbuntuに載せ替える際に実施することを記しておく。ちなみに本記事執筆時点でUbuntuでは以下の機能が使えないが、軽さ(980g)・バッテリの長時間駆動(カタログ値9.5時間)などのメリットを考慮すればUbuntuをモバイル利用したい場合には十分魅力的だと考える。
microSDスロットが使えない
→Ubuntuとして利用するなら内蔵32GBで十分
キーボードに認識されないキーがある
→他のキーで代替可能
関連資料・記事
タッチパッドがやや不安定
→Synapticsドライバの設定変更でそれなりに調整可能
関連資料・記事
スピーカーが使えない
→開発・検証・リモートメンテナンス用などに利用するならスピーカー不要と考える
Windowsの「回復ドライブ」作成
まず万が一Windowsに戻すことを考慮してWindowsの回復ドライブを作成する。
回復ドライブ用に8GB以上のUSBメモリが必要になるが、これを差した状態は以下のようになる。

回復ドライブの作成手順については以下が参考になるのでここでは割愛する。
回復ドライブを作成する (Microsoft)
回復ドライブの作成 (パソ・コンシェルジュ)
起動しないWindows 10の修復を試みる - 回復ドライブの作成 (マイナビニュース)
また、回復ドライブの作成に加えてシステムイメージのバックアップも取得したい場合は以下が参考になる。
万が一の事態を未然に防ぐ!Windows 10 バックアップ 3 つの手段 (DropboxNavi)
Windows 10を完全バックアップするたった1つの方法 (デジタル生活部)
Ubuntuインストール
次にUbuntuのインストールメディアを作成する。E200HAは光学ドライブを持たないためUSBメモリを使う。USBメモリのサイズは4GB以上あればよい。
インストールメディアを作るにはいくつかの方法があるが、ここではLinux/Mac OS X/Windowsに対応したUNetbootinを使う。
Ubuntu上でUNetbootinを使うには以下の手順でインストールし、UNetbootinを起動してインストールしたいUbuntuのisoファイルを指定すればよい。
% sudo add-apt-repository ppa:gezakovacs/ppa % sudo apt-get update % sudo apt-get install unetbootin % unetbootin



インストールメディアが作成できたらE200HAにそのUSBメモリを差してマシンを起動し、[f2]キーでUEFI画面に切り替えて[Boot]メニューから該当のUSBメモリを起動デバイスに指定した上でUEFI画面を終了する。
あとはインストーラに従ってインストールを進めればよい。
参考サイト
Ubuntu技術情報 (Qiita)
2016/7/31更新
対応バージョン: 16.04
UbuntuでレンタルDVDを見るには以下のパッケージをインストールする。
Ubuntu restricted extras
マルチメディアコーデック
libdvdcss2
レンタルDVDに施されているスクランブル(CSS:Content Scramble System)を解除するライブラリ
(*) 以前はlibdvdread4に付属するinstall-css.shでインストールできたが最近ではできなくなっている。
% sudo apt install ubuntu-restricted-extras % sudo apt install libdvdcss2
インストール後、OSを再起動すればもともとインストールされているGNOME MPlayerでDVDが見れる。
好みに応じてVLCやSMPlayerなどのプレイヤーをインストールしてもよい。
2014/1/10更新
対応バージョン: 13.04
除外したいディレクトリやファイルにあらかじめd(no dump)オプションを付けておくことでdumpの対象から外すことができる。
ディレクトリにdオプションを付けた場合はその配下のファイルやディレクトリにもオプションが引き継がれる。
# cd /opt # ls -l -rw-r--r-- 1 neo neo 16 1月 9 22:22 2014 memo -rw-r--r-- 1 neo neo 48 1月 9 22:23 2014 trash drwxr-xr-x 2 neo neo 4096 1月 9 22:23 2014 var/ # lsattr -------------e- ./memo -------------e- ./trash -------------e- ./var
ファイル(trash)、ディレクトリ(var)にdオプションを付けてみる。
# chattr +d trash var # lsattr -------------e- ./memo ------d------e- ./trash ------d------e- ./var
これでdumpを取ればmemoだけがバックアップ対象になる。
# dump -h0 -0f /tmp/backup.dmp /opt
dオプションが有効になるデフォルトのdumpレベルが1なので、-hオプションでレベル0の時もdオプションが有効になるように明示すること。
2016/5/1更新
対応バージョン: 13.04〜16.04
Ubuntuを日本語環境でインストールするとホームディレクトリ上の各種ディレクトリの名称が日本語になるのでこれを英語にするには以下のコマンドを実行する。
% LANG=C xdg-user-dirs-gtk-update Moving DESKTOP directory from デスクトップ to Desktop Moving DOWNLOAD directory from ダウンロード to Downloads Moving TEMPLATES directory from テンプレート to Templates Moving PUBLICSHARE directory from 公開 to Public Moving DOCUMENTS directory from ドキュメント to Documents Moving MUSIC directory from ミュージック to Music Moving PICTURES directory from ピクチャ to Pictures Moving VIDEOS directory from ビデオ to Videos
2014/1/23更新
対応バージョン: 13.04
syslogには以下のメッセージが出力されている。
mount.davfs: File /test exists on the server but should not. Maybe it is an error in the server's LOCK impementation. You may try option 'use_locks 0' in davfs2.conf.
サーバ側のロック機構に問題があるかもしれないので指示に従って~/.davfs2/davfs2.confに以下の設定を追加して再度マウントし直す。
use_locks 0
関連資料・記事
2016/5/22更新
対応バージョン: 13.04〜16.04
UbuntuでWebDAVをマウントするにはdavfs2を使う。
rootでマウントする場合と一般ユーザでマウントする場合で手順が異なる箇所があるので適宜説明する。
davfs2パッケージインストール
% sudo apt-get install davfs2
一般ユーザ用設定(rootでマウントする場合は不要)
一般ユーザでマウント/アンマウントする場合は以下の作業を行う。
/usr/sbin/mount.davfsにSUIDビットを立てる
以下のコマンドを実行し、GUI画面で「はい」を選択するとSUIDビットが立つ(Ubuntu 15.04以降はdavfs2インストール時にGUIが起動するのでこのコマンドは不要)。
% sudo dpkg-reconfigure davfs2
davfs2グループへのユーザ追加
% sudo usermod -aG davfs2 <username>
設定を有効化するためにいったんログアウトして再度ログインする
認証アカウント情報定義
rootの場合は/etc/davfs2/secretsに、一般ユーザの場合は~/.davfs2/secretsにそれぞれ認証アカウント情報を定義しておく(ただしマウント時に毎回ユーザ認証するならこの定義は不要)。
(root)
% sudo vi /etc/davfs2/secrets <WebDAV URI> <username> <password>
(一般ユーザ)
% ls ~/.davfs2 || mkdir ~/.davfs2 % vi ~/.davfs2/secrets <WebDAV URI> <username> <password> % chmod 600 ~/.davfs2/secrets
/etc/fstabにマウント情報定義
% sudo vi /etc/fstab <WebDav URI> <mount point> davfs user,noauto 0 0
(*)automountを使う方法はここでは触れない。
マウント/アンマウント
以上の設定が終わったら通常のマウント/アンマウントが可能である。
マウント
mount <mount point>
アンマウント
umount <mount point>
2016/10/12更新
対応バージョン: 16.04
GUIで作業していてスリープやスクリーンセーバから復帰後にマウスポインタが消えることがあるが、これはバグであり暫定対応ではあるものの以下の手順でいったんバーチャルコンソールを起動して復帰すればディスプレイマネージャが再起動されてポインタも再描画される。
動作していたアプリケーションはそのまま残るので安心してよい。
[Ctrl] + [Alt] + [F1]でバーチャルコンソール起動
[Ctrl] + [Alt] + [F7]でディスプレイマネージャ起動
2014/11/02更新
対応バージョン: Chromium 37.0.2062.120
Chromiumで起動時に以下のメッセージが出る場合がある。
「プロフィールを開くことができませんでした。一部の機能をご利用いただけない可能性があります。プロフィールが存在し、そのコンテンツへの読み書きが許可されていることを確認してください。」これは何らかの原因で履歴ファイルへのアクセスができなくなったので以下の手順で復旧する。
1.Chromium終了
2.バックグラウンドで残っているChromiumプロセス削除
% ps -ef|grep chromium % kill <pid>
3.履歴ファイル削除
% cd ~/.config/chromium/Default % ls -l History* -rw-r--r-- 1 xxx xxx 327680 11月 2 19:38 History -rw-r----- 1 xxx xxx 94707 11月 2 13:35 History Provider Cache -rw-r--r-- 1 xxx xxx 25136 11月 2 19:39 History-journal % rm History*
4.Chromium起動
備考
尚、他の環境では以下の作業を行わないと復旧しない場合もある。
上記作業の前にGoogleアカウントのログアウト、作業後にログイン
~/.config/chromium/Defaultディレクトリ配下(各種設定)を全て削除
Chromium再インストール
2014/05/27更新
対応バージョン: 14.04
ChromiumブラウザでFlashプラグインを使用する場合、Ubuntu 13.04までは以下の方法でよかったが、14.04になって方法が変わったので注意が必要である。
関連資料・記事
(13.04まで)
% sudo apt-get install flashplugin-installer
(14.04)
% sudo apt-get install pepperflashplugin-nonfree
これはChromiumがAdobe Flashの使っているNetscape Plugin APIの提供を打ち切って代わりにPepper Plugin APIをサポートするのに伴う措置である。
バージョンは以下のようになっている。
% sudo update-pepperflashplugin-nonfree --status Flash Player version installed on this system : 13.0.0.214 Flash Player version available on upstream site: 12.0.0.77
2012/7/12更新
対応バージョン: 12.04
ChromiumブラウザはデフォルトではFlashプラグインが組み込まれていないので、以下のコマンドでパッケージをインストールしてブラウザを再起動すれば使用可能になる。
% sudo apt-get install flashplugin-installer
プラグインの実体はインストーラと共に/usr/lib/flashplugin-installerに配置され、alternatives機能により/etc/alternatives/mozilla-flashpluginからシンボリックリンクが張られる。
% ls -l /usr/lib/flashplugin-installer -rwxr-xr-x 1 root root 791 6月 9 05:48 install_plugin* -rw-r--r-- 1 root root 17406436 7月 12 21:16 libflashplayer.so % ls -l /etc/alternatives/mozilla* lrwxrwxrwx 1 root root 48 7月 12 21:16 /etc/alternatives/mozilla-flashplugin -> /usr/lib/flashplugin-installer/libflashplayer.so % update-alternatives --display mozilla-flashplugin mozilla-flashplugin - 自動モード リンクは現在 /usr/lib/flashplugin-installer/libflashplayer.so を指しています /usr/lib/flashplugin-installer/libflashplayer.so - 優先度 50 現在の '最適' バージョンは '/usr/lib/flashplugin-installer/libflashplayer.so' です。
関連資料・記事
2012/3/5更新
対応バージョン: 11.10
Ubuntu向けGoogle Chromeのdebパッケージをインストールしようとして以下のエラーが出て失敗することがある。
内部エラー ファイル"/xxx/yyy/zzz/google-chrome-stable_current_i386.deb"が開けませんでした。
これは同パッケージと依存関係にある以下のパッケージがインストールされていないために起こる。
libcurl3
libnss3-1d
libxss1
これらパッケージと共にGoogle Chromeをインストールするにはdebパッケージが存在するディレクトリで以下のコマンドを実行すればよい。
% sudo apt-get -f install
2018/5/30更新
対応バージョン: 18.04
Ubuntuに導入したAvahiで使用可能なコマンドの一覧を示す。
準備
Avahiのコマンドを使用するにはavahi-utilsをインストールする必要があるので最初にインストールしておく。
% sudo apt install avahi-utils % sudo apt list avahi-utils avahi-utils/bionic,now 0.7-3.1ubuntu1 amd64 [インストール済み]
コマンド一覧
avahi-utilsのインストールができたら実際に以下のコマンドが使用可能になるが、ここでは使用頻度が高いと思われるavahi-browseコマンドとavahi-resolveコマンドについて説明する。
avahi-browse (後述)
Zeroconfネットワークをブラウズする。
avahi-browse-domains
外部のmDNSドメインを検索する。「avahi-browse -D」と同等。
avahi-publish
ホスト・IPアドレス・サービスのマッピングを行う。
avahi-publish-address
ホストとIPアドレスのマッピングを行う。「avahi-publish -a」と同等。
avahi-publish-service
サービスの名前とタイプのマッピングを行う。「avahi-publish -s」と同等。
avahi-resolve (後述)
ホスト名とIPアドレスの相互変換を行う。
avahi-resolve-address
IPアドレスからホスト名を出力する。「avahi-resolve -a」と同等。
avahi-resolve-host-name
ホスト名からIPアドレスを出力する。「avahi-resolve -n」と同等。
avahi-set-host-name
現在のAvahiデーモンに対しmDNSホストを割り当てる。
avahi-browse
Zeroconfネットワークをブラウズする。
-aオプション
全てのサービスを表示
-tオプション
表示後にコマンドを終了させる
例)
% avahi-browse -a -t + wlx1496dc0e29a2 IPv4 host1 Web Site local + wlx1496dc0e29a2 IPv4 host1 [b2:28:ab:6d:d6:1a] Workstation local
表示される項目は以下の通り。
・avahi-browseを実行したマシン上のネットワークインタフェース名
・サービスを提供しているIPプロトコル(IPv6 or IPv4)
・検出したマシンのホスト名
・上記ホスト上のネットワークインタフェース(MACアドレス)
・サービスの種類
・ドメイン
この例ではhost1というホストにおいてHTTPサービス(Web Site)とOSサービス(Workstation)が動いているのが確認できる。
サービスの種類は「_<サービス>._<プロトコル>」という命名規約に従って名前が付けられているので上記のHTTPサービスの場合は「_http._tcp」と表現できる。
このサービスのみブラウズしたい場合は以下のようにする。
% avahi-browse _http._tcp -t + wlx1496dc0e29a2 IPv4 host1 Web Site local
-bオプション
Avahiで使用可能なサービスの一覧を表示
% avahi-browse -b | sort APT Package Repository Adobe Acrobat Adobe Version Cue AirTunes Remote Audio Apple AirPort Apple File Sharing Apple Home Sharing Apple Net Assistant Apple TimeMachine Asterisk Exchange Bazaar DNS Server DVD or CD Sharing Digital Photo Sharing Distributed Compiler FTP File Transfer GnuPG/PGP HKP Key Server Gobby Collaborative Editor Session H.323 Telephony IMAP Mail Access Internet Printer KDE System Guard LDAP Directory Server MacOS X Duplicate Machine Suppression Microsoft Windows Network Mumble Server Music Player Daemon NTP Time Server Network File System OLPC Presence OmniWeb Bookmark Sharing PDL Printer POP3 Mail Access PostgreSQL Server PulseAudio Sound Server PulseAudio Sound Sink PulseAudio Sound Source RTP Realtime Streaming Server RTSP Realtime Streaming Server RealPlayer Shared Favorites Remote Disk Management Remote Jukebox SFTP File Transfer SIP Telephony SSH Remote Terminal Secure Internet Printer Secure Web Site Secure WebDAV File Share Skype VoIP SubEthaEdit Collaborative Text Editor Subversion Revision Control TFTP Trivial File Transfer Telnet Remote Terminal Thousand Parsec Server Thousand Parsec Server (HTTP Tunnel) Thousand Parsec Server (Secure HTTP Tunnel) Thousand Parsec Server (Secure) Timbuktu Remote Desktop Control UNIX Printer VLC Streaming VNC Remote Access Virtual Machine Manager Web Site Web Syndication RSS WebDAV File Share Window Shifter Workstation Xpra Session Server iChat Presence iPod Touch Music Library iTunes Audio Access iTunes Remote Control
これを見るとTCP/IP上で使用可能な主なサービスが網羅されているのがわかる。
avahi-resolve
ホスト名とIPアドレスの相互変換を行う。
-nオプション
ホスト名からIPアドレスを表示
-aオプション
IPアドレスからホスト名を表示
-4オプション
IPv4アドレスで検索
-6オプション
IPv6アドレスで検索
例)
% avahi-resolve -4 -n host1.local host1.local 192.168.1.123 % avahi-resolve -4 -a 192.168.1.123 192.168.1.123 host1.local
関連資料・記事
2016/5/1更新
対応バージョン: 15.10~16.04
autofsでダイレクトマップを使う手順を示す。
ここでは/dev/sdb1(ext4)を/autofs/fooにオートマウントするものとする。
マスターマップ設定ファイル編集
マスターマップの設定ファイルにダイレクトマップの設定を追加する。
% sudo vi /etc/auto.master : /- /etc/auto.direct
ダイレクトマップ設定ファイル編集
マウントポイント、オプション、対象デバイスをそれぞれ指定する。
% sudo vi /etc/auto.direct /autofs/foo -fstype=ext4 :/dev/sdb1
マウントポイント作成
% sudo mkdir /autofs/foo
autofs起動
% sudo systemctl restart autofs
マウント試験
ダイレクトマップ対象マウントポイントにアクセスすると指定したデバイスがオートマウントされる。
% ls /autofs/foo : % mount : /dev/sdb1 on /autofs/foo type ext4 (rw)
関連資料・記事