Beaglebone Black / Ubuntu 최적화 스크립트

###########################################################
#
# Beaglebone Black 최적화 스크립트
#
# 이 스크립트는
# BBB-eMMC-flasher-ubuntu-16.04.1-console-armhf-2017-01-13-2gb.img
# 에서 시험되었으며, 반드시 인터넷이 가능하고 ubuntu/temppwd
# 계정으로 실행해야 한다.
#
###########################################################

EXTERNAL_MOUNT_DIR=/external

###########################################################
#
# root 패스워드 설정
#
###########################################################
sudo echo "PLEASE, ENTER NEW ROOT PASSWORD."
sudo passwd root

###########################################################
#
# lrzsz 설치
#
###########################################################
sudo apt-get update -y
sudo apt-get -y install lrzsz

###########################################################
#
# 로케일 설정
#
###########################################################
sudo locale-gen "ko_KR.UTF-8"

###########################################################
#
# X11 및 불필요한 패키지 제거
#
###########################################################
sudo apt-get -y remove --purge lightdm
sudo apt-get -y remove --purge gnome*
sudo apt-get -y remove --purge qtcreator*
sudo apt-get -y remove --purge x11-common
sudo apt-get -y remove --purge apache2

###########################################################
#
# eMMC 초기화 (초기화 시키면 부팅스위치로 부팅해야 함)
# /dev/mmcblk0 : sdcard
# /dev/mmcblk1 : eMMC
# sudo dd if=/dev/zero of=/dev/mmcblk1 bs=512 count=1
#
###########################################################
#dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=1
#dd if=/dev/zero of=/dev/mmcblk1 bs=512 count=1

###########################################################
#
# eMMC 자동 마운트 추가
# (Debian이 Standalone 버전인 경우 사용)
#
###########################################################
#mkdir /emmc
#chmod 707 /emmc
#echo "/dev/mmcblk1p1 /emmc auto auto,rw,async,user,nofail 0 2" >> /etc/fstab

###########################################################
#
# MicroSD 자동 마운트 추가
# (Debian이 Flasher 버전인 경우 사용)
#
###########################################################
#mkdir /sdcard
#chmod 707 /sdcard
#echo "/dev/mmcblk0p1 /sdcard auto auto,rw,async,user,nofail 0 2" >> /etc/fstab

###########################################################
#
# 타임존 셋팅
#
###########################################################
sudo chmod 666 /etc/timezone
sudo echo "Asia/Seoul" > /etc/timezone
#sudo echo "Etc/UTC" > /etc/timezone
sudo chmod 644 /etc/timezone

###########################################################
#
# 네트워크 셋팅 (IP주소 수정 후 실행)
#
# 윈도우PC의 Linux USB Ethernet 인터페이스의 IPV4주소는
# 192.168.7.1/255.255.255.252로 변경해 주어야 한다.
#
# Wifi와 Ethernet은 한가지만 사용가능하며,
# 만일 Wifi를 사용하기 위해서는 "auto eth0"를 삭제한다.
#
###########################################################
sudo cp /etc/network/interfaces /etc/network/interfaces.old
sudo chmod 666 /etc/network/interfaces
sudo echo "# localhost" > /etc/network/interfaces
sudo echo "auto lo" >> /etc/network/interfaces
sudo echo "iface lo inet loopback" >> /etc/network/interfaces
sudo echo "" >> /etc/network/interfaces
sudo echo "# Ethernet" >> /etc/network/interfaces
sudo echo "auto eth0" >> /etc/network/interfaces
sudo echo "iface eth0 inet static" >> /etc/network/interfaces
sudo echo "address 192.168.0.3" >> /etc/network/interfaces
sudo echo "netmask 255.255.255.0" >> /etc/network/interfaces
sudo echo "gateway 192.168.0.1" >> /etc/network/interfaces
sudo echo "dns-nameservers 168.126.63.1" >> /etc/network/interfaces
sudo echo "" >> /etc/network/interfaces
sudo echo "# USB" >> /etc/network/interfaces
sudo echo "auto usb0" >> /etc/network/interfaces
sudo echo "iface usb0 inet static" >> /etc/network/interfaces
sudo echo "address 192.168.7.2" >> /etc/network/interfaces
sudo echo "netmask 255.255.255.252" >> /etc/network/interfaces
sudo echo "gateway 192.168.7.1" >> /etc/network/interfaces
sudo echo "dns-nameservers 168.126.63.1" >> /etc/network/interfaces
sudo echo "" >> /etc/network/interfaces
sudo echo "# Wifi" >> /etc/network/interfaces
sudo echo "#auto wlan0" >> /etc/network/interfaces
sudo echo "#allow-hotplug wlan0" >> /etc/network/interfaces
sudo echo "#iface wlan0 inet static" >> /etc/network/interfaces
sudo echo "#address 192.168.0.3" >> /etc/network/interfaces
sudo echo "#netmask 255.255.255.0" >> /etc/network/interfaces
sudo echo "#gateway 192.168.0.1" >> /etc/network/interfaces
sudo echo "#dns-nameservers 168.126.63.1" >> /etc/network/interfaces
sudo echo "#wpa-ssid \"N702BCM\"" >> /etc/network/interfaces
sudo echo "#wpa-psk \"0123456789\"" >> /etc/network/interfaces
sudo chmod 644 /etc/network/interfaces

###########################################################
#
# 네트워크 셋팅 (DNS)
#
###########################################################
sudo chmod 666 /etc/resolv.conf
sudo echo "search local" > /etc/resolv.conf
sudo echo "nameserver 168.126.63.1" >> /etc/resolv.conf
sudo chmod 644 /etc/resolv.conf

###########################################################
#
# USB 네트워크 인터페이스 이름변경 금지
#
###########################################################
sudo mv /lib/udev/rules.d/73-usb-net-by-mac.rules /lib/udev/rules.d/73-usb-net-by-mac.rules.no_run

###########################################################
#
# 전체 패키지 업데이트
#
###########################################################
sudo apt-get update -y
sudo apt-get upgrade -y

###########################################################
#
# 불필요한 서비스 제거
#
# enable 되어있는 서비스 보기
# ls -1 /etc/rc$(runlevel| cut -d" " -f2).d/S* | awk -F'[0-9][0-9]' '{print "Startup :-> " $2}'
#
###########################################################
sudo update-rc.d -f acpid remove
sudo update-rc.d -f alsa-utils remove
sudo update-rc.d -f apache-htcacheclean remove
sudo update-rc.d -f apache2 remove
sudo update-rc.d -f avahi-daemon remove
sudo update-rc.d -f bootlogs enable
sudo update-rc.d -f cgmanager remove
sudo update-rc.d -f cgproxy remove
sudo update-rc.d -f console-setup remove
sudo update-rc.d -f dbus remove
sudo update-rc.d -f dnsmasq remove
sudo update-rc.d -f haveged remove
sudo update-rc.d -f hdparm remove
sudo update-rc.d -f hostapd remove
sudo update-rc.d -f keyboard-setup remove
sudo update-rc.d -f killprocs remove
sudo update-rc.d -f kmod enable
sudo update-rc.d -f loadcpufreq enable
sudo update-rc.d -f motd enable
sudo update-rc.d -f pppd-dns remove
sudo update-rc.d -f procps enable
sudo update-rc.d -f rc.local enable
sudo update-rc.d -f rmnologin enable
sudo update-rc.d -f rsync remove
sudo update-rc.d -f screen-cleanup remove
sudo update-rc.d -f sendsigs remove
sudo update-rc.d -f sudo enable
sudo update-rc.d -f ti-ipc-dra7xx enable
sudo update-rc.d -f udev remove
sudo update-rc.d -f udhcpd remove
sudo update-rc.d -f umountfs remove
sudo update-rc.d -f umountroot remove
sudo update-rc.d -f urandom remove

# systemctl -t service -a
sudo systemctl disable alsa-restore.service
sudo systemctl disable alsa-state.service
sudo systemctl disable alsa-store.service
sudo systemctl disable avahi-daemon.service
sudo systemctl disable bb-wl18xx-bluetooth.service
sudo systemctl disable bluetooth.service
sudo systemctl disable bonescript-autorun.service
sudo systemctl disable bonescript.service
sudo systemctl disable bonescript.socket
sudo systemctl disable cloud9.service
sudo systemctl disable cloud9.socket
sudo systemctl disable connman.service
sudo systemctl disable dbus.service
sudo systemctl disable node-red.service
sudo systemctl disable systemd-timesyncd
sudo systemctl disable udhcpd.service
sudo systemctl enable cpufrequtils.service
sudo systemctl enable cron.service
sudo systemctl enable getty@tty1.service
sudo systemctl enable kmod-static-nodes.service
sudo systemctl enable loadcpufreq.service
sudo systemctl enable networking.service
sudo systemctl enable networking.service
sudo systemctl enable rc-local.service
sudo systemctl enable rsyslog.service
sudo systemctl enable serial-getty@ttyS0.service
sudo systemctl enable ssh.service
sudo systemctl enable systemd-fsck@dev-mmcblk1p1.service
sudo systemctl enable systemd-journal-flush.service
sudo systemctl enable systemd-journald.service
sudo systemctl enable systemd-logind.service
sudo systemctl enable systemd-modules-load.service
sudo systemctl enable systemd-random-seed.service
sudo systemctl enable systemd-remount-fs.service
sudo systemctl enable systemd-sysctl.service
sudo systemctl enable systemd-timesyncd.service
sudo systemctl enable systemd-tmpfiles-setup-dev.service
sudo systemctl enable systemd-tmpfiles-setup.service
sudo systemctl enable systemd-udev-trigger.service
sudo systemctl enable systemd-udevd.service
sudo systemctl enable systemd-update-utmp.service
sudo systemctl enable systemd-user-sessions.service
sudo systemctl enable udhcpd.service
sudo systemctl enable wpa_supplicant.service

###########################################################
#
# 불필요한 파일 정리
#
###########################################################
sudo rm -f /var/log/*log
sudo rm -f /var/log/messages
sudo rm -rf /tmp/*

###########################################################
#
# RootFS 파티션을 SD Card 전체용량을 사용하도록 확장
#
###########################################################
sudo sync
sudo /opt/scripts/tools/grow_partition.sh

###########################################################
#
# 필요한 패키지 설치
# (설치가 안될 수 있으니 리부팅 후 확인 요망)
#
###########################################################
sudo apt-get -y install screen wireless-tools wpasupplicant hostapd
sudo apt-get -y install gzip bzip2 tar unrar arj p7zip minicom mc ftp lsof
sudo apt-get -y install iptables bridge-utils isc-dhcp-server
sudo apt-get -y install ntfs-3g

###########################################################
#
# vsftpd 패키지 설치
#
###########################################################
sudo apt-get -y install vsftpd
sudo echo "chroot_local_user=YES" >> /etc/vsftpd.conf
sudo echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf
sudo systemctl disable vsftpd.service

###########################################################
#
# nfs 패키지 설치
#
###########################################################
#sudo apt-get -y install nfs-kernel-server
#sudo apt-get -y install rpcbind
#sudo update-rc.d nfs-kernel-server remove
#sudo update-rc.d rpcbind remove

###########################################################
#
# samba 패키지 설치
#
###########################################################
sudo apt-get -y install samba
usermod -d ${EXTERNAL_MOUNT_DIR} ubuntu

###########################################################
#
# samba 설정
#
###########################################################
sudo sync
sudo echo ""                                 >> /etc/samba/smb.conf
sudo echo "[global]"                         >> /etc/samba/smb.conf
sudo echo "netbios name = BBB"               >> /etc/samba/smb.conf
sudo echo "workgroup = WORKGROUP"            >> /etc/samba/smb.conf
sudo echo "hosts allow = 127. 192.168.0."    >> /etc/samba/smb.conf
sudo echo ""                                 >> /etc/samba/smb.conf
sudo echo "[share]"                          >> /etc/samba/smb.conf
sudo echo "   comment = Beaglebone Black"    >> /etc/samba/smb.conf
sudo echo "   browseble = yes"               >> /etc/samba/smb.conf
sudo echo "   writable = yes"                >> /etc/samba/smb.conf
sudo echo "   share modes = yes"             >> /etc/samba/smb.conf
sudo echo "   valid users = @users"          >> /etc/samba/smb.conf
sudo echo "   create mode = 0660"            >> /etc/samba/smb.conf
sudo echo "   directory mode = 0770"         >> /etc/samba/smb.conf
sudo echo "   guest ok = yes"                >> /etc/samba/smb.conf
sudo echo "   path = ${EXTERNAL_MOUNT_DIR}"              >> /etc/samba/smb.conf
sudo echo "#!/bin/sh" > /start.samba
sudo echo "mkdir -p ${EXTERNAL_MOUNT_DIR}" >> /start.samba
sudo echo "mount -t ntfs-3g /dev/sda1 ${EXTERNAL_MOUNT_DIR}" >> /start.samba
sudo echo "#systemctl start nmbd.service" >> /start.samba
sudo echo "systemctl start smbd.service" >> /start.samba
sudo echo "#!/bin/sh" > /stop.samba
sudo echo "#systemctl stop nmbd.service" >> /stop.samba
sudo echo "systemctl stop smbd.service" >> /stop.samba
sudo echo "umount /dev/sda1" >> /stop.samba
sudo chmod 755 /start.samba
sudo chmod 755 /stop.samba
sudo systemctl disable nmbd.service
sudo systemctl disable smbd.service
mkdir -p ${EXTERNAL_MOUNT_DIR}
chmod 755 ${EXTERNAL_MOUNT_DIR}

###########################################################
#
# timezone & locale
#
###########################################################
apt-get -y install language-pack-ko
locale-gen ko_KR.UTF-8
update-locale LANG=ko_KR.UTF-8
timedatectl set-timezone "Asia/Seoul"

###########################################################
#
# sshd root 계정 활성화
#
###########################################################
sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

###########################################################
#
# 불필요한 파일들 삭제
#
###########################################################
sudo apt-get -y -f autoremove
sudo apt-get -y autoclean
sudo apt-get -y clean
sudo sync
위로 스크롤