Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

いまさらながら Mac mini 2018/2020 を注文

最近,CPU が変更になった新しい Mac mini が発売されましたね.

ARM な Apple M1 プロセッサに変更になったやつです.

ちまたの状況を見ているとなかなか評判はよさそうですね.

ベンチマークは現行の intel 版を凌駕してるみたいだし,メモリ効率もよさそうだし,発熱もしないらしいし.

少し前から新しい Mac を調達しようかなと思っていたのですが,ARM 版を出すって発表があったからしばらく待っていたんですよね.

で,状況を一通り見た状況で,結論はタイトル通り 2020 (2018) 版の intel Mac mini を注文しました.スペックは Core i3, メモリ 8G, SSD 256GB.2020 モデルの吊るし最安モデルかな.中古ではなく新品.購入価格は77,000円くらいかな.

M1 な Mac mini と比べて数千円安いくらいだけど.^^;

どうして intel を選んだかっかというと,

  • すぐに開発用などの作業にがっつり使いたい.
  • M1 が評判が良いとは言いつつ,やっぱり色々とトラブルは出ている様子.
  • メモリの選択肢が 8/16G しかないけど,いろんなアプリでの ARM 対応した時のメモリ状況がまだ不明.
  • アップル製品の新しい製品の場合,切り替わった後の 2番目に出てくるものが改良されてかなり良いものになる場合が多い.

などという理由です.

Mac mini 2020/2018 を選んだのは

  • MacBook 12inch 2016 を持っているのでノートではなくデスクトップが良かった.
  • 場所もないし,モニタは今使ってるやつでよいので iMac は不要.
  • Mac Pro は値段高杉.
  • メモリ増設が自由にできる.
  • USB な SSD などを使えばストレージも自由.
  • 手元でいまだに使っている Adobe CS6 もまだ動作する.

な感じ.

Core i3 にしたのは

  • そうはいっても,やっぱり ARM 版に置き換わっていく過渡的な状況なので費用はかけないほうがいいかなと.
  • 第8世代 intel Core シリーズなのでベンチマーク上では Mac mini 2014 の i7 モデルより早い(らしい).

な感じかな.

最初は Mac mini とか iMac の中古もいろいろと調べてみたんだけど,スペックの割に高いなぁという印象もあったので.

それなら新品のほうが少し値段は高いけどいろいろな保証もつくし良いかなぁと.

Mac mini i3 モデルが残っているのは現在の流通在庫のみなので決断を早くしないとな,という理由もありましたね.

2年程前くらいまで,Mac mini 2014 i5/8G/1T を使っていましたが,性能的にはそれほど不満はなかったし,まぁこれで良いかなと.手元にある Macbook 12inch 2016 では本格的に開発につかうのはちょっと辛かったので.

今更2年前のモデルだけど,諸事象により届くまでに少し時間がかかる状況.ちょっとワクワクかな.

...他にも,仕事用に MacBook Pro 13inch 2020 第8世代i5 なモデルも手元に転がってるのは内緒.借りものなので自分のものじゃないのでね.この子は i5/32G/1T なんだけど,キーボードは新しいので良いんだけど,ちょっと負荷かけるとファンが全開になって,あんまり(ry

とりあえずそんな感じです.

 

linux kernel 5.4 用の utf8 漢字コンソール対応パッチ (cjktty patch)

先日,linux kernel 5.9 用の utf8 漢字コンソール対応パッチの話を書きましたが,ついでに LTS でもある 5.4 用のパッチも手元で修正しておきました.

ざっと ls などで日本語が表示される程度は確認してあります.

ファイル一式は https://github.com/qbilinux/qbilinux/tree/master/qbilinux/00_base/kernel 以下においてあります.

例のごとく,Qbilinux のパッケージビルド環境用になっています.

そんな感じです.

linux kernel 5.9 用の utf8 漢字コンソール対応パッチ (cjktty patch)

linux のコンソール画面で utf8 の日本語を表示するために,これまで gentoo あたりでメンテされているパッチ (https://github.com/Gentoo-zh/linux-cjktty) を使っていましたが,最近の kernel では reject が出るようになっていますね.

どうやら kernel からソフトウエアのスクロールバック機能がドロップされて,その影響みたい.

最新カーネルだけではなくってそのパッチが LTS にも適用されているようなので,5.4 系でも最近の kernel では reject が出るようです.

で,仕方ないなと思ってソースコードをざっとチェック.

drivers/video/fbdev/core/fbcon.c 中にあったソフトウエアのスクロールバック機能がごっそりなくなっているだけで,それ以外はあんまり変わっていない雰囲気.fbcon_update_softback / fbcon_redraw_softback / fbcon_softback_note / fbcon_scrolldelta 関数なんかがが削除されて,関連記述に変更が入っている感じか.

そのあたりに適用している箇所だけを削除すればよさそうなのでざっと作業.そんでもってコンパイル.

コンパイルしてるときに,ほかに作業している人がいないのかなぁとちょっと検索したら色々出てきた.

5.9 用のパッチを作られている方もいらっしゃったようなので,その中身を見てみましたが,手元で作業したのと同じ方法で修正している感じですね.コンパイル途中でしたが,手元でデバッグするのも面倒かなぁということで,その方のパッチをもらってくることにしました.gentoo からブランチして修正したって書いているので,権利関係も問題ないかなぁと.

でも,個人的にはそのままでは使えないので,これまで使っていたのと同じ形に修正してコンパイル & 差し替えて動作チェック.

数分触ったくらいだけど,問題なく動作している雰囲気だね.

f:id:toshi-mtk:20201108150354j:plain

ということで,作成したパッチ,コンパイル環境一式を https://github.com/qbilinux/qbilinux/tree/experimental/experimental/kernel59 以下においておきました.

github.com

個人的に作成している Qbilinux ってディストリビューション用のビルドファイルになっているのでご注意を.現状では experimental branch 以下に置いてありますが,そのうち master brnach の方にマージします.

とりあえず,気分転換に久しぶりにカーネルソースをいじってみた話(?),linux kernel 5.9 用の utf8 漢字コンソール対応パッチをいじってみた話でした.

Qbilinux 開発について(その54): kvm/libvirt 回りをいじったり一部動作しないパッケージをいじったりしながらインストーラも


ぼちぼちと Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションを作成.

いつまで続くのか.

いじってる Qbilinux のホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

前回,これからはインストーラ回りを...といいつつパッケージの方の作業をしていたりします.

とりあえず,ずっと気になっていたので perl/python まわりの整理とか.python2 っていつになったら削除できるのかなぁ?

他には,一部,うまく動作しないなぁと思いつつ放置していたパッケージ類をきちんと動作するように整理したり.

2ch ビューワーまわりのパッケージを同梱していましたが,全く動作しない状態でした.今回,一通り環境を整備したので,その辺りの環境もきちんと動作するようになりました.jdim と 2chproxy が qbilinux-cuurent では普通に動作するようになっています.ただし,2chproxy はデフォルトで 8080 ポートを使いますが,8080 ポートをほかの用途に使うようにしている場合には 2chproxy の方の設定変更などが必要になりますけどね.

ついでに気分転換として kvm/libvirt 回りのパッケージもいじってみたり.

virt-manager が動作する程度にパッケージを作成してみましたが,なんだか動作が怪しい.

暇をみて調整してみますが,時間がかかりそうなら同梱するのは先送りするかもです.はい.

...

で,インストーラの方のはなし.

以前は EFI 環境で動作していたはずなんだけど,いつのまにか動作しなくなってました.なぜそうなったのか不思議なんですけど,パッケージを更新している途中で何か環境を壊してしまったのかなぁ?

ということで,復習を兼ねて Plamo Linux で実装されているインストーラー動作まわりの仕組みなどを,こじまさんが gihyo で書いているドキュメントとかをみてもう一度確認中.

gihyo.jp

平行して,arch linux のドキュメントなんかもチェックしたり,先日購入した ThinkPad X270 に debian をインストールして debian では EFI 回りのインプリがどうなっているのかなを確認したり挙動とか実装のチェックをしてみたり.

きちんと作ろうとすると色々と面倒なことがありそうですね.署名の話とか....

最終的にどこまで対応するかは置いておいて,とりあえず必要最低限だけ動作するレベルに持っていきたいなとは思っていますので,色々と調べつつ作業を進めていく感じ.

とりあえずそんな感じです.はい.

docker + qemu で raspberry pi の開発環境構築

個人的に Qbilinux ってディストリビューションを作成しています。その環境の上で色々な作業をしてますが,ARM の開発環境をもっと効率の良い物にでないかなぁっと昔から思っていました.

過去,クロスコンパイラを作ってみたり,qemu 上で動作させてみたり.

で,今回,Qbilinux 上で docker が動作するようになったので,docker 上に ARM 開発環境を構築できないかなと思い立ち.

少し検索してみたところ,下記のページを発見.すばらしい.

qiita.com

元ネタはここらしい.

blog.guiraudet.com

ふむふむ.

とりあえず,最初はドキュメント通り試してみようかなということで raspbian を使って上記説明のとおりに作業してみました.日本語のページでは docker 上の debian で作業していますが,手元に linux 環境があるので,static な qemu バイナリだけを拾ってきて,普通に linux 上でゴニョゴニョと作業.static な qemu イメージの有る場所は http://blog.guiraudet.com/raspberrypi/2016/03/03/raspbian-image-for-docker.html の方に記述されているものを拾ってきました.

作成したイメージを docker に登録してドキドキしながら実行.....うまく動作しない.^^;

$ docker run --privileged -it raspbian-x86_64:20200213 /bin/bash
standard_init_linux.go:211: exec user process caused "exec format error"

と出てダメ.

うーむ.何でだろう?

いろいろと調べてみたところ,https://github.com/multiarch/qemu-user-static があって,ここにあるドキュメントによると

$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

で直るらしい.ってことで実行.

無事実行できるようになりました.ふう.

$ docker run --privileged -it raspbian-x86_64:20200213 /bin/bash
root@9f9ad0a61de9:/# uname -a
Linux 9f9ad0a61de9 5.4.50-x64 #1 SMP Sun Jul 5 09:45:28 JST 2020 armv7l GNU/Linux
root@9f9ad0a61de9:/# arch 
armv7l
root@9f9ad0a61de9:/#

multiarch/qemu-user-static って何なんだろう?って思ったら https://github.com/multiarch/qemu-user-static のページの下の方に説明がありました.

とりあえず,raspbian が動作したので,今度は本命の自分で作ってる Qbilinux 環境を動かせないか試してみました.

Qbilinux verion 0.3 の aarch64 用の SD カードイメージを https://qbilinux.org/pub/isos/qbilinux-0.3_aarch64_sd.img.xz に公開しているので,それを unxz して圧縮展開.ld.so.preload は使っていないので修正は必要ないかな.で,raspbian の時と同様に qemu を同梱.

それを tar でかためて docker にイメージを登録.

ドキドキしながら実行.

$ docker run -it --privileged qbilinux-aarch64:0.3 /bin/bash
root@4ab972979376:/# uname -a
Linux 4ab972979376 5.4.50-x64 #1 SMP Sun Jul 5 09:45:28 JST 2020 aarch64 GNU/Linux
root@4ab972979376:/# cat /etc/qbilinux-release 
qbilinux release 0.2
root@4ab972979376:/# arch
aarch64
root@4ab972979376:/#

あっさり動作しました.:-)

CPU やメモリはこんな感じで見えます.

root@4ab972979376:/# cat /proc/cpuinfo       
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen 5 2400G with Radeon Vega Graphics
stepping        : 0
microcode       : 0x810100b
cpu MHz         : 3428.868
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

- snip -

processor       : 7
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen 5 2400G with Radeon Vega Graphics
stepping        : 0
microcode       : 0x810100b
cpu MHz         : 1355.281
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid
 extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca
bugs            : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 7186.50
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

root@4ab972979376:/# cat /proc/meminfo 
MemTotal:       16346912 kB
MemFree:          776184 kB
MemAvailable:   13863160 kB
Buffers:          693456 kB
Cached:         11844408 kB
SwapCached:            0 kB
Active:          6330576 kB
Inactive:        8169764 kB
Active(anon):    1689744 kB
Inactive(anon):   427304 kB
Active(file):    4640832 kB
Inactive(file):  7742460 kB
Unevictable:        9340 kB
Mlocked:            9340 kB
SwapTotal:      33554428 kB
SwapFree:       33554164 kB
Dirty:               588 kB
Writeback:             0 kB
AnonPages:       1971972 kB
Mapped:           606052 kB
Shmem:            178796 kB
KReclaimable:     883404 kB
Slab:             971948 kB
SReclaimable:     883404 kB
SUnreclaim:        88544 kB
KernelStack:       12864 kB
PageTables:        19380 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    41727884 kB
Committed_AS:    5859872 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       27420 kB
VmallocChunk:          0 kB
Percpu:             2176 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      240100 kB
DirectMap2M:    10192896 kB
DirectMap1G:     7340032 kB
root@4ab972979376:/# top
top - 19:49:51 up 11:46,  0 users,  load average: 0.11, 0.36, 0.30
Tasks:   2 total,   0 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu0  :   0.7/0.0     1[|                                                                            ]
%Cpu1  :   0.0/0.0     0[                                                                             ]
%Cpu2  :   0.0/0.0     0[                                                                             ]
%Cpu3  :   0.0/0.7     1[|                                                                            ]
%Cpu4  :   0.0/0.0     0[                                                                             ]
%Cpu5  :   0.0/0.0     0[                                                                             ]
%Cpu6  :   0.7/0.0     1[|                                                                            ]
%Cpu7  :   0.0/0.0     0[                                                                             ]
GiB Mem : 15.3/15.6     [                                                                             ]
GiB Swap:  0.0/32.0     [                                                                             ]

  PID USER      PR  NI    VIRT    RES  %CPU  %MEM     TIME+ S COMMAND                                  
 9938 root       0   0  217.4m   9.1m   0.0   0.1   0:00.00 0 /bin/top                                 
    1 root      20   0  218.6m  13.3m   0.0   0.1   0:00.30 S /usr/bin/qemu-aarch64-static /bin/bash   



CPU は 8個見えてます.使っている PC の CPU スペックが docker からそのまま見えています.Ryzen 5 2400G ですけど.:-)

メモリも 16G 見えていますが,これも使っている PC のメモリがそのまま表示されますね.

次,ソフト類のコンパイルが問題なくできるかチェック.とりあえず docker 中から普段使っている /home をマウントして作業.

root@4ab972979376:/# mount /dev/sdb4 /home/
root@4ab972979376:/# df   
Filesystem      1K-blocks       Used Available Use% Mounted on
overlay        2767622980 2268102844 358862504  87% /
tmpfs               65536          0     65536   0% /dev
tmpfs             8173456          0   8173456   0% /sys/fs/cgroup
shm                 65536          0     65536   0% /dev/shm
/dev/sdb4      2767622980 2268102844 358862504  87% /home

適当なディレクトリを作成して,とりあえず file コマンドをコンパイルしてみることに.

root@4ab972979376:/# cd home
root@4ab972979376:/home# mkdir tmp
root@4ab972979376:/home/tmp# cd tmp
root@4ab972979376:/home/tmp# cp ../archives/source/file-5.37.tar.gz .
root@4ab972979376:/home/tmp# ls -al
total 897024
drwxr-xr-x  2 root root   4096 Jul 16 19:40 ./
drwxr-xr-x 12 root root   4096 Jul 16 19:40 ../
-rw-r--r--  1 root root 887682 Jul 16 19:40 file-5.37.tar.gz
root@4ab972979376:/home/tmp# tar xf file-5.37.tar.gz 
root@4ab972979376:/home/tmp# cd file-5.37
root@4ab972979376:/home/tmp/file-5.37# ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes

- snip -

config.status: creating doc/Makefile
config.status: creating python/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
root@4ab972979376:/home/tmp/file-5.37# make -j8
/usr/bin/make  all-recursive
make[1]: Entering directory '/home/tmp/file-5.37'
Making all in src
make[2]: Entering directory '/home/tmp/file-5.37/src'
sed -e "s/X.YY/$(echo 5.37 | tr -d .)/" < ../src/magic.h.in > magic.h
/usr/bin/make  all-am
make[3]: Entering directory '/home/tmp/file-5.37/src'
  CC       buffer.lo
  CC       magic.lo

- snip -

make[2]: Leaving directory '/home/tmp/file-5.37/python'
make[2]: Entering directory '/home/tmp/file-5.37'
make[2]: Leaving directory '/home/tmp/file-5.37'
make[1]: Leaving directory '/home/tmp/file-5.37'
root@4ab972979376:/home/tmp/file-5.37#
root@4ab972979376:/home/tmp/file-5.37# file src/.libs/file
src/.libs/file: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=1b00b02cdf34f849aa5b9f3127e602cfd5a8d17d, with debug_info, not stripped
root@4ab972979376:/home/tmp/file-5.37#

コンパイル通りましたね.できあがったバイナリも aarch64 用になっていますね.

/usr/local/bin 以下にインストールしてみて動作確認.

root@4ab972979376:/home/tmp/file-5.37# make install
Making install in src
make[1]: Entering directory '/home/tmp/file-5.37/src'
/usr/bin/make  install-am
make[2]: Entering directory '/home/tmp/file-5.37/src'

- snip - 

make[2]: Leaving directory '/home/tmp/file-5.37'
make[1]: Leaving directory '/home/tmp/file-5.37'
root@4ab972979376:/home/tmp/file-5.37#  /usr/local/bin/file /usr/local/bin/file 
/usr/local/bin/file: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=1b00b02cdf34f849aa5b9f3127e602cfd5a8d17d, with debug_info, not stripped
root@4ab972979376:/home/tmp/file-5.37#

動作しましたね.

ということで,docker の中でコンパイルできることが確認できました.ふう.

コンテナなので,システムに上書とか適当に書き換えてもコンテナを落とせば,元々の環境に戻るのも便利ですね.

コンパイルにかかった細かい時間は計測してないですが,体感ではそれほど早い感じはしないですね.ただ,CPU が 4C/8T なのでその分は高速かな.メモリもたくさん使えますし.

こいういう環境が整うと,新しくて早い CPU が欲しくなりますね.最近の Ryzen だと 12C/24T とかもあるから,それだとパッケージのビルド時間がかなり短縮できそうですね.

環境を整えて,開発用に使えるように徐々に調整していきたいと思います.

コンテナが動作するようになると,開発向けに一気にいろいろなことができるようになって便利になりますね.:-)

ざっと使ってみた感じは,個々のパッケージの作成はコンテナを使って,カーネルのビルドなどにはクロスコンパイラを使うのが効率的で良さそうかなと思っています.

まぁ,でも環境をきちんと整えてると時間がかかりそうなので,本格的に使うのはしばらく先送りかなと思ってます.

少し docker とか raspberry pi とかとは違う話もしましたが,そんな感じです.

Qbilinux 開発について(その53): lxc のパッケージも作成して Plamo コンテナで動作チェック

ぼちぼちと Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションを作成.

いつまで続くのか.

いじってる Qbilinux のホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

前回までは docker をいじっていましたが,一段落.

少し docker 用のパッケージビルドスクリプトを調整して,x86_64 環境でパッケージを作り直しました.

公開している qbilinux-current の方も更新してあります.https://qbilinux.org/pub/qbilinux-current/x86_64/contrib/Virtualization/docker.txz/ のあたりね.aarch64 の方は...もうしばらくお待ちください.

...

ついでに lxc のパッケージも作成しようかなと x86_64 環境上で作業.

Plamo 6.x のビルドスクリプトを持ってきて適当に修正.一応,Plamo 7.x もどうなっているかなと思って少し見たら,なんか plamo 用のコンテナ作成テンプレートにパッチが当たっているようだったのでそのあたりのパッチファイルを拝借.

で,作成後に lxc パッケージをインストールして動作確認.

とりあえず plamo のコンテナを作ってみようとしたら lxc-create 途中でこける.むむ....

追っかけていったら Plamo 7.x のパッケージを持ってきた後で installpkg するところでエラーを吐いて異常終了しているらしい.そのためにコンテナのベースとなる rootfs が作成できないっぽい.

色々と試行錯誤してみたら,どうやら LANG が C じゃないと installpkg でエラーになるみたいだな....ってことで, https://github.com/qbilinux/qbilinux/commit/1c6206f24832bcc17628f3cce6d29b847b0fc4a9#diff-93c4ec3da5e90304aa0236cf93289cc3 な感じのパッチを作成.これで root アカウントで問題なく Plamo 7.x のコンテナが立ち上がって動作することが確認できました.

あとは lxc-plamo の中で installpkg する前に PATH を $dlcche/sbin:$PATH に切り替えているけど,$dlcche/sbin/installer 以下も追加した方が良いんじゃないかなぁとも思ったけど,あんまり知識ないので機会があるときに Plamo 方面で聞いてみようかな.

このあたりって Plamo 上で lxc を動かす場合には問題なく動作しているのかな?まぁ,実作業に使われているみたいなので,問題ないんだろうなとは思っていますけど....

そんな感じで lxc も簡単ですけど動作確認できたので x86_64 環境のパッケージを https://qbilinux.org/pub/qbilinux-current/x86_64/contrib/Virtualization/lxc.txz/ 以下に置いておきました.その他のアーキ用パッケージは追って作業します.

それにしても,久しぶりに lxc を使うと色々とはまってしまいました.

すっかり lxc 関連のコマンド類の使い方を忘れてしまってる....

他にも lxc-start のデフォルト挙動がいつの間にか変更になっているのに気づかずはまってしまいました.最初,フォアグランド動作させようとして

% lxc-start -n plamo

ってやっても普通にコマンドプロンプトに戻ってきてしまったので,「なぜ?」って.もう一回実行しようとしたら,すでに実行してますってメッセージが出るし,余計「なぜ?」って.

% lxc-ls -f

でステータスを見て初めてデフォルトでバックグランド動作するように変更になっていることに気がつきましたが,全く知らなかったので少し悩んでしまいました.

あとは,lxc とは関係ない話ですけど,Plamo コンテナをフォアグランド動作しようとして

% lxc-start -n plamo -F

したら login プロンプトになるけど,「何のアカウントでログインすれば良いんだろうなぁ?」と.ちょっと調べてもわからなかったので,とりあえず先送り.Plamo 7.x 系列にはまったく追いつけてないのでインストールして少しいじってみないとダメかなぁとも思っていたり.

これで Plamo の lxc コンテナが動作するようになってので,このコンテナの上で環境を整えれば Plamo 用のパッケージング作業もできるってことかな?少し余裕が出てきたら試してみようかな.

また Qbilinux 用のテンプレートも作っておきたいなとは思いますが...,優先度はそれほど高くないので先送り.

他にも debootstrap とか zypper, yum なんかを debian や SUSE, CentOS 方面から持ってくれば,Qbilinux 上の lxc 上でも debian や SUSE, CentOS なんかのコンテナ作成とかできるのかなぁとか色々と思ってみたり.少し各ディストリビューション用のテンプレートファイルの中を追っかけてみないと,どのコマンドが必要はわからないんだけどね.まぁ,このあたりも興味はあるけど先送りかな.

そんな感じで Qbilinux 用の lxc パッケージも作成できたので今後は同梱する予定.

パッケージ作成は私の中では一段落したので,これからはインストーラー周りをメインに触っていこうと思っています.(毎回同じようなことを言っていますが,今度こそは...)

簡単ですけど,lxc のパッケージを作成して,動作チェック用に Plamo 7.x のコンテナを動作させてみた話でした.

Panasonic Let's note CF-SZ5 のキーボード交換してみた

ここの blog には書く機会を失っていましたが,最近はずっと web 開発用のメイン環境として Panasonic Let's note CF-SZ5 を使用.

f:id:toshi-mtk:20200715003308j:plain

半年くらい前に3万円くらいの中古品を購入したものです.

スペックは CPU が Core i5-5300U 2C/4T 2.4GHz,メモリが 8GB.ストレージは 250GB HDD で Windows 10 Pro がインストールされていましたが,購入後に 2.5inch 256GB SSD にのせ変えて Debian で使っています.

それまではわりと ThinkPad X250 を持ち歩いていたのですが,寄る年波には勝てず(?),常に持ち歩く PC はもっと軽量なものに置き換えたほうが良いかなぁと思ったのがきっかけで購入しました.まぁ,丁度そのときに程度のわりに安く売ってた Let's note を見つけたってのもありますが.:-)

ちなみに企業向けモデルなので,光学ドライブは付いていません.ってことで,本体だけだと重量は 832g (実測値) です.

f:id:toshi-mtk:20200715003532j:plain

そんな感じでわりと毎日持ち歩いて使っていた SZ5 ですが,最近,キーボードがおかしい.

チャタリングしたり,うまく入力できなかったりとか.

まぁ,中古で購入したものなので,そうなるのも仕方ないかなぁということでキーボード交換することにしました.

以前,NX2 の修理を shop8888 (ショップエイト) さんにお願いしたことがあったので,またそこにお願いしようかなとも考えましたが,以前頼んだときには結構日数が必要だったんですよね.混雑しているってことで1ヶ月半くらいかかったかな.常用している PC なので数日でも手元にないのは困るってことで,自分で交換することにしました.

参考までに shop8888 さんのホームページはこの辺りですね.

panasonic-pcshop.ocnk.net

で,キーボードの部品ですが,確か,shop8888 さんで部品の販売も行っていたよな,ということで検索したところ SZ5 用のキーボードを販売しているのを発見.ふう,良かった.

panasonic-pcshop.ocnk.net

白と黒が販売されていますが,迷わず黒を選択.かかった費用はキーボード自体の値段は 3700円 ですが,送料とか消費税諸々で合計 4860円 でした.発送方法に宅急便を選択したのですが,結構,お安いですね.

で,黒を選んだ理由ですが,私自身,黒の SX3 と白の NX2/SZ5/RZ4 を使っていますが,圧倒的に黒の SX3 の方が好みだから.キーボード表面の感じとかタッチしたときの感触が何となく黒の方が良いんですよね.購入前には色の違いだけかなと思っていましたが,いろいろと本体を購入してみて使ってみたら,素材とか塗装(?)とかが異なるとタッチ感も異なるんだなと.

shop8888 さんに注文したキーボードは2日ほどで配送されました.

前置きが長くなりましたが,そんな感じで交換作業を開始.

ネットで調べてみるとキーボードは両面テープで止まっているだけなので,無理やりはがしていけば良いってことなのでその通り作業.実際に,注文して届いたキーボード裏にもネジ穴があるわけではなく,両面テープが張り付けてあっただけでしたのでそれで間違いないかなぁと.

まずバッテリーの取り外し.

f:id:toshi-mtk:20200715003319j:plain

で,キーボードを無理やり剥がす作業ですが,剥がしたものを再利用できないかなとちょっと色気が.ってことで,一番破壊しないようにするにはどうしたら良いかなとちょっと考えて「1」キーの左側にキーボードのないスペースがあるのでここからはがしていこうかなと.ほかのところからはがしてみようかなと少し試してみましたが,すぐにキーボードが壊れそうだったので,キーボードのないところから作業すれば破壊する可能性も減るかと.

製品分解時にはいつも愛用している iSesamo を使って剥がす作業.

f:id:toshi-mtk:20200715003329j:plain

f:id:toshi-mtk:20200715003338j:plain

SZ5 は思ったよりも液晶画面が開かないのでちょっと作業がやりにくい.SX3/NX2 だと 180 度以上開くんだけど....

f:id:toshi-mtk:20200715003350j:plain

少しずつ剥がしていく作業.やっぱりキーボードが波打ってくるなぁ.

剥がし終えて引っくり返したところ.結構本体側に傷がついてしまったな.ふう.

f:id:toshi-mtk:20200715003410j:plain

本体側に残った両面テープをきれいにしようとしましたが,全然ダメですね.きれいにならないです....水分はダメなので,ドライヤーとかで暖めてもダメ.無水アルコールもダメ.完全にきれいにするのは途中であきらめてしまいました.

コネクタからフレキを取り外し.上向きにコネクタのクリーム色のプラスチック部品をスライドさせることでフレキが取り外せるようになっています.

f:id:toshi-mtk:20200715003423j:plain

f:id:toshi-mtk:20200715003433j:plain

新しく購入したキーボードがこちらです.

f:id:toshi-mtk:20200715003442j:plain

取り外したキーボードを参考に,新しいキーボードのフレキを折り曲げます.フレキの途中に白い先が入っていますが,そこを目安に折り曲げると良いと思います.

f:id:toshi-mtk:20200715003452j:plain

新しいキーボードのコネクタを差して,元通りコネクタ回りのシールを張り付け.

f:id:toshi-mtk:20200715003511j:plain

仮組みしてからキーボードの動作を確認.両面テープで張り付けたあとに動作しないと新しく購入したものを破壊することになってしまいますのでここで動作確認しておかないと悲劇が....

問題なさそうなので,裏面の両面テープをはがして張り付け.交換前の両面テープが少し残っているのでフワフワした感じにならないかなと思ったのですが杞憂でした.使われているのは結構強力な両面テープなんですね.

f:id:toshi-mtk:20200715003501j:plain

あ,amazon とかでも SZ5 用のキーボードとかは販売されていますが,そちらは裏面の両面テープはないようですね.業者三によって仕入先が違うから微妙に異なるんでしょうか?shop8888 さんから購入したものは最初から裏面の両面テープはついていました.:-)

一応,取り外したキーボードはこんな感じ.

f:id:toshi-mtk:20200715003522j:plain

注意して外したつもりですけど,やっぱり全体の再利用はできない感じですね.個々のキートップ部品とか使えるかなと思いますので,一応,取っておこうかなと思っています.最初からドライヤーとかを当てながら外したら,もう少しきれいにはずれたかも知れないですね.

そんな感じでトータル1時間くらいの作業でした.はい.

交換後の感想は,とりあえずキーボードの不調はなくなったみたいなので,まぁ,満足.

見た目の印象もかなり変わった感じになって,ちょっといい感じ.

ただ..,やっぱり Let's note の部品交換作業は何度かやっていますが,業者さんにお願いできるのであれば業者さんにお願いした方が良いかなとは思います.良くも悪くも日本製 (?) の PC なので普通の人が分解して気軽に部品交換できるような作りにはなっていないなと思います.

以前にやった SX3 の液晶交換とかは超絶最悪な作業難易度でしたし....

toshi-mtk.hatenablog.com

そんな感じで,Panasonic Let's note CF-SZ5 のキーボードを交換してみた話でした.まる.

ThinkPad X270 の m.2 NVMe SSD 交換作業

先日,調達した ThinkPad X270.

m.2 NVMe な SSD が載せられています.

Windows 10 Pro がインストールされている状態のものを購入したのですが,主要用途は Linux 開発環境用に使おうと思っています.

けど...,諸般の事情で Windows 10 Pro の環境を壊したくなかったので,手持ちの SSD に交換することにしました.

Windows が必要になったときには,新規インストールやり直すでも良いのかなとも思いますが,まぁ,気分的な問題かな.インストールやり直すより,SSD 交換作業のほうが楽ちんだし,時間もかからないし.

...

で,少しだけ調査.

ネットで検索すると ThinkPad X270 の SSD コントローラーは PCIe x 2 SSD にしか対応していないって記述がいろいろと引っ掛かりますね.相性があるからわざわざ実績のある(?) SSD を探して購入していたり,相性を避けるために NVMe ではなくわざわざ SATA の SSD に交換したりいろいろと試行錯誤している方がいろいろと.

ちなみに,手元の本体に購入時についていた SSD は東芝の THNSF5256GPUK ですが,ネット検索すると I/F 規格は「PCIe Rev. 3.1 Gen3x4L, NVMe Rev. 1.1b /M.2 M」ってなってますね.ふーん.

なんかネット情報の信ぴょう性もあんまりよくわからないし,あんまり気にするのもどうかなと思って,とりあえず実際に交換してみることにしました.動作しなければその時に考えれば良いかなということで.

手持ちの余ってた SSD は Intel 760p シリーズの 256GB 品.型番は「SSDPEKKW256G8」かな.仕様書を見ると x4 品ですね.確か,昔,ThinkPad X280 をお借りしてレビューを書いた時にもこの SSD を使いました.はい.

toshi-mtk.hatenablog.com

ってことでさっそく作業.

最初に内蔵バッテリの無効化から.これをやらないと,最悪,分解時にショートして壊れてしまう可能性があります.

BIOS 画面に入ってから無効化.

f:id:toshi-mtk:20200714001338j:plain

f:id:toshi-mtk:20200714001350j:plain

で,裏蓋を取り外し.ねじを外せば,少し爪で止まっていますが簡単に外れます.

f:id:toshi-mtk:20200714001402j:plain

左下のケースに入っているのが SSD なので,この部分だけ取り外し.ねじ1か所で止まっているだけ.ケーブルは簡単に外れないように金属製のロックがかかっているので,ケーブルごと外したい場合には無理に引き抜こうとせずに注意して取り外してください.もともと HDD モデルでは HDD が入るスペースなのでちょっと冗長な作りですね.:-)

f:id:toshi-mtk:20200714001413j:plain

外した SSD ケースを分解.一応,ケースに SSD の熱を逃がすようにジェル状のものがついてますね.

f:id:toshi-mtk:20200714001423j:plain

intel SSD に交換.

f:id:toshi-mtk:20200714001435j:plain

とりあえず簡易的に本体に取り付けて動作確認.ちょっとドキドキ.

BIOS 画面では認識されているようですね.

f:id:toshi-mtk:20200714001447j:plain

debian のインストール USB で立ち上げてみても普通に認識している雰囲気.

f:id:toshi-mtk:20200714001508j:plain

試しに交換した SSD でブートしてみましたが,Linux でいろいろと試行錯誤しながら作業をしていた時にインストールした grub 画面が立ち上がりました.ってことはやっぱり普通に使えているのかな?試行錯誤状態のものなので,実際にはブートして動作確認できないのでそのあたりはご容赦を.

一応,取り外した東芝製の SSD はこんな感じ.

f:id:toshi-mtk:20200714001518j:plain

BIOS 画面で認識しているし,debian インストーラーとかでも認識されているから普通に使えそうな雰囲気ですね.

ネットでの書き込み情報でちょっと神経質になりすぎたかな?

ただし,これだけいろいろと書いている人がいるってことは x2 じゃないと動作しない X270 本体のもあるかもしれないので,あくまで自己責任でお願いします.私自身は何も保証しませんので.

こんな感じでざっと作業終了.本格的使ったりするのはしばらく先になりそうですが,

一応,何かトラブルなどがあれば追加情報を書きたいと思います.

簡単ですけど,ThinkPad X270 で NVMe SSD の交換作業をした話でした.はい.

 

Intel SSD 760p M.2 PCIEx4 256GBモデル SSDPEKKW256G8XT

Intel SSD 760p M.2 PCIEx4 256GBモデル SSDPEKKW256G8XT

  • 発売日: 2018/01/25
  • メディア: Personal Computers
 
Intel SSD 760p M.2 PCIEx4 512GBモデル SSDPEKKW512G8XT

Intel SSD 760p M.2 PCIEx4 512GBモデル SSDPEKKW512G8XT

  • 発売日: 2018/01/25
  • メディア: Personal Computers
 
インテル® SSD 760pシリーズ1TBM.2 80mmPCIe 3.0 x4TLC SSDPEKKW010T8X1

インテル® SSD 760pシリーズ1TBM.2 80mmPCIe 3.0 x4TLC SSDPEKKW010T8X1

  • 発売日: 2018/04/12
  • メディア: Personal Computers
 

Qbilinux 開発について(その52): docker まわりをパッケージングして arm 64bit 環境で動作チェック

ぼちぼちと Plamo Linux 6.x のソース一式からブランチして,Qbilinux という linux ディストリビューションを作成.

いつまで続くのか.

いじってる Qbilinux のホームページは https://qbilinux.org/ に,ビルドスクリプトは https://github.com/qbilinux/qbilinux,バイナリは https://qbilinux.org/pub/ 以下にあります.

前回の blog 記事に引き続いて docker まわりをいじり中.

slackware ベースのパッケージングスクリプトを qbilinux 用に修正してパッケージ化.

とりあえず x86_64 環境では問題なく動作しているみたいだな.ふう.

調子に乗って arm 64bit 環境 (aarch64) でもビルド.

普通にビルドできたね.

動作するかな?ドキドキ.

カーネルバージョンはこんな感じ.

root@rq64:/home/matsuki/tmp# uname -a
Linux rq64 5.4.13-v8 #2 SMP PREEMPT Sun Jan 26 01:27:01 JST 2020 aarch64 GNU/Linux

動かしている環境はラズパイ4 (Raspberry Pi 4 4GB モデル) ね.

とりあえず root で実行.

root@rq64:/home/matsuki/tmp# docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/home/matsuki/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides
                           DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default
                           "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/home/matsuki/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/home/matsuki/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/home/matsuki/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  deploy      Deploy a new stack or update an existing stack
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

コマンド実行はできてるね.つぎ,hello-world.

root@rq64:/home/matsuki/tmp# docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

ん? daemon が実行できていないみたいだな.

root@rq64:/home/matsuki/tmp# ls -al /etc/rc.d/rc.docker 
-rw-r--r-- 1 root root 1,746  7月 12日  14:22 /etc/rc.d/rc.docker
root@rq64:/home/matsuki/tmp# sh /etc/rc.d/rc.docker start
Starting dockerd ...
root@rq64:/home/matsuki/tmp# ps auxww | grep docker
matsuki    624  0.1  0.0 215432  2292 tty1     S+   08:58   0:00 less /var/log/docker.log
root       898 17.0  1.7 1137176 68408 pts/0   Sl   09:05   0:00 /usr/bin/dockerd -p /var/run/dockerd.pid
root       908 16.5  0.9 1101060 36640 ?       Ssl  09:05   0:00 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
root       938  0.0  0.0 215184  1912 pts/0    S+   09:05   0:00 grep docker

daemon が動作していることを確認して,再びコマンド実行.

root@rq64:/home/matsuki/tmp# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
256ab8fe8778: Pull complete 
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

問題なく動作したね.続いて ubuntu は?

root@rq64:/home/matsuki/tmp# docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
f3801533dc70: Pull complete 
cb81013b04c0: Pull complete 
b1f21a013471: Pull complete 
7c8e2b8980f0: Pull complete 
Digest: sha256:55cd38b70425947db71112eb5dddfa3aa3e3ce307754a3df2269069d2278ce47
Status: Downloaded newer image for ubuntu:latest
root@fc5ec3d8c73c:/# 

コマンドプロンプトになったな.

root@210ff3e204f6:/# dpkg --version
Debian 'dpkg' package management program version 1.19.7 (arm64).
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.

コマンドも動作してるみたい.

root@fc5ec3d8c73c:/# uname -a
Linux fc5ec3d8c73c 5.4.13-v8 #2 SMP PREEMPT Sun Jan 26 01:27:01 JST 2020 aarch64 aarch64 aarch64 GNU/Linux

当然 kernel はコンテナなので元々動作している OS と同じですね.

な感じで,とりあえず aarch64 環境でも動作.ふう.

もう少しビルドスクリプトとかは調整しないと駄目なところはありますが,今後は docker のパッケージも同梱する形にしたいと思います.

現在公開している qbilinux-current では https://qbilinux.org/pub/qbilinux-current/x86_64/contrib/Virtualization/docker.txz/ 以下に docker パッケージをおいてあります.aarch64 の方は数日中に置くようにしたいと思います.はい.

とりあえずそんなところ.

ThinkPad X270 を調達...と少し悩んだ BIOS 画面の入り方

先日,私自身が作成している Linux ディストリビューション Qbilinux のインストーラー・ブート周りの作業用に専用の安価な中古 UEFI な PC なんかを調達したいなぁと書きました.

toshi-mtk.hatenablog.com

で,割と程度のいい思ったより安価な ThinkPad X270 を見つけたので購入してみました.

中古の 12インチ ThinkPad の価格ですけど,X280 って高いですね.やっぱり CPU が Core i シリーズの8世代目になってコア数が増えたのと,それまでの X270 までと違ってフルモデルチェンジしてかなり軽量になったのが人気になって高いんでしょうかね.後継モデルが X390 になって 13インチにサイズアップしてしまっったうえに重くなったので余計 X270 が人気になっているのかな?

その影響なのか X270 以前のモデルは割と安価になっている気がします.やっぱり重たいからかな?

ということで,割とお買い得感が増している X270 ですが,良さそうな Core i5 モデルを見つけたので購入してみた次第です.

スペックは

  • Core i5 6300U vPro 2.4G 2C/4T
  • 8G メモリ
  • 256G m.2 NVMe SSD
  • フル HD 液晶
  • WWAN 付
  • 指紋認証付
  • Windows 10 Pro

なスペックで 31,000円 くらいでした.

f:id:toshi-mtk:20200708191600j:plain

液晶に少しムラがあるのと,キーボードには少しテカリがあったり,外装はいろいろとシールをはがした跡があるけど,まぁそれくらいは気にならない感じ.ThinkPad ってシールをべたべた貼るとはがした後もどうしても跡が残っちゃうんですよね.私自身も割とシールを貼るタイプです.

WWAN 付ってのがちょっとレアで良いですね.

X280 以降と違ってメモリも自分で増設できるからそのあたりは少しメリットかな.

まぁ,CPU が vPro だし明らかに企業リースアップ品ですね.

あとは普段使っている ThinkPad X250 も手元にあるんだけど,それと部品が共用できるメリットもあるかな.

少し使ってた感じは X250 とあんまり変わらないかなぁ.まぁ,筐体とかがほとんど全く同じだからね.スペックも同じような Core i5 だし,画面も同じフル HD だし.

ただ,世代が進んだせいもあって,モニター端子が RGB + DP だったのが HDMI になっていたり,USB も type C がついたり,SSD も SATA から NVMe になって,周辺環境等は今どきのものになっているのでそのあたりは使いやすくなったかなと思います.

X250 と X270 の本体左右端子の比較はこんな感じ.上が X250,下が X270.

f:id:toshi-mtk:20200708191310j:plain

左側はディスプレイ端子と USB-C が違いますね.

f:id:toshi-mtk:20200708191318j:plain

右側は少しヘッドホン端子の位置が変わったくらいかな.X250 はマウス用 USB トングルを刺したまま写真を撮ったので見にくくてごめんなさい.

...で,購入直後,BIOS 設定を行おうとして BIOS 画面に入ろうとしたけど,なぜか入れず.

ThinkPad って電源投入後に ENTER を押していたら入れたはずなのに...と思ったら Windows の設定で OFF にできるのか.気が付くまでに相当時間を費やしてしまいました.
Windows 10 を立ち上げて「設定」>「システム」>「電源とスリープ」>「電源の追加設定」>「電源ボタンの動作を選択する」から「現在利用可能ではない設定を変更します」をクリック.「シャットダウン設定」の「高速スタートアップを有効にする(推奨)」が変更できるようになるので,このチェックを外してから「変更の保存」.

f:id:toshi-mtk:20200708191300j:plain
この状態にしてから,再起動したところ,Lenovo ロゴ画面に「To interrupt normal startup, press Enter」と表示されて Enter キーを押すことで BIOS 画面に入ることができるようになりました.

ふう.

とりあえず,最初についていた m.2 SSD は取り外して,手持ちの SSD に付け替えてから Qbilinux のブート周りの作業に使おうかなという感じです.最初についておいたものを取っておけば,いつでも簡単に Windows 10 に戻せるからね.

そんな感じで,簡単ですけど作業用の ThinkPad X270 を調達した話でした.