Arch Linuxとsystemd-bootでデュアルブート

systemd-bootでArch Linuxを2つ、カーネルを分けて起動させる方法と記録。

早い話がEFIパーティション/boot にバインドマウントさせるだけなのでArch Wikiを見たほうが正確です。ソース情報はこちら。

EFI システムパーティション - ArchWiki

この方法を使うと最初にインストールしたArchがバインドマウントを使っていなくても、新しくインストールするArchでバインドマウントを使えば分けられるので中々いいです(まだカーネルのアップデートとかはしてないのでわからないところもありますが...)。

インストール前の状態

  • Arch Linuxがインストール済
  • systemd-bootを使っている
  • 追加でインストールするためのパーティションは分割済

インストール手順

基本的には普通のArchインストールの手順に従います。

uryoya.hatenablog.com

この記事の「パーティションのマウント」の箇所を以下の手順に変更。

# mount /dev/sdX /mnt  # Xはルートシステムを入れるパーティションのもの
# mkdir /mnt/boot
# mkdir /mnt/esp
# mount /dev/sdY /mnt/esp  # EFIシステムパーティション。
# mkdir /mnt/esp/EFI/arch # 「arch」は任意の名前でOK。ここを後で `/boot` にバインドマウントする。

ここからさらに「システムの設定-chroot」まで進めたら、 /boot の中にインストールされたものを全て /esp/EFI/arch に移動する。

mv /mnt/boot/* /mnt/esp/EFI/arch/

そしてバインドマウントをする。

# mount --bind /esp/EFI/arch/ /boot

以下を /etc/fstab に追加してバインドマウントを永続化。

/esp/EFI/arch /boot none defaults,bind 0 0

後は普通の手順でインストールを続けます。最後にブートローダのインストールが待ち構えていますが、既にsystemd-bootは有効になっているので今インストールしたイメージを起動するための設定ファイルを追加します。

/boot/loader/entries/<filename>.conf を編集。 <filename> は任意。バインドマウントするために作ったディレクトリと同名にするのが無難?

title    Arch Linux
linux   /EFI/arch/vmlinuz-linux
initrd  /EFI/arch/intel-ucode.img
initrd  /EFI/arch/initramfs-linux.img
options root=PARTUUID=[PARTUUID] rw

後はchroot環境から抜けて、マウントを外して再起動すればEFIのメニューに新しいエンドポイントが追加されてるはず。

Arch Linux install メモ

時々インストールすることがあるのですが細かいところをよく忘れるので、自分用にメモ。

インストール

インストールガイド - ArchWiki

インストールの準備

起動モードの確認

UEFIブートをしたいので、USB起動後有効になっているか確認

# ls /sys/firmware/efi/efivars

パーティション

パーティショニング - ArchWiki

# gdisk /dev/sdX
番号 サイズ パーティションタイプ
1 512M EFI (ef00)
2 残りすべて Linux filesystem (8300)

パーティションのフォーマット

# mkfs.fat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2

パーティションのマウント

# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

インターネットの接続確認

# ping github.com -c3

システムクロックの更新

# timedatectl set-ntp true

インストール

ミラーの選択

/etc/pacman.d/mirrorlist を編集

ベースシステムのインストール

# pacstrap /mnt base base-devel vim

システムの設定

fstab

# genfstab -U /mnt >> /mnt/etc/fstab

chroot

# arch-chroot /mnt

timezone

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

ロケール

/etc/locale.gen を編集

# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf

ホストネーム

# echo myhostname > /etc/hostname

/etc/hosts を編集

127.0.0.1    localhost.localdomain   localhost
::1     localhost.localdomain   localhost
127.0.1.1   myhostname.localdomain  myhostname

Initramfs

# mkinitcpio -p linux

passwd

ブートローダ

ブートローダー - ArchWiki

systemd-boot - ArchWiki

# bootctl --path=/boot install
# pacman -S intel-ucode

/boot/loader/loader.conf を編集。

default arch
timeout 4
editor 0

/boot/loader/entries/arch.conf を編集。PARTUUID には blkid -s PARTUUID -o value /dev/sda2 を実行して取得できる値を使う。

title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID=[PARTUUID] rw

再起動

(chroot)# exit
# umount -R /mnt
# reboot

Scala Matsuri 2018 Day2 参加メモ

最終日の朝起きられずに13時からの参加になりました。なんかデジャブ感...

というわけで(?)昨日に引き続きかんたんにメモを残しておきます。

あと3日でJava 10がリリースですが、興味ある人いますか?

Scala初級の人でも分かる話

  • Option[T]の使い方、概念のお話だった。
  • for式のスコープは変数束縛した箇所からyieldまで
  • ScalaでプログラミングするときにJavaJVMはどれくらい意識する必要があるのか?
    • 数年間管理するようなプロダクトを除いてJavaJVMについて意識する必要はない。
    • Javaのライブラリを使用するときはそれについて調べる必要はある。

というわけで今日はあまり回れませんでしたが、最後までScala Matsuriを楽しむことが出来ました。スタッフの皆さん、発表者の皆さんありがとうございました。

f:id:uryoya:20180318230040j:plain

Scala Matsuri 2018 TrainingDay & Day1 参加メモ

PyConJP2017に参加して楽しかったのでScalaのカンファレンスにも参加しました。

自分のScala経験は1年弱で本格的に使い始めたのはここ2,3ヶ月くらいです。やっとScalaモナド(OptionとかEitherとかFutureとか)を機能として活用できるようになった程度です。圏論とかはさっぱりわかりません。

そんな感じのスキルでScala Matsuriに参加したメモと雑感をとりあえず今日の分までまとめます。スライドが公開されてるものは見つけた限りでリンク貼ってあります。

Training Day

トレーニングDayはScala初心者向けのセッションやOSSハンズオン・Scalaハンズオンなどがありましたが今回はセッションをずっと聞いてました。

Scalaに関する神話と真実

  • implicit はとりあえず implicit parameter のことを覚えておけばおk
  • Scalaが有効に活用できる場面はサーバで動かすアプリケーションなど、起動時間よりもその後のスピードが重要なもの。分散処理が得意なのでそのたぐいとか。逆にコマンドラインツールとかの起動時間がシビアなものは向かない(JVMの制約)。
  • SlackとGitterのコミュニティあります。
  • コミュニティ怖くないです。

Akkaで分散システム入門

www.slideshare.net

  • Akka強そう...

逆引き!Scala x ビッグデータ

www.slideshare.net

implicit入門

Implicit 入門

  • まず implicit parameter という機能があり、そして implicit conversion がある。
  • (あとはスライド見たほうが早いな...())

Day 1

量子コンピュータScalaでかわいくシミュレーションしてみよう♪

  • 量子ビットを再現するために複素行列を用いる(ここで僕の数学力の限界が訪れる)
  • かわいいの裏側には多大な努力が....

『暗黙』とうまく付き合うためのTips

  • 暗黙のスコープっていうのがある
  • enrich my library (あとで調べる)
  • Tips 1 : implicitを使ってるライブラリは、それのサンプルコードを読む
    • ライブラリのドキュメントとか、example、testあたり
  • Tips 2 : 暗黙のスコープの仕組みを理解しておく
  • Tips 3 : 聞き取れなかった....

SBT1

  • About timeという映画がありまして
  • SBTはシェルモードで起動するべき
    • バッチモードだと毎回jarの読み込み(?)をするので遅い。2倍位遅いこともあるとか。
      • (自分の環境で run するとCtrl-Dで復帰してくれないのどうしようということで後で調べる)
  • LSPというのがあって、それのSBT版があります

実用的な圏論入門

  • 途中で入ったからか同時翻訳を聞いてもさっぱりわからず...英語聞けてる感じの人のツイートを見ると結構良かったっぽいので日本語で聞きたい....(英語力ないのでハイ

リアクティブDDD実践入門

  • 実務経験がないと多分わからないという知見が得られた

雑感

圧倒的Scala力の無さを感じることが出来ました。もっとバリバリコードを書かないといかんですねこれは。とりあえず implicit parameter がどういったものなのかは2日間の内にあったセッションでなんとなくわかってきたので良かったです。あと流石に業務経験が無いと理解が難しいような内容も多かったのでそのあたりはこれからかなと思いました。学生の内に業務経験は積むのは難しい...というか多分他にやるべきことがある。

あとバイト先のご厚意で懇親会に出席したのですが質問が用意できるほど理解出来ていなかったので、あまりお話できなくてちょっともったいないことをしたなーと思いました。

というわけで本当に雑なメモですがこんな感じで。あとで見直します。2日目も行くので論理明日にまた記事書きます。

学生LTに参加しました

ずっと行こうと思っていた学生LTですが、丁度都合が合う日があったので行ってきました。

student-lt.connpass.com

たまたま近くにに引っ越した先輩の家に泊まっていたので、「余裕でしょ~w」と思って朝銭湯に行ってから会場に向かったら余裕で遅刻しました。良くない。あと会場のビルがさながらRPGのダンジョンみたいで面白かったです。都会慣れしていないのでエレベーターホールを2,3周してしまった...

記憶力がニワトリ並みなのですべての発表をちゃんと覚えていないのですが、スマートスピーカーRaspberry Piで作ったお話と、Kotlinエバンジェリストの長澤太郎さんのお話、株式会社PoliPoliの山田さんのお話が印象に残っています。

スマートスピーカーはてっきり既製品ばかりで規格(?)としてもかなり閉じたものかと思っていたのですが、そこは最近のTech企業が作るものなのでいろいろ組み合わせるとRaspberry Piで自作もできるらしいです。(ちゃんと覚えろ

長澤さんの発表ではKotlinの紹介とエンジニアとしてどのような取り組みをしているか―や、心構えのお話などを聞きました。 KotlinはJVM系の言語でAndroid開発でかなり人気のようです。話を聞いている雰囲気ではScalaっぽさも感じました。どれくらい似ているんでしょうか?

ScalaAndroid開発をするのはググった感じだと結構大変そうなのでAndroid開発をすることになったらKotlin使ってみたいです。

株式会社PoliPoliさんはなんと学生起業のベンチャーさんらしいです。政治家と有権者をつなぐプラットフォームということでLTではサービスの説明をされていました。下のツイートの通りですが、前々回の参院選では頑張って候補者の情報を集めようとしたところ、行政で用意されたWebサイトを見てもなかなかわかりづらかったのでありがたいです。次の選挙では使ってみたいですね。

長澤さんの発表ではいかに意識の高い(系とか(笑)ではなく)エンジニアになるかという話でアウトプットの重要性を説いていたので、久しぶりにブログを更新しました。頑張って書こうとするとなかなかしんどいので、今回のようなざっくりブログを書き続ける技術も身につけたいところです。ブログを投稿して僕の学生LT参加の締めとしましょう。学生LTお疲れ様でした!!!


株式会社PoliPoliさんの山口さんと書いていましたが正しくは山田さんでした。すみません🙇🙇🙇(記事中では修正しています)


あとがき(?)

このブログをたどるとこの記事とは別のTwitterアカウントの引用があるかと思いますが同一人物です。某アカウントは完全にオタクアカウントと化してこういうイベントの時に使いづらいので今回を機に運用を切り分けました。この記事に出てきたTwitterアカウントに興味のあるい方はそちらを、オタクアカウントに興味のある方は過去ブログをたどっていただけるといい感じになると思います(いい感じとは一体...)。

Ubuntu17.10のGDMロック画面の背景色を変える

Ubuntu17.10からデスクトップ環境のUnity/LightDMが廃止され、代わりにGNOME3/GDMになりました。それに合わせてGDMのテーマもUbuntuに合わせて変えられたのですが、ログイン画面背景色のオレンジがなかなか目にうるさいので普通のGDMの色に戻したいと思います。なお適当に探して見つけたので保証はしかねます。自己責任でお願いします。

root権限で /etc/alternatives/gdm3.css を開き、 #lockDialogGroupbackground の定義(カラーコードのみ)を下記の通り編集します。

#lockDialogGroup {
  background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png);
  background-repeat: repeat;
}

おそらく url(...)GDM - ArchWiki のように編集すれば背景画像も変えられると思います(未検証)。

続いて1675行目、 login-dialog-user-list:expandedbackground-color の定義(カラーコードのみ)を下記のとおり編集します。

  .login-dialog-user-list:expanded .login-dialog-user-list-item:selected {
    background-color: #215d9c;
    color: #ffffff;
}

保存して再起動すれば懐かしいUbuntu GNOME(というか素のGNOME3)のログイン画面っぽくなります。本格的に修正するのは骨が折れそうなのでこれで終わりにしました。

UbuntuでAndroid Studioのデスクトップエントリーを追加する

お題目はタイトルの通り。やり方だけ知りたい人は手順から。

背景

UbuntuAndroid Studioをインストールするときは公式サイトに従って、

  1. Download Android Studio and SDK Tools | Android Studio から.zipをダウンロード
  2. 解凍して /usr/local/ 以下に設置
  3. /usr/local/android-studio/bin/studio.sh を実行

という手順でインストールすると思います。そしてIntellij IDEA等ではインストーラを実行中に「デスクトップエントリの作成」の項目が出てくるのですが、ベースは同じはずのAndroid Studioでは出てきません。

そこでよくある手段として デスクトップエントリ を作成するのですが、そんなことをしなくても以下の手順でデスクトップエントリを追加できました。

手順

  1. まず起動すると出てくるあれを出します。 f:id:uryoya:20171125191731p:plain

  2. Configure のプルダウンメニューから "Create Desktop Entry" を選択 f:id:uryoya:20171125191959p:plain

  3. OKを押す。全ユーザにエントリを作りたい場合は "Create the entry point for all users ~" にチェックを入れれば多分OK(試してない)。 f:id:uryoya:20171125192302p:plain

以上でUbuntuにデスクトップエントリが追加できます。試したのは16.04と17.10です。 f:id:uryoya:20171125192444p:plain

起動するときに出てくるあれが出てこない場合は File > Settings > Appearance & Behavior > System settings > Startup/Shutdown > Reopen last project on startup のチェックを外せばスタートアップメニュー(あれ)が出てきます。多分Settingsからでも変えられると思うんですが探すのが面倒だったのでこういう方法で。