Ubuntu 17.04においてのハイバネートについて
正確にはKubuntu 17.04環境で行いましたが、他のUbuntuフレーバーでもさして変わらないと思います。
前回、Kubuntu 17.04を導入した際になかなかハイバネートを有効にできず、日本語の資料も見当たらなかったので共有します。私が見つけられなかっただけかもしれませんが。
akkisino02.hatenablog.com
ハイバネートはWindowsで言う休止状態です。
RAMの中身を補助記憶装置に書き出すことによって、スリープとは違い作業状況を維持しながら完全に電源を落とすことができます。
Linuxでは、SWAP領域にRAMの中身を書き出します。
Ubuntu 17.04からSWAPの扱いが変わった
基本的にパーティション切りを手動でやってたので気づきませんでしたが、Ubuntu 17.04からはSWAP領域を持たないようです。Kubuntu 17.04を自動でインストールさせたらハイバネートに入れずビビリました。
では、SWAPがなくなったかと言うとそういうわけでもなく、/swapfileというファイルとしてSWAPファイルを持つようになりました。
現在割り振られているSWAP領域はswaponコマンドで確認できます。
$ swapon -s
恐らくですが、大抵の場合は2GBが割り振られているはずです。
補助記憶の空き容量の5%、もしくは2GB のどちらか小さいほうが採用されるようです。
ハイバネートを使えるようにする
SWAPファイル自体がハイバネートに適していないようです。
詳しくは調べていないのでわかりませんが、今までSWAP領域を使ってきているのでそのほうがわかりやすいし移行することにしました。
いつぞやのバージョンからUbuntu自体がハイバネートを隠すようになったのでそれでも問題ないのかもしれませんが、ハイバネートを利用したいユーザにとってこれは深刻です。
そのため一番最初にSWAP領域を確保する必要があります。
適当なユーティリティでSWAP用に領域を確保し、ファイルシステムにLinux swapを指定してください。この際、実メモリより大きい領域を確保することが必要です。
また、手動インストールの場合はそもそもインストール時点でSWAP領域を確保して置くことでこの手順はスキップできます。
次に、fstabにSWAP領域をマウントする記述を追加します。
UUID=SWAP領域のUUID none swap sw 0 0
この時点で/swapfileの記述をコメントアウトしました。
再起動します。カーネルパニックが起これば記述が間違えているのでコンソールから書き直してください。
起動すれば、再度swaponで正しくスワップ領域が追加されていることを確認します。
ちなみに不要なので/swapfileはここで削除しました。
$ swapon -s Filename Type Size Used Priority /dev/sdb3 partition 8912892 0 -1
これで、ハイバネートができるようになったと言いたいところですが、まだハイバネートに入ったきり復帰できません。ただのエクストリームなシャットダウンです。
次は/etc/default/grubを書き換えます。
# この行を編集 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=SWAP領域のUUID" # 編集を適用 $ sudo update-grub
ではここまで来たら正常にハイバネートできるか試してみましょう。
$ sudo pm-hibernate
しばらくしてから電源が完全に落ち、再度起動した際に作業状態が維持されていれば成功です。
正常にハイバネートができればメニューにハイバネートのエントリを追加します。
/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pklaを以下の内容で作成してください。
[Re-enable hibernate by default in upower] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes [Re-enable hibernate by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit ResultActive=yes
再起動します。
$ sudo shutdown -r now
以上でKubuntu 17.04でハイバネートできるようになりました。
そろそろKubuntu 17.10が出る頃ですが、きっと大きくは変わらないと信じています。きっと。
Windows10とLinuxの共存を諦めた話(妥協編)
相性問題というものがあります。あの人は苦手、あの人は得意じゃない。何があったわけではないけどうまくいかない。
人間100人いれば100人性格が違うので当然のことではあります。重要なのは、その相性の悪さをどう補うか、どう解決するかのほうです。
ちなみにWindows10とLinuxの相性が悪いという話です。
以前ZorinOSとWindows10をデュアルブートで運用している話を書きましたが、
akkisino02.hatenablog.com
程なくしてハイバネートから復帰できないことが判明しました。
Windows側でハイバネートすると次回起動時に100%ディスクチェックが走り保存してあった作業は死亡、Zorinはそもそもハイバネートに入れないという有様。
Windows10では確か1時間半だかスリープが続くと自動でハイバネートに移行するハイブリッドスリープみたいな機能が実装されているので、なんかしらんが蓋閉じといたら全部吹き飛んでたみたいなことが相次ぎました。冗談キツい。
えにばーさりーあっぷでーととかいうデメリットしかなかった更新がデュアルブート環境に大打撃を与えたらしく、まともに動くものも動かなくなってきてる気がします。
GRUBを書き換えたら一時改善されるもまたすぐ同じ症状が現れるし、ハイバネートできないと死んでしまうので泣く泣くWindows10とBash on Ubuntuのみでがんばってました。
Windows10が飛んだ
やはりWindowsメインだとストレスを感じるので、もうハイバネートを諦めてLinuxいれようかなあとパーティションを切ってるときに悲劇が起こった...
CSMモードに切り替えて立ち上げるやつを試そうとGpartedでC:ドライブの左側をつめて隙間を作ってる最中にサスペンドに入り二度と戻ってきませんでした。アーメン。
もういい機会なのでLinux一本で行くか!となった瞬間です。
Windowsが飛んだことによって、及びLinux一本で運用するに当たって、次の問題があります。
・学校ライセンス系のソフトが含まれるのでWindowsのリカバリは職員室でしかできない
・MOSの授業があるのでWord Excel 及び市販の模試ソフト(当然Windows用)が動く必要がある
・その他授業の進行についていける必要がある
まず一点目、リカバリが自力でできないことについて(支給時点に戻せない)はImagineのWindowsEducationがあるのでなんとかなります。VisualStudioなどもImagineからDLできるので問題ありません。一部どうしても手に入らないソフトがありますが、そのあたりは教員に泣きついてなんとかします。
二点目のOfficeについて。
これは致命的です。互換系Officeに関しては全くと言っていいほど信用してませんし、そもそもMOSに対応できません。今後レポートを書いたりパワポを触る機会は少なくないはずなのでMS純正Officeが使えないことにはかなりの問題があります。自分だけが互換Officeでやってくなんてわがままが通用するはずもないのでここはなんとかして解決する必要があります。
三点目について。
基本的には各言語の開発環境があればなんとかなるのでOSは問わないはずです。VSについても前述の通りImagineから落とせます。
VMという着地点
といってもメインで使うのはLinuxなのでWindows10側をVMに入れることにしました。
すれば純Linux環境で運用できるのでWindows10のブートローダーと喧嘩することもないし、起動時にOSを選ぶ必要もないし、細かいところを気にする必要がなくなります。
というわけで
OSは悩み抜いてKubuntu17.04を入れました。最近のKDEはかなりおしゃれ。
VMはVM ware Playerで、Windows10EduとOfficeのみインストールしてスナップショットを保存、今後必要に応じて触ります。
ハイバネートで難航
Windowsを意識する必要もないし面倒だからオートでインストールさせるかあ!と丸投げしたところハイバネートできませんでした。なんでやねん。
どうやらUbuntu17.04系ではSWAP領域を確保せず、/swapfileにSWAPファイルで確保する方針になったようです。知らなかった。
この/swapfileが何故かデフォルトで2GBしかなく、当然RAM8のこのマシンではハイバネートすることもできず電源メニューにも表示されないという。14.10だかなんだかからハイバネートしにくくなってるしさせたくないんですかね。
この問題は紆余曲折あって解決しましたが、資料が少なくて困ったので別で記事にします。
結局入学から3ヶ月で支給時の面影もない位にシステムが変わりましたが物理的にもいじってるのでもう何も気にしないことにします。
VMでWindowsを動かしてるとRAMが物足りなくなってくるので増設しようか悩み手。ていうかもうMacbookがほしい。
ASUS 2 in 1 T90chiを入手した
最近家の近く(といっても徒歩30分くらい)に大型BOOK OFFの複合店みたいなやつがあることを知って行ってみました。(それまでは電車で何駅か移動してた)
何気なしに中古タブレットをみてたら、ASUS T90chiが2万ちょいで画面もきれいだったのでついつい購入。財布が空だったので最寄りのスーパーまで金を降ろしに死ぬ気で走った。今思えば別に走る必要はなかった。
背面に目立つ縦傷があるけどまあ中古だし、下手にきれいで気を使って使うよりは遠慮なくモバイルできるのでむしろいい。
VAIO Pの後継とまで言われているド変態2in1タブレットのT90chiは前々からかなり欲しかったのでめちゃくちゃ嬉しい。道中が山なりな坂道でしかも舗装がガタガタだったのでクロスバイクくんからダイレクトに振動が来てしんどかった以外は最高の日曜日になりました。
まだ1日しか触ってないけど以下感想。
・さすがASUSだ!俺たちにできないことを堂々とやってのける!そこに痺れる!憧れるゥ!
・X205TAもそうだったけどアホみたいにバッテリが持つ。中古だからそれなりに劣化してるだろうに平気で一日持つ。
・やっぱりキーボードがあるって素敵。というかあまりタブレットとして使う気がない。
・でも電子書籍読みたいときにスッとはずせるのは最高。教科書もPDF化した教科あるし。
・ゲームはあんまする予定ないけどZ3775だからそれなりにはできそう。
・8.9インチノート最高。
Win8.1モデルだったのでとりあえずそのまま一日持ち歩いてみたけどスマホいらないかもしれない。完全にテザリング用ホストだった。
うちの学校はImagineが使えるので帰宅してからWindows10Educationを入れた。そこまで派手なことはしないと思うので、AtomとRubyMINEくらいを入れて基本ノート取りと思いついたときにコードをスケッチする程度のマシンにしたい。実習のない日はこれを持って登校する予定。
しばらく使ってみてそのうちまとめます。
amazonのほしいものリストはハンドルネームで登録をするな、絶対にだ
今現在、ほしいものリストを不特定多数に公開する際は「氏名をハンドルネームにして住所の最後に"名字方"をつける」なんじゃないかなと勝手に思っています。
きっつい
— ねこち (@akkisino02) 2017年5月15日
真顔である。
実際、ヤマトのおにいさんが悪いわけではなくこう書くしかなかったんだろうけどすごい顔になります。
受取のサインの会話もすごいことになりそう。
代替案
悪いことは言わないから適当に存在しそうな名前にしておけ。エロゲキャラとか。
現時点の学校用マシンの開発環境2017
今月のPVが200を超えた通知が来ました。まともなこと何も書いてないのに毎月それなりのPVがあって申し訳なくなります。
こんなしょーもないブログ読んでないでもっと有効的に時間を使ってください。
学校用マシンの開発環境
余計なことを喋るといろいろバレちゃまずいことがバレそうなのである程度はしょりますが、今年度から高校を出て工学科情報系の学校に進学しました。
もちろん授業で必要になるのでノートPCを新調しましたが、現在の環境を覚え書き。どうせ4年のうちに10回はSSD吹き飛ばすので。
OS
Windows10(プリイン): 100GB
ZorinOS: 64GB
のデュアルブート。システム領域は256のSSDでまだ領域を残してあるのであと2つくらいは入れられます。そのうち勉強兼ねて別のOS触るときに使いたい。
・Windows10
授業でVisualStudioやその他Windowsにしか用意されてないエディタを使うのと、Officeを使う実習やMOSの講義がある以上身勝手に外すわけにはいかないし残してます。
学校から配布されたソフト系や開発環境はMicrosoftとの契約上、元データを生徒に渡してはいけない(というか校外に持ち出してはいけない)のでなんかやらかしてWindowsを飛ばしたら職員室土下座リカバリチャレンジになるためデリケート。
・ZorinOS
zorinos.com
Debian系統UbuntuベースのデザインがサイケデリックなOS。結構気に入ってる。
もともとはうっかりWindowsを飛ばすとよろしく無いのもあったし、一応学校として決められた環境をいじるのはあまり褒められたことではないしUSBブートでLinuxを動かそうとUSB3.0で64GBのUSBメモリを買いました。何故かインストールはできるのにUSBからブートできず、そして試してるうちにインストールも失敗するようになったので知識的なヘルプが欲しくてHR担任に相談したところ黙って笑顔でうなずいたためシステムSSDにブチ込みました。
ちなみにUSBメモリにGRUBをインストールするように指定しているのに何回やってもSSDのEFIパーティションが上書きされます。張り倒すぞ。
Why ZorinOS
Ubuntu系はスクロールすると何故か画面がチラつく。
GPUは積んでないし第7世代IntelCPUなのでそんな相性悪いことはないと思ったけど原因不明。ドライバ入れても治らず。
なので別のOSをいろいろ試行錯誤。その結果、何故かDebian系統以外そもそもブートできないことが判明。USB3.0なUSBメモリからLiveブートしようとしてることとUEFIなことが原因かなーとは思ったけどUSB3.0ポートしか無いし、CMOSモードにするとWindowsが上がってこなくなるので諦め。
本当はこれを機にArchとか触ってみたかったしRHL嫌いも克服したかった。
ここで時間をあまり掛けたくないしDebian系統のOS好きなので設定をいじらずLiveでとっかえひっかえ試したけども、Ubuntu系統は先の通りチラつき、Mintも同様、elementaryは嫌いじゃないけど弄らせないスタイルがあまり好きではなくパス、といった感じで手詰まり。
煮詰まってきたところでふと見つけたZorinを入れてみたところ、UI素敵だしスクロールしてもちらつかないしUbuntuベースなら困らなそうだしということで運命の出会い。なぜUbuntuベースなZorinがカクつかないのは謎。描画周りが独自なのかも?
UI設定
基本的にはWindowsに似せたいっぽい?
標準でかなり自由度高めにいじれるのでタスクバー上にして細くしてカラー変更。
さっきも書いたとおり何故か全体的にサイケデリックな感じになってるので(嫌いじゃない)、各UIなど蛍光色強め。ターミナルなんかかなり合う。
その他ハード的に
積んであるSSDが256だとちょっと厳しさを感じるし(Linux演習とかがあるしVSなどの開発環境がデカいのでストレージは余裕がない)、勝手にバラして換装しようかなあなどと支給された当日に分解したところ、何故か2.5インチサイズのスペーサーにM.2のSSDがハマっており当然のようにSATAに変換されてました(といっても独自コネクタに変換されてるので直接SATAはさせない)。なんでやねん。
一般販売モデルにHDDモデルがあるからの都合なのだろうけども、どうせSATAにしてるなら2.5インチのSSDを使ってくれたほうがとっかえやすくてよかったのに。ていうか無駄にパーツ代がかかるだけなのでは。などと考えつつM.2の相場を調べるとやはり馬鹿高い。
M.2本来のパフォーマンスを発揮できそうにも無いのに高い費用出すのもなあと悩んでたところ面白いことに気づきました。
あまり詳しくは言えないけど簡単に言うと学校指定マシンで、一般販売モデルと比べてスペック変更があります。液晶解像度が落ちてるとか。
その中で、おそらく費用的な問題でしょうが一般モデルにあるディスクドライブが廃されています。(一般モデルはDVDかBDがついてる)
もちろんマザーは共通なのでその分のスペースがぽっかり開いていて、しかも幸いなことにSlimSATAのコネクタも実装されてました。
ということでメインのM.2のほうはそのままノータッチでここのスペースに240のSSDをもう1基追加。13インチのそれなりに薄いノーパソでありながらデュアルSSDという非常にアツい構成になりました。
これでストレージは(256+240)=496GB。一応学校用メインではあるけど自分にとってはサブなのでこれだけあれば十分。
ちなみにディスクドライブ分のスペースにはこれを使ってブチ込み。
amzn.to
もともとはSlimSATAの電源をSATAに変換するケーブルを探してたのになんかすごいもんを見つけてしまった。こういう頭のおかしい変態アイテム大好き。
また、バラさないとアクセスできないようにはなってるけど同様にRAMも換装できることを確認。現在(4+4)=8GBなのでちょっと物足りなさを感じつつも学校が指定している容量ではあるので自分が辛くなったら換装して16GBにするかなといった感じ。
ほかにもディスプレイとか、例のSATAコネクタとか、同型別モデルのパーツを引っ張ってくればいくらでも換装できそうなのでジャンクで出回るのを待機中。流石に最新モデルをもう一台買う気にはならない。
(というか正直自己責任で自前のPCを持ち込んでもいいらしいけど支給されてる以上はそれを使うのが賢い選択だし流石に開発用マシンを買い足すのは出費がしんどいので)
キーボードも英字配列にしたいけどさすがに海外版のパーツは手に入らなそうだなあ。そもそも海外版出てるか知らないけど。文章打つだけなら日本語配列でもいけるし諦めて開発するときはHHKB使い続けよう。
といった感じでソフトウェア/ハードウェア共に改造しまくってます。学校支給のPCをいじるのはよろしく無いけど担任に暗黙の了解を頂いてるので遠慮なくやってます。やらかしたら保証は聞かないので自腹で全損修理か再購入。やっためう!すごいめう!
流石に在学中ずっとこのままの環境で使い続けるとは思わないのでちょこちょこいじりそうだけどスタートはこんな感じで落ち着いた。
いじればいじるほど愛着が湧くし学業へのモチベもめちゃくちゃ高いのでこいつと一緒に真剣にシステム開発スキルを学んで行こうと思う。
Raspberry Pi Zero で小型の自立型タイムラプスカメラを作る その1
つい先日Raspberry Pi Zero Wが出ましたね。いつものOut of Stackを恐れて速攻で一枚買いました。
ちなみにガンダムWとは関係ありません。
現行のZeroとZero Wが大きく違うのは、Wi-Fiチップが搭載されたことのようです。今までのZeroはせっかく馬鹿みたいに小型なのにWi-FiドングルやUSB LANアダプタを付けないと外部に接続できないというハンデを抱えていましたが、Wではそれすら要らないため純粋に電源のみでコンピュータとして成り立つ事になります。
キーボードとマウスとモニター?別に要らなくない?
話は変わりますが、私は結構頻繁にキャンプなどに行く自然派オタクでほぼ毎年アウトドアイベントをエンジョイしてます。リア充。
一昨年3泊泊りがけで行った際に偶然ヒグラシの羽化に遭遇したので、せっかくならこういうのタイムラプス撮影してみたいよねということでカメラを作ることに。
要件
・スタンドアロンで動いて欲しい
・スマホから見れる遠隔カメラとしても動かしたい。
くらい。
なのでモバイルバッテリーを主電源とし、WANにはつながらないけどアドホックなWi-Fiのアクセスポイントとして動作させてそこに接続することでsshでの操作やカメラ映像などにアクセスすることができるものを目指します。
SDにあんまり書き込みアクセスするの怖いしそのへんはどうしようかなあ。
今回はハードウェア
といってもWはまだ届いてないので手持ちのZeroで試作。
百均で買ってきた名刺ケースを加工。
ごりごり加工してこんな感じ。よさ
あとはぐねぐね動く三脚みたいなやつを使えるように1/4ネジを接着しようなど。
ちなみにこのカメラモジュール、なんか知らんけど認識はされるのに撮影出来なくて現在販売元に問い合わせ中です。動作確認してある代わりの品と交換してくれるらしいのでそれまで保留。
別で買った暗視カメラ+赤外線ライトはちゃんとうごいてくれたのでそっち用のケースも制作予定。
とりあえず、代わりのカメラが届き次第動作確認、ソフトウェア面を作って、ナイトビジョンのケースを制作の流れかな。
ソフトウェア面はmjpeg-streamerとかmotionとかRaspbianのデフォのアレとかいろいろ考えてます。
Twitterのアイコンをランダムに変更するスクリプト
2017年最初の月ももう終わりですね。皆さんいかがお過ごしでしょうか。
私は毎日しんどいしんどい言いながら死んだ目で接客してます。
一体どこの層に需要があるのかわかりませんが、タイトルの様なものを作ったので公開します。
これなに珍百景
アイコン用画像フォルダにぶっ込んである画像からランダムでアイコンを変更します。
"/change_icon"のリプライをトリガーに動作します。
いままでTwitter連携アプリはTwitter gem一本を使ってたけどなんだかTweetstream Gemのほうがよさげなので併用。
ちなみにきっかけは、TwitterGemでは「誰がどれかをツイ消しをした」というところまでしか取得できないのに対しstreamのほうは「誰がどのツイートを消した」というところまで取得できることを知ったため。とはいっても降ってくるのはツイのidなのでどっちみち消えた物は見れないけど。
リプライの判定が
/^@TwitterID ¥/change_name/
なので(要は前方一致)、以降は何が書いてあっても無視します。つまりこれを利用して連投規制回避ができるということ。うるさければ完全一致にして弾いてもいいと思う。
どっかのアホに毎秒アイコンを変えられてTLがすごいことになったのでレスポンスも任意でいいと思います。でもレスポンスないと変わったのかどうかわかりにくいところあるよね。
また、TwitterのAPI制限が大きく変わってから今の仕様をよくしらないのでどれくらいの頻度でアイコンを変えられるのか不明。ほどほどに。
#coding: utf-8 require 'twitter' require 'tweetstream' #Ck/Cs CONSUMER_KEY = "ぴゅぴゅんって飛び出した" CONSUMER_SECRET = "明日も追い越して" ACCESS_TOKEN = "ときめきポポロン♪って" ACCESS_SECRET = "きらめきの音が響く" #TL取得用 TweetStream.configure do |config| config.consumer_key = CONSUMER_KEY config.consumer_secret = CONSUMER_SECRET config.oauth_token = ACCESS_TOKEN config.oauth_token_secret = ACCESS_SECRET config.auth_method = :oauth end #画像変更/投稿用 REST_client = Twitter::REST::Client.new do |config| config.consumer_key = CONSUMER_KEY config.consumer_secret = CONSUMER_SECRET config.access_token = ACCESS_TOKEN config.access_token_secret = ACCESS_SECRET end Streaming_client.on_inited do puts 'TL Connected.' end icons = Dir.glob("アイコンをぶち込んであるディレクトリ/*") Streaming_client.userstream do |obj| if obj.class == Twitter::Tweet && obj.text =~ (/^@Twitter_ID \/change_icon/) icon = File.open(icons.sample) #iconsから一つランダムに取得 REST_client.update_profile_image(icon) REST_client.update("@#{obj.user.screen_name} Done. #{Time.now}", options = {in_reply_to_status_id: obj.id}) end end
私はこれにアイコンリセットコマンドを追加してます。また、指定されたアイコンに変更したりする機構も付けたいのでそのうち。
にしても自分用に他の機能も付けてるとはいえ120行あったスクリプトを公開用に整理したらここまで短くなるの何も言えねえな。