ラベル Plamo Linux の投稿を表示しています。 すべての投稿を表示
ラベル Plamo Linux の投稿を表示しています。 すべての投稿を表示

2022/04/16

Emacsにしてみた

 ずっとVim派でしたが、思うところあって(することがないので)Emacsを勉強することにしました。


 

 Emacsは27.2、環境はPlamo Linuxをget_pkginfo -aで2022/04/15時点で最新にしたものです。

 やったことで悩んだのは、

・起動時にエラーになる問題の対応

・twittering-modeを使用できるようにする

くらいでしょうか。


・起動時にエラーになる問題の対応

古いテンプレートを使用しているためか、私の環境では起動時にエラーが発生しました。

--debug-initを付けてEmacsを起動すると下記のように表示されます。

Debugger entered--Lisp error: (void-function set-default-font)
  (set-default-font "Noto Sans Mono-8")
  (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1")))
  (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1"))))
  (progn (global-font-lock-mode 1) (if (>= emacs-major-version 21) (progn (blink-cursor-mode nil) (menu-bar-mode 1) (mouse-wheel-mode) (setq initial-frame-alist (append (list))) (set-frame-size (selected-frame) 97 30))) (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1")))))
  (if window-system (progn (global-font-lock-mode 1) (if (>= emacs-major-version 21) (progn (blink-cursor-mode nil) (menu-bar-mode 1) (mouse-wheel-mode) (setq initial-frame-alist (append (list))) (set-frame-size (selected-frame) 97 30))) (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1"))))) (progn (global-font-lock-mode 1)))
  eval-buffer(#<buffer  *load*-942743> nil "/home/takahiro/.emacs.d/site-start.d/look.el" nil t)  ; Reading at buffer position 2422
  load-with-code-conversion("/home/takahiro/.emacs.d/site-start.d/look.el" "/home/takahiro/.emacs.d/site-start.d/look.el" nil nil)
  load("/home/takahiro/.emacs.d/site-start.d/look")
  (while files (load (car files)) (setq files (cdr files)))
  (let* ((dir "~/.emacs.d/site-start.d") (el-suffix "\\.el\\'") (files (mapcar #'(lambda (path) (replace-regexp-in-string el-suffix "" path)) (directory-files dir t el-suffix)))) (while files (load (car files)) (setq files (cdr files))))
  eval-buffer(#<buffer  *load*> nil "/home/takahiro/.emacs.d/init.el" nil t)  ; Reading at buffer position 316
  load-with-code-conversion("/home/takahiro/.emacs.d/init.el" "/home/takahiro/.emacs.d/init.el" t t)
  load("/home/takahiro/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x32fe55>) #f(compiled-function () #<bytecode 0x32fe6d>) t)
  command-line()
  normal-top-level()

~/.emacs.d/site-start.d/look.elの下記の部分をコメントアウトするとエラーが出なくなりました。

     ;;; Emacs23 以上の設定 (TrueType/OpenType フォントの使用)
;;      (if (>= emacs-major-version 23)
;;          (progn
;;        (set-default-font "Noto Sans Mono-8")
;;        (set-fontset-font
;;         (frame-parameter nil 'font)
;;         'japanese-jisx0208
;;         '("Migu 2M" . "iso10646-1"))
;;        (set-fontset-font
;;         (frame-parameter nil 'font)
;;         'japanese-jisx0212
;;         '("Migu 2M" . "iso10646-1"))
;;            ;; Ascii フォントと日本語フォントの幅を調整する
;;;        (setq face-font-rescale-alist
;;;          '((".*Migu.*" . 1.3)
;;;            (".*VL ゴシック.*" . 1.3)
;;;            ("-cdac$" . 1.3)))
;;        )) ; Emacs23 以上の設定


・twittering-modeを使用できるようにする

github(https://github.com/hayamiz/twittering-mode)から取得し、
~/.emacs.d/package/
以下にgit cloneしました。このあたりはEmacs初心者なのでどこに入れれば良いのか分かりません。適当です。

~/.emacs.d/init.elには下記の記述をしました。
 
;;twittering-mode
(add-to-list 'load-path "~/.emacs.d/package/twittering-mode/")
(require 'twittering-mode)
(setq twittering-use-master-password t)
(defalias 'epa--decode-coding-string 'decode-coding-string)
(setq twittering-icon-mode t)

(setq twittering-use-master-password t)と記述するとPINではなくマスターパスワードを入力して起動できるようになるのですが、twittering-modeが起動しなくなります。
 
そこで、
(defalias 'epa--decode-coding-string 'decode-coding-string)

と記述することにより起動するようになりました。廃止された関数を使っているのかな。 


あと、マスターパスワードの入力がターミナルからになっているため、例えば多くのウィンドウマネージャーのAlt + F2でアプリ起動ダイアログ(?)が開きますが、これを使用してEmacsをウィンドウモードで起動するとパスワードを聞かれずにエラーになってしまいます。

xfce4-terminalからEmacsをウィンドウモードで起動するとxfce4-terminalにパスワード入力画面が表示されます。

これは、~/.gnupg/gpg-agent.confに下記の記述をすることで、GUIのパスワード入力ダイアログにして対応しました。

pinentry-program        /usr/bin/pinentry-gtk-2

この記述をした後、Xを終了してさらにログアウトし、再度ログインしてstartxした後に有効になりました。

多分何かのプロセスを再起動すれば良かったのかと思います。

2020/11/01

virt-managerでインストールしたPlamo Linuxのカーネルデバッグ

自分が忘れないようにメモ程度です。

以下のサイトを参考にしました。


まずはvirt-managerでゲストOSとしてPlamo Linuxをインストールします。

ゲストのカーネルをKGDB関連を有効にしたものに変更します。
私は下記のようにしました。

# CONFIG_RANDOMIZE_BASE is not set

CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB_TESTS=y
# CONFIG_KGDB_TESTS_ON_BOOT is not set
CONFIG_KGDB_LOW_LEVEL_TRAP=y
CONFIG_KGDB_KDB=y
CONFIG_KDB_DEFAULT_ENABLE=0x1
# CONFIG_KDB_KEYBOARD is not set
CONFIG_KDB_CONTINUE_CATASTROPHIC=0


ホストの側で下記のコマンドを実行します。

$ sudo virsh edit ゲストの名前

ドメインタグの
<domain type='kvm'>
の部分を下記のように変更します。

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <qemu:commandline>
    <qemu:arg value='-s'/>
  </qemu:commandline>

Qemuの実行時に-sオプションを追加しています。

-sオプションは-gdb tcp::1234と等価とのことです。
私はcjk_ttyパッチが当たっているカーネル5.4.39とパッチが当たっていない5.9.1を同時に動かしたかったので、片方を下記のように記述しました。

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0>
  <qemu:commandline>
    <qemu:arg value='-gdb'/>
    <qemu:arg value='tcp::4321'/>
  </qemu:commandline>



ゲストのPlamo Linuxを再起動します。


ホスト側でgdbを立ち上げて下記のようにします。

takahiro@plamovaio:~/work/src/kernel/qemu/5.9.1/linux-5.9.1$ gdb vmlinux
GNU gdb (GDB) 8.0
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from vmlinux...done.
warning: File "/home/takahiro/work/src/kernel/qemu/5.9.1/linux-5.9.1/scripts/gdb/vmlinux-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
        add-auto-load-safe-path /home/takahiro/work/src/kernel/qemu/5.9.1/linux-5.9.1/scripts/gdb/vmlinux-gdb.py
line to your configuration file "/home/takahiro/.gdbinit".
To completely disable this security protection add
        set auto-load safe-path /
line to your configuration file "/home/takahiro/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
        info "(gdb)Auto-loading safe path"
(gdb) target remote :1234
Remote debugging using :1234
0xffffffff81a3c8be in native_safe_halt () at ./arch/x86/include/asm/irqflags.h:60
60              asm volatile("sti; hlt": : :"memory");


試しにブレークポイントを貼ってみます。


(gdb) break do_con_write
Breakpoint 1 at 0xffffffff8168f1f0: file drivers/tty/vt/vt.c, line 2850.
(gdb) c
Continuing.

Breakpoint 1, do_con_write (tty=0xffff8880748ef800, buf=0xffff88807c073c00 "aogin: velop",
    count=1) at drivers/tty/vt/vt.c:2850
2850    {


do_con_write関数にブレークポイントを貼ったところ、文字入力時にブレークポイントで停止しました。

2020/10/23

NeoMuttでS/MIMEを使用する

試したのはPlamo Linux 7.xです。

mutt の S/MIME 機能の利用法 を参考にしました。

以下はmuttもインストールしている環境で行っています。

まず、NeoMuttのソースに含まれるsmime.rcの記述をNeoMuttの設定ファイルに記述します。

$ cat neomutt-20200925/contrib/smime.rc >> ~/.muttrc


次にmuttに含まれるsmime_keys initを実行します。

$ smime_keys init


証明書を取得します。
私は下記のサイトを参考にしました。
最後に証明書を追加するためのパスワードが表示されますので、必ず控えておきます。
忘れた場合、取得した証明書をREVOKEして再度取得し直す必要があるようです。

取得できるファイルはpfxファイルです。
一応p12にリネームしてから追加します。

$ mv PKCS12_Credential_xxx.pfx PKCS12_Credential_xxx.p12
$ smime_keys add_p12 PKCS12_Credential_xxx.p12

ここで上で控えておいたパスワードが必要になります。
さらに新しいパスワードの追加と、覚えやすいラベルを設定します。

最後に
added private key: /home/takahiro/.smime/keys/12345678.0 for xxx@xxx
のように表示されますので、.0がついた数字部分を覚えておきます。


NeoMuttの設定ファイルでsmime_sign_asを設定します。

$ vim .muttrc
$ cat .muttrc |grep smime_sign_as
set smime_sign_as="12345678.0"


ルート証明書をインポートします。
こちらはNeoMuttのソースには見当たらなかったのでMuttからいただきました。

$ smime_keys add_root mutt-1.14.7/contrib/ca-bundle.crt 


メール送信時にエラーになる場合はunset crypt_use_gpgmeをNeoMuttの設定ファイルに記述します。

$ cat .muttrc |grep crypt_use_gpgme
unset crypt_use_gpgme


以上で私の環境ではNeoMuttでS/MIMEが使えるようになりました。

2020/10/21

Plamo Linux 7.xでsnapper

Plamo Linux 7.xにsnapperをインストールしてみました。

私の環境では他に必要なものは特になくインストールできました。
Plamo Linux 7.xに色々インストールしていますので、他の環境では必要なライブラリなどがあるかもしれません。

/homeにファイルシステムbtrfsを使っています。

# df -Th /home
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
/dev/sda10     btrfs    145G   20G  125G   14% /home

/home/takahiro がsubvolumeです。


Arch Linuxのサイトを参考にしました。


まず新しい設定を作成しようとしましたが、失敗します。

# snapper -v -c takahiro create-config /home/takahiro
失敗しました (org.freedesktop.DBus.Error.NoReply) 。
#


/var/log/snapper.logを見ると

# less /var/log/snapper.log 

~省略~

2020-10-21 21:15:37 WAR libsnapper(6499) AsciiFile.cc(AsciiFileReader):66 - open for '/e
tc/sysconfig/snapper' failed
2020-10-21 21:15:37 WAR libsnapper(6499) AsciiFile.cc(AsciiFileReader):67 - THROW: file not found
2020-10-21 21:15:37 WAR libsnapper(6499) Snapper.cc(getConfigs):300 - THROW: sysconfig-file not found

~省略~

よく分からないですが、とりあえずtouchでファイルを作成してみます。

# touch /etc/sysconfig/snapper
# snapper -v -c takahiro create-config /home/takahiro
#

成功しました。


一般ユーザーでもスナップショットを確認できるようにします。

# vim /etc/snapper/configs/takahiro 
# cat /etc/snapper/configs/takahiro |grep ALLOW_USERS
   ALLOW_USERS="takahiro"
   # sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots

一般ユーザが所属しているグループにグループ所有権を変更します。

# cd /home/takahiro/
# chmod a+rx .snapshots
# chown :users .snapshots


GUIフロントエンドのsnapper-guiをインストールしました。

使用するのに必要なものはgithubのページに書いてあります。
私の環境ではgtksourceviewをインストールする必要がありました。

下のような感じです。


2020/10/13

Plamo Linux 7.2でLXCを使ってみる (その3)

前回までに作ったコンテナではパスワードを変更できません。
そこで新しくPlamo-6.xのコンテナを作成してみて比較してみます。


takahiro@plamovaio:~$ lxc-create --name plamolxc03 --template download -- --dist plamo --release 6.x --arch amd64
Setting up the GPG keyring
Downloading the image index
Downloading the rootfs
Downloading the metadata
The image cache is now ready
Unpacking the rootfs

---
You just created an Plamolinux 6.x x86_64 (20201013_01:33) container.

takahiro@plamovaio:~$ lxc-start -n plamolxc03

takahiro@plamovaio:~$ lxc-attach -n plamolxc03
bash-4.3# passwd
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
 
 
呆気なくパスワードの変更ができました。
 
Plamo-7.xとPlamo-6.xでは何か違うのでしょうか? 

Plamo-MLの[plamo:33410] pkgtools7でPlamo-7.xのコンテナが動かないってあるけれど、これが原因なのでしょうか。

Plamo Linux 7.2でLXCを使ってみる その2(失敗)

(2020年10月27日追記)
Plamo LinuxのMLで下記のパスワード変更ができない問題について修正されたとありました。

takahiro@plamovaio:~$ lxc-create -n plamolxc -t download -- --flush-cache -d plamo -r 7.x -a amd64
Flushing the cache...
Setting up the GPG keyring
Downloading the image index
Downloading the rootfs
Downloading the metadata
The image cache is now ready
Unpacking the rootfs

---
You just created an Plamolinux 7.x x86_64 (20201027_01:33) container.
takahiro@plamovaio:~$ lxc-start -n plamolxc
takahiro@plamovaio:~$ lxc-attach -n plamolxc
bash-4.4# passwd
新しいUNIXパスワード:
新しいUNIXパスワードを再入力してください:
passwd: パスワードは正しく更新されました

パスワードの変更が問題なくできました。

以下の文章は古いです。

(2020年10月27日追記 終わり)

こちらの続きです。
 
コンテナとやらが起動したので使ってみます。
 
$ lxc-attach -n plamolxc02
bash-4.4# id
uid=0(root) gid=0(root) groups=0(root) 
bash-4.4# hostname
plamolxc02

 
無事起動はしているようです…が、パスワードの変更ができません。

bash-4.4# passwd
パスワード: 認証トークン操作エラー
passwd: パスワードは変更されませんでした

こういう時は英語でググってみた方が良いと思うのでLANG=Cの時の
# LANG=C passwd
passwd: Authentication token manipulation error
passwd: password unchanged

ググってみたらこちらの記事を見つけました。
 
pwconvコマンドを実行すれば良いとありますが、コンテナ上のPlamo Linuxにはpwconvコマンドがありません。
母艦のPlamo-7.xにはあります。
 
そこで、Plamo-7.xの shadow-4.8.1-x86_64-B1.txzをコンテナ上のPlamo Linuxにコピーしてインストールしてみます。

母艦上で下記のようにLXCのrootユーザのホームディレクトリにコピーしました。
takahiro@plamovaio:~$ sudo cp shadow-4.8.1-x86_64-B1.txz  ~/.local/share/lxc/plamolxc02/rootfs/root/
 
そしてコンテナ上でインストールします。
 
bash-4.4# cd /root
bash-4.4# ls
shadow-4.8.1-x86_64-B1.txz
bash-4.4# /sbin/installpkg shadow-4.8.1-x86_64-B1.txz
bash: /sbin/installpkg: /sbin/installer/sh: 誤ったインタプリタです: そのようなファイルやディレクトリはありません

エラーになってインストールできない…。
仕方ないので手動でインストールします。

bash-4.4# tar xvf shadow-4.8.1-x86_64-B1.txz -C /
bash-4.4# /usr/sbin/pwconv
bash-4.4# passwd
パスワード: 認証トークン操作エラー
passwd: パスワードは変更されませんでした

駄目でした。

Plamo Linux 7.2でLXCを使ってみる

よく分からずやっています。
真似しないでください
 
とりあえず実行してみた備忘録です。
これから色々調べます。
 
こちらを参考にしました。 
Ubuntu 14.04 LTS での非特権コンテナ
 
 
Plamo Linux 7.x
lxc-4.0.4
という環境です。
 
 
takahiroユーザで非特権コンテナを作成します。
 
まず/etc/subuidと/etc/subgidを作成しるため、以下コマンドを実行しました。

takahiro@plamovaio:~$ sudo usermod -v 100000-165535 -w 100000-165535 takahiro

takahiro@plamovaio:~$ cat /etc/subuid /etc/subgid
takahiro:100000:65536
takahiro:100000:65536

takahiro@plamovaio:~$ echo "takahiro veth lxcbr0 10" | sudo tee -a /etc/lxc/lxc-usernet
takahiro veth lxcbr0 10

takahiro@plamovaio:~$ echo "session optional        pam_cgfs.so -c all" | sudo tee -a /etc/pam.d/system-session 
session optional        pam_cgfs.so -c all

ここで再起動しました。ログアウトしてログインだとだめでした。


次に$HOME/.config/lxc/default.confを作成します。
参考にしたサイトではlxc.id_mapになっていましたが、これだとlxc-create実行時にエラーになってしまいます。
 
こちらを見たところlxc.idmapになっていたので、私の方もそうしましたところエラーにはならなくなりました。
lxcのバージョンによって違うのでしょうか?
まだ調べていません。
 
takahiro@plamovaio:~$ cd
takahiro@plamovaio:~$ mkdir -p .config/lxc
takahiro@plamovaio:~$ cp /etc/lxc/default.conf .config/lxc/
takahiro@plamovaio:~$ vim .config/lxc/default.conf
takahiro@plamovaio:~$ cat .config/lxc/default.conf
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx

lxc.idmap = u 0 100000 65536
lxc.idmap = g 0 100000 65536


コンテナを作成します。

takahiro@plamovaio:~$ lxc-create --name plamolxc02 --template download -- --dist plamo --release 7.x --arch amd64
Setting up the GPG keyring
Downloading the image index
Downloading the rootfs
Downloading the metadata
The image cache is now ready
Unpacking the rootfs

---
You just created an Plamolinux 7.x x86_64 (20201013_01:33) container.
 
takahiro@plamovaio:~ lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
plamolxc02 STOPPED 0         -      -    -    true         


コンテナを起動します…が、エラーに。

takahiro@plamovaio:~$ lxc-start -n plamolxc02
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/lxccontainer.c: wait_on_daemonized_start: 849 Received container state "ABORTING" instead of "RUNNING"
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 308 The container failed to start
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options

takahiro@plamovaio:~$ sudo /etc/rc.d/init.d/lxc start
  *  Starting LXC autoboot containers: 
takahiro@plamovaio:~$ lxc-start -n plamolxc02
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/lxccontainer.c: wait_on_daemonized_start: 849 Received container state "ABORTING" instead of "RUNNING"
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 308 The container failed to start
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options

takahiro@plamovaio:~$ sudo /etc/rc.d/init.d/lxcfs start
  *  Starting... LXCFS
takahiro@plamovaio:~$ lxc-start -n plamolxc02
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/lxccontainer.c: wait_on_daemonized_start: 849 Received container state "ABORTING" instead of "RUNNING"
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 308 The container failed to start
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options

takahiro@plamovaio:~$ sudo /etc/rc.d/init.d/cgroupfs-mount start
     Mounting cgroupfs hierarchymount: /sys/fs/cgroup/systemd: cgroup は /sys/fs/cgroup にマウント済みです.
takahiro@plamovaio:~$ lxc-start -n plamolxc02
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/lxccontainer.c: wait_on_daemonized_start: 849 Received container state "ABORTING" instead of "RUNNING"
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 308 The container failed to start
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode
lxc-start: plamolxc02: /Plamo-src/plamo/16_virtualization/lxc/lxc-4.0.4/src/lxc/tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options

ここでやっとログファイルを見てみようという気に。
takahiro@plamovaio:~ lxc-start -n plamolxc02 --logfile /tmp/lxc-start.log --logpriority DEBUG


/tmp/lxc-start.logを見ると、次のようなエラーがあります。
 
lxc-4.0.4/src/lxc/start.c:print_top_failing_dir:98 - Permission denied - Could not access /home/takahiro/.local/share. Please grant it x access, or add an ACL for the container root

良いのか分かりませんが、chmod +x しろというエラーのようです。
してみます。

takahiro@plamovaio:~$ ls -l /home/takahiro/.local/
合計 8,192
drwxr-xr-x  3 takahiro users 4,096 10月  6日  22:19 lib/
drwx------ 11 takahiro users 4,096 10月 13日  18:58 share/

takahiro@plamovaio:~$ chmod +x /home/takahiro/.local/share
 
takahiro@plamovaio:~$ ls -l /home/takahiro/.local/
合計 8,192
drwxr-xr-x  3 takahiro users 4,096 10月  6日  22:19 lib/
drwx--x--x 11 takahiro users 4,096 10月 13日  18:58 share/

再度lxc-startを実行します。
takahiro@plamovaio:~$ lxc-start -n plamolxc02
takahiro@plamovaio:~$

何のエラーもなく起動しました。

takahiro@plamovaio:~$ lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4      IPV6 UNPRIVILEGED
plamolxc02 RUNNING 0         -      10.0.3.66 -    true 

2020/01/22

OneMix3SプラチナエディションにPlamo Linux 7.1をインストール

OneMix3SプラチナエディションにPlamo Linux 7.1をインストールしました。

この記事は段々と内容を追記していきたいと思います。


・インストール

まずはインストールですが、GRUBのインストールに失敗しました。

それ以外は、この種のPCの常としてポートレートモード(縦画面)で進みますが、順調に進み終了しました。

GRUBのインストールに失敗しているため、インストールが終了してもPlamo Linuxは起動しません。

インストーラーを再度立ち上げて chrootコマンドなどを使用してGRUBのインストールを行っても良いですが、前述のようにポートレートモードであることと、また文字がとても小さいため作業しづらいです。

そこでインストーラーのGRUBからインストールしたパーティションのPlamo Linuxを立ち上げます。

インストーラーのGRUBで'c'を押下してコマンドモードに入り、下記のコマンドを実行して立ち上げました。
指定する(hd1,gpt6)とnvme0n1p6は環境によって違います。

grub> set root=(hd1,gpt6)
grub> linux /boot/vmlinuz-4.19.35-plamo64 ro root=/dev/nvme0n1p6
grub> boot

無事Plamo Linuxが起動したらXを起動して画面を回転させGRUBのインストールを行いましたが失敗しました。

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --boot-directory=/boot/efi --recheck
Installing for x86_64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
grub-install: error: efibootmgr failed to register the boot entry: No
such file or directory.

debugオプションをつけて実行した結果を下記に置きます。
https://1drv.ms/u/s!Aq6ucMHSXhJ-htwA3PIdYcba0f8nZA?e=Fm6HXN


ネットを検索したところ、カーネルconfigでCONFIG_EFI_VARSを組み込むかモジュールにすれば良いらしいと情報がありました。

私は組み込んでカーネルを再構築して新しいカーネルでPlamo Linuxを起動したところ、無事にGRUBのインストールが完了しました。


・無線LAN

こちらの「無線LAN」の設定を行い、特に苦労せずに使えるようになりました。

その後、contribのnetworkにあるwicdを使うように変更しました。
モバイル環境ではこちらのほうが良さそうです。


・タッチパネル

こちらを参考にXで下記のコマンドを実行したところ、タッチパネルが有効になりました。

$ xinput|grep GXTP7386
⎜   ↳ GXTP7386:00 27C6:0113                     id=17   [slave  pointer  (2)]
⎜   ↳ GXTP7386:00 27C6:0113 UNKNOWN             id=18   [slave  pointer  (2)]
    ↳ GXTP7386:00 27C6:0113 Keyboard            id=19   [slave  keyboard (3)]

となるので、

$ xinput set-prop "GXTP7386:00 27C6:0113"  'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1

としました。

スタイラスは持っていないため、まだ試していません。

 
・サウンド

特に何もいじっていませんが、Firefoxを使用して音が出ました。


・Bluetooth

get_pkginfoで最新の状態にしたところ、GUIで設定を行えました。

iPhone11を使用してのBluetoothテザリング、BlackBerry KEYOneを使用してのファイルの受信が行えました。

しかしマウス(M590)が動きません。

M590についてはArchLinuxのwikiに解説がありましたので、私の環境で動かないのもM590特有の問題なのかもしれません。

2017/10/11

paplayでHugo2から音が出ない

pulseaudioの設定に悩みました。

$ paplay a.wav
としてもHugo2から音が出ませんでした。

$ paplay -d alsa_output.usb-Chord_Electronics_Ltd_Hugo2_413-001-01-Hugo2.analog-stereo a.wav
とすると音が出ます。

$ pulseaudio --start
$ pacmd list-sinks|less
とすると、Hugo2はindex 0になっていますが、出力先はindex 1になっており、paplayで再生している間PCのイヤフォンジャックから音が出ていました。

$ pacmd set-default-sink 0
で出力先をindex 0にしたところ、
$ paplay a.wav
で音が出るようになりました。

システムデフォルトでHugo2にしたかったので、/etc/pulse/default.paに下記を追加しました。
$ tail -n1 /etc/pulse/default.pa
set-default-sink 0

2017/03/16

Plamo LinuxでTime Capsuleの共有フォルダをautomountする

Plamo LinuxでNASとしても使用しているApple Time Capsuleの共有フォルダを使用時にautomountするため、/etc/auto.miscに設定を記述し、/etc/rc.d/init.d/autofsに実行権限を与えました。

ここではTimeCapsuleにUSB接続し、HD-WL4TU3という共有フォルダ名にしているディスクをマウントしています。

(2018年3月12日追記) オプションにvers=1.0を追加。
カーネルを4.15.7にしたためか、vers=1.0の指定がないとマウントできなくなりました。
# mount -t cifs -o credentials=/etc/chiepassword,sec=ntlm,iocharset=utf8 //Time Capsuleのアドレス/HD-WL4TU3 /mnt/disk
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
(2018年3月12日追記終了)

$ sudo vi /etc/auto.misc
$ tail -n1 /etc/auto.misc
HD-WL4TU3       -fstype=cifs,credentials=/etc/tcpassword,sec=ntlm,iocharset=utf8,vers=1.0      ://Time Capsuleのアドレス/HD-WL4TU3
$ sudo vi /etc/tcpassword
$ sudo chmod 600 /etc/tcpassword
$ sudo cat /etc/tcpassword 
username=ユーザ名
password=パスワード
$ sudo chmod +x /etc/rc.d/init.d/autofs 
$ sudo /etc/rc.d/init.d/autofs start

「credentials=/etc/tcpassword」を指定することで、共有フォルダにアクセスするためのユーザ名とパスワードを別ファイル(/etc/tcpassword)に分けています。

「sec=ntlm」で認証方式を指定しています。
mountコマンドで確認したところ、この指定が無いとマウント出来ませんでした。

$ sudo -s
# mount -t cifs -o credentials=/etc/tcpassword,iocharset=utf8 //Time Capsuleのアドレス/HD-WL4TU3 /mnt/tmp
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
# mount -t cifs -o credentials=/etc/tcpassword,sec=ntlm,iocharset=utf8 //Time Capsuleのアドレス/HD-WL4TU3 /mnt/tmp
# df -h
ファイルシス              サイズ  使用  残り 使用% マウント位置
/dev/root                    57G   31G   27G   54% /
devtmpfs                    1.9G  444K  1.9G    1% /dev
/media                      1.9G     0  1.9G    0% /media
/tmp                        1.9G   12K  1.9G    1% /tmp
/dev/mmcblk0p3               93M   37M   49M   44% /boot
//Time Capsuleのアドレス/HD-WL4TU3   1.9T  935G  929G   51% /mnt/tmp

2017/03/06

aplay実行時のエラー

Plamo LinuxをインストールしているNUCは、/etc/modprobe.d/alsa-base.confに以下の記述をしています。
$ cat /etc/modprobe.d/alsa-base.conf
options snd slots=snd_usb_audio,snd_hda_intel
options snd_usb_audio index=0
options snd_hda_intel index=1

その結果、/proc/asound/modulesは以下のようになっています。
$ cat /proc/asound/cards
 0 [Mojo           ]: USB-Audio - Mojo
                      Chord Electronics Ltd Mojo at usb-0000:00:14.0-2, high speed
 1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0x81414000 irq 119

ところが、aplayでWAVファイルを再生するとMojoではなく内蔵イヤホン端子から音が出てしまうので、~/.asoundrcに以下のような記述をしました。
$ cat .asoundrc 
pcm.!default {
  type hw
  card 0
}

ctl.!default {
  type hw
  card 0
}

この状態でaplayを実行すると以下のエラーになります。
$ aplay a.wav 
再生中 WAVE 'a.wav' : Signed 16 bit Little Endian, レート 44100 Hz, ステレオ
aplay: set_params:1297: サンプルフォーマットが使用不可能
Available formats:
- S32_LE

~/.asoundrcを以下のように記述したところ、aplayで問題無くMojoから音が出ました。
$ cat .asoundrc 
# pcm.!default {
#   type hw
#   card 0
# }
# 
# ctl.!default {
#   type hw
#   card 0
# }
pcm.!default { type plug slave { pcm "hw:0,0" } } ctl.!default { type hw card 0 }

すべてのユーザで設定が反映されるように、/etc/asound.confを以下のように修正しました。
$ cat /etc/asound.conf 
pcm.pulse {
  type pulse
}

ctl.pulse {
  type pulse
}

# pcm.!default {
#   type pulse
# }
# 
# ctl.!default {
#   type pulse
# }
pcm.!default { type plug slave { pcm "hw:0,0" } } ctl.!default { type hw card 0 }

2017/02/27

64bit Plamo LinuxでMultiwriter 5750Cを使用しAirPrintサーバにする

64bit Plamo LinuxでMultiwriter 5750Cを使用しAirPrintサーバにした際のメモです。
記憶を頼りに記述しています。

・Multiwriter 5750C用ドライバをインストール

 下記の場所からプリンタドライバ (RPMパッケージ)をダウンロードします。
http://jpn.nec.com/printer/laser/support/os/linux/download/mw5750c.html

$ wget http://jpn.nec.com/printer/laser/support/os/linux/download/data/xrc-driver/mw5750c/NEC-MultiWriter_5750C-1.0-1.i386.rpm
$ mkdir tmp
$ cd tmp
$ sudo -s
# rpm2tgz ../NEC-MultiWriter_5750C-1.0-1.i386.rpm 
# tar xzvf NEC-MultiWriter_5750C-1.0-1.i386.tgz 
# cd NEC-MultiWriter_5750C-1.0-1.i386
# makepkg nec_multiwriter_5750c-1.0.1-x86_64-P1.txz 
# installpkg nec_multiwriter_5750c-1.0.1-x86_64-P1.txz 
# exit 


・Plamo LinuxのFTPサーバの下記の場所で公開されているprint32-compatをインストール

ftp://plamo.linet.gr.jp/pub/Plamo-test/for-6.x/x86_64/print32-comp
$ sudo installpkg cups_compat32-2.0.0-x86_64-P1.txz
$ sudo installpkg cups_filters_compat32-1.0.61-x86_64-P1.txz
$ sudo installpkg print_compat_lib32-6.1-x86_64-P1.txz

/etc/ld.so.confに/usr/heimdal/libを追加します。
$ sudo vi /etc/ld.so.conf
$ tail -n1 /etc/ld.so.conf
/usr/heimdal/lib
$ sudo ldconfig

このままだとhttp://localhost:631/admin等にアクセスした際にサーバー内部エラーになってしまうので、下記からcupsを再度取得してインストールしました。
ftp://plamo.linet.gr.jp/pub/Plamo-6.x/x86_64/plamo/04_xapps/print.txz/cups-2.0.0-x86_64-P1.txz

$ sudo updatepkg -f cups-2.0.0-x86_64-P1.txz


・32bitパッケージからcompat32パッケージを作成し、インストールする

依存関係を満たすため、下記のパッケージを作成してインストールしました。
bzip2_compat32-1.0.6-x86_64-P4.txz
libjpeg_turbo_compat32-1.5.0-x86_64-P2.txz
libpng_compat32-1.6.28-x86_64-P3.txz    
pcre_compat32-8.39-x86_64-P1.txz
qpdf_compat32-4.0.1-x86_64-P1.txz
tiff_compat32-4.0.6-x86_64-P3.txz
xz_compat32-5.2.2-x86_64-P2.txz

例えばlibpng_compat32-1.6.28-x86_64-P3.txzは下記の手順で作成しました。
$ wget ftp://plamo.linet.gr.jp/pub/Plamo-6.x/x86/plamo/02_x11/libpng-1.6.28-i686-P3.txz
$ mkdir tmp
$ cd tmp
$ sudo -s
# tar xJvf ../libpng-1.6.28-i686-P3.txz
# mkdir usr/bin/32
# cd usr/bin
# mv libpng14-config libpng16-config png-fix-itxt pngfix 32/
# cd ../../

install/doinst.shを編集し、usr/binをusr/bin/32に変更します。
# vi install/doinst.sh

libpng_compat32-1.6.28-x86_64-P3.txzを作成し、インストールします。
# makepkg libpng_compat32-1.6.28-x86_64-P3.txz
# installpkg libpng_compat32-1.6.28-x86_64-P3.txz
# exit


・cupsの設定

/etc/cups/cupsd.confの下記の点を修正します。

(1) Listen localhost:631をListen 631に変更


(2) <Location />、<Location /admin>、<Location /admin/conf>を下記のように変更
(ローカルネットワークが192.168.1.0/24の場合)

<Location />
  Order allow,deny
  Allow localhost
  Allow 192.168.1.0/24
</Location>

<Location /admin>
  Encryption Required
  Order allow,deny
  Allow localhost
  Allow 192.168.1.0/24
</Location>

<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
  Allow 192.168.1.0/24
</Location>

(3) cupsを再起動する

$ sudo /etc/rc.d/init.d/cups restart


・プリンタを追加する

http://IPアドレス:631/adminにアクセスし、プリンタ(Multiwriter 5750C)を追加します。
その際、「このシステムに接続されているプリンターを共有」と「インターネットからの印刷を許可」をチェックします。


・AirPrintサーバにする

/etc/rc.d/rc.localに下記の記述を追加します。
# Start avahi.
if [ -x /etc/rc.d/rc.avahidaemon ]; then
    echo "start avahi daemon"
    /etc/rc.d/rc.avahidaemon start
fi
$ sudo vi /etc/rc.d/rc.local
$ tail -n5 /etc/rc.d/rc.local
# Start avahi.
if [ -x /etc/rc.d/rc.avahidaemon ]; then
    echo "start avahi daemon"
    /etc/rc.d/rc.avahidaemon start
fi

airprint-generate.pyをダウンロードして実行し、作成されたAirPrint-NEC_MultiWriter_5750C.serviceを/etc/avahi/services/へコピーします。
その後、rc.avahidaemonを起動します。
$ wget https://raw.githubusercontent.com/tjfontaine/airprint-generate/master/airprint-generate.py
$ python airprint-generate.py
$ sudo cp AirPrint-NEC_MultiWriter_5750C.service /etc/avahi/services/
$ sudo /etc/rc.d/rc.avahidaemon start


このままではiOSの印刷プレビューがグレーになってしまいますが、実際に印刷してみるとカラーになります。
AirPrint-NEC_MultiWriter_5750C.serviceに<txt-record>Color=T</txt-record>を追加してrc.avahidaemonをrestartしたところ、iOSの印刷プレビューがカラーになりました。
# cat /etc/avahi/services/AirPrint-NEC_MultiWriter_5750C.service 
<?xml version="1.0" ?><!DOCTYPE service-group  SYSTEM 'avahi-service.dtd'><service-group><name replace-wildcards="yes">AirPrint NEC_MultiWriter_5750C @ %h</name><service><type>_ipp._tcp</type><subtype>_universal._sub._ipp._tcp</subtype><port>631</port><txt-record>txtvers=1</txt-record><txt-record>qtotal=1</txt-record><txt-record>Transparent=T</txt-record><txt-record>URF=none</txt-record><txt-record>rp=printers/NEC_MultiWriter_5750C</txt-record><txt-record>note=NEC MultiWriter 5750C</txt-record><txt-record>product=(GPL Ghostscript)</txt-record><txt-record>printer-state=3</txt-record><txt-record>printer-type=0x8010dc</txt-record><txt-record>Color=T</txt-record><txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-command</txt-record></service></service-group>

2016/12/20

GPD WINのPlamo Linuxでバッククォートが入力できない

GPD WINのPlamo Linuxでバッククォートが入力できない問題に気付きました。
コンソールでの問題です。

/etc/rc.d/rc.keymapでk2esc-dの読み込みを削除して実行したところ、バッククォートが入力できるようになりました。

$ cat /etc/rc.d/rc.keymap 
#!/bin/sh
#/usr/bin/loadkeys /usr/share/keymaps/i386/qwerty/defkeymap.map.gz  /usr/share/keymaps/i386/qwerty/cl2c-d.map.gz  /usr/share/keymaps/i386/qwerty/k2esc-d.map.gz 
/usr/bin/loadkeys /usr/share/keymaps/i386/qwerty/defkeymap.map.gz /usr/share/keymaps/i386/qwerty/cl2c-d.map.gz
$ sudo /etc/rc.d/rc.keymap 
パスワード: 
Loading /usr/share/keymaps/i386/qwerty/defkeymap.map.gz
Loading /usr/share/keymaps/i386/qwerty/cl2c-d.map.gz

k2esc-dは半角/全角キーをESCキーにする設定らしいので要らないかなと。

2016/12/19

GPD WINのPlamo Linuxにfbtermを入れた

GPD WINのPlamo Linuxにfbtermを入れてみました。
fbterm_1.7.orig.tar.gz

コンソールを回転させるためにgrubの起動オプションにfbcon=rotate:1を指定したのですが、そうするとUNICONで日本語表示できなくなってしまったためです。
Native Linux on the GPD Win

fbtermとついでにuim-fepをログイン時に起動させるため、$HOME/.bash_loginに下記の記述を追加しました。

if [ $TERM = linux ] ; then
  if [ -x /usr/bin/fbterm ] ; then
    if [ -x /usr/bin/uim-fep ] ; then
      fbterm -nIPAGothic -a -r1 -s24 --cursor-shape=1 -- uim-fep
    else
      fbterm -nIPAGothic -a -r1 -s24 --cursor-shape=1
    fi
  fi
fi


$TERMを見ているのは、SSHでログインした場合に「stdin isn't a interactive tty!」というエラーが出るのを防止するためです。
ですが、Linuxのコンソールからsshでアクセスすれば同じ値になってしまいますね。

2016/12/17

GPD WINのPlamo Linuxでタッチスクリーンが使えるようになった

GPD WINのPlamo Linuxでタッチスクリーンが使えるようになりました。

ちょっと弄っていたら、どうやらタッチスクリーンを回転させれば良さそうだと(今更)気づきました。
Xを回転して使用しているため、タッチスクリーンも回転させる必要があったようです。
GPD WINにPlamo Linuxをインストールしてみた その1


下記のサイトを参考にしました。
Linuxでタッチスクリーンを回転して利用する
$ xinput set-prop 'Goodix Capacitive TouchScreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1


私はこのコマンドを.xinitrcに記述しました。

2016/12/14

GPD WINのeMMCにPlamo Linuxをインストール

GPD WINのeMMCにPlamo Linuxをインストールしました。

現在動いているUSBメモリのPlamo Linuxを単純にeMMCへコピーすることにしました。
GPD WINにPlamo Linuxをインストールしてみた その1
GPD WINのPlamo LinuxにUbuntuのパッチを当てたカーネル


今回は/bootと/のパーティションを分けております。
理由は/パーティションのファイルシステムをXFSにしたかったのですが、/bootだけはext4にしたほうがいいだろうと考えたためです。
この辺は確信がありません。

XFSを使用するため、コピー元のUSBメモリ版Plamo LinuxにXFSのツールをインストールしました。
xfsprogs_4.3.0+nmu1ubuntu4.tar.gz

いろいろ苦労しましたが、一番苦労したのは起動するカーネルを作成することでしょうか。

起動時にeMMCを認識しないらしく、カーネルパニックになってしまいました。
そのため、eMMC関連らしきものをモジュールではなくカーネルに組み込んでいます。
config-4.8.13-20161214

・eMMCにPlamo Linuxをインストールする領域を作成する


fdiskで確認したところ、デフォルト状態では下記のようになっていました。
なお、/dev/mmcblk0がeMMCです。

# fdisk /dev/mmcblk0

fdisk (util-linux 2.29) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。


コマンド (m でヘルプ): p
ディスク /dev/mmcblk0: 58.2 GiB, 62537072640 バイト, 122142720 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 4EEC3CEA-F555-48F5-ACB8-D148006E3032

デバイス        開始位置  最後から    セクタ サイズ タイプ
/dev/mmcblk0p1      2048    206847    204800   100M EFI システム
/dev/mmcblk0p2    206848    239615     32768    16M Microsoft 予約領域
/dev/mmcblk0p3    239616 119582687 119343072  56.9G Microsoft 基本データ
/dev/mmcblk0p4 119582688 120504287    921600   450M Microsoft 基本データ
/dev/mmcblk0p5 120504288 122142679   1638392   800M Microsoft 基本データ

/dev/mmcblk0p3を削除してその領域に/bootと/用に100MBのパーティションを作成します。
さらに空き領域全てのパーティションを作成します。
その後、x を実行して特殊機能へ移動し、f を実行してパーティションの順序を修正しました。

結果、eMMCは下記のようになりました。

# fdisk /dev/mmcblk0

fdisk (util-linux 2.29) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。


コマンド (m でヘルプ): p
ディスク /dev/mmcblk0: 58.2 GiB, 62537072640 バイト, 122142720 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 4EEC3CEA-F555-48F5-ACB8-D148006E3032

デバイス        開始位置  最後から    セクタ サイズ タイプ
/dev/mmcblk0p1      2048    206847    204800   100M EFI システム
/dev/mmcblk0p2    206848    239615     32768    16M Microsoft 予約領域
/dev/mmcblk0p3    239616    444415    204800   100M Linux ファイルシステム
/dev/mmcblk0p4    444416 119582687 119138272  56.8G Linux ファイルシステム
/dev/mmcblk0p5 119582688 120504287    921600   450M Microsoft 基本データ
/dev/mmcblk0p6 120504288 122142679   1638392   800M Microsoft 基本データ


mmcblk0p3は/bootなのでext4で、mmcblk0p4は/なのでXFSでフォーマットします。

# mkfs.ext4 /dev/mmcblk0p3
# mkfs.xfs -f /dev/mmcblk0p4


作成したパーティションをマウントします。

# mkdir /mnt/boot
# mkdir /mnt/root
# mount /dev/mmcblk0p3 /mnt/boot
# mount /dev/mmcblk0p4 /mnt/root



・USBメモリ版Plamo Linuxからコピーまたはディレクトリを作成する


USBメモリ版Plamo Linuxからコピーできるものはコピーするのですが、/procや/devなどはシステムが作成するのでコピーできません。

このあたりよく分かっていません。
(2016/12/15 修正)

# cp -a /bin /etc /localtime /opt /sbin /usr /home /var /lib /root /lib64 /mnt/root
# cd /mnt/root
# mkdir boot dev proc sys mnt media tmp
# cd /mnt/boot/
# cp -a /boot/* .



・eMMC側の環境整備

まず、コピー用にマウントした/mnt/bootをアンマウントします。

# umount /mnt/boot


準備を整え、eMMC環境へchrootします。
下記のサイトを参考にしています。
chrootする際には/procと/devだけでなく/sysもmountしよう

# mount -o bind /dev /mnt/root/dev
# mount -t proc none /mnt/root/proc
# mount -o bind /sys /mnt/root/sys
# chroot /mnt/root


fstabを編集し、/bootと/tmpをマウントします。
(2016/12/15 修正)

# vi /etc/fstab
# cat /etc/fstab
/dev/mmcblk0p3       /boot        ext4        defaults   1   1
/dev/mmcblk0p4       /        xfs        defaults   0   0
/dev/sr0       /cdrom   iso9660   user,ro,noauto,exec,iocharset=euc-jp 0   0
none             /proc    proc        defaults   0   0
none             /sys     sysfs       defaults   0   0
none                /tmp     tmpfs       defaults   0   0
none            /dev/pts        devpts  gid=5,mode=620    0 0
none            /proc/bus/usb             usbfs        noauto   0   0
# mount /boot
# mount /tmp


・grubのインストール

ここも試行錯誤したところです。
(2016/12/15 修正)

# mount /dev/mmcblk0p1 /boot/efi
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --boot-directory=/boot/efi --recheck
# grub-mkconfig -o /boot/efi/grub/grub.cfg
# /sbin/grub_partuuid.sh



記憶を頼りにブログを書いてみましたが、こんな感じでとりあえず起動しています。

$ df -Th
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
/dev/root      xfs         57G   18G   40G   31% /
devtmpfs       devtmpfs   1.9G  468K  1.9G    1% /dev
/media         tmpfs      1.9G     0  1.9G    0% /media
/tmp           tmpfs      1.9G  2.3M  1.9G    1% /tmp
/dev/mmcblk0p3 ext4        93M   34M   52M   40% /boot



余談。
grubのインストールを試行錯誤していた際に何度か方法を変えてgrub-installコマンドを使っていたのですが、試しに--bootloader-idオプションで指定した値がGPD WINのブートローダーの選択画面の項目に残ってしまいました。

調べた結果、efibootmgrコマンドで消せることが分かりました。
GRUBとEFIの組み合わせで使うときのメモ またはEFI全般のtips

2016/12/10

GPD WINのPlamo Linuxで内蔵無線LANが使えた

GPD WINのPlamo Linuxで内蔵無線LANが使えました。

動作確認したカーネルは4.8.13で、Ubuntuのconfigをもとに作成したものです。
GPD WINのPlamo LinuxにUbuntuのパッチを当てたカーネル

下記のサイトのパッチで作成されるbrcmfmac4356-pcie.txtを/lib/firmware/brcm以下に置き、brcmfmacモジュールを再読み込みします。

# modprobe -r brcmfmac
# modprobe brcmfmac

android-x86 / device/generic/firmware / Diff of /brcm/brcmfmac4356-pcie.txt


ちなみに、内蔵無線LANはBroadcomのBCM4356というらしいです。


# lspci
00:00.0 Host bridge: Intel Corporation Device 2280 (rev 20)
00:02.0 VGA compatible controller: Intel Corporation Device 22b0 (rev 20)
00:0b.0 Signal processing controller: Intel Corporation Device 22dc (rev 20)
00:14.0 USB controller: Intel Corporation Device 22b5 (rev 20)
00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 20)
00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 20)
00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 20)
01:00.0 Network controller: Broadcom Corporation BCM4356 802.11ac Wireless Network Adapter (rev 02)
# lspci -vnns 01:00.0
01:00.0 Network controller [0280]: Broadcom Corporation BCM4356 802.11ac Wireless Network Adapter [14e4:43ec] (rev 02)
        Subsystem: Gemtek Technology Co., Ltd Device [17f9:0036]
        Flags: bus master, fast devsel, latency 0, IRQ 313
        Memory at a1400000 (64-bit, non-prefetchable) [size=32K]
        Memory at a1000000 (64-bit, non-prefetchable) [size=4M]
        Capabilities: [48] Power Management version 3
        Capabilities: [58] MSI: Enable+ Count=1/16 Maskable- 64bit+
        Capabilities: [68] Vendor Specific Information: Len=44 
        Capabilities: [ac] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [13c] Device Serial Number 00-00-38-ff-ff-00-38-0f
        Capabilities: [150] Power Budgeting 
        Capabilities: [160] Virtual Channel
        Capabilities: [1b0] Latency Tolerance Reporting
        Capabilities: [220] #15
        Capabilities: [240] #1e
        Kernel driver in use: brcmfmac


brcmfmac4356-pci.txtが無いと下記のエラーとなります。

Dec 10 10:02:10 PlamoGPD kernel: [ 6325.390851] usbcore: registered new interface driver brcmfmac
Dec 10 10:02:10 PlamoGPD kernel: [ 6325.500576] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4356-pcie.txt failed with error -2

2016/12/04

Plamo Linuxにibus-skkをインストール

Plamo Linuxにibus-skkをインストールしましたが、結構苦労したので備忘録として書いておきます。

なお、今回使用したソースファイルは全てDebianからもらってきました。

以下では直接make installしていますが、実際にはmakepkgでPlamo用のパッケージを作成してからインストールしています。

libgeeのインストール

普通にconfigureしてmakeするだけです。
特に苦労するところは無いと思います。

libgee-0.8_0.18.1.orig.tar.xzを入手して展開し、作成されたディレクトリに移動してから下記のコマンドを実行します。
$ ./configure --prefix=/usr --libdir=/usr/lib64
$ make
$ sudo make install

libskkのインストール

libskk_1.0.2.orig.tar.gzを入手して展開し、作成されたディレクトリに移動してからautogen.shの実行したのですが、失敗しました。
$ ./autogen.sh --prefix=/usr --libdir=/usr/lib64
/usr/bin/gnome-autogen.sh
checking for autoconf >= 2.63...
  testing autoconf2.50... not found.
  testing autoconf... found 2.69
checking for automake >= 1.11...
***Error***: You must have automake >= 1.11 installed
  to build libskk.  Download the appropriate package for
  from your distribution or get the source tarball at
    http://ftp.gnu.org/pub/gnu/automake/automake-1.11.tar.gz

Plamo-6.1をget_pkginfoでこのブログ執筆時点の最新にした状態ではautomake-1.14.1がインストールされているのですが、autogen.shはエラーになります。

autogen.shの中身を見てみると内部でgnome-autogen.shを実行しているようですが、automake-1.14.1のままだと直接gnome-autogen.shを実行してみてもエラーになってしまいます。

そこで、automake-1.11.6を入手してインストールしたのですが、/usr/bin/automakeと/usr/bin/aclocalを上書きしたくなかったので、automake-1.11.6のインストール時にはその2つはインストールされないようにしました。

もし上書きしてしまったら、ibus-skkのインストール終了後にPlamo Linuxのサイトからautomakeを入手してインストールを仕直すのが良いかと思います。

automake-1.11.6をインストールしてもautogen.shの実行には失敗します。

そこで、gnome-autogen.shを実行したところ成功しました。

$ gnome-autogen.sh --prefix=/usr --libdir=/usr/lib64
$ make
$ sudo make install

ibus-skkのインストール

ibus-skk_1.4.2.orig.tar.gz を入手して展開し、作成されたディレクトリに移動して下記のコマンドを実行します。

ここでもautomake-1.11.6がインストールされていないとautogen.shはlibskkと同様のエラーになってしまいますが、インストールされていれば成功します。
$ ./autogen.sh --prefix=/usr --libdir=/usr/lib64
$ make
$ sudo make install


ibus-skkのインストールは終了しましたが、普通にibus-setupを起動するとskkの設定画面が文字化けします。

LANG=C ibus-setup として起動すれば文字化けしない英語の設定画面になるので問題は少いかな…。

2016/12/01

Plamo Linuxにmikutterをインストール

Plamo LInuxでmikutterを使ってみました。


Ruby-2.3.3のインストール。
私は実際は、Plamo用のパッケージを作成し、既にインストール済みのruby-2.2.3からアップデートしました。
$ tar xzvf ruby-2.3.3.tar.gz
$ cd ruby-2.3.3/
$ ./configure --prefix=/usr --libdir=/usr/lib64 --enable-shared
$ make
$ sudo make install


ruby-gtk2のインストール。
$ sudo gem install gtk2


monetaのインストール。
$ sudo gem install moneta


nokogiriのインストール。
$ sudo gem install nokogiri


httpclientのインストール。
$ sudo gem install httpclient


totoridipjpのインストール。
$ sudo gem install totoridipjp

mikutterを起動。
$ tar xzvf mikutter.3.4.8.tar.gz
$ cd mikutter/
$ ./mikutter.rb

2016/11/29

GPD WINのPlamo LinuxにUbuntuのパッチを当てたカーネル

備忘録です。

GPD WINのPlamo LinuxでUbuntuのパッチを当てたカーネルを動かしてみました。

Ubuntuからlinux_4.8.0-26.28.diff.gzをもらってきて、それを4.8のカーネルに当ててmakeしました。

カーネルconfigは、Ubuntu 16.10のインストーラーからもらったconfig-4.8.0-22-genericをもとに、makeできないオプションを外し、さらにGPD WINで必要になるであろうオプションを組み込んだものです。(USB_STORAGEをyにするなど)
configファイル


今迄使っていたカーネルと比べての特徴は下記の通りです。

この結果を得るためにUbuntuのパッチを当てる必要が本当にあるのかはまだ検証していません。

もしかしたらPlamo Linuxのカーネルソースでも同じカーネルconfigを行えば同様の結果を得られるのかもしれません。


(2016/11/30 追記)
Plamo Linuxで配布されているカーネル4.8.5のソースを、Ubuntuのconfig-4.8.0-22-genericをもとに作成した.configファイルでmakeしたところ、上記の3項目に関しては同様に機能するカーネルができました。
configファイル