Windows PowerShell을 관리자 권한으로 실행시켜줍니다.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 입력
중요)만약 16215 이하라면 업데이트를 한 후 진행
해당 링크를 통해 Ubuntu를 설치해준다
이제 우분투 가상머신이 실행되서 실행시킬 수 있다.
Unix user name과 Password를 설정해준다
sudo passwd 명령어를 입력하여 리눅스 비밀번호를 설정해준다
sudo apt-get update
(Antivirus 프로그램이 설치되어 있다면 패키지 설치를 막는다. Protect를 꺼둔 후 실행하는 것이 좋다)
sudo apt-get install vim minicom gcc tar zip -y
(native 컴파일러 및 작업용 IDE, 압축해제 프로그램 등)
sudo apt-get install gcc-arm-linux-gnueabi -y
(cross 컴파일러, 이후에 실습장비용 컴파일러)
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config
가장 아랫부분에 아래 문구를 넣어준다
Port 22
Protocol 2
PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PubkeyAuthentication yes
ChallengeResponseAuthentication no
X11Forwarding yes
UseDNS no
sudo service ssh --full-restart
sudo service ssh restart
ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:[ .... ].
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
jingu@localhost's password:
위 문구가 열리면 localhost로 ssh가 열려있는 상태이다.(user id와 비밀번호는 초기세팅을 입력하면 된다)
링크를 들어가서 winscp를 설치해준다.
호스트 이름 : localhost
사용자 이름 : 설정한 user명
비밀번호 입력 후 접속
저장 해두면 이후에도 편하게 옮길 수 있다
이제 자유롭게 파일을 주고받을 수 있다
# include <stdio.h>
int main(void){
printf("test syccess\n");
return 0;
}
gcc test.c -o test_ubuntu
(우분투를 위한 C 컴파일)
arm-linux-gnueabi-gcc test.c -o test_arm
(arm리눅스를 위한 C 컴파일 : 즉 makefile을 만들 시 크로스컴파일러의 경로가 아닌 명령어를 입력해주어야 함)
ls
그림과 같이 나오면 성공
./test_ubuntu
./test_arm
그림과 같이 나오면 성공
실습실에서 만들어온 파일을 직접 실행해싶을 때 다음과 같이 진행하면 된다.
(파일은 위에서 만든 test_arm을 이용해 진행)
COM5라는 것을 확인할 수 있다.
이제 우분투를 켜서 minicom 세팅을 한다.
su
minicom -s
이때 A-Serial Device : /dev/ttySN(N은 위에서 확인한 comN에 해당하는 숫자를 넣어주면 된다.)
기본 설정으로 저장한 후 종료한다.
이제 시리얼 통신이 가능해졌다. Enter키를 눌러 초기 통신을 시작하자.
이전에 만들어뒀던 test_arm과 test_ubuntu를 전송해 보았다.
성공 각각의 파일을 실행시켜 보자
./test_ubuntu
./test_arm
이번에는 test_arm은 정상동작하고, test_ubuntu는 동작하지 않는 것을 볼 수 있다. 이를 통해, native compiler와 cross compiler의 차이를 알 수 있다.