どらねこへいとくるー

we're doraneko hate crew

Slackで自分にDirect Messagesをよく送ってる

すっかりお茶の間に定着したチャットツール、Slackです(してない)

f:id:doranekohc:20161209163546p:plain

自分にDMできるようになったので

どこかのバージョンから 自分に対するDM というのを送れるようになったのでよく活用している。気がする。

単なるメモ、だったら別に他のエディタとかで良いのですが、ポイントとしては 脳内整理チャットSlackの機能活用 かなと。

脳内整理ツールっていうのは色々と存在しますが、独り言の脳内整理パワーは侮れないので、誰にも迷惑をかけない独り言チャットをすることでモヤモヤした脳を整理します。

f:id:doranekohc:20161209164437p:plain

くまさんデバッグと同じノリですね。

/remind コマンドなんかもたまに使います。冷蔵庫に入れた飲み物の存在をよくremindしてます。

レッドブルはほどほどに😌

qemuで使っていた.qcow2形式のファイルシステムイメージをx64 debian上でマウントしてファイルを修復したりfsckしたりした話

あらすじ

ARM用クロスコンパイル環境として、qemu を使って仮想ARMマシンを立ち上げ、その上で開発していました。

ある日、仮想マシンにログインできなくなる事件が発生。 結論から言うと /etc/passwd とかが壊れていました。これを修復する方法を模索した話です。

手順

OS Xからやる方法が見つからなかった(分からなかった)ので、Linux上で作業することにしました。

前準備

今回はvagrant仮想マシン上にdebianを上げて、その上で作業しました。 これはLinuxマシンなら何でも大差無いと思うので手順は省略。debian系ディストリであれば同じ手順でいけるのではと思います。

ちなみにvagrantでファイルの共有をするには Vagrantfile に以下のような感じで記述。

config.vm.synced_folder "~/qemudir", "/shared/qemu"

この辺りも手段は問わない感じです(仮想debianから .qcow2 がいじれれば)

vagrantで仮想Linuxを起動しログイン

vagrantならこんな感じ。やっていることは普通にVirtual Box等で仮想Linuxを起動してログインしているだけです。

% vagrant up   # 仮想マシン起動
% vagrant ssh  # 仮想マシンにログイン

仮想マシン上で修復準備

# root権限がないと出来ないことばかりなのでrootになってしまう
# ここは逐一sudoでコマンドを叩いても良いと思います
$ sudo su

# 仮想Linuxにqemu-utilsをインストール
$ apt-get install qemu-utils

# nbdというカーネルモジュールをロード
$ modprobe nbd max_part=8

# qcow2を/dev配下のブロックデバイスとして見えるようにする
$ qemu-nbd --connect=/dev/nbd0 diskimage.qcow2

# fdiskでパーティションを(一応)調べてみる。今回は/dev/nbd0p1 というのがメインパーティションだった。
$ fdisk /dev/nbd0

仮想マシン上でファイルシステム修復

# ブロックデバイスとして扱える状態なので、fsckができるようです
$ fsck /dev/nbd0p1

# マウント。これで中身が見られるようになります
$ mount /dev/nbd0p1 /mnt

# 終わったらアンマウントして後処理。
$ umount /mnt
$ qemu-nbd --disconect /dev/nbd0

壊れていた /etc/passwd を正しいものに置き換えたところ、無事ログイン出来るようになりました。

参考サイト

大変参考にさせていただきました。ありがとうございます。

vi / vim を初めて触るレベルの人が最初に習得すべき12個の操作

はじめに、 たまにVimを触る必要があるけどあんまり積極的に触りたくない 人に向けた記事ではないです。 Vimを習得したいけど情報多すぎるし、とりあえず何を覚えるのが良いの? みたいな人に向けています。

vi / vim という魔物エディタと戦うために最低限まずはこの12個知っておけば良いんじゃないかな、という操作です。本当は10個にしたかったんですが絞りきれませんでした。

当然「いや u くらいは…」「 Ctrl 絡みのキーバインドが無い…」とかあるんですが、それは2歩目ということでこの記事では1歩目だけに絞りました。

1歩歩き出せれば、2歩目を踏み出すのは容易だろうと思います。

カーソル移動系

vi / vim を起動すると ノーマルモード になっており、まず編集したい箇所までカーソルを移動します。

  • 1 h … 左
  • 2 j … 下
  • 3 k … 上
  • 4 l … 右

ノーマルモード→インサートモード

編集したい箇所までカーソルを移動したら、文字を入力するために インサートモード に変更します。

  • 5 i … カーソル位置に文字入力
  • 6 a … カーソル位置の右に文字入力
  • 7 o … カーソル位置の下に文字入力

インサートモード→ノーマルモード

文字の入力が終わったら ノーマルモード に戻ります。

  • 8 Esc … ノーマルモードに戻る

文字削除

ノーマルモードの状態で削除したい文字にカーソルを移動して削除をします。

  • 9 x … 1文字削除
  • 10 dd … 1行削除

終了

編集が終了したら vi / vim を終了します。

  • 11 :wq … 保存して終了
  • 12 :q! … 保存しないで終了

追記・undo/redoくらいはさせて!

と言われたのでオマケ。古臭い環境の古い vi や、busybox の vi なんかだと使えない場合もあります。

ちなみにノーマルモードでおこなってください。

  • u … アンドゥ
  • Ctrl+r … リドゥ

「なんか変になっちゃった!」→ Escu で元に戻る!という使い方は非常に多い気がします。

最後に

この12個を知ってれば一通りの編集が出来るようになります。 はじめはノーマルモードとインサートモードという概念がわかりづらいので、慌てず今自分がどのモードで操作をしているのかを念頭に置いて作業すると良いです。

そしてどの状態でも Esc を押せばノーマルモードになります。これはとても重要。ワケわからなくなったら慌てずに Esc を押しましょう。

そして次のステップへいくためにお手元のターミナルでおもむろに vimtutor と打って実行してみてください。

追記

生き残る というレベルから Vimの強大な力 を感じるに至るまでの Vim との触れ合い方を書いてくださっている記事がとっても良いのでリンク貼らせていただきます。ご参考までに。