【2022年7月版】Synology への busybox 導入

# Synology への busybox 導入

## はじめに

- synology に ssh ログインできるようにしても、less が無い。。。
- そうだ busybox しよう

## 準備

- DSM から ssh 接続できるようにしておく
- home を使えるようにしておく
  - User & Group → User Home → Enable user home service にチェック
- 必要であれば、 ```/etc/passwd``` を修正して、デフォルトシェルを ```/bin/sh``` (/bin/bash へのシノニム) に変更する

```terminal
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Sep 26  2021 /bin/sh -> bash
```

## busybox 導入

- システムのアーキテクチャを確認する、この例では ```arm7l```

```terminal
$ uname -a
Linux synology 3.10.108 #42218 SMP armv7l GNU/Linux synology_armada38x_ds218j
```

- busybox のイメージの URL を得る

  - [busybox binaries](https://www.busybox.net/downloads/binaries/)
  - ここでは 1.21.1 の arm7l を例とする

- busybox のイメージをダウンロードする

```terminal
$ mkdir ~/bin
$ cd ~/bin
$ wget https://www.busybox.net/downloads/binaries/1.21.1/busybox-armv7l
```

- busybox のコマンドを展開する

```terminal
$ ./busybox-armv7l --instal ~/bin
$ ls
'['               cksum           env           hd          last       mke2fs       ping6           rtcwake             su            umount
'[['              clear           envdir        hdparm      less       mkfifo       pipe_progress   runlevel            sulogin       uname
 acpid            cmp             envuidgid     head        linux32    mkfs.ext2    pivot_root      run-parts           sum           unexpand
 addgroup         comm            ether-wake    hexdump     linux64    mkfs.minix   pkill           runsv               sv            uniq
 add-shell        conspy          expand        hostid      linuxrc    mkfs.vfat    pmap            runsvdir            svlogd        unix2dos
 adduser          cp              expr          hostname    ln         mknod        popmaildir      rx                  swapoff       unlzma
 adjtimex         cpio            fakeidentd    httpd       loadfont   mkpasswd     poweroff        script              swapon        unlzop
 arp              crond           false         hush        loadkmap   mkswap       powertop        scriptreplay        switch_root   unxz
 arping           crontab         fbset         hwclock     logger     mktemp       printenv        sed                 sync          unzip
 ash              cryptpw         fbsplash      id          login      modinfo      printf          sendmail            sysctl        uptime
 awk              cttyhack        fdflush       ifconfig    logname    modprobe     ps              seq                 syslogd       users
 base64           cut             fdformat      ifdown      logread    more         pscan           setarch             tac           usleep
 basename         date            fdisk         ifenslave   losetup    mount        pstree          setconsole          tail          uudecode
 beep             dc              fgconsole     ifplugd     lpd        mountpoint   pwd             setfont             tar           uuencode
 blkid            dd              fgrep         ifup        lpq        mpstat       pwdx            setkeycodes         tcpsvd        vconfig
 blockdev         deallocvt       find          inetd       lpr        mt           raidautorun     setlogcons          tee           vi
 bootchartd       delgroup        findfs        init        ls         mv           rdate           setserial           telnet        vlock
 brctl            deluser         flock         insmod      lsattr     nameif       rdev            setsid              telnetd       volname
 bunzip2          depmod          fold          install     lsmod      nanddump     readahead       setuidgid           test          wall
 busybox-armv7l   devmem          free          ionice      lsof       nandwrite    readlink        sh                  tftp          watch
 bzcat            df              freeramdisk   iostat      lspci      nbd-client   readprofile     sha1sum             tftpd         watchdog
 bzip2            dhcprelay       fsck          ip          lsusb      nc           realpath        sha256sum           time          wc
 cal              diff            fsck.minix    ipaddr      lzcat      netstat      reboot          sha3sum             timeout       wget
 cat              dirname         fsync         ipcalc      lzma       nice         reformime       sha512sum           top           which
 catv             dmesg           ftpd          ipcrm       lzop       nmeter       remove-shell    showkey             touch         who
 chat             dnsd            ftpget        ipcs        lzopcat    nohup        renice          slattach            tr            whoami
 chattr           dnsdomainname   ftpput        iplink      makedevs   nslookup     reset           sleep               traceroute    whois
 chgrp            dos2unix        fuser         iproute     makemime   ntpd         resize          smemcap             traceroute6   xargs
 chmod            du              getopt        iprule      man        od           rev             softlimit           true          xz
 chown            dumpkmap        getty         iptunnel    md5sum     openvt       rm              sort                tty           xzcat
 chpasswd         dumpleases      grep          kbd_mode    mdev       passwd       rmdir           split               ttysize       yes
 chpst            echo            groups        kill        mesg       patch        rmmod           start-stop-daemon   tunctl        zcat
 chroot           ed              gunzip        killall     microcom   pgrep        route           stat                udhcpc        zcip
 chrt             egrep           gzip          killall5    mkdir      pidof        rpm             strings             udhcpd
 chvt             eject           halt          klogd       mkdosfs    ping         rpm2cpio        stty                udpsvd
```

- PATH を通す

```terminal
$ echo export PATH='~/bin:$PATH' >> ~/.profile
```

- PATH を反映する、以下のコマンドか再ログインする

```terminal
$ source ~/.profile
```

- busybox のコマンドが使えることを確認する

```terminal
$ less ~/.proifle
```

## おわりに

- かんたんでしたね