- 投稿日:2019-07-24T19:50:13+09:00
gitのエラーerror:1407742Eの対処法について(備忘録)
経緯
ずっと使っていなかった昔のlinuxマシンでgithubにpush使用としたらerror:1407742Eが起きた。
環境
VineLinux6.1
git1.7
git version 2.2.1対処法
gitのバージョンが古かったので、アップデートをした。
まずは、既存のgitを削除した
sudo apt-get remove gitmake時にエラーが起きないように以下のパッケージをインストールしておく
sudo apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-develインストールしたいgitをダウンロードし、解凍したあとにディレクトリを変更
sudo wget https://www.kernel.org/pub/software/scm/git/git-2.22.0.tar.gz tar zxvf git-2.22.0.tar.gz cd git-2.22.0ビルドとインストール
make prefix=/usr/local all make prefix=/usr/local installもし、makeコマンドで以下のエラーが出るようなら
/usr/bin/ld: BFD version ~以下のコマンドでインストールしてから再度実行すればできた
sudo apt-get install binutilsまとめ
突貫工事で対処してきたので、まちがっているかもしれない
- 投稿日:2019-07-24T16:57:56+09:00
How to write eBPF/XDP Programs and etc memo
Sample code for an XDP walkthrough
https://github.com/pabeni/xdp_walkthrough_examples
static inline int parse_ipv4(void *data, __u64 nh_off, void *data_end, __be32 *src, __be32 *dest) { struct iphdr *iph = data + nh_off; if (iph + 1 > data_end) /* for "It fails to pass the verifier check!" */ return 0; *src = iph->saddr; *dest = iph->daddr; return iph->protocol; }Achieving high-performance, low-latency networking with XDP: Part I
Using eXpress Data Path (XDP) maps in RHEL 8: Part 2
https://developers.redhat.com/blog/2018/12/17/using-xdp-maps-rhel8/
The above code should compile just fine, but if we try to load it with iproute, we get a bad surprise:Prog section 'prog' rejected: Permission denied (13)! - Type: 6 - Instructions: 19 (0 over limit) - License: Verifier analysis: 0: (61) r1 = *(u32 *)(r1 +0) 1: (71) r2 = *(u8 *)(r1 +13) invalid access to packet, off=13 size=1, R1(id=0,off=0,r=0) R1 offset is outside of the packet Error fetching program/map!It fails to pass the verifier check! The verifier error message could be somewhat misleading, as we are accessing the first few handful of bytes of the packet.
Load XDP programs using the ip (iproute2) command
https://medium.com/@fntlnz/load-xdp-programs-using-the-ip-iproute2-command-502043898263
A brief introduction to XDP and eBPF
https://blogs.igalia.com/dpino/2019/01/07/a-brief-introduction-to-xdp-and-ebpf/
https://blogs.igalia.com/dpino/2019/01/10/the-express-data-path/Awesome eBPF
https://github.com/zoidbergwill/awesome-ebpf/
https://github.com/zoidbergwill/awesome-ebpf/#examplesMPLS Encapsulation & Decapsulation via eBPF
https://github.com/fzakaria/eBPF-mpls-encap-decap
eBPF Powered Distributed Kubernetes Performance Analysis - Lorenzo Fontana, InfluxData
https://myslide.cn/slides/13023
https://kccna18.sched.com/event/GrYw/ebpf-powered-distributed-kubernetes-performance-analysis-lorenzo-fontana-influxdata
https://github.com/fntlnz/influxdb-ebpf-exampleGo eBPF
https://github.com/dropbox/goebpf
# go get github.com/dropbox/goebpf # go get github.com/dropbox/goebpf/goebpf_mock bpf := goebpf.NewDefaultEbpfSystem() bpf.LoadElf("test.elf") xdp := bpf.GetProgramByName("xdp_test") xdp.Load() xdp.Attach("eth0") defer xdp.Detach() test := bpf.GetMapByName("test") value, _ := test.LookupInt(0) fmt.Printf("Value at index 0 of map 'test': %d\n", )
- 投稿日:2019-07-24T10:08:49+09:00
ruby で nl80211を使う
ruby からLinuxのnl80211を使ってみました。
nl80211を使ってWi-Fiのチャンネル設定をしてみました。
Ruby で Linux の NETLINKを使うの続きです。
nl80211はgenric netlinkという仕組みを使います。
socket生成
optionにNETLINK_GENERICを指定します。
require 'socket' module Linux NETLINK_GENERIC = 16 end class Socket PF_NETLINK = 16 unless defined? Socket::PF_NETLINK AF_NETLINK = PF_NETLINK unless defined? Socket::AF_NETLINK end s = Socket.new(Socket::AF_NETLINK, Socket::SOCK_DGRAM, Linux::NETLINK_GENERIC)リクエスト生成
チャンネル設定の場合、リクエストはnlhdr, genlhdr, IFINDEXのアトリビュート、 WIPHY_FREQのアトリビュート、 WIPHY_CHANNEL_TYPEのアトリビュートを含みます。
IFINDEXが4, 周波数が 6ch (2437MHz), バンドが2.4GHzの場合のリクエストです。
nlhdr = [24, 0x16, Linux::NLM_F_REQUEST | Linux::NLM_F_ACK, 0, 0].pack("ISSII") genlhdr = [Linux::NL80211_CMD_SET_WIPHY, 0, 0].pack(SSI) if = [8, NL80211_ATTR_IFINDEX, 4].pack(SSI) freq = [8, NL80211_ATTR_WIPHY_FREQ, 2437].pack(SSI) freq_type = [8, NL80211_ATTR_WIPHY_CHANNEL_TYPE, 0].pack(SSI)リクエスト送信、レスポンス受信
s.send(nlhdr+genlhdr+if+freq+freq_type, 0) resp = s.recv(4096)調査方法
iw を --debug 付きで動かしてみるのが良いです。
root@kali:~# iw --debug dev wlan0 set channel 6 -- Debug: Sent Message: -------------------------- BEGIN NETLINK MESSAGE --------------------------- [NETLINK HEADER] 16 octets .nlmsg_len = 44 .type = 22 <0x16> .flags = 5 <REQUEST,ACK> .seq = 1495358371 .port = 1413498624 [GENERIC NETLINK HEADER] 4 octets .cmd = 2 .version = 0 .unused = 0 [PAYLOAD] 24 octets 08 00 03 00 04 00 00 00 08 00 26 00 85 09 00 00 ..........&..... 08 00 27 00 00 00 00 00 ..'..... --------------------------- END NETLINK MESSAGE --------------------------- -- Debug: Received Message: -------------------------- BEGIN NETLINK MESSAGE --------------------------- [NETLINK HEADER] 16 octets .nlmsg_len = 36 .type = 2 <ERROR> .flags = 0 <> .seq = 1495358371 .port = 1413498624 [ERRORMSG] 20 octets .error = 0 "Success" [ORIGINAL MESSAGE] 16 octets .nlmsg_len = 16 .type = 22 <0x16> .flags = 5 <REQUEST,ACK> .seq = 1495358371 .port = 1413498624 --------------------------- END NETLINK MESSAGE ---------------------------ドキュメントがないので地道にしらべないと理解できないです。
あとで調査するかも
* authenticate
* associate
* send_mlme
* set_ap_wps_ie
- 投稿日:2019-07-24T06:56:11+09:00
ハードリンクとシンボリックリンク
ハードリンクとシンボリックリンクについてのメモ
ハードリンク
- すでにあるファイルを別のファイル名(パス)で参照できるようにするもの
- 既存のiノードを参照するディレクトリエントリを追加するもの
- それぞれのディレクトリエントリのiノードは同じ
- iノードは同一ファイルシステム内にのみ一意である
- 作成されるとiノード内の情報(リンクされている数)が増える
- リンク元と同一のiノード番号を指している
シンボリックリンク
- 同じようにすでにあるファイルを別のファイル名(パス)で参照できるようにするもの
- ただし、iノードから指定せずにパス名から指定するため、別のファイルシステムからでも参照可能
- そのため、iノード番号は違う
- リンク元のポインタ(パス名)を指している
- 投稿日:2019-07-24T00:17:13+09:00
LinuxでArtifactory OSSをインストール(PostgreSQLをDB使用)
JFrogさんの公式記事にもやりかたがたくさん書いてありますが、個人的には詳細がたりなかったので一応自分用メモとして書きます。
ちょっと日本語がおかしいかもしれませんが悪しからず・・・語彙力がないので
7/23/2019
使ったのは
・Amazon Linux AMI 2018.03.0 (HVM)のt2.medium
Artifactoryさんはなかなか大きいので、無料版のMicroじゃウェブのUIをだしてくれませんでした
・Artifactory OSS zip
・Java 1.8.0
・ポート8081
デフォルトDB(Derby)ではなく外部データベースを使用したので
・PostgreSQL
・postgresql-42.1.4.jre6
・ポート5432PostgreSQLについては気が向いたら別の記事で説明します
システムのアップデート
# yum update -y全体をアプデしていきます
Java 1.8.0をインストール
デフォルトではJava1.7がインストールされてますけど1.8.0じゃないとダメなのでJavaのバージョンを変えます
# yum install java-1.8.0 -y1.8.0があるオプションをセレクトします
# /usr/bin/alternatives --config javaバージョンを確認
# java-versionJavaの場所を確認
のちのち必要になってくるので
なんとなーくここにあるんじゃない?って感じでリストをくれますけど、ちゃんと確認しにいってね・・・# whereis javaArtifactory OSSをインストール
JFrogさんの記事です: https://www.jfrog.com/confluence/display/RTF/Installing+on+Linux+Solaris+or+Mac+OS
手順とか書いてありましたが英文苦手すぎて・・・ZIPファイルのダウンロード
ここからダウンロードします:https://jfrog.com/open-source/#artifactory
ダウンロードがはじまりましたら
ダウンロードリンクをブラウザからコピペします(ものすごく長いです)# wget https://akamai.bintray.com/fc/fc2277fa4da9cfd83ca3af9ca94b2b03717e3df60573ab19f0281c9954117eda?__gda__=exp=1563887491~hmac=09a20401bc93409773d1097aa6e41529b0624b248676e3cc5445817edf720062&response-content-disposition=attachment%3Bfilename%3D%22jfrog-artifactory-oss-6.11.3.zip%22&response-content-type=application%2Foctet-stream&requestInfo=U2FsdGVkX18lyb8812SXCcJp8ELw0ivPZUVvKCJIkK6KSkVU69pcOAN0iaIE1qhK98x5LeNHn2KjjYT-mx_iknCgWrTdRW6iEzgymbsKrXAMBoKXDd2EtzZt5bPoWn5UPs9jBiGseDE2sxpOd3Ou3_rZNABBT9AZS3WJZT8tFjE&response-X-Checksum-Sha1=fe39d031c59c33f51fd881b4294740f3576380d2&response-X-Checksum-Sha2=fc2277fa4da9cfd83ca3af9ca94b2b03717e3df60573ab19f0281c9954117edaインスタンスにZIPファイルがダウンロードしたのち、
わかりやすい名前(jfrog-artifactory-oss-6.11.1.zip)に改名# ll ファイルの改名 # mv 現在名をコピペ jfrog-artifactory-oss-6.11.1.zip解凍先を作る
いろんな.sh内のコンフィグがこのpathを使ってるので似せるだけな簡単なお仕事なんですが、これを知るまでなぜPostgreSQLのDBで動かなかったか分からなかった苦悩の時間・・・返して・・・
homeからrootに上って
root/var/opt/に入りjfrogのディレクドリーを制作# mkdir jfrog解凍します!!!!
# unzip jfrog-artifactory-oss-6.11.1.zip /var/opt/jfrog/jfrog内に新しくできたファイル名をartifactoryに改名します
# mv jfrog-artifactory-oss-6.11.1 artifactoryPostgreSQL
ここからはPostgreSQLのターン!
繋げるためにはまだまだ作業が必要
artifactory/misc/db/postgresql.propertiesを/etcにコピーさせますcp artifactory/misc/db/postgresql.properties artifactory/etc/名前を
db.propertiesに変更します# mv postgresql.properties db.propertiesPostgreSQL DBのIP情報や、作ったartifactoryのユーザー情報を入れていきます
終わったらちゃんとセーブしてね!# vi db.propoertiesTomcat/PostgreSQL JDBC
PostgreSQLをちゃんと走らせるためにはJDBCが必要になります。私は
postgresql-42.1.4.jre6を使いました
リンク:https://jdbc.postgresql.org/download.htmlZIPファイルをダウンロードした時と同じ要領で
artifactory/tomcat/lib/に入れていってください# wget コピーしたJDBCのダウンロードリンクをここにッペしてくださいダウンロードが終わりましたら走れるようにします。緑になるので分かりやすいですよ
# chmod +x postgresql-42.1.4.jre6.jarartifactory.default
artifactory/bin/artifactory.default内をコンフィグします
初めらへんでメモしたJavaのロケーションが必須になりますよ!そうじゃないとTomcatがお仕事してくれません# vi artifactory.default 3つのエクスポートのコメントを消してね #Default Values export ARTIFACTORY_HOME=/var/opt/jfrog/artifactory export ARTIFACTORY_USER=artifactory export JAVA_HOME=/usr/lib/java-1.8.0 (メモしたJavaの場所を書いてね) #export START_LOCAL_REPLICATOR=trueArifactoryをサービスとしてインストール
binに移動してインストール
# cd artifactory/bin/ # ./installService.shRun Artifactory
リスタートしても自動で動くように
chkconfigもしていきます# chkconfig artifactory on # service artifactory start http://local_host_IP:8081 でUIにアクセスできますアクセスしたのち
Adminとしてのパスワードを登録ができるようになるので、登録するまで小さなウィンドウはスキップしないでね!ね、簡単でしょう?
個人的にはここまでたどり着くのにかなり時間がかかりました・・・書き出してみると簡単なんですけどね。
なので、もしこれが誰かの役に立てれば幸いです
余談:ログはcatalina.outが個人的には見やすかったです
お世話になったリンク
Zipファイルのダウンロード
・https://jfrog.com/open-source/#artifactory公式の説明
・https://www.jfrog.com/confluence/display/RTF/Installing+ArtifactoryZipファイルのダウンロード、解凍の仕方
・https://www.youtube.com/watch?v=IFF-jnAxlDsArtifactoryのデータベースを変更
・https://www.jfrog.com/confluence/display/RTF/Configuring+the+DatabasePostgreSQLを走らせるためのJDBC
・https://jdbc.postgresql.org/download.html