そんなん Japanese Language Pack をアンインストールして即座に再インストールよ
chrootで、なんかシェルがおかしい
chrootしたとき、シェルがおかしいときがある
# chroot /data/chroot_hoge
\u@\h:\w$
ショボい環境でchrootするとだいたいこうなる。
chrootしたときに起動されるシェルは $SHELL なので、
シェルが/bin/shの環境から Debian環境のchrootを起動すると
/bin/sh ⇒ /bin/dash が起動されてしまう。
回避策は
2. SHELL=/bin/bash
SHELLを書き換えてしまえば良いが、なんかちょっとキモい
# SHELL=/bin/bash chroot /data/chroot_hoge (chroot)root@hoge:/#
Cygwinで、SDカードをext4でフォーマットする
準備
util-linux と e2fsprogs をインストールしておく
管理者権限で起動
Cygwinを管理者権限で起動する
フォーマット
/proc/partitions を見て、SDカードがどこにあるのかアタリをつける
$ cat /proc/partitions major minor #blocks name win-mounts 8 0 234431064 sda 8 1 562176 sda1 8 2 233063146 sda2 C:\ 8 3 801792 sda3 8 16 2930266584 sdb 8 17 16384 sdb1 8 18 2930248704 sdb2 D:\ 8 32 2930266583 sdc 8 33 131072 sdc1 8 34 2930134016 sdc2 E:\ 8 48 7879680 sdd 8 49 7878656 sdd1 F:\
cfdiskの使い勝手は 普通のLinuxといっしょ
/sbin へのパスは通ってないので、フルパスで実行
$ /sbin/cfdisk /dev/sdd
mkfs.ext4の使い勝手は 普通のLinuxといっしょ
/usr/sbin へのパスは通ってないので、フルパスで実行
$ time /usr/sbin/mkfs.ext4 /dev/sdd1
Linuxで、利用可能なファイルシステムの一覧を取得する
/proc/filesystems を見ることでマウントできるファイルシステムがわかる。
nodevはブロックデバイスを使わないもの、要は仮想ファイルシステムという意味
$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
nodev cgroup
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev sockfs
nodev pipefs
nodev rpc_pipefs
nodev devpts
ext3
ext2
ext4
vfat
nodev nfs
nodev nfs4
nodev autofs
nodev overlay
nodev mqueue
nodev ubifs
bashで、rootじゃなければエラーにする
シェル変数UIDを使う
シェル変数UIDには実ユーザIDが入っている
0ならroot
#!/bin/bash if [ "$UID" != "0" ]; then echo "root以外では実行できません" exit 1 fi
scpしたときにエラーが出る
新しめのサーバから yoctoで作ったようなショボい環境(opensshじゃなくてdropbearとか)へ scpコマンドでファイル転送すると、だいたいエラーになる
ssh-rsa で通信する
$ scp a.out root@192.168.101.80:/tmp/ Unable to negotiate with 192.168.101.80 port 22: no matching host key type found. Their offer: ssh-rsa scp: Connection closed
新しめのサーバではssh-rsaは使わないようになっている。
ssh_configまたはscpのオプションでssh-rsaを追加する
# /etc/ssh/ssh_config.d/rsaenable.conf HostKeyAlgorithms=+ssh-rsa
$ scp -O -oHostKeyAlgorithms=+ssh-rsa a.out root@192.168.101.80:/tmp/
Cygwinで、コマンドラインでtabを押したときのファイル名補完で .exe が表示されない
Cygwinで hello.exe を実行するときに、 bash上で ./he まで入力してtabを押しても ./hello で止まってしまって ./hello.exe とならない。
コマンドの引数のときの補完では ちゃんと hello.exe まで出る。
別に ./hello で普通に実行できるからいいんだけど、気分は良くない。
調べたところ、 shopt に completion_strip_exe というexeを非表示にできるオプションがあるらしい。
$ man bash 。。。 completion_strip_exe If set, whenever bash sees foo.exe during completion, it checks if foo is the same file and strips the suffix.
これがデフォルトで有効になっていたので、.bashrc で無効にして解決した。
shopt -u completion_strip_exe
どうも海外のサイトを見ていると、これは大いに受け入れられているらしい。
どこをみても「.exeつかなくなった!やったぜ」的な反応ばっかりでビビった