goo blog サービス終了のお知らせ 

工作メモ

工作メモ

Slitaz LiveCD の作成

2018-10-25 23:40:03 | Linux
tazlito writeiso
LiveUSBは便利だが、MY28V/L-HはUSBメモリからブートはできない。
これらUSBからブートできないPCのために、(日本語化等)カスタマイズしたLiveCDを作成したい。

slitazには、CDのリマスタリングのために、tazlito コマンドが用意されている。
tazlitoは、tazlito.confファイルを用意して、様々な仕様(フレーバー)のシステムを生成する機能を持っている。
(ただし、私はtazlito本来の使い方を理解出来ていないため、ここに記す以上の知識は無い。)
tazlito writeisoは、/homeを含むファイルシステム全体をアーカイブし、rootfs.gzを生成してくれる。

作成
slitazを起動し、日本語化したり、アプリケーションをインストールしたり、設定を自分の好みに変えたりした後、
ターミナルを起動し、rootになり、
  ---------------------------------------------------------------------------------------------------------
  # tazlito writeiso lzma
  ---------------------------------------------------------------------------------------------------------
と入力する。サウンドカードの設定の問いに「yes」、locale/keymap の問いに「No」と答える。
エラーメッセージが多々表示されるが、数分待つと、/home/slitaz/distro/rootcd/boot/rootfs.gz
を生成してくれる。

本来なら isoファイルの生成まで行えるはずが、エラーで止まってしまうのでこの先は自力である。
  ---------------------------------------------------------------------------------------------------------
  # cd /home/slitaz/distro/rootcd/boot          (ここにrootfs.gzがある)
  # cp /boot/isolinux/isolinux.bin .
  # cp /media/cdrom/boot/bzImage .           (USBからbootした場合は"cdrom"ではなくUSBメモリのボリュームラベル)
  # echo "default bzimage initrd=rootfs.gz autologin" > isolinux.cfg
  # genisoimage -v -r -J -o ../image.iso -b isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table .
  ---------------------------------------------------------------------------------------------------------
                        (genisoimage は mkisofs から分岐したプログラムで、オプションの指定方法は互換)
これで/home/slitaz/distro/rootcd に image.iso が生成される。
「Burn CD/DVD」を使い、image.iso をCDに書き込めば完成である。
(このCDも、bootした時点ではkeymap がUSになってしまうが、XをリスタートすればJPになる。)

tazlito writeisoによって作成したrootfs.gzは、USBメモリに入れて起動することも可能である。その場合は、
  ・USBメモリを、「rufus-3.3.exe」によって「ブートの種類」に「syslinux 4.07」を指定してフォーマットする。
  ・USBメモリに、bzImage、rootfs.gz、syslinux.cfgを書き込む。
だけでよい。

tazusb writefs と tazlito writeiso の比較
tazusb により作成したLiveUSBは、/homeにUSBメモリが使われるため、何もせずにユーザファイルが保存されているという利点がある。
ただし、USBメモリはブラウザ等のキャッシュにも使われているため、作業中頻繁にUSBメモリへのアクセスが生じ、感心しない。
それに対し tazlito writeiso によるLiveメディアは、ユーザーファイルを自動では保存してくれないが、一度起動してしまえばメディアの
抜き差しは自由である。さらに、作業環境が維持されているので「作業結果は自分で保存する」ことは十分容認できるのではないだろうか。

slitazには様々な運用形態がある。HDDにインストールするのが一番使いやすいが、それ以外では、
tazlito writeisoにより生成したrootfs.gzを、USBまたはCDに格納してslitazを起動するのが一番使いやすいと考える。

Slitaz LiveUSB の更新

2018-10-22 05:50:18 | Linux
tazusb writefs
/homeにUSBメモリをマウントするSlitazのLiveUSBでは、ユーザーの作成したファイルや、デスクトップのアイコン、
ブラウザのブックマークなどは、特別な操作をせずともUSBメモリに保存される。
システム側に加えた変更をLivwUSBに保存するためには、「tazusb writefs」を使用する。

tazusb writefsコマンドにはGUIは用意されておらず、ターミナルを起動しrootとなり、コマンド入力しなければならない。
  ---------------------------------------------------------------------------------------------------------
  # tazusb writefs lzma
  ---------------------------------------------------------------------------------------------------------
サウンドカードと画面構成の設定を削除するか否かを聞いてくるので、別のPCでLiveUSBを使うことを考慮し、「yes」と入力し、
設定を削除するのが良いだろう。言語・キーボードの設定の質問には「No」と答えるのが良いと思う。

なお、画面に「失敗」と表示されるためか、更新時に「JP」となっていたキーボードの設定が、再起動した際に「JP」とならず
「US」のままにってしまう。これは再度、Xをリスタートすることで「JP」に戻すことができた。

tazusb writefsコマンドは、メモリ上に展開されているアクティブなファイルシステムを読み出し、全体を1つのファイルにまとめ、
rootfs.gzとしてLiveUSBに保存してくれる。これにより、次回の起動からは、新しい(更新された)システムが立ち上がる。
日本語画面では「移動してください」となっているが、これは翻訳ミスであろう。


注意点
tazusb writefsコマンドにより書き換えられるのはrootfs.gzだけであり、syslinux.cfgは前のままである。
LiveUSBの作成の際に使ったisoファイルが、「slitaz-rolling.iso」であった場合、syslinux.cfgに指定されるファイルシステムは、
rootfs4.gz、rootfs3.gz、rootfs2.gz、rootfs1.gzであり、「rootfs.gz」ではない。
そのため、tazusb writefsで内容を更新しても、rootfs.gzが書き加わるだけで、次の起動でも何も変わらないことになってしまう。
更新を有効にするためには、syslinux.cfgの「LABEL slitaz」のブロックにある「APPEND linux ......」の行を、
  ---------------------------------------------------------------------------------------------------------
  APPEND linux /boot/bzImage initrd=/boot/rootfs.gz rw root=/dev/null video=-32 autologin home=XXXX-XXXX
  ---------------------------------------------------------------------------------------------------------
と修正する必要がある(home=XXXX-XXXXはUSBメモリのメディアID)。

なお、syslinux.cfgの内容全体を次の2行に変えてしまうのも良いだろう。
  ---------------------------------------------------------------------------------------------------------
  default /boot/bzimage
  append initrd=/boot/rootfs.gz rw root=/dev/null video=-32 autologin home=XXXX-XXXX
  ---------------------------------------------------------------------------------------------------------

LiveUSBの作成の際に「slitaz-rolling-core.iso」を使った場合には、syslinux.cfgに指定されるファイルシステムは
rootfs.gzであるので、そのまま再起動するだけでシステムの更新は有効になる。

tazusb writefsによるシステムの更新では、以前のrootfs.gzはリネームされるだけで、自動的には消されない。
したがって、tazusb writefsの後、必要に応じて手動で消さなければならない。

Wi-Fiを使った後にtazusb writefsを実行すると、LiveUSBにSSIDやパスワードも保存されてしまう。
普通に使う分には便利であるが、紛失時など、セキュリティのリスクを増やすことになり要注意である。

Slitaz の LiveUSB 運用

2018-10-20 04:13:14 | Linux
LiveUSBの動作
WebからダウンロードしたSlitazのisoファイルをCDに書き込んだり、rufusやUSBWriterなどでUSBメモリに書き込むと、
Bootable CD、またはBootable USBメモリと成り、Slitazを起動できるメディアが出来上がる。

このメディアを使って起動した場合、システムに加えた変更はどこにも保存されない。
例えばプログラムをインストールしたり、システムをアップデートしても、Slitaz を再起動すると、
変更を加える前の状態で起動することになる。さらに、ユーザーが作成したデータや、ダウンロードしたファイルなども、
意識して別のメディアに保存する操作をしない限り、再起動とともに消え去ってしまう。
これでは、Slitazの評価や一時的なWebの閲覧くらいにしか使えず、実用的とは言えない。

Slitazをハードディスクにインストールせずに、多少とも実用にする手段として、LiveUSBがある。

LiveUSBを作成しそのUSBメモリがらSlitazを起動すると、USBメモリが/homeにマウントされ、
ユーザー側のデータはUSBメモリにそのままの形で保存される。
ただし、起動のたび、システムはUSBの中に入っているアーカイブから読み出されるので、システムへの変更は保存されない。
素のSlitazが実用になるユーザーなら、LiveUSBは十分使える運用形態だろう。

LiveUSBの作成
LiveUSBの作成は、CDから起動したSlitazであれば簡単である。
  ・起動に使用したCDをトレイに入れたままにしておき、
  ・最低128MB程度のUSBメモリをフォーマットしてPCに刺し、ダイアログが表示されたら[Cancel]をクリック。
  ・[Application]メニューから[System Tools] -> [Create a LiveUSB] を選択。
  ・root のパスワードを尋ねてくるので、rootと入力して[OK]をクリック。
  ・下側のドロップダウンメニューでインストール先のメディアを選択して[OK]をクリックする。
   注意:ハードディスクが接続されているPCの場合、ドロップダウンメニューは、
      USBメモリではなくHDDが優先されるので間違わないように。
ダイアログにエラーの表示が出るが、私のシステムでは、LiveUSBの作成は成功しているようである。

なお、USBメモリがFAT32でフォーマットされていると、ブートローダーとしてsyslinuxがインストールされ
/home は UMSDOS形式で作成される。フォーマットが ext4 であれば extlinux がインストールされ、/home は
そのままマウントされる。

Slitazの起動にUSBメモリを使用した場合は、LiveUSBの作成の前に、Slitazのisoファイルをダウンロードなどし、
[TazUSB]ダイアログの[ISO image]の欄でisoファイルを指定する必要がある。


slitaz の日本語入力

2018-09-27 19:07:12 | Linux
・正統な手順

slitazで日本語入力するには、scim、scim-devをインストールした後、
scim-anthyをビルドすることで実現できる。

「はんかくさいブログ」の「Slitazあれこれ - Slitaz5 Rolling 64」のページ
「見よう見まねのブログ」の「SliTaz(6)日本語入力scim-anthyをビルド」のページ参照。

これには開発環境一式をインストールする必要があり、ハードディスクを1ギガ近く占有する。
ビルドに成功した後、開発環境を削除するには、依存関係のあるパッケージが多いため、
パッケージマネージャから一纏めに削除することは不可能だ。
完璧を期すには、/var/log/slitaz/tazpkg.log を参照しながら、パッケージを一つ一つ削除するしかない。


・簡便な方法

slitazの日本語入力用に、PuppyLinuxの日本語サポートパッケージ lang_pack_ja-2.1.sfs から
バイナリを借りてくる方法を試みたところ、見事に成功したので手順を記す。
必要なファイルさえ用意してしまえば、何時でも簡単に日本語化できる。

1.シノバーさんの lang_pack_ja-2.1.sfs をダウンロード
2.slitaz に squashfs パッケージをインストール(linux-squashfs、lzo、lz4-lib も自動的に入る)。
3.コマンドラインから、unsqushfs を使用してlang_pack_ja-2.1.sfsを展開
  $ unsquashfs lang_pack_ja-2.1.sfs
4.squashfs-root というフォルダ以下に lang_pack_ja-2.1.sfs の内容が展開されるので、必要なファイルだけを残し、
  不要なファイルを削除する。必要なファイルは以下の通り。
  ------------------------------------------------------------
  /etc/anthy-conf
  /usr/bin/anthy-agent
  /usr/bin/anthy-dic-tool
  /usr/bin/anthy-morphological-analyzer
  /usr/lib/libanthy.so
  /usr/lib/libanthy.so.0
  /usr/lib/libanthy.so.0.1.0
  /usr/lib/libanthydic.so
  /usr/lib/libanthydic.so.0
  /usr/lib/libanthydic.so.0.1.0
  /usr/lib/libanthyinput.so
  /usr/lib/libanthyinput.so.0
  /usr/lib/libanthyinput.so.0.0.0
  /usr/lib/scim-1.0/1.4.0/Helper/anthy-imengine-helper.so
  /usr/lib/scim-1.0/1.4.0/IMEngine/anthy.so
  /usr/lib/scim-1.0/1.4.0/SetupUI/anthy-imengine-setup.s
  /usr/share/anthy/zipcode.t
  /usr/share/anthy/typetab
  /usr/share/anthy/anthy.dic
  /usr/share/fonts/default/TTF/M+1P+IPAG.ttf
  /usr/share/locale/ja/LC_MESSAGES/scim-anthy.mo
  /usr/share/scim/Anthy/style/101kana.sty
  /usr/share/scim/Anthy/style/atok.sty
  /usr/share/scim/Anthy/style/azik.sty
  /usr/share/scim/Anthy/style/canna.sty
  /usr/share/scim/Anthy/style/msime.sty
  /usr/share/scim/Anthy/style/nicola-a.sty
  /usr/share/scim/Anthy/style/nicola-f.sty
  /usr/share/scim/Anthy/style/nicola-j.sty
  /usr/share/scim/Anthy/style/oasys100j.sty
  /usr/share/scim/Anthy/style/tron-dvorak.sty
  /usr/share/scim/Anthy/style/tron-qwerty-jp.sty
  /usr/share/scim/Anthy/style/tsuki-2-203-101.sty
  /usr/share/scim/Anthy/style/tsuki-2-203-106.sty
  /usr/share/scim/Anthy/style/vje-delta.sty
  /usr/share/scim/Anthy/style/wnn.sty
  /usr/share/scim/icons/scim-anthy-dict.png
  /usr/share/scim/icons/scim-anthy-swap-colors.png
  /usr/share/scim/icons/scim-anthy.png
  ------------------------------------------------------------
  ※必要なファイルは、Slitazでビルドした状態と Ubuntuのanthyパッケージ、lang_pack_ja-2.1.sfs
   を比べて推定した。styleフォルダの内容はもっと削れると思う。
5.後の作業に備え、必要なファイルをtarで纏める。
  $ tar cvzf taz-jp.tgz -C squashfs-root etc usr
6.以下のファイルを jap.sh として保存する。
  ※Windows上で jap.sh を作成する場合は、改行コードの指定できるエディタを使いLFを指定すること。
   改行コードがCR+LFだと、Linuxでは正常に実行されない。
  ------------------------------------------------------------
  tazpkg -gi glibc-locale
  tazpkg -gi locale-ja

  echo "Asia/Tokyo" > /etc/TZ
  echo "jp106" > /etc/keymap.conf

  cat << EOF > /etc/locale.conf
  LANG=ja_JP.UTF-8
  LC_ALL=ja_JP.UTF-8
  EOF

  tazpkg -gi scim

  tar xvf taz-jp.tgz -C /

  cat << EOF >> /home/tux/.profile
  export XMODIFIERS=@im=SCIM
  export XIM="scim"
  export XINPUT="xim"
  export XIM_PROGRAM="scim -d"
  export GTK_IM_MODULE=scim
  export QT_IM_MODULE=scim
  scim -d &
  EOF

  gtk-query-immodules-2.0 --update-cache

  tazpkg clean-cache
  ------------------------------------------------------------
  これで準備は完了。taz-jp.tgz と jap.sh はUSBメモリなどに保存しておくと良い。
7.あとは、root 権限で jap.sh 実行すれば日本語化は完了。
  $ sudo sh ./jap.sh
  rebootすれば anthy が使える状態となる。

注:slitazをハードディスクにインストールした際はこれで済むが、slitazをCDやUSBなどから起動した場合、
  キーボードのマップを変更するために、tazbox keymap を実行してから Xをリスタートする必要がある。

追記:slitazを再起動せず、そのまま使う場合、上記の操作だけでは、localeがきれいに設定されない。
  tazboz locale も実行(して Xをリスタート)する必要がある。


slitaz-rolling.isoのサイズ

2018-09-23 03:19:49 | Linux
久々に「slitaz-rolling.iso」をダウンロードしたが、
rufus-3.3を使うと、サイズ49メガの.isoファイルが、128メガのUSBメモリに書き込めない。
ログを見てみると、サイズが148メガであると認識されている。

isoファイルをマウントして中を覗いてみると、名前に「EFI」の付いたファイルとディレクトリが
多数あり、正直にカウントすれば48メガを遥かに越している。
isoファイルの中では、ハードリンクを使い、1つのファイルの実体に複数の名前がついているようだ。

2018年4月の時点では何も問題なかったが、isoファイルがEFI bootに対応した時点から
この状況になったのだろう。

rufus-3.3でも、DDモードでは書き込めて良いはずなのに、書き込みに先だってisoファイルの分析をするため
サイズオーバーでエラーになるのだと思われる。


単にDDモードで書き込む USBWriter-1.3では、128メガで Bootable USBメモリの作成に成功した。