はじめに
登頂は無理だけど, 3合目まで頑張るぞい.
3合目は, 最低限のソフトウェアをインストールして, 最低限のセキュリティ確保して,
DockerでTensorflowを動かせるようにすること. DockerやTensorflowの勉強も含みです.
0.5合目くらいのような気もしますが.
HHKB Type-S新型やべーな, 会社のも新型にしたいな, 金ないけど.
全部Alpineのリファレンスに書いてあるぞ. 典型的なQiitaクソ記事だね.
Qiitaが検索に上がるの, 本当にやめてほしい.
この記事はインストールと設定しか書いていないため, 運営により削除されるはずです.
そうでなければおかしい.
Speed Running Windows 95みたいな. チャート作らなきゃ.
インストロール
ムーミンはトロールだよ(ヒポポタマスじゃん).
起動したらとりあえず rootって打っとけ.
$ setup-alpine
$ adduser nya
$ addgroup nya nekozoku
キーボードは, 'us us'.
Network
/etc/network/interfaces
を編集する.
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
gateway xxx.xxx.xxx.xxx
Wifi
これはsetup-alpineで, できていると思われる.
$ iwconfig wlan0 essid SSID0
$ wpa_passphrase 'SSID0' 'PASSWORD' > /etc/wpa_supplicant/wpa_supplicant.conf
$ wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
$ udhcpc -i wlan0
setup-alpineでは永続化はされない, サービスを入れておく.
リファレンスどおり, 確認してから起動する, ふーん慎重じゃん.
$ ifconfig wlan0 down
$ /etc/init.d/wpa_supplicant start
$ rc-update add wpa_supplicant boot
静的にするなら, /etc/network/interfaces
iface wlan0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
gateway xxx.xxx.xxx.xxx
TUI
というらしい, もうよくわからない.
常時SSHならそれほど必要ないのだけれど, 高解像度ディスプレイに直接つなぐ場合はそのままだとつらい.
extlinux bootloader
/boot/extlinux.conf
を書く.
APPEND
からnomodeset
を削除, video=800x600
とか追加.
Hyper-V
はかなり優秀というのは置いておいて, video=hyperv_fb:800x600
とする.
Screen
$ apk add screen
リポジトリ追加
/etc/apk/repositories
を編集する. communityリポジトリぐらいは追加しておく.
$ apk update
$ apk upgrade
sshd
$ apk add tinyssh
$ rc-update add tinysshd
Firewall
WIP
IPv6は必要なら.
$ sudo apk update
$ sudo apk add iptables ip6tables
$ sudo apk add -u awall
$ sudo apk version awall
カーネルモジュール追加, iptable_natはルーティングが必要な場合に追加.
$ sudo modprobe -v ip_tables
$ sudo modprobe -v ip6_tables
$ sudo modprobe -v iptable_nat
$ sudo rc-update add iptables
$ sudo rc-update add ip6tables
https://github.com/alpinelinux/awall から
sample-policy.json
をベースにする.
$ wget https://raw.githubusercontent.com/alpinelinux/awall/master/sample-policy.json
$ sudo mv ./sample-policy.json /etc/awall/optional/default-policy.json
$ sudo awall list
$ sudo awall translate --verify
$ sudo awall enable default-policy
$ sudo awall activate
/etc/awall/optional/base.json
とりあえず何もしないもので試す.
{
"description": "default policy",
"zone": {
"WAN": { "iface": ["eth0", "wlan0"] }
},
"policy": [
{"in": "_fw", "out": "WAN", "action":"accept"},
{"in": "WAN", "action": "accept" },
{"out": "WAN", "action": "accept"}
]
}
sudo
root権限で, wheelグループは最初からある.
$ apk add sudo
$ visudo
%wheel ALL(=ALL) ALL
は入れておいて, Defaults timestamp_timeout = 10
は好みで設定する.
Certification
証明書が必要なときに.
$ sudo mv xxx.crt /usr/share/ca-certificates/
$ sudo vim /etc/ca-certificates.conf
#xxx.crtを追記
$ sudo update-ca-certificates
Python3
$ sudo apk add python3
$ sudo apk add py3-pip
MariaDB
$ sudo apk add mariadb mariadb-client
$ sudo /etc/init.d/mariadb setup
mysqld --help --verbose | grep my.cnf
my.cnf
[client]
port = 3306
socket = /run/mysqld/mysqld.sock
default-character-set=utf8mb4
[mysqld]
port = 3306
socket = /run/mysqld/mysqld.sock
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
skip-external-locking
key_buffer_size = 8M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 4M
tmpdir = /tmp/
log_error = /var/log/mysql/mariadb.log
#skip-networking
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
bind-address = 127.0.0.1
[mysqldump]
quick
max_allowed_packet = 8M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 10M
sort_buffer_size = 10M
read_buffer = 1M
write_buffer = 1M
[mysqlhotcopy]
interactive-timeout
$ sudo rc-service mariadb start
$ sudo rc-update add mariadb
$ sudo mysql_secure_installation
Gogs
$ git clone --depth 1 https://github.com/gogs/gogs.git gogs
$ cd gogs
$ go build -o gogs
OpenRCのサービスを作成する.
/etc/init.d/gogs
#!/sbin/openrc-run
SVCNAME=gogs
GOGS_PIDFILE=/var/run/gogs.pid
GOGS_USER=git
GOGS_HOME=/home/$GOGS_USER
GOGS_PATH=$GOGS_HOME/gogs
COMMAND="${GOGS_PATH}/gogs"
ARGS="web"
depend() {
need net
use dns logger mysql
}
checkconfig() {
if [ ! -d "$GOGS_PATH" ] ; then
eerror "gogs not installed" || return 1
fi
return 0
}
start() {
checkconfig || return 1
ebegin "Starting ${SVCNAME}"
start-stop-daemon --start --quiet --background \
--make-pidfile --pidfile "${GOGS_PIDFILE}" \
--user "${GOGS_USER}" \
-d ${GOGS_PATH} \
--exec "${COMMAND}" "${ARGS}"
eend $?
}
stop() {
ebegin "Stopping ${SVCNAME}"
start-stop-daemon --stop --quiet --pidfile $GOGS_PIDFILE
eend $?
}
$ sudo rc-service gogs start
$ sudo rc-update add gogs
Desktop
Xfce
$ sudo setup-xorg-base xfce4 xfce4-terminal lightdm-gtk-greeter xfce4-screensaver dbus-x11
環境に合うビデオドライバを選択します.
Intelの場合, Haswell以降はxf86-video-modesetting
, より前はxf86-video-intel
を使うのが正解らしいです.
$ apk search xf86-video
$ sudo apk add xf86-video-fbdev # Use xf86-video-fbdev for Hyper-V guests
$ apk search xf86-input
$ sudo apk add xf86-input-keyboard xf86-input-mouse
$ sudo apk add kbd
$ sudo rc-update add dbus
$ sudo rc-update add lightdm
OpenGL
$ sudo apk add mesa
$ sudo apk add mesa-dev
$ sudo apk add mesa-dri-gallium
テストアプリ.
$ sudo apk add mesa-demos
Xvfb
$ sudo apk add xvfb xvfb-run
VNC
/etc/local.d
のスクリプトが実行されるようにする.
$ sudo apk add x11vnc
$ sudo rc-update add local default
Option | Description | Example |
---|---|---|
-display | Specify display | -display :0 |
-rfbport | The port to listen on | -rfbport 5900 |
-geometry | Same as -scale WxH | -scale 1024x178 |
-viewonly | All clients can only watch | |
-shared | Display is shared | |
-forever | Keep listening for more connections | |
-bg | Go into the background. | |
-noxdamage | Don't use the X DAMAGE |
/etc/local.d/vnc.start
#!/bin/sh
nohup x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -shared -forever -bg -auth /var/run/lxdm/lxdm-\:0.auth -rfbport 5900 -o /var/log/vnc.log > /dev/null 2>&1 &
$ sudo chmod +x /etc/local.d/vnc.start
Headless
$ sudo apk add xf86-video-dummy
Docker
/etc/apk/repositories
, Dockerはcommunityにあるもよう.
http://dl-cdn.alpinelinux.org/alpine/v3.10/community
$ sudo apk update
よくないとは知りつつdockerグループに属する.
$ sudo apk add docker
$ sudo apk add docker-compose
$ sudo addgroup nya docker
$ sudo /etc/init.d/docker start
$ docker system info
$ sudo rc-update add docker boot
念願のDockerを手に入れたぞ.
Tensorflow
この項はまだ途中
ここまでくると, Alpineは関係なくなっていますが.
Intel optimized Tensowflow
Tensorflow 1.14からIntel MKL DNNを使用している.
https://software.intel.com/en-us/articles/intel-optimization-for-tensorflow-installation-guide
https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
REPOSITORY | TAG | SIZE |
---|---|---|
intelaipg/intel-optimized-tensorflow | latest | 3.29GB |
intelaipg/intel-optimized-tensorflow | latest-py3 | 2.07GB |
gcr.io/deeplearning-platform-release/tf2-cpu | latest | 6.26GB |