Arch Linuxとsystemd-bootでデュアルブート
systemd-bootでArch Linuxを2つ、カーネルを分けて起動させる方法と記録。
早い話がEFIパーティションを /boot
にバインドマウントさせるだけなのでArch Wikiを見たほうが正確です。ソース情報はこちら。
この方法を使うと最初にインストールしたArchがバインドマウントを使っていなくても、新しくインストールするArchでバインドマウントを使えば分けられるので中々いいです(まだカーネルのアップデートとかはしてないのでわからないところもありますが...)。
インストール前の状態
インストール手順
基本的には普通のArchインストールの手順に従います。
この記事の「パーティションのマウント」の箇所を以下の手順に変更。
# 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
Arch Linux install メモ
時々インストールすることがあるのですが細かいところをよく忘れるので、自分用にメモ。
インストール
インストールの準備
起動モードの確認
UEFIブートをしたいので、USB起動後有効になっているか確認
# ls /sys/firmware/efi/efivars
パーティション
# 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
ブートローダー
# 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がリリースですが、興味ある人いますか?
#ScalaMatsuri #sm_a Docker上でJVMを使う場合、JDK9までは直接CPUの設定を参照していたけど、JDK10からはDockerの設定を参照する
— URANO Ryoya (@urano_ryoya) 2018年3月18日
まじか
Scala初級の人でも分かる話
というわけで今日はあまり回れませんでしたが、最後までScala Matsuriを楽しむことが出来ました。スタッフの皆さん、発表者の皆さんありがとうございました。
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 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で復帰してくれないのどうしようということで後で調べる)
- (自分の環境で
- バッチモードだと毎回jarの読み込み(?)をするので遅い。2倍位遅いこともあるとか。
- LSPというのがあって、それのSBT版があります
実用的な圏論入門
- 途中で入ったからか同時翻訳を聞いてもさっぱりわからず...英語聞けてる感じの人のツイートを見ると結構良かったっぽいので日本語で聞きたい....(英語力ないのでハイ
リアクティブDDD実践入門
- 実務経験がないと多分わからないという知見が得られた
学生のうちは普通に情報工学の基礎まわりとかOSとかハードウェアのこと勉強しておいて、業務コードの知識は入社後でいい気がしてきた
— URANO Ryoya (@urano_ryoya) 2018年3月17日
雑感
圧倒的Scala力の無さを感じることが出来ました。もっとバリバリコードを書かないといかんですねこれは。とりあえず implicit parameter
がどういったものなのかは2日間の内にあったセッションでなんとなくわかってきたので良かったです。あと流石に業務経験が無いと理解が難しいような内容も多かったのでそのあたりはこれからかなと思いました。学生の内に業務経験は積むのは難しい...というか多分他にやるべきことがある。
あとバイト先のご厚意で懇親会に出席したのですが質問が用意できるほど理解出来ていなかったので、あまりお話できなくてちょっともったいないことをしたなーと思いました。
というわけで本当に雑なメモですがこんな感じで。あとで見直します。2日目も行くので論理明日にまた記事書きます。
学生LTに参加しました
ずっと行こうと思っていた学生LTですが、丁度都合が合う日があったので行ってきました。
たまたま近くにに引っ越した先輩の家に泊まっていたので、「余裕でしょ~w」と思って朝銭湯に行ってから会場に向かったら余裕で遅刻しました。良くない。あと会場のビルがさながらRPGのダンジョンみたいで面白かったです。都会慣れしていないのでエレベーターホールを2,3周してしまった...
記憶力がニワトリ並みなのですべての発表をちゃんと覚えていないのですが、スマートスピーカーをRaspberry Piで作ったお話と、Kotlinエバンジェリストの長澤太郎さんのお話、株式会社PoliPoliの山田さんのお話が印象に残っています。
スマートスピーカーはてっきり既製品ばかりで規格(?)としてもかなり閉じたものかと思っていたのですが、そこは最近のTech企業が作るものなのでいろいろ組み合わせるとRaspberry Piで自作もできるらしいです。(ちゃんと覚えろ
長澤さんの発表ではKotlinの紹介とエンジニアとしてどのような取り組みをしているか―や、心構えのお話などを聞きました。 KotlinはJVM系の言語でAndroid開発でかなり人気のようです。話を聞いている雰囲気ではScalaっぽさも感じました。どれくらい似ているんでしょうか?
#学生LT kotlinのdata classはscalaのcase classっぽいもの?
— URANO Ryoya (@urano_ryoya) 2018年3月11日
ScalaでAndroid開発をするのはググった感じだと結構大変そうなのでAndroid開発をすることになったらKotlin使ってみたいです。
株式会社PoliPoliさんはなんと学生起業のベンチャーさんらしいです。政治家と有権者をつなぐプラットフォームということでLTではサービスの説明をされていました。下のツイートの通りですが、前々回の参院選では頑張って候補者の情報を集めようとしたところ、行政で用意されたWebサイトを見てもなかなかわかりづらかったのでありがたいです。次の選挙では使ってみたいですね。
#学生LT 前に政治家の情報を集めようとして行政のWebサイト見たけど分かりづらかったのでとても良さそう
— URANO Ryoya (@urano_ryoya) 2018年3月11日
長澤さんの発表ではいかに意識の高い(系とか(笑)ではなく)エンジニアになるかという話でアウトプットの重要性を説いていたので、久しぶりにブログを更新しました。頑張って書こうとするとなかなかしんどいので、今回のようなざっくりブログを書き続ける技術も身につけたいところです。ブログを投稿して僕の学生LT参加の締めとしましょう。学生LTお疲れ様でした!!!
株式会社PoliPoliさんの山口さんと書いていましたが正しくは山田さんでした。すみません🙇🙇🙇(記事中では修正しています)
あとがき(?)
このブログをたどるとこの記事とは別のTwitterアカウントの引用があるかと思いますが同一人物です。某アカウントは完全にオタクアカウントと化してこういうイベントの時に使いづらいので今回を機に運用を切り分けました。この記事に出てきたTwitterアカウントに興味のあるい方はそちらを、オタクアカウントに興味のある方は過去ブログをたどっていただけるといい感じになると思います(いい感じとは一体...)。
Ubuntu17.10のGDMロック画面の背景色を変える
Ubuntu17.10からデスクトップ環境のUnity/LightDMが廃止され、代わりにGNOME3/GDMになりました。それに合わせてGDMのテーマもUbuntuに合わせて変えられたのですが、ログイン画面背景色のオレンジがなかなか目にうるさいので普通のGDMの色に戻したいと思います。なお適当に探して見つけたので保証はしかねます。自己責任でお願いします。
root権限で /etc/alternatives/gdm3.css
を開き、 #lockDialogGroup
の background
の定義(カラーコードのみ)を下記の通り編集します。
#lockDialogGroup { background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png); background-repeat: repeat; }
おそらく url(...)
を GDM - ArchWiki のように編集すれば背景画像も変えられると思います(未検証)。
続いて1675行目、 login-dialog-user-list:expanded
の background-color
の定義(カラーコードのみ)を下記のとおり編集します。
.login-dialog-user-list:expanded .login-dialog-user-list-item:selected { background-color: #215d9c; color: #ffffff; }
保存して再起動すれば懐かしいUbuntu GNOME(というか素のGNOME3)のログイン画面っぽくなります。本格的に修正するのは骨が折れそうなのでこれで終わりにしました。
UbuntuでAndroid Studioのデスクトップエントリーを追加する
お題目はタイトルの通り。やり方だけ知りたい人は手順から。
背景
UbuntuにAndroid Studioをインストールするときは公式サイトに従って、
- Download Android Studio and SDK Tools | Android Studio から.zipをダウンロード
- 解凍して
/usr/local/
以下に設置 /usr/local/android-studio/bin/studio.sh
を実行
という手順でインストールすると思います。そしてIntellij IDEA等ではインストーラを実行中に「デスクトップエントリの作成」の項目が出てくるのですが、ベースは同じはずのAndroid Studioでは出てきません。
そこでよくある手段として デスクトップエントリ を作成するのですが、そんなことをしなくても以下の手順でデスクトップエントリを追加できました。
手順
まず起動すると出てくるあれを出します。
Configure のプルダウンメニューから "Create Desktop Entry" を選択
OKを押す。全ユーザにエントリを作りたい場合は "Create the entry point for all users ~" にチェックを入れれば多分OK(試してない)。
以上でUbuntuにデスクトップエントリが追加できます。試したのは16.04と17.10です。
起動するときに出てくるあれが出てこない場合は File > Settings > Appearance & Behavior > System settings > Startup/Shutdown > Reopen last project on startup のチェックを外せばスタートアップメニュー(あれ)が出てきます。多分Settingsからでも変えられると思うんですが探すのが面倒だったのでこういう方法で。