2019年12月31日火曜日

bootしなくなった

  内蔵ディスクをSSDに換装してすぐにbootしなくなった。
 あれ?
 どうやら内蔵ディスクをbootディスクと認識していないようだ。おかしいなぁ。もしかしたらパーティションの拡張をしたときになんか、やっちゃったのかなぁ 1
 とりあえず、bootコードをぶちこむ。

gpart bootcode -p /boot/boot1.efifat -i 1 ada0

 

Footnotes:

1

やっちゃったのかもしれない。「gpart show ada0」の表示が へんだ。「CORRUPT」って——調べてみたら破損って意味じゃん。

2019年12月30日月曜日

40G=>128Gへ

 Beelink S1のディスクは いろいろあってハードディスクにしていたのだけれど、容量が40Gしかない。やはり128Gある、SSDに交換しよう。どうすれば、いいかな……。
 FreeBSDのインストールUSBからBeelink S1を立ち上げて、ddコマンドで40Gの中身を丸ごとコピーすることにした。内蔵ディスクの40Gから 「ORICO USB3.0 HDDスタンド」へ接続した128Gへ。

dd  if=/dev/ada0  of=/dev/da0  bs=1m

 内蔵ディスクをSSDに取り替えてboot。
 立ち上がった。ZFSは勝手に空きを使ってくれるんだよね……と思っていたらあれ?

$ df -h
df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
zroot/ROOT/default     26G    7.0G     19G    27%    /
devfs                 1.0K    1.0K      0B   100%    /dev
zroot/var/mail         19G    200K     19G     0%    /var/mail
zroot/var/audit        19G     88K     19G     0%    /var/audit
zroot/usr/ports        20G    696M     19G     3%    /usr/ports
zroot/usr/home         20G    318M     19G     2%    /usr/home
zroot/usr/src          19G     88K     19G     0%    /usr/src
zroot/tmp              19G    6.4M     19G     0%    /tmp
zroot                  19G     88K     19G     0%    /zroot
zroot/var/crash        20G    614M     19G     3%    /var/crash
zroot/var/log          19G    700K     19G     0%    /var/log
zroot/var/tmp          19G     88K     19G     0%    /var/tmp
$

 40Gしか認識してねえ。

zpool online -e zroot

 でもだめで、

$ zfs list
zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
zroot               14.7G  19.2G    88K  /zroot
zroot/ROOT          11.5G  19.2G    88K  none
zroot/ROOT/default  11.5G  19.2G  6.95G  /
zroot/tmp           10.3M  19.2G  6.39M  /tmp
zroot/usr           2.47G  19.2G    88K  /usr
zroot/usr/home      1.78G  19.2G   318M  /usr/home
zroot/usr/ports      706M  19.2G   696M  /usr/ports
zroot/usr/src        144K  19.2G    88K  /usr/src
zroot/var            624M  19.2G    88K  /var
zroot/var/audit      144K  19.2G    88K  /var/audit
zroot/var/crash      615M  19.2G   614M  /var/crash
zroot/var/log       6.36M  19.2G   700K  /var/log
zroot/var/mail      2.18M  19.2G   200K  /var/mail
zroot/var/tmp        496K  19.2G    88K  /var/tmp
$

 認識してくれない。うーむ。

$ gpart show ada0
gpart show ada0
=>      40  78140080  ada0  GPT  (119G)
        40    409600     1  efi  (200M)
    409640      1024     2  freebsd-boot  (512K)
    410664       984        - free -  (492K)
    411648   4194304     3  freebsd-swap  (2.0G)
   4605952  73533440     4  freebsd-zfs  (35G)
  78139392       728        - free -  (364K)

 gpartで見てみると、なるほど。ada0は119Gあるのに、zfsの領域を35Gしか、認識していない。これか。調べてみると、gpartにはresizeというサブコマンドがある。こうか?

$ sudo gpart resize -i 4 ada0
sudo gpart resize -i 4 ada0
ada0p4 resized
$ gpart show ada0
gpart show ada0
=>       40  250069600  ada0  GPT  (119G)
         40     409600     1  efi  (200M)
     409640       1024     2  freebsd-boot  (512K)
     410664        984        - free -  (492K)
     411648    4194304     3  freebsd-swap  (2.0G)
    4605952  245463688     4  freebsd-zfs  (117G)

 うまくいった。
 けれど、これだけではまだ、足りなくてZFSの方で認識してくれてなかった。なのであらためて。

zpool online -e zroot
$ zfs list
zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
zroot               14.6G  98.7G    88K  /zroot
zroot/ROOT          11.5G  98.7G    88K  none
zroot/ROOT/default  11.5G  98.7G  6.96G  /
zroot/tmp           10.4M  98.7G  6.39M  /tmp
zroot/usr           2.46G  98.7G    88K  /usr
zroot/usr/home      1.77G  98.7G   315M  /usr/home
zroot/usr/ports      706M  98.7G   696M  /usr/ports
zroot/usr/src        144K  98.7G    88K  /usr/src
zroot/var            624M  98.7G    88K  /var
zroot/var/audit      144K  98.7G    88K  /var/audit
zroot/var/crash      615M  98.7G   614M  /var/crash
zroot/var/log       6.39M  98.7G   720K  /var/log
zroot/var/mail      2.09M  98.7G   200K  /var/mail
zroot/var/tmp        504K  98.7G    88K  /var/tmp
$

 いきましたね。よかったよかった 1

Footnotes:

1

実はいつか、わからないけどbootコードを壊してしまっていたのだった。

2019年12月14日土曜日

(org-table-transpose-table-at-point)

 org-modeの「org-table-convert-region」で表に変換するとき、よく縦横変換したいことがある。自前で状況に特化した簡単なコードを書いていたんだけど、org-table.elにそんなfunctionがないはずがない。本気で探してみたらあった。

(org-table-transpose-table-at-point)

 まんまの*Help*がでてきた。

org-table-transpose-table-at-point is an interactive compiled Lisp
function in ‘org-table.el’.

(org-table-transpose-table-at-point)

Transpose Org table at point and eliminate hlines.
So a table like

| 1 | 2 | 4 | 5 |
|---+---+---+---|
| a | b | c | d |
| e | f | g | h |

will be transposed as

| 1 | a | e |
| 2 | b | f |
| 4 | c | g |
| 5 | d | h |

Note that horizontal lines disappear.

[back]

2019年12月7日土曜日

if-let

 helmでfunctionを検索していたら「if-let」があることに気づいた。
 「when-let」ならけっこう使うだろうけど、「if-let」はどうだろう。
 疑問に思っていたら案外、使うのだった。