L'émulateur Linux "iSH" qui fonctionne sur iPad est un sujet brûlant en moi

Configuration iSH

Installer l'apk

Par défaut, l'apk du gestionnaire de packages n'est pas installé, alors installez-le.

$ wget -qO- http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/apk-tools-static-2.10.5-r1.apk | tar -xz sbin/apk.static && ./sbin/apk.static add apk-tools && rm sbin/apk.static && rmdir sbin 2> /dev/null

mise à jour apk

$ apk update
$ apk upgrade

Au moins essayer divers

$ apk add zsh vim git openssh

Changer le shell par défaut

$ vim /etc/passwd
#Changer avant
root:x:0:0:root:/root:/bin/ash
#Après le changement
root:x:0:0:root:/root:/bin/zsh

Redémarrez iSH après la modification. Ensuite, l'invite est affichée comme \ h: \ w \ $ et c'est difficile à voir, alors changeons l'invite. Je veux le rendre commun à tous les utilisateurs, alors créez / etc / zshrc.

setopt PROMPT_SUBST     # allow funky stuff in prompt

if [ "$USER" = "root" ]; then
    color="red"         # root is red, user is cyan
else
    color="cyan"
fi;


local ok_yuno="%F{yellow}✘╹◡╹✘%f"
local bad_yuno="%F{red}✘>﹏<✘%f"
local command_line="
%F{green}%B%*%b%f %F{$color}%B%n@%m%b%f %F{green}%B%~%b%f
%(?.${ok_yuno}.${bad_yuno}) %F{yellow}%B%#%b%f "

export PROMPT="${command_line}"

Aussi / etc / vimrc

syntax enable

set number
set title
set cursorline
set virtualedit=onemore
set showmatch
set expandtab
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
set hlsearch
nmap <Esc><Esc> :nohlsearch<CR><Esc>

set fenc=utf-8
set encoding=utf-8
scriptencoding utf-8
set ambiwidth=double

inoremap { {}<Left>
inoremap {<Enter> {}<Left><CR><ESC><S-o>
inoremap ( ()<ESC>i
inoremap (<Enter> ()<Left><CR><ESC><S-o>
inoremap [ []<Left>
inoremap ' ''<Left>
inoremap " ""<Left>

nnoremap j gj
nnoremap k gk
nnoremap <down> gj
nnoremap <up> gk

Gardez iSH en arrière-plan

C'est une magie magique.

$ cat /dev/location > /dev/null &

Ensuite, autorisez toujours l'utilisation des informations de localisation iSH dans l'application des paramètres du système d'exploitation iPad.

Connectez-vous à iSH depuis votre client préféré avec SSH

Le terminal iSH est un peu terne, donc ce serait formidable si vous pouviez le faire fonctionner à partir d'un client auquel vous êtes habitué. Ici, je vais essayer de faire fonctionner iSH en utilisant le Blink Shell recommandé par Minorin.

Préparez-vous avec iSH

Port 22000 #Non accessible depuis le même appareil au numéro 22
PermitRootLogin yes #Passer à Non plus tard
PubkeyAuthentication yes
PasswordAutentication yes #Passer à Non plus tard
ClientAliveInterval 60 #Comme vous le souhaitez pour que SSH ne soit pas interrompu
ClientAliveCountMax 60
$ passwd #Choisissez un mot de passe root
$ ssh-keygen -A
$ /usr/sbin/sshd

Tout ce que vous avez à faire est de vous connecter depuis votre client préféré (o ・ ω ・ o)

ssh root@localhost -p 22000

Ajouter des utilisateurs généraux

$ adduser -s /bin/zsh minorin
$ addgroup minorin wheel

Installez sudo

$ apk add sudo
$ visudo
#Décommenter
%wheel ALL=(ALL) ALL

Paramètres SSH

Création de clé

$ su minorin
$ chmod 755 /home/minorin
$ cd
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh
$ touch authorized_keys
$ chmod 600 authorized_keys
$ ssh-keygen
$ chmod 600 id_rsa

Ensuite, copiez et collez la clé publique du client dans autorized_keys.

paramètre sshd_config

PermitRootLogin no
PasswordAutentication no
AddressFamily inet
UseDNS no
$ sudo /usr/sbin/sshd

Tout ce que vous avez à faire maintenant est de vous assurer que vous pouvez SSH à partir de votre client habituel avec une authentification par clé.

ssh minorin@localhost -p 22000

comme openrc

$ apk add openrc
$ rc-update add sshd

Cela devrait démarrer sshd automatiquement, mais cela ne fonctionne pas (; ∀ ;)

installation du serveur de code

$ apk add alpine-sdk libstdc++ libc6-compat npm libx11-dev libxkbfile-dev libsecret-dev python3
$ npm config set unsafe-perm true
$ npm config set python python3
$ npm install -g @google-cloud/[email protected]
$ npm install -g code-server
npm WARN @coder/[email protected] requires a peer of @google-cloud/logging@^4.5.2 but none is installed. You must install peer dependencies yourself.

npm ERR! code ENOENT
npm ERR! syscall rename
npm ERR! path /usr/lib/node_modules/code-server/node_modules/tar-fs/node_modules/chownr
npm ERR! dest /usr/lib/node_modules/code-server/node_modules/tar-fs/node_modules/.chownr.DELETE
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, rename '/usr/lib/node_modules/code-server/node_modules/tar-fs/node_modules/chownr' -> '/usr/lib/node_modules/code-server/node_modules/tar-fs/node_modules/.chownr.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-**-*****_**_**_****-debug.log

Ce n'était pas bon (; ∀ ;)

Aperçu de la prochaine fois

Pour le moment, je vais essayer de régler VNC.

Recommended Posts

L'émulateur Linux "iSH" qui fonctionne sur iPad est un sujet brûlant en moi
Linux est quelque chose comme ça en premier lieu
Jouez des sons en Python en supposant que le clavier est un clavier de piano
Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
Sous Linux, l'horodatage d'un fichier est un peu dépassé.
La somme de contrôle NVM n'est pas valide, une solution au problème que le LAN câblé d'Intel ne reconnaît pas sous Linux.
Trouvez un bâtiment de la même hauteur que Shin Godzilla sur Google Earth
[2020July] Vérifiez l'UDID de l'iPad sous Linux
Définir une adresse IP fixe dans l'environnement Linux
C'est un Mac. Qu'est-ce que la commande Linux Linux?
CodePicnic qui peut créer un environnement [Développement | Exécuter | Tutoriel | Démo] qui s'exécute sur le navigateur
Une note sur l'implémentation de la bibliothèque qui explore les hyperparamètres à l'aide de l'optimisation bayésienne en Python
[Django] Appuyez sur une commande que vous avez effectuée à partir du processus qui s'exécute sur manage.py.
Vérifiez si la chaîne est un nombre en python
Spécifiez le volume sous Linux et jouez le son
Créez un code QR pour l'URL sous Linux
Trouvez la partie 575 de Wikipedia en Python
Vérifiez si le câble LAN est déconnecté sous Linux
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
Comment supprimer "(base)" qui apparaît dans le terminal lorsqu'Anaconda est installé sur Mac
Solution de contournement pour sys.argv non transmise lors de l'exécution d'un script Python avec uniquement le nom de fichier sur Python2.7 sous Windows