u-ryo's blog

various information for coding...

Category: Linux

Add Swap File

| Comments

年末にideapad 310のmemoryが壊れてしまい、2度買い直してもmemoryを認識しなかったので、これは本体側が壊れたのだろうと。これを直すには本体のmother board交換になる、くらいならまだ2年程しか使ってませんが新しいのを買う? と考え、物色していたところ、新しいものでもmemoryって搭載容量4GBとか程度で、何故? と思ったんですけど、今はSSDだからそれでいいってことなんですね! そっか、今はSSDが廉価になったからswapでいいのか! なら310もSSDに換装すれば、ということで、SSD 1TBにしました。1.11万円でSamsungの1TBをGET。ubuntu 19.10を入れて... 最初、折角だからZFSにしてみたのですが、SSDと相性悪いんですねこれ。swap partitionは、位置が固定されるためSSDには良くないと。XFSもSSDではjournalingを止めた方が良いとのことで、それだと何のためのXFSなの?! ということなのでつまらないですけどext4で再installします。しかし、partitioningをお任せにすると、今はdefaultでswap partitionではなく2GBのswap fileになるというのは驚きですね。 ということで、本題です。よく、ddでswap fileを作る例が載っていますけれども、スワップ領域の追加方法|server-memo.netにはfallocateを使う方法があったので、メモです。

1
2
3
4
5
6
sudo fallocate -l 2G /swapfile1
sudo mkswap /swapfile1
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=89a19a54-42c9-4847-a482-1971c388fa95
sudo chmod 600 /swapfile1
sudo swapon /swapfile1

Ssh With Empty Password

| Comments

某ubuntu起動diskをmountして/etc/passwdのpasswordを潰して、 console login出来るようにはなったんですけれども、 sshでは入れません。 あーそっか、と思って、いい機会だからと後輩氏に課題として与えてみました。

新規user作って乗り越えてくれまして、それはそれで良い解だと思いますが、 /etc/ssh/sshd_configPermitEmptyPasswords yesでも行けるよー (このhostを繋ぐのは内部networkだし)、 と垂れて、試したところ、ものの見事に失敗。

あれー、なんでー?!

更に調べてみると、もう一つ施策が必要でした。

公開鍵なし/パスワードなしでSSHログインする設定にあるようにUsePAM noにするか、 PAMを使っているということなのでならばPAMでempty passwordを許容するように /etc/pam.d/common-authauth [success=1 default=ignore] pam_unix.so nullok_securenullok_secureを消す(Re: nullok_secure option)か、 ですがPAMいじるのは怖いですよねぇ。

Peeking an Encrypted Luks Lvm

| Comments

純粋に知的好奇心から、 とある暗号化diskをmountして中身を見てみたくなりまして。 targetはubuntuで、立ち上がる時にdisk復号化keyを入力して 立ち上がるような代物です。 それをddでcopyして(最後の方50GBくらいは何かI/Oエラーで copyがうまく行きませんでしたがそれはそもそもそうなのか、 直前にちょっと蹴っ躓いてコードに少し足が引っかかったせいなのか、 よくわかりません)、 copyした方に対してmountをかけるといきなりpassword聞かれて、 答えると難なくmount出来たもののそれはgrubとかkernelとか 置かれているboot領域。 root領域本体はsdb5の中。 いますぐ実践! Linux システム管理 / Vol.186 暗号化ファイルシステムを使ってみる ~ LUKS 編を参考に、 sudo apt install cryptsetupして、

1
2
$ sudo cryptsetup luksOpen /dev/sdb5 luks
Enter passphrase for /dev/sdb5: *******

とすると、/dev/mapper/luksが出来ます。 それをmountすればいいようなんですが、

1
2
$ sudo mount /dev/mapper/luks /tmp/luks/
mount: /tmp/luks: unknown filesystem type 'LVM2_member'.

と言われて出来ません。 HDDからのデータサルベージを参考に、

1
2
3
$ sudo vgscan
  Reading volume groups from cache.
  Found volume group "ubuntu-vg" using metadata type lvm2

確かに何かあるようです。 LVMの使い方を参考に、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ sudo pvscan
  PV /dev/mapper/luks
  Total: 1 [<232.17 GiB] / in use: 0 [0   ] / in no VG: 1 [<232.17 GiB]
$ sudo pvdisplay -v
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
  "/dev/mapper/luks" is a new physical volume of "<232.17 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/mapper/luks
  VG Name
  PV Size               <232.17 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               w34D6Y-8iVC-zIWW-0WHB-ltuf-FADa-sPMT7k
1
2
$ sudo vgchange -ay
  2 logical volume(s) in volume group "ubuntu-vg" now active

これで、/dev/ubuntu-vg/が出来ます。

1
2
3
4
5
6
$ ls -alrt /dev/ubuntu-vg/
total 0
lrwxrwxrwx  1 root root    7  9月 19 04:44 root -> ../dm-1
drwxr-xr-x 22 root root 4760  9月 19 04:44 ..
lrwxrwxrwx  1 root root    7  9月 19 04:44 swap_1 -> ../dm-2
drwxr-xr-x  2 root root   80  9月 19 04:44 .

これをmountすればよいですね。

1
$ sudo mount /dev/ubuntu-vg/root /tmp/luks

unmount / detach

これを外すのに右往左往してしまいました。 sudo vgremove ubuntu-vgとかってやってしまいました。 これは、volume groupを消してしまう行為でした。 やってはいけません。

結局、外す時はこれでいいわけですね。

1
2
3
4
$ sudo umount /tmp/luks
$ sudo vgchange -an ubuntu-vg
  0 logical volume(s) in volume group "ubuntu-vg" now active
$ sudo cryptsetup luksClose luks

これで/dev/ubuntu-vg//dev/mapper/luksもなくなり、 deviceを外せます。

vgremoveしちゃったからもうダメかな、と思ったら、戻せるんですね。 CentOS / RHEL : How to restore/recover a deleted volume group in LVMを参考に、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ sudo vgcfgrestore --list ubuntu-vg

  File:         /etc/lvm/archive/ubuntu-vg_00000-434080001.vg
  Couldn't find device with uuid w34D6Y-8iVC-zIWW-0WHB-ltuf-FADa-sPMT7k.
  VG name:      ubuntu-vg
  Description:  Created *before* executing 'vgremove ubuntu-vg'
  Backup Time:  Tue Sep 18 21:04:48 2018


  File:         /etc/lvm/archive/ubuntu-vg_00001-841595159.vg
  VG name:      ubuntu-vg
  Description:  Created *before* executing 'vgcreate ubuntu-vg /dev/mapper/luks-1144f2c9-43f4-c433-66a7-81aa5e0f703a'
  Backup Time:  Wed Sep 19 04:31:30 2018


  File:         /etc/lvm/backup/ubuntu-vg
  VG name:      ubuntu-vg
  Description:  Created *after* executing 'vgcreate ubuntu-vg /dev/mapper/luks-1144f2c9-43f4-c433-66a7-81aa5e0f703a'
  Backup Time:  Wed Sep 19 04:31:30 2018

このように出て来るので、 身に覚えのあるものを選んで、

1
2
$ sudo vgcfgrestore -f /etc/lvm/archive/ubuntu-vg_00000-434080001.vg ubuntu-vg
  Restored volume group ubuntu-vg

とするとVolume Groupが戻るんですね。すごいー。 助かりました。

あと、cryptsetuplvmが予め入っていると、 encrypted diskをUSBで繋げた時点でkeyを聞かれて、 luksOpenまで裏でやっちゃうんですね。 自分でluksOpenしようとして、

1
2
3
$ sudo cryptsetup luksOpen /dev/sdb5 luks2
Enter passphrase for /dev/sdb5: 
Cannot use device /dev/sdb5 which is in use (already mapped or mounted).

といわれて「?!」とか思ってしまいました。 この時点で/dev/mapper/luks-1144f2c9-43f4-c433-66a7-81aa5e0f703aが出来ています。

Viewing/Recording TV (Hiden No Tare)

| Comments

何を今更ですが、ここ15年、以下のようにTVを見たり録画したりしています。 3000円くらいで買ったUSB Video Capture Box(LiveView:絶版)を使い続けています。 画像と音声は別々だしsizeも320x240と凄く小さいんですけど、 1秒2MBとfile sizeもcompactだし細かい字は読めないものの話の筋は十分わかるので、 いっかなぁと。

1
2
3
4
5
echo 'ffmpeg -s 320x240 -r 12 -vd /dev/video -ad /dev/dsp -y -t 0:15:00 ~/avi/hanbun_aoi_146.avi &> /dev/null' |at 8:00

vlc --color -I dummy v4l:/dev/video:norm=ntsc:size=640x480:adev=/dev/dsp:audio=0:channel=0:fps=12 --sout "#transcode{vcodec=mp4v,acodec=mpga,vb=3000,ab=256,venc=ffmpeg{keyint=80,vt=800000},deinterlace}:std{access=http,mux=asf,url=0.0.0.0:8080}" --ttl 2

echo '(sleep 45;pkill -f ffmpeg) &> /dev/null'|at 7:59

vlcのこんなparameter、もう探し当てられません。 vlcのversionは古い(0.8.2)ので注意です。 上記USB Boxに適合するkernel drvierのため、Debian sarge限定です。 最後のは、朝ドラ始まる前まで安心してTVを見ていられるように、です。

ついでに、いつもsargeをinstallしている手順です。 自分用のメモです。

/etc/rc.local

1
2
3
4
5
6
7
8
9
#!/bin/sh
modprobe tda7313
modprobe saa7111-new
#insmod ~u-ryo/ov511-2.31/tuner.o
sleep 3
#v4lctl setchannel 1
#v4lctl setinput CVBS-0
v4lctl setinput S-Video-0
v4lctl volume 50000

kernel2.6ならtuner.oは出来ないので不要。

INSTALL Sarge

  1. unetbootinでUSB作成可
  2. boot直後、linux26を選択
  3. cdrom mountに失敗するのでmountは手で。mount /dev/disks/scsi/disk0/lun0/part0 /cdromとか何とか
  4. symlink張れないので、自分でrm /cdrom/dists/stable;cp -rp /cdrom/dists/sarge /cdrom/dists/stable
  5. source URLは、deb http://ftp.riken.jp/Linux/debian/debian-archive/debian sarge main contrib non-freeを自分でedit

/etc/apt/sources.list

backportを付加。

1
2
deb http://ftp.riken.jp/Linux/debian/debian-archive/debian sarge main contrib non-free
deb http://archive.debian.org/backports.org/ sarge-backports main contrib non-free
1
2
3
4
5
6
7
8
9
$ sudo apt-get install -t sarge-backports debhelper dh-make build-essential
$ sudo m-a a-i madwifi
$ sudo apt-get install alsa-tools ntp ntpdate ntp-server screen sudo ffmpeg vlc bzip2 wpasupplicant
$ sudo m-a a-i alsa
$ sudo m-a a-i thinkpad
$ sudo /sbin/modprobe thinkpad
$ sudo /sbin/modprobe thinkpadpm
$ sudo /sbin/modprobe rtcmosram
$ sudo /sbin/modprobe smapi

ffmpegsarge-backportsのに上げるとVideo4Linux2(V4L2)を入力に要求するようになるのでダメポ。

alsa

alsaでないと声が割れる。 後から入れても有効にならないので、 sudo /sbin/modprobe -r i810_audio そうすると/dev/audioが無くなるので、sndを入れ直し。 for i in snd_mpu_401 snd_rawmidi snd_seq_device snd_intel8x0 snd_intel8x0m snd_ac97_codec snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd snd_page_alloc;do sudo /sbin/modprobe -r $i;done 再度sndmodprobe sudo /sbin/modprobe snd

for wpa_supplicant

cf. ThinkPad 535X Debian Sarge の 無線LANのまとめ

/etc/default/wpasupplicant

1
2
ENABLED=1
OPTIONS="-w -i ath0 -D madwifi -c /etc/wpa_supplicant.conf -dd"

/etc/wpa_supplicant.conf

1
2
3
4
5
6
7
8
9
10
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1

network={
        ssid="YOUR_SSID"
        psk="YOUR_PreSharedKey"
}
1
2
3
4
5
6
sudo apt-get install -t sarge-backports wpasupplicant
sudo mv /etc/init.d/wpasupplicant.dpkg-bak /etc/init.d/wpasupplicant
sudo mv /etc/default/wpasupplicant.dpkg-bak /etc/default/wpasupplicant
sudo mv /etc/wpa_supplicant.conf.dpkg-bak /etc/wpa_supplicant.conf
sudo ln -s /sbin/wpa_supplicant /usr/sbin/wpa_supplicant
sudo /usr/sbin/update-rc.d wpasupplicant defaults

/etc/network/interfaces

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto ath0
iface ath0 inet dhcp
  wpa-driver madwifi
  wpa-conf /etc/wpa_supplicant.conf
  wpa-scan-ssid 1
  wpa-proto RSN
  wpa-pairwise CCMP
  wpa-group CCMP
  wpa-key-mgmt WPA-PSK
  wpa-ssid Disney
  wpa-psk ru011415

wpa-driverwpa-confが無いとダメだった。

for mosh

色々試したがmoshはダメだった。諦めた。

Extract Recent Initramfs

| Comments

よその会社に用意して貰ったLinux(ubuntu)のSSDがあって、 ちょっとhappy hackingしてみようと。 initramfsを展開しようとzcat initrd.img|cpio -diとかってやってみたところ、 「not in gzip format」と。 file initrd.imgとすると「ASCII cpio archive (SVR4 with no CRC)」です。 圧縮fileじゃないのかとそのままcpio -idしても、 何かkernel/x86/microcode/AuthenticAMD.binしか出て来ません。 えー!? どうなってんのー?! 調べてみると、lsinitramfsというのでlistは出るらしい、です。 試してみると、確かに色々入ってそうです。 なのに出て来ません。えー。 FedoraやCentOS 6/7、RHEL 6/7のinitramfsを展開するRHEL7 initramfsの展開方法を見ると、 きょうびのinitramfsは違うんですねー。 びっくりです。

ちなみに、skipcpioapt install dracutで入ります。 使うには、/usr/lib/dracut/skipcpioとfull path指定が必要です。 binwalkapt install binwalkでした。

早速試したところ、上手く行くもの(/boot/initrd.img-4.15.0-33-generic)もありましたが、 下記のように上手く行かないものもありました。 そして、目的のものは上手く行かない方のものでした。

1
2
$ /usr/lib/dracut/skipcpio ~/initrd.img-4.15.0-33-generic|file -
/dev/stdin: ASCII cpio archive (SVR4 with no CRC)

binwalkで見てみると、全く同じ位置にあるのに。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ binwalk ~/initrd.img-4.15.0-33-generic

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ASCII cpio archive (SVR4 with no CRC), file name: ".", file name length: "0x00000002", file size: "0x00000000"
112           0x70            ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
232           0xE8            ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
356           0x164           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
488           0x1E8           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin", file name length: "0x00000026", file size: "0x00006B2A"
28072         0x6DA8          ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
28672         0x7000          ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
28792         0x7078          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
28916         0x70F4          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
29048         0x7178          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/.enuineIntel.align.0123456789abc", file name length: "0x00000036", file size: "0x00000000"
29212         0x721C          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin", file name length: "0x00000026", file size: "0x00180C00"
1605296       0x187EB0        ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
1605632       0x188000        gzip compressed data, from Unix, last modified: 2018-08-30 06:15:36

$ binwalk /boot/initrd.img-4.15.0-33-generic

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ASCII cpio archive (SVR4 with no CRC), file name: ".", file name length: "0x00000002", file size: "0x00000000"
112           0x70            ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
232           0xE8            ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
356           0x164           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
488           0x1E8           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin", file name length: "0x00000026", file size: "0x00006B2A"
28072         0x6DA8          ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
28672         0x7000          ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
28792         0x7078          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
28916         0x70F4          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
29048         0x7178          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/.enuineIntel.align.0123456789abc", file name length: "0x00000036", file size: "0x00000000"
29212         0x721C          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin", file name length: "0x00000026", file size: "0x00180C00"
1605296       0x187EB0        ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
1605632       0x188000        gzip compressed data, from Unix, last modified: 2018-08-28 05:01:31

TRAILERが2つあるので、skipcpioを2回かけてみてもダメでした。

1
2
$ /usr/lib/dracut/skipcpio ~/initrd.img-4.15.0-33-generic|/usr/lib/dracut/skipcpio /dev/stdin|file -
/dev/stdin: data

仕方ないので、binwalkで得られたbyte数を自分でskipしてやる手法で試すと、上手く解凍されました。

1
2
3
4
5
$ tail -c +1605632 ~/initrd.img-4.15.0-33-generic|file -
/dev/stdin: data
$ tail -c +1605633 ~/initrd.img-4.15.0-33-generic|file -
/dev/stdin: gzip compressed data, last modified: Thu Aug 30 06:15:36 2018, from Unix
$ tail -c +1605633 ~/initrd.img-4.15.0-33-generic|zcat|cpio -id

binwalkで得られた1605632ではダメで、1605633でOKでした。 上記サイトには「得られたbyte数以降をddで書き出せ」とかありましたが、 別にそんなことしなくてもtail -c +NNNで十分です。