Showing posts with label Linux系. Show all posts
Showing posts with label Linux系. Show all posts

2022-02-08

Kubernetesのkubectl runでdeploymentやjobが作れなくなっているのは仕様変更のため、v1.18 2020-03以降のバージョンにて

唐突ですが、仮想化技術の流れの中、Kubernetes (K8s) をいじくっている、初心者の私です。

Dockerやpodmanからステップアップしてきて、一番最初に使うコマンドは

$ kubectl run NAME --image=IMAGE

だと思います。
Docker/podmanと同じように、指定したイメージを実行するのですが、多くの、というかほとんどの解説書には、

$ kubectl run NAME --image=IMAGE --restart=[Always | Never | OnFailure]

のコマンドを使用すると

  • Deploymentが作成される、--restartを指定しないか、デフォルトのAlwaysを指定した場合
  • Podが作成される、--restart=Neverを指定した場合
  • Jobが作成される、--restart=OnFailureを指定した場合

のように書いてあると思います。
でも、実際試してみたら、何度やっても、どうやっても、Podしか作成できません。
これ、自分の環境か、はたまた理解が間違っているんじゃないかって、悩んじゃいますよね。
でも大丈夫、そんなことはありません。

よくよく調べてみると2020年3月リリースのK8s v1.18でkubectl runの仕様が変更(複雑さを排除するため)されていて、kubectl runはPod実行専用になっていました(腹腹開発さんの記事で気付きましたありがとうございます、K8sのchangelogでも確認しました)。
この件、偉い人もあまり取り上げていないようです。
おそらくkubectl runは初心者しか使わなくて、少し専門的になってくるともっぱらYamlでIaC (Infrastructure as Code) しかやらなくなるから、kubectl runの変更は些細な事なんだろうな、と想像しています。

では、Deploymentはどうやって作成・実行するのかと言うと、素直に

$ kubectl create deployment NAME --image=IMAGE

で大丈夫です。
ならば、Podの作成もkubectl create podに統一した方が良いのか、と思いましたがこういうコマンドは残念ながらありません。

また、従来、kubectl run --dry-run -o yamlのコマンドで、DeploymentのYamlを簡易的に生成していたと思いますが、これもv1.18で一緒に仕様が変わっていて、

$ kubectl create deployment NAME --image=IMAGE --dry-run=client -o yaml

となります。
この --dry-run は、--dry-run=[client | server | none] の形式で、clientを指定するとkubectlのコマンド内のロジックのみで処理、serverを指定するとサーバ側で生成される内容を取得、noneはdry-runではなくて実際に実行した内容を表示(つまりdry-run指定しないのと同じ)、となります。
同様にPodのYamlの生成コマンドは、

$ kubectl run NAME --image=IMAGE --dry-run=client -o yaml

となります。
作成済み、実行済みのDeploymentやPodのYamlを取得・逆生成するには、

$ kubectl get deployment NAME -o yaml
$ kubectl get pod NAME -o yaml

です。
サーバ側のYamlは余計な管理情報が付いてきますが、追加のkubectl-neatと言うツールを使えば、ある程度まできれいにできるようです。

なお、作成済み、実行済みのPodやDeploymentの一覧を一発で表示するには、

$ kubectl get all

が便利ですね。

kubectl runで最初の取っつきでつまずいてしまい、あわやK8sを毛嫌いしそうになったわたしの顛末を、あえて共有させていただきました。
 

2021-11-03

Apple Silicon M1シリーズmasOSのCPUコアやGPUの使用率/使用電力を詳しく見るには powermetrics コマンドと、ちょっとした工夫で見やすく

本記事の最後に、何ができるかを掲載しましたので、お急ぎの方はそちらへどうぞ
Apple SiliconがM1/M1 PRO/M1 MAXとシリーズ化されてきました。
パーソナルコンピュータとしては画期的なSoCになって、たくさんのCPUやGPUを積んでいます。
それにもかかわらずアイドリングじの電力消費はスマホ並です。

macOSはLinux系のOSなので、システム稼働状態を見るのに一番有名で手っ取り早いのはtopコマンドです。
ターミナルアプリを開いて次のコマンドを打ちます。

% top

OS全体およびプロセス毎のCPU使用率、メモリ使用量が動的に表示されます。
1秒毎の表示間隔で書き換えられますが、これが早過ぎる場合にはキーボードから s5<Return> と打つとたとえば5秒毎に変更できます。

次に、macOSでもっと有名で老舗なのが Menu Meters です(Menu Metersの最新版の公式サイト)。
ダウンロードしたzipファイルを展開して、/Applications フォルダにコピーして使用します。
Menu Metersではコア毎のCPU使用率、メモリ使用率、ネットワーク使用量をメニューバーに常駐したグラフで見ることができて便利です。

でも、高性能コアと高効率コアにそれぞれどれくらいの負荷がかかっているのか、動作周波数がどうなっているのか、消費電力がどうなっているのか、もっと詳しく知りたくなりますよね。
はい、そんな場合には、macOS専用のコマンドの powermetrics があります。

powermetrics も top と同じように、ターミナルアプリです。
次のコマンドで起動します。

% sudo powermetrics

powermetrics は管理者向けの特権コマンドなので、前に sudo というおまじないを付けて、(私は管理者ですよ、と宣言するために)パスワードを入力して起動します。
他にコマンドオプションを何も指定しないと5秒毎の状態が繰り返し表示されます。
止めるには Ctrl/C を打ちます。
もっと手早く1度だけ表示したい場合は、次のようにします(-i 1000 の部分は表示間隔のミリ秒指定、-n 1 は繰り返し回数です)。

% sudo powermetrics -i 1000 -n 1

このままでは情報量が多すぎて追っかけられないですよね。
内容をCPUとGPUの情報に限定するには次のようにします。

% sudo powermetrics -i 1000 -n 1 --samplers cpu_power,gpu_power

これでなんとなくわかるレベルになったと思います(最後に出力を加工した実際の表示結果を掲載しています)。
E -Clusterのところが(省電力の)高効率コア、P-Clusterのところが高性能コア、それとGPUの、それぞれの動作クロック数、使用率%、使用電力が表示されます。

少し長いですが、次のようにすると繰り返し表示でも一目瞭然の内容に絞り込んだ表示になります。

% sudo powermetrics -i 5000 | \
sed -u 's/(\(.*\) \([0-9]\{1,\}\) MHz:[ 0-9.]\{2,\}%)/<max \2 MHz>/' | \
grep -E 'active freq|[0-9] active resi|GPU active resi|Power:|Sampled|Machine model|OS version'

<> の中のMHzには、それぞれのコアの最大クロック数が表示されるようにしています。
最大クロックに対して、現在の動作周波数はactive frequencyのところのMHzなので、コアの使用率%はこの動作周波数に対する%と考える必要があります。

何度もこのコマンドを入力するのは大変(もちろんコピペでOKなのですが)なので、次のように定義しておけば p5 と打つだけで同じことが実行できるようになります。

% alias p5="sudo powermetrics -i 5000 | \
sed -u 's/(\(.*\) \([0-9]\{1,\}\) MHz:[ 0-9.]\{2,\}%)/<max \2 MHz>/' | \
grep -E 'active freq|[0-9] active resi|GPU active resi|Power:|Sampled|Machine model|OS version'"
% p5 

この定義は、次のように .zprofile ファイルに入れておけば、ターミナルを次回以降起動したときにすぐに使えるようになります。

% touch ~/.zprofile   # 以下の手順がエラーしないようにおまじない
% less ~/.zprofile # 事前の内容確認
% cp ~/.zprofile /tmp/.zprofile.backup # 念のためにバックアップコピーを作成
% # 次のコマンドで .zprofile ファイルにaliasコマンドを追記します
% cat >> ~/.zprofile
alias p5="sudo powermetrics -i 5000 | \
sed -u 's/(\(.*\) \([0-9]\{1,\}\) MHz:[ 0-9.]\{2,\}%)/<max \2 MHz>/' | \
grep -E 'active freq|[0-9] active resi|GPU active resi|Power:|Sampled|Machine model|OS version'"
ここで Ctrl/D を入力
% less ~/.zprofile # 追加内容の確認

最後に、p5コマンド(powermetrics コマンド+上記のα)の実際の表示内容を付けておきますM1 MacBook AirでIntel Windows 10を動かして最大負荷をかけた状態です)。

% p5
Machine model: MacBookAir10,1
OS version: 21A559
*** Sampled system activity (Wed Nov 3 11:22:25 2021 +0900) (5019.73ms elapsed) ***
E-Cluster Power: 1221 mW
E-Cluster HW active frequency: 2064 MHz
cpu 0 active residency: 98.32% <max 2064 MHz>
cpu 1 active residency: 97.68% <max 2064 MHz>
cpu 2 active residency: 97.23% <max 2064 MHz>
cpu 3 active residency: 97.12% <max 2064 MHz>
P-Cluster Power: 11246 mW
P-Cluster HW active frequency: 2988 MHz
cpu 4 active residency: 99.72% <max 3204 MHz>
cpu 5 active residency: 99.62% <max 3204 MHz>
cpu 6 active residency: 99.64% <max 3204 MHz>
cpu 7 active residency: 99.41% <max 3204 MHz>
ANE Power: 0 mW
DRAM Power: 435 mW
CPU Power: 12468 mW
GPU Power: 409 mW
Package Power: 13620 mW
GPU active frequency: 396 MHz
GPU active residency: 40.17% <max 1278 MHz: 0%>
GPU Power: 409 mW
%

ほんの少しマニアックですが、Apple Silicon M1シリーズの動作状態がよく分かるようになると思います(M1の最大クロック数(E-Core/P-Core/GPU)が、2.06GHz、3.20GHz、1.28GHzであることもこれでハッキリしますね)。
自分が普段使っているアプリの中のどの操作がどういう負荷になるのか、色々調べてみると面白いと思います。
M1 PRO、M1 MAXをお持ちの方は、表示結果をコメント欄で共有していただけるとありがたいです(匿名可能です)。

[2021-11-03] 初出に追加して、機種名とmacOSバージョンも表示されるようにしました。

2021-06-09

Linuxアプリのグローバルメニュー化はUbuntu Unityでしかできないと思っていたけれど、Kubuntuでもできるんですね

少し前のKDEのブログから
Linuxでのグローバルメニュー表示
自分用のメモを兼ねています。
WindowsやLinuxの各アプリのメニューバーは、それぞれのウィンドウのタイトルバーの下に配置されます。
これって、貴重な画面スペースの無駄だとずっと思っています。
さらに悪いことに、MS Officeではメニューバーの代わりにリボンというまた別のメニュー方式を持ち出してきています。

どのOSでもmacOSのように、メニューバーは画面の一番上の共通エリアに表示されればいいのに、とずっと思っています。

Ubuntu Linuxでは、5年ほど前にUnityというGUIツールキットで、このグローバルメニュー (global menu) を独自に実現していましたが、現在は独自路線からより多く使われているGnomeに移行しています。
主流から外れたのはとても残念だったのですが、コミュニティーの力で、Ubuntu Unity派生 (https://ubuntuunity.org/) として提供が継続されています。

さらに先日知ったのですが、KDEの最近のバージョン (最近のバージョンはKDE Plasma 5というらしくて、すっきりしたデザインに好感が持てます) ではUnityと同じようなグローバルメニューの機能を提供しています。
Ubuntu Linuxの主流の派生のひとつであるKubuntu (https://kubuntu.org/) でもこの機能が使えるようです。

これは安定してそうで、時間を見つけて試してみたいと思います。

2021-04-20

Apple Silicon MacでIntel版Windows 10を試す手順 (UTM app) - 「Appleるんるん」オンエア紹介記念!!

Apple Silicon MacBook Airで起動したIntel Windows 10
Apple Silicon MacBook Air上で動作中のIntel Windows 10
M1 Apple Silicon対応のParallels Desktopがとうとうリリースされました。
しかしながら、Parallelsは純粋な仮想環境ソフトなので、CPUエミュレーション機能は提供されていません。
つまり、Apple Silicon Mac上ではArm版のWindowsやLinuxしか(Intel Mac上ではIntel WindowsやLinuxしか)実行できません(※1)。

このブログで以前から紹介しているUTM app(祝、App Store版、およびフリー版)では、Intel CPUエミュレータのQEMUを使用しているため、Intel版のWindowsも実行することができます。
UTM appのサイトにはArm版の各種Linuxと共に、Intel版のWindows XPとWindows 7のお試しイメージが公開されています。

ここでは、Intel版Windows 10をApple Silicon Mac上で試す、最も簡単と思われる手順を紹介します。

  1. UTM app(App Store版、またはフリー版)をインストールします。
  2. Vagrant(Linux上で仮想環境を簡単に実行するためにパッケージ化する仕組み)にWindows 10のイメージが公開されているので(Microsoftの評価版をインストールしたもの)これを利用します。
    Vagrant形式のWindows 10のサイトはここ、実際にダウンロードすべきファイルのリンクは、現在バージョンが20210401.01なので
    https://app.vagrantup.com/peru/boxes/windows-10-enterprise-x64-eval/versions/20210401.01/providers/libvirt.box
    です。
    ダウンロードサイズは7.3GBです。
    中身は英語版のWindows 10 2004です。
  3. ダウンロードしたファイル libvirt.box を w10-box-20210401.tar.gz に名称変更して、展開します。
    展開すると、box.img が作成されるので、このファイルを w10-box-20210401.img に名称変更します。
  4. UTM appを起動します。
  5. + ボタンで新しいVMを作成します。
    [Information] タブの [Name] でVMの名前をつけます(あとでも変えられます)。
    [System] タブの [Architecture] で [x86_64]、[Memory] を 4096MBに指定、[Show Advanced Settings] をチェックして、[CPU Cores] で 8Coresを指定します。
    [Drives] タブで、[Import Drive] ボタンを押し、ダウンロードして展開した w10-box-20210401.img を指定します。[Image Type] は [Disk Image]、[Interface] は [IDE] とします。
    [Display] タブの [Emulated Display Card] に [vmware-svga] を選びます(vmware-svgaがいちばん安全と思います)。
    以上を指定したら、[Save] ボタンを押します。
  6. 右三角ボタンで作成したVMを起動します。
    初回起動は30分弱かかると思います。
    2回目以降の起動は3分程度です。
    例によって、当面はWindows UpdateやSearch Indexerが走るのでとても重いですが、落ち着くと、ある程度それなりになりの動作になります。
    登録済みユーザは vargrant/vagrant です。

むかしはWindowsのインストールといえば半日仕事でしたが、上記手順は1時間もあれば完了します。
普段はぜんぜん熱くならないApple Siliconですが、右の画面にあるように、8Core全て100%稼働、CPU温度が80℃以上に上がります(Menu Metersの表示による)。

今回は出来合いのイメージを使用しましたが、Windowsのインストーラで一からインストールすることも出来るはずです。
その場合は、Vargantのページから参照されているVIrtIOのドライバか、UTM appのWindows 7のページにあるSPICE toolsのドライバを追加する必要があると思います。
こちらは追って検証したいと思います。

また、Apple Silicon Macでは、Docker Desktopもすでに利用できます。
Docker DesktopにはUTM appと同じく、CPUエミュレーション用にQEMUが入っているので、今回と同様のことができる可能性が高いです。
実態はVMですが、運用をDockerに揃えられるメリットがあるので、こちらも検証していきたいと思います。

ところで、UTM appについて1月に書いた記事が、遂に、かの有名な、レジェンドたる「Appleるんるん」ポッドキャストで2021年4月18日に紹介されました!!
これで、Apple Silicon Mac上のIntel Windows利用技術の裾野がますます広がればな、と思います。
IT技術があれば面白いことがどんどんひらけていきますよね。

(※1: わたしも最初、11月の時点では、Apple Silicon Mac上のVirtualization Frameworkを使ったvftoolで、ArmのLinuxを動かして、その上でqemuを起動し、その中でIntel Windowsを試していました。
今回の方法はApple Silicon Mac上で直接qemuを動かす(UTM appがやってくれる)ので、かなり楽です。
AppleからApple Siliconの仕様が公開されて、qemuが最適化されればもっと高速化する可能性があります。
並行してApple SiliconがM1XやM2になって行けば2倍、3倍の高速化はすぐに達成できそうです。)

なお、下記コメント欄、またはtwitterの方に、ご感想等いただけたら、より一層の励みになりますので、よろしくお願いいたします。

[2021-05-05] Intel Windowsをクリーンインストールする方法を書きました。

[2021-10-31] CPU Cores数の設定は、初期のM1では全コア数の最大の8がおすすめです。
M1では高性能コアが4つですがM1 PRO/MAXは高性能コアが8つなので結果はかなり違うと思います。
10設定にすると多少でしょうがさらに上がると思われます。

2021-01-29

Linuxのsudoの脆弱性CVE-2021-3156への対応方法 - Windows 10 WSLの場合

Linuxコマンドで特権操作を行う場合によく使うsudoコマンドに脆弱性CVE-2021-3156が発見されました。
ITmediaの記事(sudoにパスワード不要で特権昇格が可能な脆弱性が見つかる 2021-01-28)と、JPCERTの記事(sudoの脆弱性(CVE-2021-3156)に関する注意喚起)に、情報が公開されています。

ほぼすべてのLinux系/UNIX系OSに影響があると思います。
macOSに関してはまだ情報が出ていないですが注意が必要と思います(macOSにはsudoeditコマンドがないので直接の影響が少ない可能性があります)。

JPCERTによると

% sudoedit -s /

のコマンドで簡易的に影響を調べることができるようです。
sudoedit: から始まるメッセージが表示されると問題があり、
usage: のメッセージが表示されると問題は対策済みです。

わたしも早速、自分のPCに対策をインストールしました。
Windows 10のWSL1 Ubuntuの場合の手順です(おそらくWSL2でも同じ)。

WSLを起動して
$ sudoedit -s /                    ##状態の確認
[sudo] password for xxxx:
sudoedit: /: not a regular file    ##問題があることが分かります
$
$ sudo apt-get install sudo        ##インストール済みのsudoのバージョンを確認
Reading package lists... Done
Building dependency tree
Reading state information... Done
sudo is already the newest version (1.8.21p2-3ubuntu1.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
$    ##WSL Ubuntu 18.04での対策済バージョンは1.8.21p2-3ubuntu1.4なので古いことが分かります
$    ##以下、対策のインストール方法
$
$ sudo apt-get update              ##レポジトリ情報の最新化
$ sudo apt-get upgrade sudo        ##sudoのバージョンアップ
$
$ sudoedit -s /                    ##対策結果の確認        
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
$                                  ##OK
$

まだ実際の攻撃は検知されていないようですが、早めの対策が必須です。

[2021-02-02] 問題はsudoeditに限定されるようです(参考記事:GIGAZINE - 「sudo」コマンドに特権昇格の脆弱性、各ディストリビューションの対応一覧)。

2021-01-16

Intel/Arm64 WindowsやLinuxをApple Silicon Macで簡単に実行出来るUTM appの一般公開が始まりました

先日ご紹介した、UTM appのwebサイトが https://mac.getutm.app/ に公開されました。
UTM appを使えば、簡単にIntel WindowsやArm64 WindowsやLinuxをApple Silicon Macで実行することができます。

私も書きましたが、Intel x86のOSの実行はArm64のOSを実行するのに比べてパフォーマンス的に不利と明記されています。

webサイトではUTM appのダウンロードリンクに加えて、設定済のゲストイメージや、OSの設定方法がGalleryページに公開されています。
Intel x86のUbuntuWindows XPWindows 7などをダウンロードしてすぐに試せるようになっています。
Arm64のUbuntuWindows 10 に関しては設定方法が記載されています。
他のArm64 Linuxは設定済のものも提供されているものもあります。

一点だけ注意点があって、現在バージョン(v2.0.17)では、ダウンロードしたイメージやISOファイルは ~/Library/Containers/com.utmapp.UTM/Data/Documents というフォルダに置く必要があります

[English version of this post]

2021-01-07

Apple Silicon MacのUTM appを使えばWindows for Intelが簡単に動く、そして熱い

macOS Big Sur 11ではRosetta 2によって、Intelコードで書かれた従来のMacアプリを、Apple Silicon上でスムーズに実行することができますが、あくまでMac用に書かれたアプリ限定です。
仮想化のためには、Hypervisor Frameworkと、Linux向けに簡易化したVirtualization Frameworkが提供されていますが、これらではIntel向けのOSを実行することはできません。
Arm用のWindowsはMicrosoft Surface Pro X向け限定でリリースされていますが、それ以外の環境での利用は現時点では(評価版以外は)許されていませんし、それ以前にArm向けのアプリはとても少ないです。

Windowsの主流はやはりIntel版(Wintelという言葉があるくらい)。
これをそのままApple Silicon Macで実行できないことには、ユーザにとってのメリットが少ないと思えます。

なぜか他ではまだなかなか紹介されていないのですが、iOS上でWindows XPを実行するという離れ技をやってのけたUTM appというアプリがあります。
このUTM appがApple Silicon Macにも対応(dmgがまさにmacOS用のインストーラ)しました。

右のスクリーンショットは、UTMを使って、Intel Windows とArm Windowsの両方を、Apple Silicon MacBook Airで実行したところです。
Intel WindowsもArm Windowsも評価版をダウンロードして、UTMで仮想ゲストを作成し、Cドライブとして設定して実行しました。

Arm Windowsはフルスピードで実行されます。
これはUTMが、内部的にHypervisor Frameworkを使って(実際にはQEMUがhvfに対応)ハードウェア仮想化技術を利用できているためです。
Arm Windowsの注意点は、起動ディスクのvhdはNVMeとして(おまじないとして)設定しないと起動しないこと、ネットワークはvirtio用ドライバを追加でインストールしないと通信できないこと、それ以外のデバイスもDevice ManagerでUnknownが多数残ってしまうことです。
画面サイズの変更もできません。
まだまだドライバ周りなどで未対応のものが残っているようです。

Intel Windowsを動かすと、UTMが内部のQEMU(Linux上で有名なCPUエミュレータ)を使って、Apple Silicon上でIntelコードをエミュレーションします。
そのため、パフォーマンスは1/4〜1/8程度、大昔のSoftPCやVirtual PCを見ている感じです。
ですが確かにIntel WindowsがApple Silicon Macで動きます。
vagrant用に設定済みのWindows 10イメージで試したこともあって(別記事に設定手順)、デバイスの認識は問題ありません。

ここで面白いのが、Intel Windows上で何かを動かしている最中は、Apple Siliconの8個のCPUコアがフル回転になって、なんとMacBook AirのF6キー辺りとその裏側が徐々に熱くなることです。
他のアプリで負荷をかけても、なかなかこういう状況を作り出すのは難しいのですが、WindowsのようなOSを丸ごとエミュレーションさせると、いくらApple Siliconといえどもフルパワーを発揮せざるるを得ない状況になるようです。
まさに『アツいぜ!Apple Silicon』です。

[English version of this post

[2021-01-08] タイトルを
「UTM appを使えば容易にIntel x86_64 WindowsやArm WindowsをApple Silicon M1 Macで実行でき、Apple Siliconがもっと熱くなる」
から
「Apple Silicon MacのUTM appを使えばWindows for Intelが簡単に動く、そして熱い」
に変えました。
[2021-01-10] Arm Windowsの動作上の制約について追記しました。
[2021-01-17] UTM appが専用webページで一般公開されて、すぐ使えるゲストイメージも公開されたので記事を書きました
[2021-03-04] UTM appが使用しているQEMUのIntelエミュレーションが、たとえ現在はM1 Macで実用的な速度を出せない状況だとしても、M1XまたはM2のApple Siliconなら馬力で解決できるはず、という記事を書きました
[2021-04-19] 有名なポッドキャスト「Appleるんるん」でこの記事が紹介されました、ありがとうございます。
お試しでIntel x86 Windows10をApple Silicon Macで実行する最短の手順を書きました
[2021-05-05] Intel x86 Windows 10をApple Silicon Macにインストールする手順を書きました
クリーンインストールすることでWindowsが以前よりも高速に動作しています。
[2022-01-08] UTM appでmacOSの仮想化ゲストも実行できるようになりました。

2020-12-31

省電力ミニPCにRockstor NAS V4.0.4をセットアップ

先日紹介した省電力ミニPCに目論見通りNAS OSをセットアップしました(4TBのUSB HDDを追加)。
NAS OSはミニPCでも稼働でき、macOSのTime Machineバックアップにも対応、iPhone/iPad用アプリで自宅バックアップにも対応、さらにDockerコンテナで色々なものを動かせます。

RockstorはOSSのNAS OSで、従来バージョンのV3.xはCentOS、最新V4.xはOpenSUSEをベースにしていて、btrfsをファイルシステムに使用します。
日本語の情報はあまりないのですが、macOSのTime MachineやWindowsのVolume Shadowingのようなファイルシステムのスナップショット機能が使いたくて、このRockstorを選びました。

何事も最初はうまくいかないもの。
まずは失敗したセットアップ方法を共有させてください。

  • まずはRockstor 3.9.1のインストーラISO(2017年7月)をダウンロードし、別マシンのVM上でインストールしました。
    これはもちろん問題なく動作しました。
  • このISOファイルをEtcherツールを使ってUSBメモリに書き込み、いざミニPCにインストールしようとしましたが、どうしても途中でコケてしまいます。
    どうやらRockstor 3.9.1のインストーラはEFIブートに対応していないようです、2017年のCentOSなので仕方ないですね。
    ミニPCの方もLegacy BIOSに設定する方法が見つからず。
  • それでは、最新版でと思い、Rockstor 4.0.4のRPMパッケージ(2020年10月)をOpenSUSEにインストールすればと考えました。
    OpenSUSE 15.2を順調にServer向けにセットアップし、zypper install rockstor でのRockstorパッケージのインストールも成功。
    (手順は下手に Built on openSUSE testing channel live (early-adopters / developers only) - Announcements - Rockstor Community Forum で見つけてしまったのが間違いの始まりだったかもしれません。)
    管理画面はきっちり表示できて、Samba共有も作成できます。
    macOSのTime Machineは最近のバージョンはAFPではなくてSambaが主流になっているのをここで知りました。
    でも、実際に共有に接続しようとすると、どうしても接続できません。
    何か設定が足りないのでしょうが解決できず。
  • 今度は安定版Rockstor V3パッケージと素のCentOS 7の組み合わせなら、と考えました。
    (こちらも手順は Rockstor on vanilla CentOS 7? - General - Rockstor Community Forum にありました。)
    最近のBIOSは良くできていて、起動パーティションをBIOSから指定できるので、マルチブート環境が簡単に作成できます。
    Rockstorに関しては残念ながら、こちらでもOpenSUSEと同じ、管理画面は問題無いのに、共有への接続ができません。
    最初のVMの /etc/samba/smb.conf と比較し、設定を合わせてみても、それだけでは改善しませんでした。

さらに調べると https://github.com/rockstor/rockstor-installer でRockstorの一括インストーラを作成できることが分かりました。
RPMパッケージをインストールした時に行われる設定だけでは足りない設定が入っているはず。
なんとかこれでうまくいきましたので、セットアップ手順を記しておきます。
なおRockstor V4.0.4は次期正式バージョンのリリース候補版でArm64にも対応していますが、ここでは私が実際に試したx86_64の手順のみです。

  1. OpenSUSE 15.2の環境を準備。
    上記Rockstor V4のRPMセットアップに失敗した環境を使用しました(転んでもタダでは起きない、ですね。なお後のRockstorのインストールでパーティションのカスタマイズができずに初期化されるのでこの環境とのお付き合いはここまでになります)。
  2. RockerのISOを作成するためのrocksor-installerを取得。
    # zypper install git wget
    # git clone https://github.com/rockstor/rockstor-installer.git
    # cd
    rockstor-installer/
  3. SUSEのカスタムインストーラ作成ツールkiwi-ngを取得。
    # zypper addrepo http://download.opensuse.org/repositories/Virtualization:/Appliances:/Builder/openSUSE_Leap_15.2/ appliance-builder
    # zypper install python3-kiwi btrfsprogs gfxboot
  4. RockstorインストーラISOファイルの作成、数分かかります。
    # kiwi-ng --profile=Leap15.2.x86_64 --type oem system build --description ./ --target-dir /home/kiwi-images/
  5. 作成されたISOファイル Rockstor-NAS.x86_64-4.0.4-0.install.iso をUSBメモリに書き込みます(Etcherツール等にて)。
  6. ミニPCをこのUSBメモリから起動して、インストール。
    ただし、ディスクのパーティションのカスタマイズはできずディスクの全領域が初期化されます。
  7. これでRockstor V4.0.4が無事起動します。
  8. Wi-FiモジュールAC9560が認識されないので、有線LANで接続し、Wi-Fiモジュールのインストーラを取得。
    # wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-20201218.tar.gz
    # tar xzvf linux-firmware-20201218.tar.gz
    # cp -p linux-firmware-20201218/iwlwifi-9000-pu-b0-jf-b0-* /lib/firmware/

    リブートして反映。
  9. 次のコマンドでWi-Fiに接続。
    # nmcli device wifi
    # nmcli device wifi con [SSID名] password [パスワード]

  10. MacとミニPCをGbit有線LANで直結した時に、ミニPC側の自動IP(APIPA)が設定されないので、次のコマンドで設定。
    2021-01-10修正:ifcfg+wickedの方式では起動後数秒でIPアドレスが消えてしまうので、NetworkManagerでの設定が必要です。
    nmtuiのテキストGUIで設定するか、以下のnmcliコマンドで設定します。
    なお、WindowsやmacOSのようにDHCPがダメならlink localアドレス(APIPA)を設定する、と言う設定はないようです(ipv4.method autoはdhcpの意味)。
    # echo 'BOOTPROTO=dhcp+autoip" >> /etc/sysconfig/network/ifcfg-eth0
    # echo 'BOOTPROTO=dhcp+autoip" >> /etc/sysconfig/network/ifcfg-eth1
    # systemctl enable wicked
    # systemctl start wicked


    # nmcli connection modify "Wired connection 1" ifname eth0
    # nmcli connection modify “Wired connection 1” ipv4.method link-local
これでインストール完了です。
ブラウザで接続して、ホスト名と、管理者ユーザ名・パスワードを設定します。
[Storage] メニューの [Disks] で接続しているディスクを確認し(ソフトウェアRAIDもここで設定)、[Pools] で各ディスクにPoolを紐付け、[Shares] で共有を作成します。
その上で、Sambaサービスを起動し、実際の共有を設定します。

Samba上のホスト名(ここではホスト名をrockstorだとします)はDNSのnslookupやdigコマンドでは確認できなくて、macOSでは、
% smbutil lookup rockstor
Windowsでは、
> nblookup rockstor
とします。
接続は、macOSではFinderから [移動] => [サーバーへ接続...] で
smb://rockstor/sharename
WindowsではWindows Explorerに
\\rockstor\sharename
と指定します(ここで指定できるホストはSambaホスト名、DNSホスト名、IPアドレスです)。

M1 MacBook AirのTime Machineの初回バックアップが有線LAN接続で1時間くらいで完了できました。

Rockstor側は [Rock-ons] メニューからNextCloudもすんなり設定できて、いろいろと活用できそうです。


[2021-01-04] 早速V4.0.5に更新されていました、更新内容はAD連携とdocker network関連です。

2020-12-17

低消費電力ミニPC KODLIX GD41を購入

Kodlix GD41の製品ページから
Apple Silicon MacBook Airに続いて、低消費電力ミニPCを購入しました。

古いMac mini 2012は最新OSの対象から外れましたし、何よりとても暑くなります。
上にWi-Fiアクセスポイントを置いていたらMac miniの熱で動作がおかしくなります。

複数のMac、PC、iPhone、iPadの大事なファイルや写真やメールやノートやバックアップを何とか安全に保管する場所がずっと欲しかったのです。
クラウドではすぐに利用枠を超えてしまいます。

そこで、ミニPCでNAS OSを動かして、簡単便利に運用できれば、と考えました。
今どきのNAS OSはコンテナ機能まであって、より幅広いアプリ(スマホ連携できるnextCloudなど)を動かせるようになっています。
NAS専用機(QNAPやSynologyやAsustor)はスペックが低めの割に価格が高いと感じました(スマホ連携アプリや出先アクセスサービスなどはメリットですが)。

Celeron N4000/J4000のミニPCは似たようなのがいくつも出ています。
GD41の購入後に分かった気になる点をまずは挙げておきます。

  • 利点:Celeron N4100、TDP 6Wの超低消費電力。ファンレスで静かでもそれほど熱くなりません。SODIMM 2スロット。内蔵ストレージはM.2×2+SATA 2.5インチ。Gbit NIC×2、USB 3.0×4(うち1つはUSB-C)。
    消費電力が低くて、拡張性がソコソコあります。
    最新ハイスペックのミニPCもありますが、補助的な使い方である以上、ファンノイズと発熱と消費電力が少ないモノが良いと考えました。
  • 付属のACアダプタでは電源が入らず、とても焦りました。USB-Cポートに給電すればきちんと立ち上がりました。このまま使うつもりです。
  • M.2スロットは2つあるのですが、上のスロットは2280サイズ専用かつSATA専用です。下のスロットは2242専用かつPCIe専用です。
    増設用に事前に2242のSATAを準備していたのですが、今は空中接続です(サイズ延長アダプタを付けるつもり)。その上、上の2280のスロットの固定ネジはケースの開口部からは隠れているのでロジックボードを取り出してネジ止めする必要があります(サイズ延長アダプタを固定しておいて短い2242を付け外しする運用の方が使い勝手がむしろ良いかも)。
  • ケースの上蓋は爪ではめ込み式なので、精密ドライバーを差し込めば空けることができます。ロジックボードを完全に取り出すのに必要です。
  • Wi-FiアダプタはCentOS7では認識せず(追加ドライバはまだ試せていません、OpenSUSE 15.2では問題なく認識)。Legacy BIOS起動専用のLinuxインストーラは正常起動せず、EFI対応のインストーラが必要(BIOS設定でLegacy BIOS起動に設定する方法が分からない、おそらく設定できない)。
  • 電源をONしていなくてもUSB3.0 Type-Aポートに電源が供給される。これは都合が良い場合も悪い場合もありますね。設定できれば良いのですがまだ見つからず。

手間をかけずに稼働という訳にはいかず、まだ試行錯誤中ですが、うまい使い方が定まればここで紹介させていただきますね。

[2021-12-01] 自分のためのメモ、メモリ32GBでも認識するとの情報アリ、CPU負荷は小さいけれどメモリを大量に消費するアプリ(コンテナじゃなくてVM、LinuxゲストじゃなくてWindows)の家庭内ホスティングに良さそうですね、max 2.4GHzとのバランスが多少悪いですが。

2020-11-28

ASRockから今度はRyzen 4000 Mobile搭載のミニPCが追加、MARS 4000U

以前の記事で、ASUSとASRockのAMD ZEN 2世代のRyzen搭載のミニPCを紹介しました。
ASRock DeskMini X300 (amazon)はデスクトップRyzen APU用のソケットが付いているので自由にCPUを選べて良いのですが、ASUS PN50 (amazon)の4750U/4800U搭載版はなかなか発売開始されず、4500U版も在庫切れのままでやきもきしているところです。

そんな中、ASRockから追加で、Ryzen 4000 Mobile搭載のミニPC、ASUS MARS 4000Uが発表されました。
デスクトップRyzen版のミニPCから減りますがそれでも、ストレージがM.2とSATAの合計2台内蔵可能になっています。
CPUは4300U (4Core 4Thread)、4500U (6Core 6Therad)、4800U (8Core 16Thread)から選べます(モバイルCPUなので付け替えはできない)。

早速 Neweggというカリフォルニアの通販会社が販売を開始しています。
現在は6 CoreのRyzen 5 4500U Mobile版のみで、\46,441となっています(CPUのみ付属。メモリ、ストレージ、OS無しです)。
8 Core 16 Threadの4800Uはおそらくこれより2万円くらい高くなると思われます。

デスクトップ版CPUのRyzen 7 PRO 4750G 8 Core 16 ThreadはTDPが他と同じ65Wとはいえ、ミニPCには排熱設計的に少々無理があるというレポートを見かけます。
モバイル版CPUならTDP 15W、cTDP 10-25Wなので、ミニPCにはうってつけ、安定して動作するのではないでしょうか(さらに縮小してラップトップまで行くと厳しいかも)。

5nmのApple Siliconのパフォーマンスで話題騒然の中ですが、ADM ZEN 2 Ryzen 4000は7nmなので、Apple M1と順当な勝負ができます
Windowsや、従来のLinuxとの互換性を重視するならRyzenは良い選択肢だと思います。


[2020-12-26] Mouseコンピュータからmouse CT-6という名前で4500U版の販売をするようです(PC Watch - マウス、Ryzen搭載で厚み2.8cmの超小型パソコン「mouse CT6」を本日店頭先行発売。税別6万9,800円から)。

こちらは、デスクトップ向けの 8Core/16Thread Ryzen 4750GEですが、ThinkCentre M75q Gen 2 も割引クーポンが使えてかなりお得なようです(こちら、岡ちゃんさんのYouTubeで知りました)。サイズは 182.9 x 179 x 36.5mm。

またさらに、ベアボーンのミニPCがASrockから出ていますね(Ark - ASRockから久々なベアボーンは組み込み向けRyzen搭載、コンパクトベアボーン「4X4 BOXシリーズ」)。こちらは組み込み用低電力の第一世代ZenのRyzenプロセッサです。サイズは 110.0 x 118.5 x 67.3mm。

2020-10-07

デスクトップAMD ZEN 2 Ryzen PRO 4000G対応のDeskMiniも販売開始、こちらの方が最上位版は早く入手可能か

サイズ感が分かるように
VESAマウント付きの写真

8月の投稿で紹介したベアボーンPCのもう一方のASRock DeskMini X300も、10月9日販売開始が決定したようです。
こちらはメモリ、ストレージはおろかCPUも自分で選んで組み込む必要があります。
対象となるGPU内蔵のRyzen 4000G CPUは、バルク販売が前提なのでショップでのセット販売が中心になるようです。

オンラインショップではなかなか見つからなくて、わたしが唯一見つけたのはツクモの予約フォームです。
これ以外は、twitterで検索すれば何軒かのリアル店舗の情報が見つかります(検索方法は、  <https://twitter.com/search?q=deskmini x300 予約> )。

もう一方のASUS Mini PC PN50(大人気で、Ryzen 5版はすでに在庫切れ、Ryzen 7版は今日の時点では発売日未定、海外ではすでに発売開始されている)に比べて、CPUを入れ替えられるメリットがあります。

また、あと1年くらいするとさらに次世代のZEN 3のCPU(Ryzen 5000か)が出てくるので、CPUアップグレードの期待も持てます。
この2機種のミニPCは、グラフィックボード用のPCIスロットがなく、そういう意味では拡張性はある程度限られています。
この点は、コンパクトさを優先するか拡張性・将来性を優先するかの選択になります。

ミニタワーのサイズで良ければ、かつグラボ付きが良ければすでに多くのBTO PCが出ています。
GPU内蔵のRyzen 4000Gが良ければ(グラボの分だけ安く済む)、BTO PCが出始めていて、これも現時点ではtwitterで検索して探すのが良さそうです( https://twitter.com/search?q=ryzen 4650 bto )。
ただし、BTO PCは構成の選択肢が限られている場合やパーツが割高になる場合が多くて、例えば64GBメモリにしようとすると途端に数万円アップしてしまうことなどがあるので注意が必要です。
調べている中で、キューブケース+Mini-ITXマザーボード(残念ながら型番も写真も記載無し)でカスタマイズ性が高そうな、気になる構成のBTO PCがストームのサイトにありましたので、参考になさってください。
BTOではなくて自分でパーツを組み合わせて作成することもできます。
もちろんメーカーPCもまだ種類は多くないですが、出始めています(一世代前のZEN+のものと間違わないように注意が必要です)。

いろいろ考えているとなかなか決まらないのが、お買い物の醍醐味ですが、欲しい時が買い時ですね。
最新の7nmのCPU(AMD Ryzen ZEN 2世代、Ryzen PRO 4000G、Ryzen Mobile 4000U、GPU機能なしはRyzen 3000(Gなし、またはXつき))の能力を、このタイミングでみなさんも手に入れてみてはいかがでしょうか。
将棋の藤井聡太さんもZEN 2世代のRyzen Threadripperを今まさに買い足しされるそうですよ。

2020-09-05

AMD Zen 2 Ryzen MobileのMini PCが順調に販売開始、ただし上位モデルは10月まで待ち

先日の投稿で紹介した、ASUS Mini PC PN50がいよいよ日本でも発表、販売開始されました。

プレスリリースがこちら「AMD Ryzen 4000 シリーズモバイルプロセッサ搭載、Wi-Fi 6対応小型ベアボーンPC「Mini PC PN50」2モデルを発表」です。
早速amazonでも予約注文可能になっています。

発売予定日は2020/09/18、まずはモデルとして Ryzen 3 4300U(4コア、4スレッド) ¥42,800 と、Ryzen 5 4500U(6コア、6スレッド) ¥47,800 の低位・中位モデルでの提供です。
ベアボーンキットなので、メモリとディスク(M.2またはSATA)、それとOS(Windowsなど)は別売りです。

すでに注目の最新Zen 2 Ryzen CPUなので、すぐに人気になると思います。

悩ましいのは、上位モデルとして、Ryzen 7 4700U(8コア、8スレッド)とRyzen 7 4800U(8コア、16スレッド)が控えていること。
こちらはamazon UKには当初から掲載されていて、発売予定日は2020/10/2となっています。
ちなみにamazon UKでの価格は、£274.98、£319.98、£369.99、£499.98です。

さて、いよいよ面白くなってきました。

[2020-10-05] 各タイプの型番が分かりました。
ASUS本家のオンラインストアでも3/5が出始めています(5はさっそく売り切れですが)。
Ryzen 3 4300U (4core 4thread): PN50-BBR025MD ASUSストアで¥42,800
Ryzen 5 4500U (6core 6thread): PN50-BBR026MD ASUSストアで¥47,800
Ryzen 7 4700U (8core 8thread): PN50-BBR027MD ASUSストアで¥53,800
Ryzen 7 4800U (8core 16thread): PN50-BBR028MD ASUSストアで¥69,800

[2021-05-01] 本家オンラインストアや各ショップでも 4800U/4700U 版の販売がやっと始まったようです。
今となっては 5000 シリーズが欲しくなるところですが、発表されてから供給されるまではこれくらいの時間はどうしてもかかるのでしょうね。

[2021-06-03] Zen3でなくてZen 2のリフレッシュ版Ryzen 5000ベースのPN51がリリースされました(ASUSサイト)。
ラインナップは3/5/7(USサイトTech Spec)、最初はRyzen 5 5500U(5000Uは全てでハイパースレッド有り)から。
Ryzen 3 5300U (4Core 8thread): PN51-BB353MDE1 (ノルウェー版型番)
Ryzen 5 5500U (6Core 12thread): PN51-B-B5048MD ASUSストアで¥47,000
Ryzen 7 5700U (8Core 16thread): PN51-B7082ZD (ドイツ版型番)
以前の書き込みの4xxxの型番が違っていたので修正し、価格も載せておきます。

[2021-06-25] Ryzen 5000Uのうち2桁目が奇数のものはZen 3ではなくてZen 2でした(5300U/5500U/5700UはZen 2、5600U/5800UがZen 3)。
前回のコメントを修正しました。
本物のZen 3のミニPCはもう少しの辛抱が必要ですね。

[2022-02-07] Zen 2リフレッシュ搭載PN51のマイナーチェンジ版PN51-S1が発表されました(ASUSのサイト)。
Ryzen 5 5500U (6Core 12thread): PN51-S1-B-B5187MD amazonで¥53,333
Ryzen 7 5700U (8Core 16thread): PN51-S1-B-B7186MD amazonで¥59,394
改良点は、有線LANが2.5Gbpsになったことと、USBCがUSB 3.2 Gen1に下がった代わりにUSB PDで起動可能(ただし5500U版は65W、5700U版は90W必要)になったことです。
価格は掲載されたのを見つけたら追記します。
(2022-02-15: amazon価格追記しました、それとCPUのグレードが間違えていたので訂正しました、5500Uと5700Uはコスパ良いですね)

このASUS Mini PC PN50/PN51とほぼ同サイズの類似機種として、ASRockから 4x4 Box(大きさが4inch×4inch×2inchだから)が出ていて(ASRockの公式サイトでは工業用のあつかい、発表は2020-09)、どちらがいいか悩ましいところです。
ASRockの方が在庫的には手に入りやすいようです。
Ryzen 3 4300U (4Core 4thread): 4x4 BOX-4300U/JP amazonセール価格で¥32,800
Ryzen 5 4500U (6Core 6thread): 4x4 BOX-4500U/JP anazon在庫切れ
Ryzen 7 4800U (8Core 16thread): 4x4 BOX-4800U/JP amazon通常価格¥84,444
こちらのASRock 4x4 BOXは有線LANが2.5Gbps+1Gpbsの2ポート構成です。

2020-08-09

Apple Silicon Macもいいけれど、x86_64マシンも気になる2020年

Apple Silicon Macでは、iOS/iPadOSとmacOSが融合されて、膨大なアプリが使えるようになります。
とは言っても、x86_64の方が圧倒的にいろいろなアプリがあり、手軽にいろいろなことを試そうとしたらIntel/AMDマシンの方が絶対便利と思います。
Windowsアプリしかり、Linuxアプリもしかりです。

今年はAMDのZen 2のRyzen CPUが熱いですね。
Intelがチッププロセス14nmで何年も停滞している間に、AMDは2世代先の7nmの製品を実際に出してきています。

最新のRyzenを積んだマシンが続々と出てきています。
ゲーミングデスクトップやゲーミングノートもよいのですが、ある程度の拡張性があって場所を取らない条件で考えると、ミニタワーか、ミニPCが良さそうです。
先週から今週にかけて、ちょうどよいミニPC 2機種が発表されました。

ASRock DeskMini X300は、デスクトップ版のRyzen CPUに対応したベアボーンで、サイズは155mm×155mm×80mm、製品情報はここ https://www.asrock.com/nettop/AMD/DeskMini%20X300%20Series/
ASUS Mini PC PN50は、モバイル版のRyzen CPUを積んだベアボーンで、サイズは115mm×115mm×49mm、製品情報はここ https://www.asus.com/Mini-PCs/Mini-PC-PN50/

いずれもミニPCなので、GPU内蔵版のCPUで、最大8 Core、16 Thread、64GB。
前者の最上位CPUがRyzen 7 PRO 4750Gで、後者がRyzen Mobile 7 4800U。
デスクトップとモバイルで、TDPが65Wと15Wと違うので、クロック周波数が3.6GHz~ターボ全コア4.0GHzと、1.8GHz~ターボ全コア3.2GHzの違いがある以外の他のCPU仕様は同じです。
内蔵可能ストレージは、さすがにDeskMiniがM.2×2+SATA×2と十二分ですが、Mini PCは最小限のM.2×1+SATA2×1です。

巣ごもり生活でお小遣いをあまり使っていない今年は、一気に仕入れ時なのかも。

2016-04-28

備忘録 - Windows用の文字コード変換は安直にSJISではなくてCP932を指定

Wikipediaより
結論:
iconvコマンドでSJIS変換する場合はCP932を指定しましょう。
% iconv -t CP932 linux-file-in > windows-file-out
% iconv -f CP932 windows-file-in > linux-file-out

解説:
Linuxの日本語の文字コードはUTF-8が標準設定されていることが多くなりました。
一方のWindowsではUTF-8のファイルは扱えますが、まだまだShift JISのファイルの方が相性が良いようです。
たとえば、UTF-8のCSVファイルをダブルクリックしたら文字化けすることが多いですし、メモ帳のデフォルト文字コードもSJIS (ANSI)です。

そこで文字コードの変換が必要になります。
テキストファイルの文字コード変換を行うLinux上の業界標準のコマンドがiconvです。
iconvコマンドは、オプション -f と -t で、変換元と変換先の文字コードを指定します。
デフォルトの文字コードはUTF-8です。

ここでは陥りやすいのが、Windows用にShift JISに変換する場合、Shift JISだからといって安直に、SJIS を指定することです。
これ絶対ダメです。

少しテストしただけでは気付かないのですが、いわゆる外字(①など)が、標準規格のSJISでは定義されていないので、簡単にエラーになってiconvが途中終了してしまいます(これはこれで外字の存在確認に使えるのですが)。

ではShift JIS用に何を指定するかといえば、CP932を使います。

①などの外字の文字コードは、むかしむかし、Microsoftが日本語Windows用に、JIS規格のShift JISを拡張して割り当てました。
この拡張Shift JISの名前がCode Page 932 (CP932) です。
(ここの説明は感覚的で専門家が見たら正確ではないかもしれません。)(なお、iconvでの指定はCP932ですが、JavaではMS932、WebではWindows-31Jを指定します。)
(Emojiではどうなるのかは、今度調べたいと思います。)

CP932という、なんとも覚えにくい文字コードの名前です。
Shift JISの文字コード変換はSJISではない」ということだけ、最低でもいつも思い出すようにしましょう。
(わたしは実際、今日これで失敗してしまいました。)

[2020-11-13] UTF-8からSJISに変換する際に、絵文字などが含まれている場合は、また途中でエラーになって落ちてしまいます。
なので今後は、

% iconv -t CP932//TRANSLIT linux-file-in > windows-fie-out

の指定を心掛けるのがより良いと思います。

2013-05-21

Mac OS Xの内蔵ディスクはそのままに、外付けUSBディスクのLinuxとデュアルブートする方法

WindowsマシンのWindowsとUbuntu Linuxをデュアルブートする方法は何度かこのブログでも取り上げました。
今度はMacのMac OS X Mountain LionとUbuntu Linuxをデュアルブート(マルチブート)する方法についてです。

Mac OS Xでデュアルブートと言えば、Boot Campが有名ですが、Macの内蔵ディスクを変更してしまうので、私はどうも好きになれません。
以下は、Macの内蔵ディスクにいっさい手をつけず、外付けUSBディスクにLinuxをインストールしてデュアルブートできるようにする方法です。
ブートローダーは rEFIt を使います。
  1. Linux用に使用したい外付けUSBディスクをMacに接続し、ディスクユーティリティを起動します。
  2. ディスクユーティリティで、外付けUSBディスクのパーティションを切ります。
    今回はブートローダーのrEFIt用の小さなパーティションと、Linux用に残りの2パーティションとします。
    rEFIt用のパーティションの名前は [refit]、フォーマットは [Mac OS拡張(ジャーナリング)]、サイズは [0.03GB] とします。
    残りの容量のパーティションはフォーマットしなくてもかまいません。
    (私の場合は実際にはここで、1TBのUSB 3.0ディスクを4つのパーティション構成にしました。Time Machine用に500GB、refit用にHFS+で3GB、データ共有用にFATで10GB、残りをLinux用です。)
  3. ディスクユーティリティでパーティションが切り終わったら、refitのパーティションがマウントされると思います。
  4. rEFIt をダウンロードし、.dmg をマウントします。その中の [efi] フォルダを外付けUSBディスクの refit のパーティションにコピーします。
  5. ターミナルを開いて次のおまじないを実行します(指定するマウントポイント名は外付けUSBディスクのrefitパーティションの方です)。
    cd  /Volumes/refit/efi/refit/
    ./enable.sh
  6. これでブートローダーの設定は終わりです 。
  7. 次にUbuntu Linuxのmac用のiosイメージをCDに焼いて、再起動します。CDから起動するには、再起同時に C のキーを押しながら起動します。
  8. Ubuntu Linuxのインストーラが起動するはずです。もしもたくさんのディスクを接続していたり、パーティションをたくさん切っている場合には、Ubuntuのインストーラがハングしてしまうことがあるようです。パーティションの数、ディスクの数は極力少なくしておく必要があるようです。
  9. Ubuntuのインストーラで(ここでは12.10の場合)、[コンピュータにはMac OS Xがインストールされています。どのようにしますか?] のところで [それ以外(Ubuntu向けに、自分でパーティションの作成やサイズ変更を行ったり、複数のパーティションを選択することも出来ます。)] を選びます(選択肢は3つで、他の選択肢は、[UbuntuをMac OS Xとは別にインストール] と [Mac OS XをUbuntuで置き換える] です)。
    外付けUSBディスクに / と swap のパーティションを切ります。
    次に、ここが重要ですが、Linuxのブートローダーのインストール先デバイスを外付けUSBディスクにします。
    なお、内蔵ディスクと外付けUSBディスクの2台の場合は、外付けUSBディスクの名前は /dev/sdb になるはずです。
  10. これ以外はUbuntuのインストーラに従ってインストールを行います。
これでMac OS XとUbuntu Linuxのデュアルブート環境の完成です。
Mac OS Xから起動したいときはそのまま起動します。
Ubuntu Linuxからブートしたい場合は、ブートローダを呼び出すために、Opt キーを押しながら起動し、Linux のパーティションを選んで起動します。

なお、私の場合は、Ubuntu 12.10でMac用のisoイメージではなく、単なる64bit用のiosイメージを選んでしまったためか、有線LANと無線LAN (Wi-Fi) が認識しませんでした。
再起動後、http://www.frozenindustries.com/2012/11/04/ubuntu-12-04-lts-on-an-apple-mac-mini-late-2012/ に従ってドライバを追加する必要がありました(この部分は、自動化ができないか、再度検証が必要と思っています)。
Ubuntuのisoイメージのダウンロード(特にMac用)は http://www.ubuntu.com/download/desktop のページからではなく、 http://releases.ubuntu.com/ からダウンロードするのが良さそうです(Unsupported Ubuntu Imagesのリンクの先にNexus 7用のイメージもありますね)。

2013-05-20

Mac miniで仮想化三昧 - VirtualBox, VMware, OpenStack

メイン環境を、Mountain Lion 10.8でとうとうサポートされなくなってしまった Mac mini early 2006 + Core 2 Duo 1.5GHz (macmini2,1) から、Mac mini late 2012 16GB (macmini6,1) に移行して3ヶ月経ちました。

Mountain Lionが使いたかったのもあるのですが、Mac上でUbuntu Linuxを動かし、仮想環境上でMountain Lionを動かせば、スムーズに使えて、一石二鳥ではないかと目論んでいました。
16GBは仮想環境を見越しての構成です。
本物のMac上の仮想環境でMac OS Xを動かすのはAppleも許している使い方です。
Ubuntu上の仮想環境はというと、
  • VitrualBox 4.2.xでは、まだMountain LionはゲストOSとしてインストールできませんでした。
  • VMware Playerでは、unlockパッチを使うと、Mountain LionをゲストOSとしてインストールできました。つい先日これを試しました。動作は多少もたつき、サウンドも出ません。メイン環境的に使うには到底無理がありそうです。また、Playerは無償版なので、スナップショット機能が使えないなど、機能制約があります。
という状況。

当初、Mountain LionとUbuntu Linuxをデュアルブートに設定していたのですが、ブートし直すのが面倒で、ほとんどUbuntuの方に切り替えることはありませんでした。
Ubuntu上でVMware Playerがうまく行ったので、こんどはMountain Lion上で、VMware Fusionを試してみました。
  •  VMware Fusion 5では、何の苦労もなくMountain LionをゲストOSとしてインストールし、スムーズに稼働しました。期間限定無償評価版があるので、その気になりさえすれば、いつでも試せます。
並行して、どうしてもMS Officeが必要なことから、仮想環境上でWindows 7を動かしていたのですが、
  • VirtualBoxでは、Windows Updateを実行するとOSが立ち上がらなくなる現象を何度か経験してしまいました。Windows Updateを実行する前にはバックアップとしてスナップショットを必ず取得し、おかしくなったら戻せるようにする必要がありました。私の環境だけかもしれませんが、不安要因です。
  • VMware Fusionでは、VirtualBoxで起こっていた不安定さは今のところ出ていません。
という状況から、VMware主体に移行したいという思いが強くなりました。

Ubuntuでは、仮想化からもう一歩進んで、クラウドのOpenStackが標準?提供されています。
VMware Fusion 5では、nested virtualizationつまり仮想化の入れ子ができます。
ゲストOS上でOpenStackを動かして、その中で仮想環境を使えます。
実は当初の目論見としてもうひとつ、OpenStack上でWindowsやMountain Lionを稼働させる実験もあったのですが、まだまだOpenStackは敷居が高く、なかなか手が回っていませんでした。
今回は、
  • Mountain Lion上のVMware Fusion上にUbuntu Serverをインストールし、haglx9さんの「Openstackインストール手順 (Grizzly) Ubuntu 13.04 (パッケージ)編」に忠実に従い、OpenStackの仮想インスタンスが起動するところ(右の上の画面)までやっとこぎ着けました。ただし、現状では仮想インスタンスがNo bootable device. で止まってしまっていますが。。。
までできています。
OpenStackは、一つの仮想化ソフトに閉じた世界での動作ではなく、複数マシンやAmazonクラウドまで制御・拡張できる夢があると感じています。

引き続き勉強してきたいと思っています。

2012-06-21

WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 12.04の場合

Ubuntu 12.04 LTSでも11.04とほぼ同じ手順(ほんの少し楽に)でデュアルブート・マルチブートできます。
前回の記事にコメントを追記しておきましたので、そちらをご覧ください。

Windows上で作業する方がやはり楽ですね。
それにしても、Ubuntuのセットアップはだんだん時短されて、どんどん良くなって行きますね。
私のように半年 or 1年毎にクリーンインストールするのが一番良いのかもしれません。
Windowsもパッチが出るまでの間は良いのですが、OSのセットアップ+Windows Updateをすると時を経るほどにどんどん必要時間が延びて(特に .NET FrameworkとOfficeのパッチは時間がかかる)困り者です。

2011-05-03

WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 11.04/12.04/12.10, Grub2の場合

Ubuntu 11.04/12.04/12.10はAppMenu (Global Menu) を採用し、よりMacに近い先進的なユーザインターフェースになりました。
インストーラもデュアルブート派(マルチブート派)により優しくなりました。
以前の投稿と同じく、Windowsのブートローダ(ntldr)でUbuntuとマルチブートするためのインストール手順を記します。

Windows 8/7/Vista/XPのブートローダで、Ubuntu Linux 11.04~12.10をデュアルブートする方法:
  1. Windowsを新規インストール、またはインストール済みのWindowsのパーティションを分けてUbuntuをインストールするエリアを作成します。
    ここでは3つのパーティション、つまりWindows用のNTFS、Ubuntu用の空きパーティション、共有用のFAT32を作成するものとします。
    容量は私の場合は80GBを40GB、20GB、10GBに分けました(テストマシンなので少なめ)。
    8/7/VistaではWindowsの管理ツールでパーティションの縮小、分割が簡単にできます。
  2. 次に、Ubuntuを真ん中のパーティションにインストールします。
    1. UbuntuのCDまたはUSBから起動し、最初のメニューで [Ubuntuを試す] を選びます。
    2. 起動後、必要であれば、
      無線LANなどネットワーク環境の設定を行います(必須ではない、インストール後じっくりやる方がよいかも)。
      また、Gpartedツール(システムメニューでgpartedと入力して検索、起動する)でパーティションの状態を確認することができます。必要であれば、過去にインストールしたUbuntuのパーティション(ブートローダ、本体、スワップ)を削除します(結果、ひとつの空き領域にします)。
    3. デスクトップにある [Install Ubuntu 11.04] を起動します。
      1. [言語の選択] で好きな言語(日本語)を選びます。
      2. [ディスク領域の割り当て] で [それ以外] を選びます
        (デフォルトの [UbuntuをWindows 7とは別にインストール] を選んでしまうと全自動インストールが走りブートローダが上書きされてしまうので、注意)。
      3. まず、スワップパーティションを作成します
        (スワップパーティションはなくてもLinuxは問題なく起動しますが、作成するのが一般的です)。
        表示されるパーティション一覧から、[空き領域] を選んで、[追加] を押します。サイズは4GB程度(Linuxサーバでは物理メモリの3倍程度と言っていましたが、昔話となりました)、場所は [後ろ]、マウントポイントは [swap] を選んで [OK] を押します。
      4. 次に、Ubuntu本体をインストールするパーティションを作成します。
        表示されるパーティション一覧から、[空き領域] を選んで、[追加] を押します。
        サイズはそのまま(全て)、マウントポイントは [/] を選んで [OK] を押します。
      5. ここで、[/] に設定したパーティションの名前を記録しておきます。
        私の場合は sda7 になりました(以前紹介した手順に比べて作成するパーティションがひとつ少なくすんでいます)。
      6. [Device for boot loader installation:] に先に記録したパーティション(私の場合sda7)を指定します。
        この手順を忘れる・間違うとWindowsのブートローダが上書きされるので、特に注意してください。
      7. [インストール] を押して、インストールを開始します。
  3. 再起動後、Ubuntuは起動しないので、今まで通りWindowで起動します。
  4. WindowsのブートローダからLinuxを起動するためのツールとしてgrub4dosを使用します(以下、設定済みの場合は4、5、6はスキップしてかまいません)。
    grldrとgrldr.mbrを c:\ に(Cドライブの直下に)コピーします。
  5. Linuxを起動するためのメニューを作成します。
    以下の内容で C:\ に menu.lst という名前のテキストファイルを作成します。
    2行目 hd0,6 の2番目の数字は、Ubuntu本体のパーティション番号マイナス1の数字です。
    sda7の場合は hd0,6 とします。
    title    Linux
    root (hd0,6)
    kernel /boot/grub/core.img
    
    ※ Ubuntu 12.10の場合は以下の内容とします。
    title    Linux
    root (hd0,6)
    kernel /boot/grub/i386-pc/core.img
  6. WindowsのブートメニューにUbuntuを追加します。
    Windows 7/Vistaの場合、管理者モードのDOS窓を開き、次のコマンドを実行します。
    2行目以降の {xxxx} は、1行目の実行結果で表示されるidを指定します。
    追加後、引数なしのbcdeditで「リアルモードブートセクター」のところに表示されることを確認します。
    bcdedit /create /d "Linux" /application bootsector
    bcdedit /set {xxxx} device partition=C:
    bcdedit /set {xxxx} path \grldr.mbr
    bcdedit /displayorder {xxxx} /addlast
    Windows XPの場合は、テキストエディタでC:\ にあるboot.iniに下記を追加します(システムファイル、隠しファイルになっている場合は解除してから)。
    C:\grldr="Linux"
  7. リブートして確認します。
    WindowsのブートメニューにLinuxの項目が追加されているはずです。
    Ubuntuを起動するときは、WindowsのブートメニューでLinuxを選んだ後、さらにLinuxを選び、次に表示されるUbuntuのブートローダーで一番上を選びます。
Linuxのブートローダ (Grub2) に比べてWindowsのブートローダ (ntldr) は融通が利かないので、安全のためWindows主体のブート方法をとりました。
こうすることで、Windowsを再インストールしたり、バージョンアップしたり、Linuxを入れ替える場合にも、ブートローダの上書きを気にせず安心して作業できます。

なお、Windowsのgrub4dosはgrubのバージョン1なので、(標準のインストール状態の)Ubuntu 11.04を直接ブートできません。
WindowsのgrubからUbuntuのgrub2をロードし、そこからUbuntuをブートしています(チェインロード)。

以前の投稿:

(Ubuntu 10.10/11.10はスキップしてしまいました。)

[2012-06-17] Ubuntu 12.04で確認しました。手順はほとんど同じで、ディスク領域を割り当てる2-3-3〜2-3-6までが一つの画面でできるように改良されています。
[2012-12-31] Ubuntu 12.10での手順を追加しました。コメントでの情報ありがとうございます、活用させていただきます。
[2013-02-23] Windows 8でもWindows 7と同様に設定できるとの情報をReatさんからもいただきました。ありがとうございます。

2011-04-15

Ubuntu 11.04はMacのようなGlobal Menu (AppMenu)に、なおかつAuto HideかつFull Screen App対応

Ubuntu 11.04でのアプリのメニューバーがMacのようにディスプレイの最上部にまとめられます(AppMenuまたはGlobal Menuと呼ばれる)。
Windows GUI対Mac GUI論争の一つの解になると思います(画像はiloveubuntu.netの記事から)。

UbuntuのAppMenu(メニューバー)は普段はアプリ名だけを表示し、ポインタを持っていったときだけ [File] や [Edit] のメニューエントリが表示されます。
画面にはできるだけ余分なものを表示しないことで、視線がドキュメントに集中できるので、とても良いことと思います。

さらに、Mac OS X Lionで採用予定のFull Screen Appにも対応しています。
アプリのウィンドウがフルスクリーン(マキシマイズ)しているときはタイトルバーが省略されます。
少しでもウィンドウを広く使えて、これまた良いことです(画像はフルスクリーン状態、タイトルバーはなくクローズボタンやミニマイズボタンがメニューバー上に表示されている)。

些細な差と思われるかもしれませんが、これだけの差のためにOSを乗り換えても良いと思えるくらいに、ちょっとした日々の使い勝手が良くなると思います。
Unity 3Dデスクトップや、GnomeからQtへの変更や、Desktop版とNetBook版の統合(LauncherがDesktopでもデフォルト、Dockのようなもの)が話題になりがちですが、私はAppMenuに大いに注目しています。

Ubuntu 11.04 Natty Narwhalは今日の時点ではBeta 2、最終リリースは4月28日。

2010-08-10

WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 10.04 LTS, Grub 2の場合

[2011-05-03] Ubuntu 11.04用の手順を作成しました。

以前、WindowsとUbuntu 9.04をWindowsのブートローダでデュアルブートする方法(初出)と、WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 9.10, Grub 2の場合(Grub 2対応)を書きましたが、またしてもUbuntu 10.04 ではそのままの方法ではうまくできませんでした(いまさらながらで、すみません)。
Ubuntu 10.04では、インストールウィザードの一番最後にブートローダーのインストール先を指定するところで、すでに存在するパーティションからしか選択できなくなったためです。
そのため、Ubuntuのブートローダーのための小さなパーティションをあらかじめ作っておくようにしました。
以前の手順に今回の手順を追加して再録します。
Windows 7/Vista/XPのブートローダで、Ubuntu Linuxをデュアルブートする方法:
  1. Windowsを新規インストールします。
    パーティションはNTFS、Ubuntu用の空き、WindowsとUbuntuのデータ共有用のFAT32、の3つを作っておきます(FAT32のパーティションは結局ほとんど使うことはないかもしれません)。
    なお、パーティションを1つだけ作成して、後からパーティションを分けることも最近では可能ですが、間違いを少なくするために最初から分けておきます。
  2. 次にUbuntuを真ん中のパーティションにインストールします。
    1. CDからインストールする際、最初のメニューで「インストール」を選ぶのではなく、「インストールせずにUbuntuを使用する」を選びます。
    2. Gpartedツール(Administratorメニュー)で、真ん中の空きパーティションにUbuntuのブートローダ用の小さなパーティションを作成します。フォーマットはext4、サイズは最小限の512MB程度(100MB程度でよいですがGUIではこれ以上小さく指定できませんでした)。
      Gpartdで変更を適用します。そして、作成したパーティション名を覚えておきます(私の場合はsda6になりました、古いパーティションを何度も使っていると大きな数字になるようです)。
      (Ubuntuが既にインストールされている場合は、この段階でSwapも含めパーティションをきれいに削除してから作業します)
    3. インストールウィザードを起動します。
    4. Ubuntuのインストール先のパーティションの指定で、「空き領域を最大限利用する」を選択します。これで真ん中の空きパーティションが選ばれるはずです。
    5. インストールウィザードの最後の画面で、「拡張」ボタンを押して、ブートローダのインストール先を「sda6」(先ほど作成した小さなパーティションの名前を選ぶ)とします。
      この操作を忘れないでください。忘れるとWindowsのブートローダーが上書きされてしまいます。
    6. Ubuntuのインストールが終わったら、リブートしてWindowsを起動します。
      ブートメニューを設定していないので、この段階では、まだUbuntuは見えません。
  3. Windows上にgrub4dosをダウンロードし、grldrとgrldr.mbrの2つのファイルをC:\ (Cドライブ直下)にコピーします。
  4. チェインロードのためにメニューを作成します。
    以下の内容で C:\ にmenu.lstを作成します(2行目のhd0,6の数字をUbuntuのパーティションに合わせます。sda6は、ここではhd0,6になります ブートローダ用のパーティションの後ろにUbuntu本体のパーティションが作成され、そこに /boot/grub が格納されているはずです。ブートローダ用のパーティションがsda6の場合、/boot/grub のパーティションは sda7 となり、指定するのは hd0,6 となります。2番目の数字はパーティション番号マイナス1の数字です)。
    バックアップのために、grub4dosとmenu.lstはデータ共有パーティション(Dドライブ)にコピーしておくとよいです。
    title    Linux
    root (hd0,6)
    kernel /boot/grub/core.img
  5. WindowsのブートメニューにUbuntuを追加します。
    Windows 7/Vistaの場合、管理者モードのDOS窓を開き、次のコマンドを実行します。2行目以降の{xxxx}は、1行目の実行結果で表示されるidを指定します。
    追加後、引数なしのbcdeditで「リアルモードブートセクター」のところに表示されることを確認します。
    bcdedit /create /d "Linux" /application bootsector
    bcdedit /set {xxxx} device partition=C:
    bcdedit /set {xxxx} path \grldr.mbr
    bcdedit /displayorder {xxxx} /addlast
    Windows XPの場合は、テキストエディタでC:\ にあるboot.iniに下記を追加します(システムファイル、隠しファイルになっている場合は解除してから)。
    C:\grldr="Linux"
  6. リブートして確認。
    WindowsのブートメニューにLinuxの項目が追加されているはずです。
    Ubuntuを起動するときは、WindowsのブートメニューでLinuxを選んだ後、次に表示されるUbuntuのブートローダーで一番上を選びます。
Linuxに比べてWindowsのブートローダの方が融通が利かないので、私は、安全のためにWindows主体のブート方法をとっています。
こうすることで、Windowsを再インストールしたり、バージョン変更(XP=>7、7=>XPなど)で上書きする場合、Linuxを入れ替える場合にも、ブートローダの上書き順の制約を気にせず安心して作業できます。

[2011-05-03] パーティション番号の理解が間違っていたので訂正しました。Ubutu 11.04用の記事への参照を追加しました。