適当な備忘録

日々のメモ程度に雑に書いていきます。

archlinux iphone USBデザリングについて

iphoneのUSBデザリングでちょいと詰まったので備忘録

参考

iPhone テザリング - ArchWiki

`Failed to connect to lockdownd service on the device.` · Issue #39 · libimobiledevice/ifuse · GitHub

Arch Linux iPhone テザリング | Basic Werk

方法

install

iphoneのUSBデザリングでは下記Pkgが必要

$pacman -S usbmuxd libimobiledevice ifuse

反映

sudo idevicepair pair
sudo ideviceinfo
sudo ifuse /mnt
$ sudo idevicepair pair
ERROR: Could not validate with device 00008020-001E69863E86002E because a passcode is set. Please enter the passcode on the device and retry.

上記エラーが出た場合はiphone側で認証

起動

$ dhcpcd $iphone

rubyでTCPソケットを開いてデータのやりとりをしてみた

rubyにてtelnetssh等をしているとTCPsocketクラスというものが目についた

ふと、ポートをlistenしてデータのやり取りもできるのだろうか?と気になったので試してみた

コード

require 'socket'

serv = TCPServer.open("localhost", 0)
c = TCPSocket.new(*serv.addr.values_at(3,1))
s = serv.accept
c.puts "fooooooooo!!"
c.puts "fooooooooo!!"
p "server: #{s.gets}"
p "server: #{s.gets}"
s.puts "booooooooo!!"
s.puts "booooooooo!!"
p "client: #{c.gets}"
p "client: #{c.gets}"

TCPServer.openでの引数は(開く先、ポート番号)という形となる

※""というように何も記述しなくてもlocalhostを掴むようだがわかりやすく記述

ちなみに0番ポートはany portと呼ばれる動的なポート割当だ

0-1023の範囲のポート番号は、ウェルノウンポート番号と呼ばれている。0番のポートはエニーポート(any port)と呼ばれ、アプリケーションに対して、動的に別番号の空きポートを割り当てるために用意された特殊なポート番号である。別番号のポートの再割り当てを行わずに0番のポートとして使用することは禁止されているため、利用上では注意が必要である。

ja.wikipedia.org

出力

"server: fooooooooo!!\n"
"server: fooooooooo!!\n"
"client: booooooooo!!\n"
"client: booooooooo!!\n"

できた、TCPソケット通信とても面白い

Archlinux on WSL

はじめに

windows環境に嘆き、WSL(Windows Subsystem for Linux)でubuntuを使ってても満たされない毎日を過ごしておりましたが、友人より「ArchLinuxがWSLで使えるって」との情報が・・・

涙が溢れ、早速導入しようと考えたときにはもうArchを入れてました. 今回は同じようにArchlinuxを導入したい人のために簡潔ですが導入方法をまとめようと思います。

2019/12/12 wsl2への変換項目をいれますた

参考

WSL_にインストール

↑ほぼほぼ上記wikiを見ていただければ導入できると思います。本記事の内容ではいくつか補足は入ってますがおおよそ同じです。

ちなみに有志の方がgithubに簡単に導入できるexeファイルを配布してるので、自分でインストールをするのがめんどくさい人は使うのをおすすめします。

github.com

ストアにArchはありません

早速導入と行きたいところですが、通常WSLでLinuxを入れる際は大抵Windows storeから落としてるかと思います。 ですが、Archに関しては少し違います。

Archは正式にstoreから配布されるのではなく、ubuntuLinuxカーネル部分をベースにArchへ書き換えています。 イメージしづらい方は下記記事を見ると少しイメージが湧くかもしれません

ascii.jp

完結にいうとubuntu上の「bin, etc, lib, lib64, sbin, usr, var」をArchのものに書き換えます。

WSL機能の有効化

まずはこれを有効化します。 windows10よりサービスが開始したWSLですがデフォルトは有効化されていません。

まずは有効化しましょう。

コントロールパネル起動方法

  1. winキー+ R を押し、ファイル名を指定して実行を開く
  2. 「contorol」と入力してenter

下記画面が出ますので「プログラムと機能を選択」

f:id:ymdtshm:20190207211502p:plain
コントロールパネル

次に「windows機能の有効化または無効化」を選択

f:id:ymdtshm:20190207211640p:plain
プログラムと機能

最後に「Windows Subsystem for Linux」にチェックをつけたら完了 再起動したら有効化されています f:id:ymdtshm:20190207211807p:plain

storeからubuntuをダウンロード

windows storeにて「ubuntu」と検索し、ダウンロードしてください

versionは何でもいいですが、筆者は18.04で導入したため、18.04をおすすめします。 ※ダウンロードしたら自動でインストールが始まります。

ubuntuのインストールが完了したら、コマンドプロンプトPowershellでも可)にて下記コマンドを入力してデフォルトユーザーをrootにしておきましょう。(操作が楽です)

ubuntu1804.exe config --default-user root

※versionが違う場合、コマンドに差分があるので注意

ArchLinuxをダウンロード

次にArchLinuxをダウンロードします。

ファイルはダウンロードページからダウンロードできます。 よくわからない人は下記URLからダウンロードしてください。

http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/2019.02.01/archlinux-bootstrap-2019.02.01-x86_64.tar.gz

ダウンロードしたらubuntu上で下記コマンドを使用し解凍してください

※スタートアップからubuntuを起動できます。

# tar -zxvf /mnt/c/Users/username/Downloads/archlinux-bootstrap-2019.02.01-x86_64.tar.gz
※ファイル名はversionによって差異あり

解凍が完了したら「root.x86_64」というディレクトリができてると思います。 こちらがArchLinuxが入っているものとなります。

Arch設定ファイル調整

mirrorlist有効化

ミラーリストについては下記参照

wiki.archlinux.jp

どのサーバーからパッケージをダウンロードするのか選べるリストです。

~/root.x86_64/etc/pacman.d/mirrorlist 内の使用するサーバーをアンコメントします。

※ここでアンコメントしないとあとで辛くなるので忘れずに!!

resolv.conf自動生成

WSL で /etc/resolv.conf を自動生成します。

$ echo "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line." > ~/root.x86_64/etc/resolv.conf

生成したらubuntuはすべて閉じてください。。

ubuntuファイル書き換え

Windows エクスプローラで %localappdata%\Packages を開いて 「CanonicalGroupLimited.UbuntuonWindows_* 」

という名前のフォルダを探してください (アスタリスクはランダムな文字列になります)。

次に%localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs にある bin, etc, lib, lib64, sbin, usr, var を削除してください。

そして上記と同じフォルダを rootfs\root\root.x86_64 から rootfs に移動してください (コピーでは駄目です)。

Archの起動

再度ubuntuを起動すると、すでにArchに変わっています。

Archの調整として下記コマンドを入力してください

# pacman-key --init
# pacman-key --populate archlinux
# pacman -Syyu base base-devel

最後にコマンドプロンプト上でデフォルトユーザを戻しましょう

ubuntu1804.exe config --default-user [username]

これでArchの導入完了です。お疲れ様でした。

※ABSを使う場合はまだ続きます!!

ABS(Arch Build System)の導入

WSLはまだ未実装の部分があり、その影響でABSで使用するfakerootが正常に動作しません。

※AURのパッケージのインストールができない!!

※System V IPC が完全に実装されるまで必要です (こちら を参照)。WSL のバグが修正されればこの手順は不要になります。

そのため、ABSを導入するにはfakeroot-tcpのインストールが必要不可欠となります。

ですが、上記パッケージのインストールもABSもしくは別Linuxでのビルドが必要です。

念の為、ビルドできないかた用にgithubにビルドしたものを上げてあります。

ご自由にダウンロードしてください。

https://github.com/Gen-Arch/fakeroot-tcp/archive/master.zip

ダウンロードしたら下記コマンドにてインストールが可能です。

# pacman -U /mnt/c/Users/username/Downloads/fakeroot-tcp/fakeroot-tcp-1.21-2-x86_64.pkg.tar.xz

あとはyayなどAURヘルパーを導入すれば快適なArch生活の始まりです!!

2019/12/12修正 バグ治ったみたいなので不要です。

qiita.com

wsl2について

wsl2がリリースされましたね。 上記でインストールしたものを変換できるので追記します。

※name適宜置き換えて

PS C:\Users\ymdts> wsl -l -v
  NAME            STATE           VERSION
  Ubuntu          Running         1
PS C:\Users\ymdts> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
PS C:\Users\ymdts> wsl -l -v
  NAME            STATE           VERSION
  Ubuntu          Running         2
PS C:\Users\ymdts>

これだけ、下記にも記載あり。

aka.ms

systemdについて

今だsystemdたちあがらず・・・ 頑張って調べてます・・・