[-문구-Compeople-문구-]

+::System::/WIndows2023. 7. 1. 13:41

Windows11 네트웍없이MS계정없이 OS설치

상황에 따라 네트웍 환경이 없는경우나, MS계정이 없이 로컬계정으로 OS를 설치해야 하는 경우가 있다.

이럴경우는 강제 명령 프롬프트에 수동설치 관련 명령어를 입력 후. 자동 재시작이 되면 가능하다.

1. 네트웍이 연결되지 않은 상태(인터넷이 안되거나, 랜선이 뽑힌 상태)에서

키보드에서 Shift 키 + F10키를 누르면 강제 명령 프롬프트(CMD) 창이 열린다.

Shift 키 + F10키를 누르면 강제 명령 프롬프트(CMD)

2. CMD창이 열리면 아래 명령어를 입력하면, 자동으로 시스템이 재시작이 된다.

OOBE\BYPASSNRO

 

3. 재부팅이 되고, 네트웍이나 MS계정없이 윈도우 설치가 가능하다.

Posted by SC-Compeople
+::System::/Linux2022. 8. 22. 18:00

1. 하드디스크 추가, 리눅스 파티션 생성(fdisk)

* 전원 종료후. 디스크 추가 장착한 후. 시스템 부팅.

 

* 작업 전 파티션 확인

[root@localhost ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on 
/dev/mapper/cl-root   46G  3.1G   43G   7% / 
devtmpfs             1.9G     0  1.9G   0% /dev 
tmpfs                1.9G     0  1.9G   0% /dev/shm 
tmpfs                1.9G  8.5M  1.9G   1% /run 
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup 
/dev/sda1           1014M  184M  831M  19% /boot 
tmpfs                380M     0  380M   0% /run/user/0 
** 리눅스(CentOS)를 인스톨 할 때 mininum 기본값으로 설치하면, 대략 위와 같이 파티션이 형성됨

 

*파티션을 생성하기 위해서는 fdisk를 사용

[root@localhost ~]# fdisk -l

Disk /dev/sdb: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors ==> 추가장착한 /dev/sdb,  2TB
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors => 기존 디스크 : /dev/sda

Device Boot      Start         End      Blocks   Id  System 
/dev/sda1   *        2048     2099199     1048576   83  Linux 
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM 

 

*sdb 파티션 생성작업 시작
[root@localhost ~]# fdisk /dev/sdb

 

* 현재 디스크 상황 보여주기
Command (m for help): p

Disk /dev/sdb: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors 
Units = sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk label type: dos 
Disk identifier: 0x88eb3dc1 

   Device Boot      Start         End      Blocks   Id  System 

 

* new의 약자. "n"을 눌러 디스크를 생성
Command (m for help): n
Partition type: 
   p   primary (0 primary, 0 extended, 4 free) 
   e   extended 

 

* 새롭게 추가한 디스크는 primary로 생성
Select (default p): p 


Partition number (1-4, default 1): 1 또는 Enter를 누르면 default 선택됨.
First sector (2048-4294967295, default 2048): 2048 또는 Enter를 누르면 default 선택됨.
Using default value 2048 
Last sector, +sectors or +size{K,M,G} (2048-4294967294, default 4294967294): 4294967294 또는 Enter를 누르면 default 선택됨
Using default value 4294967294 
Partition 1 of type Linux and of size 2 TiB is set 

 

* 디스크를 나누지 않고 전체를 사용하려면, 기본값으로 전부 엔터를 누르면 된다.
만약 나누려면 sector를 적당한 값으로 나누면 되고, 용량단위(MB)로 나눌 수도 있다.

* 작업완료 후 디스크 현황 다시 보기

Command (m for help): p

Disk /dev/sdb: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors 
Units = sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk label type: dos 
Disk identifier: 0x88eb3dc1 

   Device Boot      Start         End      Blocks   Id  System 
/dev/sdb1            2048  4294967294  2147482623+  83  Linux 

** /dev/sdb1 이 새로 생성됨을 확인함.

 

* write의 약자. "w" 눌러서, 저장하고 fdisk를 빠져 나온다.
Command (m for help): w
 

2. 디스크 포맷, 마운트 하기

* ext4 파일시스템으로 포맷. ext4가 지원되지 않는 리눅스 시스템은 ext3로 포맷

[root@localhost ~]# mkfs.ext4 /dev/sdb1 

Allocating group tables: done 
Writing inode tables: done 
Creating journal (32768 blocks): done 
Writing superblocks and filesystem accounting information: 
done 

* 마운트 할 디렉토리 생성

[root@localhost ~]# mkdir /backup

 

* 생성한 디렉토리에 마운트

[root@localhost ~]# mount -t ext4 /dev/sdb1 /backup

 

* 마운트 확인

[root@localhost ~]# df -h 
Filesystem           Size  Used Avail Use% Mounted on 
/dev/mapper/cl-root   46G  3.1G   43G   7% / 
devtmpfs             1.9G     0  1.9G   0% /dev 
tmpfs                1.9G     0  1.9G   0% /dev/shm 
tmpfs                1.9G  8.5M  1.9G   1% /run 
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup 
/dev/sda1           1014M  184M  831M  19% /boot 
tmpfs                380M     0  380M   0% /run/user/0 
/dev/sdb1            2.0T   81M  1.9T   1% /backup 

부팅 될 때 신규로 추가한 디스크를 fstab에 등록하는 방법은 2가지가 있다.

uuid로 마운트하는 방법, /dev 위치로 마운트 하는 방법

어떤 방법을 사용해도 상관은 없다.

/dev 위치로 마운트하는 것이 좀 더 편하지만, uuid로 마운트 진행.

[root@localhost ~]# ls -la /dev/disk/by-uuid/ 
total 0 
drwxr-xr-x 2 root root 120 Jun 29 23:25 . 
drwxr-xr-x 5 root root 100 Jun 29 22:46 .. 
lrwxrwxrwx 1 root root  10 Jun 29 22:46 0bdb72af-3279-4852-98e9-d73211f694 -> ../../dm-1 
lrwxrwxrwx 1 root root  10 Jun 29 23:25 47b5d817-f881-423d-b2f6-efa9ba3a8c -> ../../sdb1
lrwxrwxrwx 1 root root  10 Jun 29 22:46 4e90cbda-a275-4128-a703-7e28821a90 -> ../../dm-0 
lrwxrwxrwx 1 root root  10 Jun 29 22:46 7a00c89a-cd13-42ac-8f4b-011fd49520 -> ../../sda1 

* fastb 수정 

[root@localhost ~]# vi /etc/fstab
/dev/mapper/cl-root     /                       xfs     defaults        0 0 
UUID=7a00c89a-cd13-42ac-8f4b-09311fd49520 /boot                   xfs     defaults        0 0 

 

* uuid 값으로 마운트

UUID=47b817-f881-423d-b2f6-ef08a9ba3a8c  /backup                 ext4    defaults        1 0 

 

* /dev 위치로 마운트 한느 방법, 위 설정값과 중복이므로 주석처리 해둠. 둘중 선택해서 사용가능

#/dev/sdb1                                /backup                 ext4    defaults        1 0 
/dev/mapper/cl-swap     swap                    swap    defaults        0 0 

* fstab 마지막 숫자는 1 0 으로 설정한다. 마지막 숫자를 1로 하면 일정기간마다 fsck 체크를 하기 때문에, 디스크가 클 경우(1TB 이상)는 반드시 0으로 설정.

* 서버 리부팅해서 정상적으로 신규디스크가 마운트 되는 지 확인.

Posted by SC-Compeople
+::System::/Linux2021. 12. 10. 14:38

보안 차원에서 ssh 서비스 기본 포트인 22번을 다른 포트로 변경 할 경우가 있다.

ssh 기본 포트 22 번을 사용할 경우 외부에서 불법 해킹 시도로 접속 시도가 많다.(물론 방화벽에서 제어 가능)
이럴때 기본 포트만 변경 만드로 이런 불법 시도를 차단 할 수 있다. 

1. 방화벽에 변경 할 포트 설정
예제는 "9022" 번으로 포트를 변경하려 한다. 옵션에 변경 할 포트를 써서 방화벽 정책으로 추가한다.
# firewall-cmd --permanent --zone=public --add-port=9022/tcp
# firewall-cmd --reload

2. ssh 환경 설정
기본 환경파일 /etc/ssh/sshd_config 파일을 수정한다. 기본 주석처리가 되어 있다. 수정 또는 추가 하여 설정한다.
# vi /etc/ssh/sshd_config
#Port 22
Port 9022

** 보안 추가 설정 **
ssh 로 root 접속을 차단하려면 아래 옵션을 활성화 한다.
  - 변경전 : #PermitRootLogin yes  <== 주석 해제 및 아래처럼 " no"로 수정
  - 변경후 : PermitRootLogin no

3. 서비스를 재구동
# systemctl restart sshd

*** 만약 오류가 난다면. ***
Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.

** 중요 ** selinux 를 사용할 경우 포트 변경(* semanage 는 SELinux Policy Management tool)
# semanage port -a -t ssh_port_t -p tcp 9022

다시 서비스를 재구동
# systemctl restart sshd

** 혹시 그래도 오류가 해결되지 않는다면, 위 설정한 "/etc/ssh/sshd_config" 파일등을 다시 확인하여 오타나 오류가 없는지 다시 한번 확인한다.

Posted by SC-Compeople
+::System::/Linux2021. 12. 10. 14:30

** 리눅스, CentOS 7 기준 네트워크 장치명 변경 방법

1. 디바이스 장치명 확인

네트워크 장치명 확인을 위해, "ifconfig -a" 명령어 실행.

명령어 실행해 보면 "eth0", "lo" 처럼 장치명이 보이고, 이 장치명을 변경 해 보자.

ifconfig -a

 

2. 커널 옵션 추가

# vi /etc/default/grub

GRUB_CMDLINE_LINUX 옵션 맨 뒤에

"net.ifnames=0 biosdevname=0" 커널 옵션 추가.

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"

vi /etc/default/grub

3. 부트로더 수정

# grub2-mkconfig -o /boot/grub2/grub.cfg

grub2-mkconfig -o /boot/grub2/grub.cfg

 

4. 디바이스 이름 변경

# cd /etc/sysconfig/network-scripts 이동하여, "ifcfg-0000" 원하는 장치명으로 변경

cd /etc/sysconfig/network-scripts

vi /etc/sysconfig/network-scripts/ifcfg-eth0

ifcfg-0000 해당 파일 내용중 NAME=ehh0 부분, 바꾸고 싶은 이름으로 수정

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Posted by SC-Compeople
+::System::/Linux2021. 7. 13. 08:57

리눅스 기반의 시스템에서 네트웍카드를 변경시키거나, 가상화 기반의 시스템을 복사해서 새롭게 서버를 운영하려고 할때 간혹, 기존 맥어드레스 정보가 새롭게 변경된 정보를 반영이 안되어 네트웍이 정상적으로 작동하지 않을때가 있다.

아래의 경우는 가상화 기반의 시스템을 새롭게 복사해서 새로운 가상화서버로 운영하려고 할때, 기존 네트웍카드의 맥어드레스정보가 새롭게 변경된 정보로 업데이트 되지 않을때의 경우입니다.

VMware 가상 머신을 복사해서 새롭게 가상 머신을 운영하려 하면 MacAddress가 변경됩니다.
가상머신에서 사용하는 네트웍카드의 경우, 가상의 MacAddress를 사용하기 때문에
새롭게 복사를 해서 운영하려는 가상머신은 새롭게 변경된 정보를 네트웍 정보에 반영 시켜 줘야 합니다.

이 상태에서 부팅해보면 네트워크가 정상 동작하지 않습니다. 

Mac Address를 변경하여 네트워크를 정상 동작하게 하는 방법은 다음과 같습니다.
CentOS 6.9 기준 설명입니다.

먼저 네트웍카드정보의 MacAddress 부분의 정보를 변경해 줍니다.
/etc/sysconfig/networking-scripts/ifcfg-eth0 파일을 편집기로 열어줍니다. 
HWADDR=00:50:56:39:FA:2A 부분을 새로운 Mac Address를 입력해줍니다.

[ /etc/sysconfig/networking-scripts/ifcfg-eth0 ]

 

그다음 최종 반영을 위해 
/etc/udev/rules.d/70-persistent-net.rules 파일을 삭제해서 새롭게 자동생성시켜주거나
해당 파일을 열어 MacAddress 부분만 변경해 주는 방법이 있습니다.

[ /etc/udev/rules.d/70-persistent-net.rules ]

삭제를 하고 재부팅하면 새로운 Mac Address에 맞게 이 스크립트가 새로 생성됩니다.

Posted by SC-Compeople
+::System::/RaspBerryPi2021. 4. 22. 08:35

 

오늘 집에 와서 작업 좀 하려고 컴을 켰는데 무선 인터넷 연결이 되지 않는 상황이 발생했다. 지난 번에도 한번 그런 경우가 있어 해결했는데 또 다시 발생했다. 혹시나 앞으로 또 발생할 경우를 대비해서 남겨 둔다. 아마도 또 발생하지 않을까라는 생각이다.

정확한 원인은 모르겠지만 잘 되던 인터넷이 되지 않는다면 hardware나 software에 의해서 block을 당하지 않았는지 한번 확인해 보자.

sudo rfkill list

rfkill 명령을 찾지 못하면 "sudo apt-get install rfkill"을 실행해 rfkill을 설치한다.

sudo rfkill list를 실행했을 때 다음과 같은 결과를 확인한다면 정상이다.

javajigi@javajigi-desktop:~$ sudo rfkill list 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no javajigi@javajigi-desktop:~$

그런데 위 결과에서 Soft blocked: yes와 같이 yes가 있다면 누군가 block하고 있다는 것.. 누군가 block하고 있다면 다음 명령을 통해 해제해 준다.

sudo rfkill unblock wiki sudo rfkill unblock all

이와 같이 block을 모두 해제하고 "sudo rfkill list"를 실행했을 때 위와 같이 모두 no로 설정되어 있어야 한다. 모두 unblock된 것을 확인한 후에 서버를 재시작한다.

처음 "sudo rfkill list" 실행했을 때 유심히 볼 걸. 설렁설렁 보다가 30분 이상 날려 먹었다. 그래도 살려서 다행..

 

참고문서 : www.slipp.net/questions/14

참고문서 : http://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill

Posted by SC-Compeople
+::System::/RaspBerryPi2021. 4. 16. 14:54

출처 : 베어팹 / 황제곰 / 블로그 m.blog.naver.com/emperonics/221770579539

라즈베리파이 부팅시 프로그램 자동 실행시키는 5가지 방법

https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/

안녕하세요! 이번시간에는 라즈베리파이 부팅시 프로그램(스크립트)를 자동으로 실행되도록 설정하는 5가지 방법에 대해 설명드리겠습니다.

우선 왜 자동으로 프로그램이 실행되도록 설정해야 하는지를 알아야 겠죠?

왜 프로그램이 자동실행 될 필요가 있을까?

여러분들이 라즈베리파이로 뭔가 재밌는 프로젝트를 만들었는데 매번 전원을 껐다가 다시 켜면 프로그램을 구동시키기 위해 ssh로 접속해서 프로그램을 실행한다고 생각해보세요. 굉장히 짜증나는 일이겠죠? 아래사진의 시계를 예로 들어 보겠습니다. 아래 사진은 라즈베리파이제로를 사용해서 만든 LED시계인데요.

LED시계

위와 같이 시계를 구동하기 위해서 아래와 같이 스크립트 실행문을 입력해 주어야 하는데요.

만약 제작한 시계를 전원을 껐다 켤때마다 ssh로 외부에서 컴퓨터나 노트북을 사용해서 라즈베리파이로 접속해서 원하는 프로그램이나 스크립트를 매번 다시 실행해야 한다면 짜증나겠죠? 라즈베리파이는 아두이노와 다르게 여러 목적으로 활용될 수 있는 범용 제품이기 때문에 매번 전원이 새로 인가될 때마다 지정된 프로그램을 실행하지 않습니다. 따라서 우리가 특정 목적으로 라즈베리파이가 동작하도록 프로젝트를 만들었다면 그 목적에 맞는 프로그램을 부팅시 실행될 수 있게 설정할 필요가 있는 것입니다.

이와 같은 목적을 위해 라즈베리파이 부팅시 자동으로 프로그램이 실행되도록 하는 방법은 5가지가 있는데요. 하나씩 설명드리겠습니다.

1번째 방법: rc.local 파일을 수정하는 방법

rc.local 파일은 라즈베리파이가 부팅될 때 실행될 스크립트를 지정할 수 있는 파일입니다. 따라서 이 파일에 부팅시 실행될 스크립트의 경로를 설정해 놓으면 라즈베리파이가 부팅할 때 이 스크립트를 자동으로 실행하게 됩니다.

rc.local 파일 수정하기

rc.local 파일은 /etc/rc.local 의 경로에 있으므로 여러분이 좋아하는 에디터를 사용해서 이 파일을 우선 열어야 합니다. 이때 유의하실 점이 파일을 편집할 때는 반드시 루트계정으로 해야 한다는 점입니다.

sudo vi /etc/rc.local

저는 위와 같이 vi에디터를 사용했는데요. 여러분은 여러분이 사용하기 편한 에디터(nano, gedit 등)을 활용해서 편집하시면 됩니다.

**참고로 리눅스에서 sudo 명령어는 root계정으로 명령을 실행한다는 의미입니다.**

실행될 스크립트 추가

위와 같이 exit 0 윗 줄에 자동으로 실행될 명령어를 지정해 주면 되는데요. 한가지 유의할 점이 있습니다. 자동 실행될 프로그램이나 스크립트가 종료되지 않고 계속 반복해서 실행되는 프로그램이라면 아래처럼 마지막에 "&"(앰퍼샌드) 를 반드시 입력해 주어야 합니다.

sudo python /home/pi/sample.py &

그렇지 않으면 라즈베리파이는 부팅과정에서 이 프로세스에 막혀 다음 부팅과정을 진행하지 못하게 됩니다. "&"(앰퍼샌드)를 입력해 주면 하부 프로세스에서 이 프로그램을 실행하고 주 프로세서는 남은 부팅과정을 완료하게 됩니다.

실행될 파일을 추가했다면 제대로 동작하는지 확인하기 위해 라즈베리파이를 재 부팅해 봅시다. 라즈베리파이를 재부팅하기 위해서는

sudo reboot

위와 같이 명령어를 입력하면 됩니다.

부팅이 될 때까지 수십초 정도 기다리면 위에서 rc.local 파일에 입력했던 명령이 실행되는 것을 확인할 수 있습니다.

 

주의사항

이 방법을 사용할 때에는 몇가지 주의사항에 신경을 쓰셔야 하는데요. 실행될 파일은 상대경로가 아닌 절대경로를 지정해야 합니다. 예를 들자면 myscript.py대신에 /home/pi/myscript.py 와 같은 식으로 말이죠. 그리고 실행될 코드가 에러가 없는지 여러번 확인 후에 자동실행되도록 설정하는 것이 좋습니다. 왜냐하면 코드에 에러가 있으면 부팅과정에서 더 진행되지 못하고 막혀버릴 가능성이 있기 때문입니다.

2번째방법: .bashrc

두번째 방법은 .bashrc파일을 수정하는 것입니다. 이 방법은 라즈베리파이가 부팅될때 마다 실행되고 또 새로운 터미널창이 열리거나 ssh연결이 들어왔을 때에도 실행됩니다. 지정하는 방법은 'home/pi/.bashrc'파일을 수정하면 됩니다. 실행되는 프로그램은 'ctrl-c'로 중지시키는 것도 가능합니다.

그럼 파일을 수정하기 위해 아래와 같이 자신이 원하는 에디터로 파일을 열어줍니다. 저는 vim 에디터로 파일을 열었습니다.

그리고 나서 마지막 줄에 실행하고자 하는 파일과 명령어를 입력해 줍니다.

저는 Running at boot라는 메시지가 먼저 뜨고 그다음 시계 프로그램을 실행하도록 입력했습니다.

그다음 저장하고 다시 파이를 재 부팅해보면 파이가 부팅하면서 내가 지정한 프로그램을 실행하는 것을 확인 할 수 있습니다.

ssh로 파이에 다시 접속해 보면 위와 같이 Running at boot라는 메시지가 뜨는 것을 확인 할 수 있습니다.

sudo reboot

3번째방법: init.d 디렉토리 사용

세번째 방법은 여러분이 원하는 프로그램(스크립트)을 /etc/init.d 디렉토리에 넣는 것입니다. 이 디렉토리는 부팅이 시작될 때 실행될 스크립트를 모아놓는 폴더인데요. 라즈베리파이를 shutdown으로 끄거나 reboot할 때도 이 디렉토리 내의 프로그램들이 실행됩니다. 따라서 실행하고 싶은 파일(스크립트)를 이 디렉토리로 옮겨야 겠죠?

아래와 같이 리눅스의 복사 명령어를 사용하면 됩니다.

그리고 나서 옮김 디렉토리로 들어가 보면 방금 옮긴 파일을 찾을 수 있습니다.

그런데 이 옮긴 파일이 자동으로 부팅시 실행이 되려면 Linux Standard Base(LSB)라고 불리는 정해진 문법을 스크립트의 앞에 정의해야만 합니다. 따라서 옮긴 파일을 열어 아래와 같이 구문을 추가해 줍니다.

LSB

init.d 디렉토리에 있는 파일은 이 LSB 구문을 통해 부팅시 어떤 파일이 먼저 실행될지와 부팅과정을 빠르게 하기 위해 병렬로 프로그램을 실행할지 여부 등을 정하게 됩니다. 자세한 내용은 이 가이드를 참고하시기 바랍니다.

한가지 주의할 점은 옮긴 파일에 실행권한을 부여해야 한다는 것입니다. 따라서 아래와 같이 실행권한을 주는 명령어를 통해 실행권한을 부여 합니다.

마지막으로 자동실행파일을 등록하기 위해서는 아래와 같이 init.d 자동 업데이트 명령어를 내려 줍니다.

라즈베리파이를 재 부팅시켜보면 위에서 지정한 파일이 실행되는 것을 확인 할 수 있습니다.

4번째방법: SYSTEMD 사용

systemd 파일을 사용해서도 부팅할 때 실행될 프로그램을 지정할 수 있는데요. systemd파일은 리눅스시스템이 부팅될 때 어떤 프로그램이 실행될지를 지정할 수 있는 파일입니다.

1단계-파일 만들기

아래 명령어로 파일을 만듭니다.

sudo vim /lib/systemd/system/clock.service

그리고 나서 파일에 아래와 같이 입력해 줍니다.

[Unit] Description=My Sample Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python3 /home/pi/clock2.py [Install] WantedBy=multi-user.target

그 다음 파일을 저장해 줍니다. 우리는 'clock'서비스를 만들었는데요. 이 서비스는 다중유저 환경이 가능해졌을때 실행되도록 요청하는 것입니다 'ExecStart' 부분에 입력하는 명령어는 실행되길 원하는 명령어를 넣으면 됩니다 'Type'에 idle 이라고 지정을 하면 서비스가 다른 자원들이 로드되었을 때 프로그램이 실행되는 것을 보장해 줍니다. 여기서 경로는 파이썬이 실행될 절대경로여야 하고 실행될 프로그램도 마찬가지로 절대경로로 입력해야 합니다.

위에서 만든 명령어는 파일 권한이 644가 되어야 하기 때문에 아래와 같은 명령어로 파일의 권한을 바꿔 줍니다.

sudo chmod 644 /lib/systemd/system/sample.service

2단계-systemd 설정하기

이제 유닛파일을 만들었으므로 systemd가 이 유닛파일을 부팅동안에 시작시키도록 명령을 내려줍니다.

sudo systemctl daemon-reload sudo systemctl enable sample.service

이제 다시 라즈베리파이를 재부팅 시켜보면 지정된 프로그램이 실행되는 것을 확인 할 수 있습니다.

sudo reboot

5번째방법: Crontab 사용

crontab은 리눅스에서 정해진 시간에 지정한 명령을 수행하는데 사용되는 데몬(일종의 백그라운드 프로그램)인 cron에서 사용하는 테이블입니다. crontab은 단순히 부팅과정에서 프로그램을 실행되도록 하는 것 외에도 '예를들어 매주 목요일 12시에 특정프로그램을 실행'하도록 지정할 수도 있습니다.

라즈베리파이에서 크론탭을 사용하려면 아래와 같은 단계를 따르면 됩니다.

1단계- 원하는 위치에 파일을 만듭니다.

저는 /home/pi/py_test.py 라는 파일을 만들어서 아래와 같이 간단한 문장을 출력하는 프로그램을 입력했습니다.

2단계- crontab을 엽니다.

sudo crontab -e

3단계- 부팅시 실행될 명령어를 @reboot 와 함께 맨 아래줄에 추가합니다.

@reboot sudo python3 /home/pi/py_test.py

이제 라즈베리파이를 다시 재부팅하면 위에서 지정한 파일이 실행되는 것을 확인 하실 수 있습니다.

sudo reboot


제언

여러분이 실행하고 싶으신 프로그램이 라즈베리파이의 부팅에서 순서가 중요하지 않은 프로그램이라면 위 5가지 방법중 어떤 방법을 사용하셔도 좋겠죠? 하지만 때로는 순서가 매우 중요한 경우가 있습니다. 예를 들어 네트워크 연결이 설정되어야만 작동이 가능한 프로그램이라던지, 아니면 특정 디렉토리가 마운트된 다음에 실행되어야 한다던지.... 등등.... 이럴 때는 프로그램이 실행되는 순서를 지정할 수 있는 init.d나 systemd의 방법을 사용하셔야 합니다. 왜냐하면 두 방법은 부팅과정에서 어떤 스크립트를 먼저 실행할지를 지정할 수 있기 때문입니다. 아무쪼록 이 포스팅이 누군가에게는 도움이 되셨기를 바랍니다. 그럼 이만^^


출처 : 베어팹 / 황제곰 / 블로그 m.blog.naver.com/emperonics/221770579539

 

라즈베리파이 부팅시 프로그램(스크립트) 자동 실행시키는 5가지 방법

라즈베리파이 부팅시 프로그램 자동 실행시키는 5가지 방법안녕하세요! 이번시간에는 라즈베리파이 부팅시 ...

blog.naver.com

 

 

Posted by SC-Compeople
+::System::/Network2020. 3. 10. 22:55

** 유선공유기

IPTIME T5008 기가비트 8포트 유선공유기 / Mesh컨트롤러, 하드웨어 NAT 가속기, 128MB / 69,000원 

http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=883122010

 

IPTIME T5008 기가비트 8포트 유선공유기/VPN 기능지 - 11번가

배송 안내 - 최근 3개월의 배송데이터 기반으로 분석하여 예측된 배송완료 예상률입니다. - 판매자, 택배사 사정으로 예측치와 다를 수 있습니다. 레이어 닫기

www.11st.co.kr

 H/W 제품사양

주요사양

8LAN 포트 기가비트 유선공유기 / VPN서버 기능

WAN Interface

1 x 10/100/1000Mbps WAN - 케이블 자동감지

LAN Interface

8 x 10/100/1000Mbps PC Port - 케이블 자동 감지

Status LED

Power, CPU, WAN, LAN X 8

DRAM

128 Mbytes

FLASH

128 Mbytes NAND Flash

본체 크기 / 무게

182.5 X 133.5 X 26 mm / 282g

패키지 크기 / 무게

231 x 180 x 75 mm / 544g (제품 포장, 본체 및 구성품 전체의 무게 포함)

최대소비전력

5.16W

동작온도

섭씨 0 - 40도

전원

외장형 DC 어뎁터

색상

White

 

** 유무선공유기

ipTIME A2003NS-MU / Mesh컨트롤러, 하드웨어 NAT 가속기, 128MB / 41,900원

http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=1846116368

 

[12%COUPON] A2003NS-MU 기가 공유기 와이파이 무선 인터넷 3포트 - 11번가

배송 안내 - 최근 3개월의 배송데이터 기반으로 분석하여 예측된 배송완료 예상률입니다. - 판매자, 택배사 사정으로 예측치와 다를 수 있습니다. 레이어 닫기

www.11st.co.kr

 H/W 제품사양

주요사양

11AC /5GHz, 2.4GHz Dual band / 2Tx-2Rx 867Mbps WiFi / MU-MIMO
기가비트 / DDR2 128MB / 3LAN 포트 유무선공유기 / 5dbi, 4ANT / USB 2.0
Network Storage Service with FTP, SAMBA, HTTP and ipDISK
Media Server(DLNA) / 모바일 설치도우미 & iUX 제공

CPU

리얼텍 RTL8197F (1GHz)

WAN Interface

1 x 10/100/1000Mbps WAN - 케이블 자동 감지

LAN Interface

3 x 10/100/1000Mbps PC Port - 케이블 자동 감지
Jumbo Frame 지원 - 최대 9KByte

Wireless Interface

802.11 a/b/g/n/ac

Status LED

Power, CPU, WAN, LAN X 3, 2.4G Wireless, 5G Wireless

DRAM

DDR2 128 Mbytes

FLASH

16 Mbytes

안테나

5GHz 802.11ac/a/n ANT (2EA)
2.4GHz 802.11b/g/n ANT (2EA)

본체 크기 / 무게

174 x 137.5 x 33 mm (안테나크기 제외) / 316g

패키지 크기 / 무게

215 x 180 x 90 mm / 732g (제품 포장, 본체 및 구성품 전체의 무게 포함)

최대소비전력

10.2W

동작온도

섭씨 0 - 50도

전원

외장형 DC 어뎁터 (최저소비효율기준 만족제품)

색상

Black

 

Posted by SC-Compeople
+::System::/Linux2020. 1. 15. 12:57

리눅스를 콘솔모드로 사용하면 기본적 환경이 창이 작고, 색이 칙칙하다.

원하는 해상도를 설정하여 창도 크게, 색도 화사하게 변경이 가능하다.

 

변경 방법은 부트로더인 GRUB의 설정파일에 "vga=해상도코드" 를 추가시켜주면 된다.

설정파일은 /etc/grub.conf   /boot/grub/grub.conf   /boot/grub/menu.lst

위 세 파일중 하나만 골라 바꿔주면 된다.

세파일 모두 "/boot/grub/grub.conf" 로 링크 되어있기 때문에 모두 같은 파일이다.

 

grub.conf 파일을 수정 한다.

1024*768 / 16bit 로 설정할 경우, 791코드를 입력 해 주면 된다.

파일을 열고, kernel 이라고 시작하는 문장 맨 끝에 "vga=791" 이라고 추가시켜 준다.

 

vga 코드표는 아래와 같다.(참고=검토필요)

 

16진수로 넣을때는 앞에 0x 붙여준다.

변경 하였다면. 시스템 재부팅 해 본다.

VESA Display Mode 의 로딩화면이 나온다.

 

만약 위 표의 코드를 읽지 못한다면 아래와 같이 메세지가 출력된다.

엔터를 누르면, 비디오 모드의 코드값을 확인할수 있다.

위와 같이 지원되는 코드와 해상도가 나온다.

원하는 해상도의 앞에 적혀있는 코드값을 입력한다.

1024x768x16 을 할려면 333을 입력하면 된다.

위의 코드 리스트는 /etc/grub.conf 파일에서 vga=ask 로 설정해도 볼수 있다.

잘못된 코드를 입력하거나, vga=ask 로 설정하여 부팅 중간에 vga코드를 입력하였을때는

꼭!!! 부팅 후, /etc/grub.conf 의  vga=??? 값을 설정해 주여야 한다.

 

만약, 수정해서 재부팅 했는데.. 부팅 정상적으로 안된다면..

부팅시 위와 같은 화면이 뜰때 아무 키나 눌러준다.(Press any key to enter the menu)

e 키를 누룬다.

커서를 두번째 줄로 옮기고, e 키를 누른다.

grub.conf 에서 우리가 추가했던 내용이 나온다. 알맞게 수정해서 엔터키를 누른후,

b 키를 누르면 부팅이 된다...

Posted by SC-Compeople
+::System::/Linux2019. 12. 24. 22:44

기본지식

 

IDE0 HDD : /dev/hda 로 인식됨,  디스크내의 파티션은 hda1 / hda2 / hda3 .....

IDE1 HDD : /dev/hdb 로 인식됨, 디스크내의 파티션은 hdb1 / hdb2 /hdb3....

 

하드디스크 추가하고 리눅스 부팅후...

 

1. fdisk -l 로 디스크가 추가된 것을 확인 할 수 있다.

 

[root@localhost ~]# fdisk -l

Disk /dev/hda: 20.0 GB, 20060651520 bytes
255 heads, 63 sectors/track, 2438 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        2438    19478812+  8e  Linux LVM

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       19457   156288321    7  HPFS/NTFS      <- 추가된 hdd
[root@localhost ~]#

 

 

2. fdisk로 파티션 설정하기


[root@localhost ~]# fdisk /dev/hdb

The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       19457   156288321    7  HPFS/NTFS

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): d     <- 파티션 삭제
Selected partition 1

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n     <- 파티션 추가
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19457, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-19457, default 19457):
Using default value 19457

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       19457   156288321   83  Linux

 

Command (m for help): v
5165 unallocated sectors

Command (m for help): w  <- 저장하고 종료
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

3. 디스크 format : mkfs

 

[root@localhost home]# mkfs
Usage: mkfs [-V] [-t fstype] [fs-options] device [size]
[root@localhost ~]# mkfs.ext3 /dev/hdb1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
19546112 inodes, 39072080 blocks
1953604 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=41943040
1193 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

 

 

3. mount 하기

 

먼저 mount할 디렉토리를 만든다

mkdir /home/music

 

/dev/hdb1을 /home/music 에 마운트 한다.

mount /dev/hdb1 /home/music

 

4. /etc/fstab 내용 추가 ( 리부팅후에도 적용되도록)

 

#vi /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
/dev/hdb1               /home/music             ext3    defaults        1 1    <- 추가된 내용



출처: https://rapperkw.tistory.com/129 [행운.]

Posted by SC-Compeople