Yabu.log

ITなどの雑記

「チョコレートの世界史」を読んだ

バレンタインデー記念エントリー。ちょうど時期が良いので昔読んだ本の感想を投下。

感想

若干ネタバレになりますが、本書は某大学のロウントリー社(オリジナルのキットカットを製造した会社)の資料コーナーを著者が訪れたことが原点にあるらしいので若干ロウントリー社贔屓な歴史書になっている。

チョコレートは以外と歴史が浅く、特に今の固形のものが食されるようになってからまだ200年も建っていない。本書には中南米がスペインに侵略されてからカカオを加工する技術がヨーロッパ諸国で発展してキットカットが出来上がる歴史が書かれている。

個人的にはチョコレートの成分とかが詳しく書かれているところが分かりやすかった。カカオポッド、カカオパウダー、カカオバターカカオマス、カカオニブの違いは全くわからなかったけど、本書で理解した。

ノート

チョコレートの品種は結構コーヒーに似てる

カカオ豆には、ポリフェノールの含有量が異なる三種類の系統がある。クリオロ種、フォラステロ種、トリニタリオ種という。

クリオロ種でビター系のチョコレートを作ると、抜群の味になる。クリオロ種は生の豆を食べても美味に感じるという。しかし、病気に弱いため、栽培が難しい。稀少品種で、現在世界で生産されているカカオ豆の一%程度の生産量にすぎない。フォラステロ種は、ポリフェノールを多く含む。栽培が容易な強い品種で、世界の生産量の約八五~九○%を占める。味にパンチはあるが、苦味が強い。そのままでは、ビター系のチョコレートには向かない。

コーヒーも似た感じでアラビカ種とロブスタ種があり、

  • 美味しいけど病気に弱く量が取れないアラビカ
  • 味は劣るけど病気に強くで量が取れるロブスタ

という風になっている。この種構成に関して、コーヒーと比べた時のチョコレートの特筆点は美味しい方(クリオロ)が極端に出回っていない、という点だと思う。

コーヒーはアラビカ種の方が消費量が多い*1。私個人の経験でもロブスタ100%のコーヒーは飲んだ覚えがない。逆にチョコレートに関してはこの本を読むまでクリオロ種のものは食べたことがなかった。

お店で買えるクリオロ種チョコレート

市販されているものの中で安いクリオロ種のものはカルディに売ってあったペルー産の板チョコがあった。こちらはカカオ分の高いブラックチョコレートだが、評判通りブラックチョコレートでも美味しく、他のものによくある強い苦味がなく美味しく食べられた。値段も安かったのでおすすめ。ちょっと前流行ったbean to barのチョコレートは高すぎる(板チョコ1枚くらいの量で数千円)ので個人的に日用するのは無理。

チョコレートの製造方法とかややこしい成分とか

  • カカオポッドからカカオ豆を取り出す
  • カカオ豆を砕きカカオニブ(胚乳)を取り出す
  • カカオニブをローストする
  • カカオニブをすりつぶしてカカオマス(ドロドロ状のものを作る)

ここまでがチョコレートとココアパウダー製造の共通部分。ここからが工程が違っている。

一応チョコレートの作り方はここに色々応用があり、例えばホワイトチョコレートを作る際はカカオマスは使わずココアバターのみを使う。ここアバターの代わりに融点の高い油を使えば高音でも溶けにくいチョコレートになる。戦中は東南アジアや潜水艦内(熱がこもると40度を超える)内でも日本兵の食用に作っていた。ちなみにスーパーでみる殆どの普及品チョコレートはにはココアバターだけでなく植物性油脂も使われている。

商品分類(名称の分け方)

チョコレート分が多い順に

チョコレート>ミルクチョコレート>準チョコレート>準ミルクチョコレート

カカオ分35%以上かつココアバター18%以上がチョコレートを名乗れる

年表

  • (~1521年まで)オルメカ文明/マヤ文明がクリオロ種をメインにカカオ崇拝(通貨としても利用)
  • (1521年)滅亡したアステカ王国らへんを植民地にしたスペインがカカオを広め始める
  • スペイン人がココアに砂糖を入れ出すようになってくる
  • メキシコでカカオの消費量増加に伴いエルサルバドルエクアドルベネズエラがフォラステロ種の産地として台頭
  • 味の悪いフォラステロ種の増加によりカカオの価格が下落し、市民に普及
  • (1660年頃)フランス人がカリブ海諸島(マルチニーク島)にカカオを持ち込んで栽培を始める。
  • (1757年)トリニダード島(スペイン領後のイギリス領)でクリオロ種が病気のため壊滅。生き残ったクリオロとフォラステロ種を交配してトリニタリオ種が作られる。
  • (1828年)ヴァン・ホーテン(オランダ)がココアパウダーを作る発明から特許を取得(カカオマスからここアバターを搾り取る技術)
  • (1879年)アフリカ本土(ガーナ)にフォラステロ種が移植される
  • (1847年)ブリストルでジョーゼフ・フライがカカオマスにここアバターを混ぜて固形チョコレートを初めて作る。
  • (1849年)ココアパウダーに色々混ぜて売るのが流行る。その流れで粉末ミルクを混ぜたミルクココアが発明される
  • (1876年)アンリ・ネスレ(スイス)がコンデンスミルクをチョコレートに混ぜてミルクチョコレートを発明する
  • (1878年) 日本で初めてチョコレートが売られる@米津風月堂
  • (1918年)日本で初めてチョコレートが製造される@田町by森永製菓
  • (1935年)ロウントリー社キットカット販売開始。当初の商品名はチョコレート・クリスプ
  • (1941年)原材料不足・価格統制などにより商品名をチョコレートクリスプからキットカットに変え、戦時中は青いラベルで売り始める
  • (1958)ブリュッセル万博を機に家族経営小規模生産だったベルギーチョコレート(ノイハウス、ゴディバ等)が世界的に注目を浴びる
  • (1988)ネスレがロウントリー社を買収。以後アメリカ以外ではネスレ社がキットカットを販売。アメリカではハーシー社が販売権保有

戦時中の日本のチョコレート事情

  • 1940年12月でカカオ豆の輸入ストップ
  • 戦中は森永製菓が50人社員をインドネシアに派遣し、現地のカカオでチョコレートを作っていた
  • 代用チョコレート
    • カカオの代わり:百合根、チューリップ球根、オクラ、チコリ、芋、小豆など
    • ココアバターの代わり:大豆油、ヤシ油、ヤブニッケイ油など
  • 進駐軍が消費していたチョコレートはハーシー社*2のチョコレートといい、闇市に出回っているものや「ギブミーチョコレート」でもらえるやつはこれらしい。

余談:バレンタインデーに関する記載が一切ない

本書を「バレンタイン」で検索をかけても前書きで1単語だけ登場するだけで詳しい解説とかは一切なかった。 広告とかマーケティングの章は一応あるけど、チョコ業界的にバレンタインデーが成功したのは日本だけなのでしょうか。

*1:要出典

*2:現在もアメリカのチョコ最大手らしい

「RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み」を読んだ

結構古い本です。中古で書いましたが、多分新品はあまり出回っていないと思います。

この本を読んだ動機

  • CC本(Bernstein本)やweikum本をいきなり読むのはきついので、RDBMS(自体の)入門書が読みたい
    • SQLの本は割と何冊か読んだが、DBMS自体について書かれた本はあまり読んでいない。
  • DBのコンポーネントを特定製品に依存しない形式で理解したい
  • 特定の製品に依存していないMVCCの日本語解説を読みたい

などを理由にこの本を読みました。

Concurrency Control and Recovery in Database Systems

Concurrency Control and Recovery in Database Systems

ノート

RDBMSは以下のコンポーネントから構成される

  • SQLを解釈実行するパーツ
  • データベースの構造を司るパーツ
    • カタログ管理
    • インデックス管理
    • バッファ管理
    • ストレージ管理
  • 複数のアプリケーションからの要求や可溶性を司るパーツ

雑感

  • プランには論理プランと物理プランの2種類がある

論理プラン

データベースの処理手順を「関係代数」の言葉で(厳密にはこれだけではないが)書き下したのが「論理プラン」である(p36)

物理プラン

論理プランをコンピュータ上の実行手順に書き換えたものを物理プランという(p36)

  • 論理プランではSQLで書かれた内容を関係代数の操作に書き直す(和、差、共通、選択、射影、直積、結合)
  • 物理プランでは結合アルゴリズム(nested loop/sort merge/hash join)を選んだりスキャン方式(index/table scan)を選ぶ

  • WAL(Write a head log)のメリットがわかりやすく書かれている。

  • ロールバック・ロールフォワードの説明がわかりやすい

    • ロールバックは操作の取り消し(UNDO),ロールフォワードは操作のやり直し(REDO)
    • それぞれの操作にはそれ専用のログを使うUNDOログ,REDOログ
  • Create tableで宣言したテーブル情報は一般に「カタログ情報」というらしい。これは知らなかった。

  • 本書ではMVCCはMVTO (Multi Version Timestamp Ordering)のプロトコルを例に説明されている

微妙な点

  • 記述が若干古い
    • HDDが100GBの時代。
    • もちろんSSDやOn memory DBなんてない
    • JOIN構文がまだ存在していない
      • FROM句にテーブルをカンマ区切りで列挙してWhere句に結合条件を書くスタイル

と、こんな感じです。RDBMSの内部に切り込んでかつ特定製品に依存しないような類書はあまり無いように思います。データベーススペシャリストの獲得を目指す方が副読本として読むのがいいのではないでしょうか。

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)

COBOLが基本情報午後問題から廃止されるらしいので解いてみた&動かしてみた

基本情報の午後試験からCOBOLが廃止されますのでH30秋のCOBOLを解きました。問題自体は完答できて満点でした。それだけだと面白くないのでMacCOBOL環境を構築して実行してみました。

問題はこちらの設問10です。

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_2/2018h30a_fe_pm_qs.pdf

問題内容

  • 全社員の資格(4つ限定w)の合格状況を管理するプログラム
  • プログラムは半年に一回だけ実行されるバッチ。この利用頻度だとCOBOLからリプレースされないだろうとちょっと納得できる設定。
  • 繰り返しと分岐をきちんと理解していないと完答できないような良問だと個人的に思う。

情報サービス企業であるP社には社内資格として資格1~4があり,従業員に取得を奨励している。 社内資格を取得するための試験は定期的に実施しており, 全従業員の保有状況を保有資格ファイルで管理する。P社の事業年度は4月から翌年3月までであり, 上期(4月~9月)と下期( 10 月~翌年3月)の2期から成る。 資格試験に合格した従業員の情報は合格ファイルに1期分を蓄積する。 上期の合格者を蓄積した合格ファイルは 10 月初めに,下期の合格者を蓄積した合格ファイルは 4月初めにプログラムを実行して,保有資格ファイルに反映する運用である。

ざっくり概要がわかる程度に紹介しましたが、完全版が見たい人は上記リンク先を見てください。

環境

$ cobc --version
cobc (OpenCOBOL) 1.1.0
Copyright (C) 2001-2009 Keisuke Nishida / Roger While
Built    Aug 24 2018 04:30:53
Packaged Feb 06 2009 10:30:55 CET

ソース&ビルド

open-cobolをインストールします

brew install open-cobol

適当に写経したままだと動かなかったので先頭8行を足した。

IDENTIFICATION DIVISION.
PROGRAM-ID. QLF.
ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
      FILE-CONTROL.
      SELECT SRT-FILE  ASSIGN TO 'sort.txt'.
      SELECT QLF-FILE ASSIGN TO 'qlf.txt'.
      SELECT PAS-FILE  ASSIGN TO 'pas.txt'.
DATA DIVISION.
FILE SECTION.
  SD SRT-FILE.
    01 SRT-REC.
       02 SRT-NO        PIC X(8).
       02 SRT-CD        PIC 9(1).
       02 SRT-DATE      PIC 9(8).
  FD QLF-FILE.
    01 QLF-REC.
       02 QLF-NO        PIC X(8).
       02 QLF-INF.
          03 QLF-DATE      PIC 9(8) OCCURS 4.
  FD PAS-FILE.
    01 PAS-REC.
       02 PAS-NO        PIC X(8).
       02 PAS-CD        PIC 9(1).
       02 PAS-DATE      PIC 9(8).
WORKING-STORAGE SECTION.
77 SRT-FLAG       PIC X(1) VALUE SPACE.
   88 SRT-EOF        VALUE "E".
77 CR-NO          PIC X(8) VALUE SPACE.
PROCEDURE DIVISION.
MAIN-PROC.
    OPEN I-O QLF-FILE.
    SORT SRT-FILE ASCENDING KEY SRT-NO
         USING PAS-FILE
         OUTPUT PROCEDURE IS RET-PROC.
    CLOSE QLF-FILE.
    STOP RUN.
RET-PROC.
    PERFORM TEST BEFORE UNTIL SRT-EOF
       RETURN SRT-FILE AT END    SET SRT-EOF TO TRUE
                                 PERFORM WRI-PROC
                       NOT AT END PERFORM UPD-PROC
       END-RETURN
    END-PERFORM.
UPD-PROC.
    IF  SRT-NO NOT = CR-NO THEN
       PERFORM WRI-PROC
       MOVE SRT-NO TO QLF-NO
       READ QLF-FILE END-READ
       MOVE QLF-NO TO CR-NO
    END-IF.
     MOVE SRT-DATE TO QLF-DATE(SRT-CD).
WRI-PROC.
    IF CR-NO NOT = SPACE THEN
       REWRITE QLF-REC
    END-IF.

ちなみにプログラムの大部分は 【基本情報技術者試験】平成30年 秋期 午後 問題と解答 からコピペしたものを手直しした。

上記ファイルをコンパイルします

$ cobc -x --free -W prog.cob 

実行前ファイル内容確認〜実行

必要になるファイルを用意する。sort.txt処理に必要な中間ファイルなので空でOK

$ ls
pas.txt     prog        prog.cob    qlf.txt     sort.txt
$ cat pas.txt 
00000001220180203
$ cat qlf.txt 
00000001
0000000220170101
00000003

実行〜結果確認

$ cat qlf.txt 
00000001
00000002
00000003
$ ./prog
$ cat qlf.txt 
00000001        20180203        
00000002                        
00000003                        

無事00000001の社員の資格2の合格日が更新されました。

感想

COBOLは自分の知ってるどの言語よりも自然言語(英文)っぽく書けるように工夫されている。可読性は高いと思う。

参考にさせていただいたサイト

動かす時に少し調べました。

ファイル管理段落

gnucobol - Opening file for reading in COBOL - Stack Overflow

第 5 章 ファイル状態コード

MacにCobolを入れていじってみた話 - Qiita

ubuntuのssh serverに公開鍵認証でログインする

前職ではsshを本格的に使ったことがなく、せいぜい自宅でgithubに公開鍵をupした程度しか使ってなかったのでサーバー側、クライアント側を一通り動かして見ました。

サーバー側のsshの設定

設定ファイルは/etc/ssh/sshd_configなのでコレを編集して様々な設定を適用可能

  • 待受portを22から変更
  • ポートフォワーディングを禁止する
  • パスワード認証を無効化する(常に事前に登録した公開鍵を使う)

※todo:セキュリティ的にましな設定を調べてまとめる

変更を加えたらリスタートしましょう

sudo systemctl restart sshd.service

接続

パスワードを使って接続

クライアント側で実行するとuserのパスワードを聞かれ、ログインできます。

ssh <user name>@<server name(or ip)>

RSAで認証して接続

クライアント側でRSAの鍵を作る

$ ssh-keygen -t rsa

クライアント側のPCから鍵をサーバーに送る

ssh-copy-id -i <key file> <user name>@<server name( or ip)>

クライアント側から秘密鍵を指定して接続

ssh -i <private key file> <user name>@<server name(or ip)>

note複数の鍵がある場合、

~/.ssh/configファイルに設定を書いておくと実行するときにオプションの指定などをすべて省略できるので便利。(ssh <接続名>だけで接続できる)

Host  <接続名1>
  HOSTname <server name (or ip)>
  port <port no>
  User <user name>
  IdentityFile <key file>

Host <接続名2>
  ...(以下略)

切断

exitコマンドで切断可能

weikum本に記載されている全定義の一覧リスト

現在5章を読む勉強会に参加していますが、 5章まで全部読めていません。最近読めていないところを見直すと、理解を曖昧にしていた用語の定義が前半の方に乗っていたので、この際全部調べて定義の掲載箇所を一覧できるものを作ってみました。

下表を参考におっ、こんな定義も乗ってたか!という感じで使ってもらえると嬉しいです。*1

DEFINITION page
2.1 Partial Order 46
2.2 Page Model Transaction 46
2.3 Object Model Transaction 51
3.1 Schedules and Histories 66
3.2 Serial History 67
3.3 Herbrand Semantics of Steps 74
3.4 Herbrand Universe 75
3.5 Schedule Semantics 76
3.6 Final State Equivalence 77
3.7 Reads-From Relation 78
3.8 Final State Serializability 82
3.9 View Equivalence 83
3.10 View Serializability 85
3.11 Monotone Classes of Histories 92
3.12 Conflicts and Conflict Relations 93
3.13 Conflict Equivalence 93
3.14 Conflict Serializability 94
3.15 Conflict Graph (Serialization Graph) 96
3.16 Commutativity Based Equivalence 99
3.17 Commutativity Based Reducibility 100
3.18 Order Preservation 102
3.19 Commit Order Preservation 102
3.20 Closure Properties of Schedule Properties 106
3.21 Commit Serializability 107
3.22 Indivisible Units 111
3.23 Dependence of Steps 113
3.24 Relatively Serial Schedule 113
3.25 Relative Serializability 114
3.26 Push Forward and Pull Backward 116
3.27 Relative Serialization Graph 116
4.1 CSR Safety 130
4.2 Two-Phase Locking (2PL) 134
4.3 Conservative 2PL 142
4.4 Strict 2PL 143
4.5 Strong 2PL 144
5.1 Version Function 187
5.2 Multiversion Schedule 188
5.3 Monoversion Schedule 189
5.4 Reads-From Relation 190
5.5 View Equivalence 191
5.6 Multiversion View Serializability 192
5.7 Version Order 194
5.8 Multiversion Serialization Graph (MVSG) 195
5.9 Multiversion Conflict 197
5.10 Multiversion Reducibility 198
5.11 Multiversion Conflict Serializability 199
5.12 Multiversion Conflict Graph 199
6.1 Object Model History 218
6.2 Tree-Consistent Node Ordering 219
6.3 Object Model Schedule 219
6.4 Serial Object Model Schedule 221
6.5 Isolated Subtree 221
6.6 Layered History and Schedule 222
6.7 Flat Object Schedule 223
6.8 Commutative Operations 224
6.9 Commutativity Based Reducibility 226
6.10 Conflict Equivalence and Conflict Serializability 227
6.11 Tree-Reducible History 229
6.12 Level-to-Level Schedule 234
6.13 Conflict Faithfulness 238
6.14 State-Dependent Commutativity 241
6.15 Return Value Commutativity 242
8.1 IDM Transaction 286
8.2 Transaction Equivalence 287
8.3 Final State Serializability 289
8.4 Conflict Serializability 291
8.5 Conflict Graph 291
8.6 Extended Conflict Graph and Serializability 293
8.7 State Serializability 296
8.8 Transaction Chopping 302
8.9 Chopping Graph 302
8.10 Correct Chopping 304
10.1 Isolation Levels 361
10.2 Multiversion Read Committed and Snapshot Isolation Levels 362
10.3 Formal Definition of Snapshot Isolation 363
10.4 Snapshot Isolation Serialization Graph 363
11.1 Expansion of a Schedule 384
11.2 Expanded Conflict Serializability 385
11.3 Reducibility 387
11.4 Prefix Reducibility 389
11.5 Recoverability 391
11.6 Avoiding Cascading Aborts 392
11.7 Strictness 393
11.8 Rigorousness 394
11.9 Log Recoverability 398
11.10 Inverse Operation 408
11.11 Perfect Commutativity 411
11.12 Perfect Closure 413
11.13 Normal Commutativity Table 414
11.14 Strictness 415
11.15 Terminated Subtransactions 416
11.16 Expanded Object Model Schedule 417
11.17 Extended Tree Reducibility 418
12.1 Extended History 434
12.2 Stable Log 435
12.3 Log Buffer 435
12.4 Cached Database 436
12.5 Stable Database 437
12.6 Correct Crash Recovery 437
12.7 Logging Rules: Redo Rule, Undo Rule, Garbage Collection Rule 438
18.1 Global History 677
18.2 Conflict Serializability 678
18.3 Global History 692
18.4 Direct and Indirect Conflict 694
18.5 Global Conflict Graph 695
18.6 Commit-Deferred Transaction 699
18.7 Extended Commitment Ordering 701

ちなみにですが同じものが複数回出てきているものがあるかもしれませんが、それぞれ文脈が違っています。 例えばConflict Serializabilityは3回でてきていますが、

  • 3.14 Conflict Serializability
  • 8.4 Conflict Serializability
  • 18.2 Conflict Serializability

f:id:yuyubu:20190205150103p:plain
大元のSerializabillityの定義

f:id:yuyubu:20190205150213p:plain
IDM Transactionに置けるConflict Serializability

f:id:yuyubu:20190205150317p:plain
Global,Local historyにおけるConflict Serializability

とそれぞれ内容が違っています。

ちなみにこの本の勉強会は明日もあります。オススメです。一緒に楽しくトランザクションを勉強しましょう。

connpass.com

*1:多分トランザクション資料を読む時の不明点確認は巻末のindexの方が良いと思う

賀正新年2019年あけましておめでとうございます

まだセーフです。

f:id:yuyubu:20190204183902p:plain
今年もよろしく

2018年の振り返りでも書いてみます。

転職した

仕事内容は書かないけど、分野的には 地理情報 + (R)DB + 画像処理 + 性能測定/改善な感じ。 一部は殆ど経験がない要素もあるので勉強したことを少しづつこのブログなどに書いていこうと思います。

色々勉強会に出た

継続して出ているもの、スポットで出たもの等色々あるが、 スポットで出れそうなもので興味が会ったものがいくつか会ったが、

などは予定が合わなかったり、疲れていたりで行けなかった。

初めて発表した

20分なのでLTという割に長いが、そこまで大きな発表ではない。

yuyubu.hatenablog.com

色々な人に会った

名前出すと迷惑なので控えますが、主に勉強会を通して面白い人に沢山会った。 酒が飲めないなどが理由で宴会などは元々嫌いだったけど、 いろんな会社の人と話す機会だと思って、勉強会の打ち上げなどは積極的に参加した。

紅茶を飲み始めた

私はハードコアなコーヒー党ですが、会社でコーヒーを入れるのは非常にめんどくさい。 というわけで色々模索した結果ティーバッグで紅茶を飲むのが良いのでは?という結論に至った。

Amazonとかコンビニで買ったやつはあまり美味しくないけど、ちゃんとした茶葉屋さんで買ったやつは美味しいと思う。

どうやら私はアッサムティーというやつが好きらしい。

初めて高度区分の試験に合格

まだまだ半人前の状態なので、これはなんで受かったのかよくわからない。

yuyubu.hatenablog.com

セキュリティはそこまで積極的に関わることにならなさそうだけど、今後もちょくちょく勉強して行きたいです。

15年ぶりに歯医者に行った

この件に関してはまだ治療中ですが、終わったらまとめて1つの投稿にしたいと思います。

2019年の意気込みとか

  • ランニングで適当な結果を出したい
  • 冬季はジムに通いたい
    • 寒いとランニングはきつい(アップ、ダウン、呼吸等)
    • 別に寒さに耐える苦行がやりたいわけではないので、運動習慣を途切れさせないためにも動きやすいジムなどにいくべきかなと思う。
  • 英語の技術書を読めるようにする
  • TOEICを毎月受ける
    • 特にTOEIC用に勉強はしませんが、実力ベンチとして受けようかなーと思います。
  • 発信する情報の質をあげる
    • 色々話題になったサイトじゃないけど日本のweb上の技術情報群の質を下げてる自覚はあるので...
  • テニスボールでリフティング1000回を達成する
    • 100回は時々できるようになってきた

今年中にほしいもの

  • Type-C 60WのPDができる4Kディスプレイ
  • 100Mbps安定する回線
  • iPad(バッテリーがそろそろ☠️)

という訳で今年もよろしくお願いいたします。

PCのセットアップに苦戦したがなんとかGRUBでWindows,Ubuntuのdual boot環境ができた(日記)

1つのSSD(500GB)上にwindows + ubuntuのdualboot環境を作った。

実施順は以下の通り

  • 1.ssdをフォーマット(windowsのインストールディスクにあったメニューで実施)
  • 2.Ubuntuをインストール(liveCDから)
  • 3.ubuntuwindowsのインストール先パーティションを作る
    • ちなみにこれはインストールしたSSDからブートしたOSからはできなかったので態々LiveCDから行った
  • 4.windowsをインストール

一応職場のPCのOSは自由だが、 Windowsを利用する可能性があるので完全消去はまずいかなと思いこのような構成にした。 linuxなんてVMでいいじゃんと思うかもしれませんが、 vmだとスペックが使いきれな買ったり、UIの描画に若干違和感がある等のデメリットがある。

デメリット

1つのディスクを複数パーティションに分けてOSを導入すると、バックアップ,リカバリなどがややこしいらしい。

起こったトラブルとか

GPTパーティション云々

https://www.cyberarchitect.net/blog/archives/1806

Windowsインストール時に 「このディスクにWindowsをインストールすることはできません。選択されたディスクはGPTのパーティションの形式ではありません。」 というエラーがよくでた。

https://freesoft.tvbok.com/tips/efi_installation/diskpart_gpt_mbr.html

インストールDVDをUEFIブートした場合のみ、Windowsは GPT形式でインストールされます。 DVDを旧BIOS互換ブートした場合、WindowsMBR形式でインストールされます。

上記ブログを参照した程度の知識しかなかったのでBIOS=MBR,UEFI=GPTくらいのゆるい認識なので、 レガシーモード(BIOS)でしかブートできないWindowsにGPT強制されても...という 感じだったが、ubuntuパーティションをGPTで作り直したらWindows10がインストールできようになった。(なんだったんだあれ?)

f:id:yuyubu:20190118185529j:plain

GRUBメニューが表示されない

dual環境を整備した後、起動時にwindows or ubuntuを選択するgrubメニューが表示されないという トラブルがあった。ちなみにgrubメニューがなくてもBIOSUEFIブートの設定画面でUbuntuWindowsの優先順位を変更することができる。 だけど、毎度起動OSを切り替えるたびにBIOSのメニューをカチカチいじるのは面倒なのでなんとかしてgrubメニューを出したい。

これはwindowsインストール後にubuntugrubをアップデートすることで対処できた。

sudo update-grub

f:id:yuyubu:20190118185524j:plain
grubメニュー。ubuntuwindows boot managerが表示されている

askubuntu.com

セットアップするディスク以外は取り外す

ubuntuではsda,sdbの呼び方windows上ではディスク0,1,2,3...BIOS上ではインターフェース名(SATA1,M2等)と 2次記憶装置の名前を統一感の無い名前で表記しあってるので非常に混乱する。 のでOSをインストールする時は インストール対象のHDD/SSDインストーラーのイメージが入っている記憶装置(USBメモリ/CD)の接続のみにとどめて、 他のデバイス(back up用HDDとか)は全部切り離しておいたほうが無難でしょう。

さて次はバックアップをどうするかでしょう。