2019/01/30

16.04 nimf 파일 패키징

Nimf의 .deb 패키지 빌드하기

빌드를 위해서 devscripts, build-essential를 먼저 설치합니다.

username:~$ sudo apt install devscripts build-essential
username:~$ cd
username:~$ mkdir tmp-build
username:~$ cd tmp-build
username:~/tmp-build$ wget https://github.com/cogniti/nimf/archive/2017.02.21.tar.gz
username:~/tmp-build$ tar zxf 2017.02.21.tar.gz
username:~/tmp-build$ cd nimf-2017.02.21
username:~/tmp-build/nimf-2017.02.21$ dpkg-checkbuilddeps

그랬는데 이런 메시지가 나오면
dpkg-checkbuilddeps: Unmet build dependencies:
하면서 여러가지 패키지들 이름이 나오면 그 모든 패키지들을 설치하면 됩니다.

Ubuntu 16.04 계열에서는 librime-dev 의존성 이슈를 해결하기 위해서 해당 rime을 빼고 빌드합니다.
nimf/configure.ac 에서 PKG_CHECK_MODULES(NIMF_RIME_DEPS, [rime> = 1.2.9 $ LIBNIMF_REQUIRES]) 줄 제거
nimf/modules/engines/Makefile.am 에서 nimf-rime 을 제거
nimf/debian/control 에서 librime-dev (> = 1.2.9) 줄 제거
하고 빌드하면 됩니다.

username:~/tmp-build/nimf-2017.02.21$ debuild
하면 빌드를 시작합니다.

다 되면 패키지들을 확인해보세요.
username:~/tmp-build/nimf-2017.02.21$ cd ..
username:~/tmp-build$ ls
2017.02.21.tar.gz              nimf_2017.02.21_amd64.deb
nimf-2017.02.21                nimf_2017.02.21.dsc
nimf_2017.02.21_amd64.build    nimf_2017.02.21.tar.xz
nimf_2017.02.21_amd64.changes  nimf-dev_2017.02.21_amd64.deb

출처 : https://github.com/cogniti/nimf/issues/33#issuecomment-282760133
기본 문서 : https://cogniti.github.io/nimf/ko/support.html

2019/01/29

라이브 cd 이용한 grub 부트로더 복구

grub 복구
- 다른 운영체제 설치 할 때 부트로더 재 적용.

라이브 CD 마운트
sudo mount /dev/sdXY /mnt

디렉토리 바인딩
sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

마운트 디렉토리 루트 접근
sudo chroot /mnt

부트로더 설치  및 적용
grub-install /dev/sdX
grub-install --recheck /dev/sdX
update-grub

루트 종료 및 마운트 해제
exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

120 초 대기 IO 처리.

vnc 및 ssh 접근 시 타임 아웃 문제.
/proc/sys/kernel/hung_task_timeout_secs

메모리 자원 사용 확인
sar -r

cpu 자원 사용 확인
sar -u

hung_task_timeout_secs
기본적 리눅스 파일 시스템 캐싱에서 사용할 수 있는 메모리는 최대 40%.
40% 메모리를 사용하게 되면, 미 해결된 데이터를 디스크로 플래시 한 후 IO 동기화 진행.
flush out 하기 위해 기본적으로 120초의 시간 제한을 둠.
입출력 하위 시스템은 데이터를 120 초 동안 플래시 할 만큼 빠르지 않음.
입출력 하위 시스템은 느리게 응답하고 더 많은 요청을 처리하게 되면 시스템 메모리 오류가 발생 http 요청을 처리.

테스트
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

적용(시스템 재 부팅 시 정보 사라짐)
sudo sysctl -p

시스템 적용
sudo vi /etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

sudo reboot

2019/01/28

우분투 16.04 메인보드 교체후 시스템 안정화.

dmesg | grep -i "error\|fail\|warn"

1 asmp -> 바이오스 설정.
활성화

2 사운드 문제 해결
사운드 카드 확인
cat /proc/asound/cards

사운드 드라이버 검색
lsmod | grep snd

드라이버 정보 확인(인텔 온보드)
modinfo snd_hda_audio

snd_hda_intel(인텔 온보드 드라이버 이름)

블랙리스트 추가
sudo nano /etc/modprobe.d/blacklist.conf
blacklist snd_hda_intel

sudo update-initramf -u

블랙 리스트 적용 확인
cat /proc/asound/cards

사운드 관련 프로그램 사용 없을 때 USB 자동 해제 방지
sudo nano /etc/pulse/default.pa
#load-module module-suspend-on-idle

사운드 구성 추가 프로그램 설치
sudo apt-get install pavucontrol

3 기계식 USB 키보드 문제
usb_submit_urb(ctrl) failed
hid-generic 0003:0853:0145.0004: usb_submit_urb(ctrl) failed: -1

lsusb
Bus 001 Device 005: ID 0853:0145 Topre Corporation

vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x0853:0x0145:0x20000408"

부트로더 업데이트
sudo update-grub

부트로더 2.0 업데이트 명령어
sudo grub-mkconfig -o /boot/grub/grub.cfg:wq

4. pci error
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x0853:0x0145:0x20000408 quiet splash pci=noaer"

5 NVIDIA 커널 버전 및 설치 드라이버 확인.
 nvidia: module verification failed: signature and/or required key missing - tainting kernel
서명문제.
CONFIG_MODULE_SIG_FORCE 커널 옵션 활성화 문제.

드라이버 확인
sudo ubuntu-drivers devices

vga 확인
lspci | grep -i vga

디스플레이 정보 확인
sudo lshw -C display

로그 파일
 /var/log/Xorg.0.log
 /var/log/gpu-manager.log

설치 가능 패키지 확인
dpkg -l | grep -i nvidia

커널 메세지 확인
dmesg | egrep -i "bbswitch | nvidia"

시스템 정보 요약
inxi -Fxz

그랙픽 드라이버 설치 정보 확인
inxi -G

하드웨어 확인
sudo lshw -C display | grep product

운영체제 확인
/etc/etc/issue

커널 지원 설치 버전 확인.
dpkg --list | fgrep nvidia

소스 설치
드라이브 다운로드 : GTX 1070 드라이버 설치
http://www.nvidia.co.kr/Download/index.aspx?lang=kr

sudo vi /etc/modprobe.d/blacklist.conf
blacklist amd76x_edac #this might not be required for x86 32 bit users.
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

기존 바이너리 패키지 삭제
sudo apt-get remove --purge nvidia*

윈도우 메니저 서비스 중지
sudo service lightdm stop

다운로드 받은 드라이버 설치
chmod +x NVIDIA-Linux-x86_64-384.98.run
sudo ./NVIDIA-Linux-x86_64-384.98.run

윈도우 메니저 시작
sudo service lightdm start

설치 확인
nvidia-smi
nvidia-settings

삭제
sudo sh ~/Downloads/NVIDIA-Linux-*-384.98.run --uninstall

아직 미 해결... dmesg 메세지 출력 됨.
드라이버는 동작 명령으로 확인... 커널 메세지의 때문에 흠...






7 vmware
 sudo /usr/bin/vmware-modconfig --console --install-all

2019/01/27

ubuntu pxe boot install

1. 유틸 설치
apt-get install isc-dhcp-server tftpd-hpa syslinux ntf-kernel-server initramfs-tools

2. dhcp 원격 서버 설정
cat /etc/dhcp/dhcpd.conf
# DHCP server is authoritative for all networks
authoritative;

# extra options
# RFC3442 routes
option rfc3442-classless-static-routes code 121 = array of integer 8;

# MS routes
option ms-classless-static-routes code 249 = array of integer 8;

pid-file-name "/var/run/dhcp-server/dhcpd.pid";

ddns-update-style none;

option domain-name-servers 127.0.0.1;

allow booting;
allow bootp;

default-lease-time 1800;
max-lease-time 7200;
        shared-network eth1 {
    subnet 10.10.10.0 netmask 255.255.255.0 {
            option routers 10.10.10.1;
            option domain-name "nemo.lan";
            option domain-name-servers 10.10.10.1;
                option ntp-servers 10.10.10.1;
                default-lease-time 1800;
                max-lease-time 7200;
            pool {
                   next-server 10.10.10.1;
                   option tftp-server-name "10.10.10.1";
                   filename    "/netboot_setup/pxelinux.0";
                range 10.10.10.2 10.1apt-get install -y samba genisoimage wimtools cabextract0.10.254;
            }
        }
        group {
            option routers 10.10.10.1;
            option domain-name "nemo.lan";
            option domain-name-servers 10.10.10.1;
                option ntp-servers 10.10.10.1;
                default-lease-time 1800;
                max-lease-time 7200;
        }
}

3. tftpd 설정
vi /etc/init/tftpd-hpa.conf
# tftp-hpa - trivial ftp server

description    "tftp-hpa server"
author        "Chuck Short <zulcss@ubuntu.com>"

start on runlevel [2345]
stop on runlevel [!2345]

console output
expect fork
respawn

env PIDFILE="/var/run/tftpd-hpa.pid"
env DEFAULTS="/etc/default/tftpd-hpa"

script

    if [ -f ${DEFAULTS} ]; then
        . ${DEFAULTS}
    fi

    if [ ! -d "${TFTP_DIRECTORY}" ]; then
        echo "${TFTP_DIRECTORY} missing, aborting."
        exit 1
    fi

    exec /usr/sbin/in.tftpd --listen  --user ${TFTP_USERNAME} --address ${TFTP_ADDRESS} ${TFTP_OPTIONS} ${TFTP_DIRECTORY}
end script
root@ss:/var/

vi /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

4. 웹 서버 및 inetd 설정
apt-get install apache2 inetutils-inetd

cat /etc/inetd.conf
# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet superserver configuration database
#
#
# Lines starting with "#:LABEL:" or "#<off>#" should not
# be changed unless you know what you are doing!
#
# If you want to disable an entry so it isn't touched during
# package updates just comment it out with a single '#' character.
#
# Packages should modify this file by using update-inetd(8)
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
#:INTERNAL: Internal services
#discard        stream    tcp    nowait    root    internal
#discard        dgram    udp    wait    root    internal
#daytime        stream    tcp    nowait    root    internal
#time        stream    tcp    nowait    root    internal

#:STANDARD: These are standard services.

#:BSD: Shell, login, exec and talk are BSD protocols.

#:MAIL: Mail, news and uucp services.
#<off># smtp    stream    tcp    nowait    root    /usr/sbin/sendmail sendmail -Am -bs
#<off># submission    stream    tcp    nowait    root    /usr/sbin/sendmail sendmail -Am -bs
#<off># smtps    stream    tcp    nowait    root    /usr/sbin/sendmail sendmail -Am -bs

#:INFO: Info services

#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."

#:RPC: RPC based services

#:HAM-RADIO: amateur-radio services

#:OTHER: Other services
#<off># sane-port    stream    tcp    nowait    saned:saned    /usr/sbin/saned saned

#kerberos-adm    stream    tcp    nowait    root    /usr/sbin/tcpd /usr/lib/heimdal-servers/kadmind
#krb_prop    stream    tcp    nowait    root    /usr/sbin/tcpd /usr/sbin/hpropd
9571           stream  tcp     nowait  nobody /usr/sbin/tcpd /usr/sbin/ldminfod

5. 우분투 서버 iso 파일 다운로드 후 마운트
mount -o loop iso_download_file /mnt
cp -a /mnt/install/netboot/* /var/lib/tftpboot/
mkdir /var/www/html/ubuntu
cp -a /mnt/* /var/www/html/ubuntu/

vi /var/lib/tftpboot/pxelinux.cfg/default
label linux
 kernel ubuntu-installer/amd64/linux
 append ks=http://172.16.1.97/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw --

06 서비스 재 시작
/etc/init.d/apache2 restart
/etc/init.d/tftpd-hpa restart
/etc/init.d/isc-dhcp-server restart

iscsi 방식 pxe boot install

nas: 파일전송 방식(서버에 다운로드 작업 후 전송)
das: 블록 전송 방식(서버에 직접 접근 작업)

iscsi 프로토콜을 사용해 NAS를 DAS 처럼 사용 한다.
스토리지 장비에서 반틈을 das, 또 다른 반틈은 NAS를 사용할 때 iscsi 방식을 사용한다.

iPXE 부팅

필수 패키지 설치
apt-get -y install tftpd-hpa isc-dhcp-server build-essential samba liblzma-dev mkisofs unzip iscsitarget

syslinux 다운로드 및 설치
cd /usr/src
mkdir pxe
cd pxe
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/6.xx/syslinux-6.03.tar.gz
tar -zxvf syslinux-6.03.tar.gz
cd syslinux-6.0.3
make #this will fail, it's ok
cp ./bios/core/pxelinux.0 /var/lib/tftpboot/
cp ./bios/com32/elflink/ldlinux/ldlinux.c32 /var/lib/tftpboot/
cp ./bios/com32/libutil/libutil.c32 /var/lib/tftpboot/
cp ./bios/com32/menu/menu.c32 /var/lib/tftpboot/
cp ./bios/memdisk/memdisk /var/lib/tftpboot/

dhcpd eth1 적용
auth eth1
iface eth1 inet static
address 192.168.69.1
netmask 255.255.255.0

인터페이스 활성화
ifup eth1

DHCP 구성 설정 파일 /etc/dhcp/dhpcd.conf 추가
cat /etc/dhcp/dhcpd.conf
# DHCP server is authoritative for all networks
authoritative;

# extra options
# RFC3442 routes
option rfc3442-classless-static-routes code 121 = array of integer 8;
# MS routes
option ms-classless-static-routes code 249 = array of integer 8;

pid-file-name "/var/run/dhcp-server/dhcpd.pid";

ddns-update-style none;
option domain-name-servers 127.0.0.1;

allow booting;
allow bootp;

default-lease-time 1800;
max-lease-time 7200;
        shared-network eth1 {
    subnet 10.10.10.0 netmask 255.255.255.0 {
            option routers 10.10.10.1;
            option domain-name "nemo.lan";
            option domain-name-servers 10.10.10.1;
                option ntp-servers 10.10.10.1;
                default-lease-time 1800;
                max-lease-time 7200;
            pool {
                   next-server 10.10.10.1;
                   option tftp-server-name "10.10.10.1";
                   filename    "pxelinux.0";
                range 10.10.10.2 10.10.10.254;
            }
        }
        group {
            option routers 10.10.10.1;
            option domain-name "nemo.lan";
            option domain-name-servers 10.10.10.1;
                option ntp-servers 10.10.10.1;
                default-lease-time 1800;
                max-lease-time 7200;
        }
}

dhcp 서비스 시작
/etc/init.d/isc-dhcp-server start

iPXE 설치
cd /usr/src
git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
make
cp ./bin/undionly.kpxe /var/lib/tftpboot/

wimboot 다운로드
cd /usr/src
wget http://git.ipxe.org/releases/wimboot/wimboot-latest.zip
unzip wimboot-latest.zip
cp wimboot-2.5.1-signed/wimboot /var/lib/tftpboot/

iPXE 스크립트 생성
cd /var/lib/tftpboot
vi win7.ipxe

#!ipxe
    dhcp
    set keep-san 1
    sanhook iscsi:10.10.10.1::::iqn.2013-10.net.thebugshop:windows7
    set boot-url tftp://10.10.10.1
    initrd ${boot-url}/distros/windows/winpe4_amd64.iso
    kernel ${boot-url}/memdisk iso raw
    boot

디렉토리 생성
cd /var/lib/tftpboot
mkdir -p distros/windows
cd distros/windows

tftpboot 파일 수정
/etc/default/tftpd-hpa

cat /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

tftpd 시작
/etc/init.d/tftpd-hpa start

lkrn 다운로드
wget --no-check-certificate "https://rom-o-matic.eu/build.fcgi?BINARY=ipxe.lkrn&BINDIR=bin&REVISION=master&DEBUG=&EMBED.00script.ipxe=&general.h/PXE_STACK:=1&general.h/DOWNLOAD_PROTO_NFS:=1&general.h/SANBOOT_PROTO_ISCSI:=1&" -O /var/lib/tftpboot/ipxe.lkrn

pxelinux.cfg 구성
cd /var/lib/tftpboot
mkdir pxelinux.cfg
cd pxelinux.cfg
vi default

DEFAULT menu.c32

LABEL Windows 7 Install
    MENU LABEL Windows 7 Install
    KERNEL ipxe.lkrn
    INITRD win7.ipxe

타켓 컴퓨터 pxe 부팅 모드 진입

윈도우 7 빈 이미지 파일 생성
cd /var/lib/tftpboot
dd if=/dev/zero of=/var/lib/tftpboot/windows7.img bs=1M count=20000

iscsi 타켓 수정
vi /etc/default/iscsitarget

ISCSITARGET_ENABLE=true
ISCSITARGET_MAX_SLEEP=3


# ietd options
# See ietd(8) for details
ISCSITARGET_OPTIONS=""

ietd.conf 수정
vi /etc/iet/ietd.conf
Target iqn.2013-10.net.thebugshop:windows7
    IncomingUser
    OutgoingUser
    Lun 0 Path=/var/lib/tftpboot/windows7.img,Type=fileio
    Alias Windows7

서비스 시작
/etc/init.d/iscsitarget start

ADK 다운로드 설치
http://www.microsoft.com/en-US/download/details.aspx?id=39982

AIK 다운로드 설치
http://www.microsoft.com/en-us/download/details.aspx?id=5753

내 컴퓨터> 등록 정보> 고급 시스템 설정> 환경 변수> 시스템 변수> 경로> 편집
다음 내용 추가
;C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment

배포 및 이미지 환경
cd \
copype amd64 C:\WinPE_amd64
cd WinPE_amd64
mkdir ISO
copy "c:\Program Files\Windows AIK\Tools\PETools\amd64\winpe.wim" c:\WinPE_amd64\ISO\
copy "C:\Program Files\Windows AIK\Tools\amd64\Imagex.exe" C:\Winpe_amd64\ISO\
MakeWinPEMedia /ISO C:\WinPE_amd64 C:\WinPE_amd64\winpe4_amd64.iso

winpe4_amd64.iso를 /var/lib/tftpboot/distros/windows/ 서버 복사(winscp)

pxe 부팅화면 확인

삼바 설정
mkdir -p /var/lib/tftpboot/windows/win7
mkdir /mnt/cdrom
mount -o loop win7.iso /mnt/cdrom
cp -R /mnt/cdrom/*

[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes

[win7]
   path = /var/lib/tftpboot/windows/win7
   comment = Windows 7 Installation DVD
   valid users = "bugshop"
   writeable = no
   browseable = yes
   read only = yes

암호설정
useradd bugshop
smbpasswd -a bugshop

서비스 시작
service smbd start
service nmbd start

파일 생성
vi /var/lib/tftpboot/win7.iscsi
#!ipxe
dhcp set keep-san 1
sanboot iscsi:192.168.69.1::::iqn.2013-10.net.thebugshop:windows7
boot

vi /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32

LABEL Windows 7
    MENU LABEL Windows 7
    KERNEL ipxe.lkrn
    INITRD win7.iscsi


LABEL Windows 7 Install
    MENU LABEL Windows 7 Install
    KERNEL ipxe.lkrn
    INITRD win7.ipxe

윈도우 설치 시작

syslinux 사용 tftpboot windows7 pxe install

1. 유틸 다운로드
apt-get install isc-dhcp-server tftpd-hpa syslinux ntf-kernel-server initramfs-tools

vmliuz : 리눅스 커널을 컴파일한 바이너리 파일을 압축한 것으로 리눅스 부팅 시 이 파일의 압축을 해제하여 메모리 적재
initrd : 커널 모듈을 모아 놓은 이미지로 커널이 로딩되기 전에 메모리에 로딩된다.
pxelinux.0 : 네트워크 부트 로더로 리눅스의 grub나 lilo의 역할을 한다. (OS 상관없이 tftp 기본 디렉터리에 하나만 있으면 된다.)
menu.c32 : PXE 부팅 메뉴를 꾸밀 수 있게 해주는 파일



2. 필요파일 복사.

윈도우즈 커널
cp /usr/lib/syslinux/memdisk /var/lib/tftpboot/

syslinux 부팅 파일 복사
cp /usr/lib/syslinux/pxelinux.0 /var/lib//tftpboot/
cp /usr/lib//syslinux/menu.c32 /var/lib/tftpboot/

3. 부팅 TUI 메뉴 구성
DEFAULT menu.c32 : menu UI 파일 지정
timeout 100 : 자동 선택 시간

mkdir /var/lib/tftpboot/pxelinux.cfg
vi /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
timeout 100

menu title ### OS Installer Boot Menu ###

LABEL
menu label --Windows-------------------------------------------------------
LABEL Windows7

        menu label Windows7
        kernel memdisk
        initrd Windows7/Windows7.iso
                         
        APPEND iso raw

4. 윈도우7 자동 설치 키트 다운로드
https://www.microsoft.com/ko-kr/download/details.aspx?id=5753

5. 윈도우 PE 부팅을 위한 저장소 등록
sudo add-apt-repository ppa:nilarimogard/webupd8

sudo apt-get update

sudo apt-get install wimtools

부팅 ios 이미지 형식 생성 패키지
sudo apt-get install genisoimage

cab 확장자 압축해제
sudo apt-get install cabextract

다운로드 파일 마운트
mount image_file.iso /mnt

부팅 이미지 제작
mkwinpeimg --iso --arch=amd64 --waik-dir=/mnt /var/lib/tftpboot/winpe.iso

umount /mnt

6. 삼바설정
path = /var/lib/tftpboot/Windows7/64bit
browseable = yes
writable = yes
guest ok = yes
read only = no

/etc/init.d/samba4 restart
/etc/init.d/smbd restart
/etc/init.d/nmbd restart


7. 윈도우 설치 명령어.
삼바 공유 파일 검색
net view
서버 이름 확인

net view \\서버이름
공유 디렉토리 확인

드라이버 할당
net use z: \\서버이름\\공유디렉토리

경로 이동
z:

설치 파일 이동후 설치
setup.exe

tftpboot windows 10 install

필수 패키지 설치
apt-get update
apt-get install -y samba genisoimage wimtools cabextract

mkisofs 링크
ln -s /usr/bin/genisoimage /usr/bin/mkisofs

디렉토리 생성
mkdir -p /mnt/waik
mkdir -p /var/lib/tftpboot/windows

다운로드
https://www.microsoft.com/en-us/download/confirmation.aspx?id=5753
wget https://download.microsoft.com/download/8/E/9/8E9BBC64-E6F8-457C-9B8D-F6C9A16E6D6A/KB3AIK_EN.iso

다운로드 파일 마운트
mount KB3AIK_EN.iso /mnt/waik

부팅 이미지 생성
mkwinpeimg --iso --arch=amd64 --waik-dir=/mnt/waik /var/lib/tftpboot/winpe.iso

마운트 해제
umount /mnt/waik

삼바 설정
vi /etc/samba/smb.conf
[global]
  workgroup = WORKGROUP
  map to guest = bad user
  usershare allow guests = yes

[windows]
  browsable = true
  read only = yes
  guest ok = yes
  path = /var/lib/tftpboot/windows

공유 서비스 시작
systemctl restart smbd

12.04 일때
/etc/init.d/samba4 restart
/etc/init.d/smbd restart
/etc/init.d/nmbd restart

윈도우 10 마운트
mount <WINDOWS_ISO> /var/lib/tftpboot/windows

램디스크 심볼 생성
ln -s /usr/lib/syslinux/memdisk /var/lib/tftpboot/

PXE 부팅 메뉴 생성
vi /var/lib/tftpboot/pxelinux.cfg/default
LABEL windows10
MENU LABEL Windows 10
KERNEL /memdisk
INITRD /winpe.iso
APPEND iso raw

윈도우 설치
PXE 부팅
DHCP 할당 IP 대기
마운트
net use Z:\\IPADDRESS\windows

실행
z:\setup.exe

2019/01/21

UEFI, BIOS MBR 윈도우 10 설치 요약

UEFI 설정
- BIOS 호환 모드(CSM 또는 BIOS) 부팅시 GParted 파일 관리자만 있으면 됨.

ISO 구성시 UEFI 구성 확인
- winusb 또는 woeusb로 운영체제 설치를 만들 경우 자동으로 생성.

UEFI 펌웨어 부팅 USB 생성 방법.

BIOS MBR 파티션 구성
1. USB 드라이버 GPT 파티션 테이블 생성.
GParted 사용해 usb 파티션 테이블 msdos를 ntfs 포맷 후 부트 플래그 추가

2. GParted 실행 후 USB 파티션 오른쪽 마우스 클릭 정보 선택 UUID 복사

3. 윈도우 ISO 파일을 마운트 모든 파일 USB 복사

4. usb 이동 후 boot 디렉토리 대문자 일 경우 소문자로 변경

5. usb 부트로더 grup 설치
sudo grub-install --target=i386-pc --boot-directory="/<USB_mount_folder>/boot" /dev/sdX

6. grub 구성 파일 생성
cd usb/boot/grub

vi grub.conf
echo "If you see this, you have successfully booted from USB :)"
insmod ntfs
insmod search_fs_uuid
search --no-floppy --fs-uuid <UUID_복사한 값 붙여넣기> --set root
ntldr /bootmgr
boot

7. USB 마운트 해제

8. USB 부팅 확인

UEFI GPT 파티션 구성
윈도우에서 GPT 파티션 지원 ISO 확인
자세한 내용 https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/hh824898(v=win.10)

1. Gparted 사용 USB GPT 파티션 테이블 생성

2. 주 파티션 생성 후 fat32 포맷

3. 윈도우 ISO 파일 내용 USB 복사

4. USB 부트로더 수정
efi/boot 이동
bootx64.efi(bootia32.efi) 파일 존재 여부 확인

4.1 bootxxx.efi 없을 경우
sources/install.wim 7z 프로그램을 사용 파일 열기
./1/Windows/Boot/EFI 이동후 bootmgfw.efi 이름 bootxxx.efi 변경
efi/boot 복사

4.2 윈도우 7 USB 일 경우
boot/efi/microsoft 에 efi 폴더 복사

5. USB 드라이브 마운트 해제, BIOS에서 EFI 로더 선택

2019/01/20

우분투 네트워크 명령어 패키지

net-tools

sudo apt-get install net-tools

ubuntu 18.04 cuda9.2 install

nvidia 확인
lspci | grep NVIDIA

nvidia 드라이버 설치
https://nautilusleenssi.blogspot.com/2019/01/ubuntu-1804-drvier-nvidia.html

현대 드라이버 설치 버전 nvidia-390 사용.
sudo apt-get install gcc-6 g++-6 linux-headers-$(uname -r) -y

CUDA Toolkit 설치
다운로드
wget -O cuda_9.2.88_396.26_linux.run -c https://developer.nvidia.com/compute/cuda/9.2/Prod/local_installers/cuda_9.2.88_396.26_linux

실행
sudo chmod +x cuda_9.2.88_396.26_linux.run
sudo ./cuda_9.2.88_396.26_linux.run --verbose --silent --toolkit --override

설치 성공 메시지 확인
===========
= Summary =
===========

Toolkit: Installed in /usr/local/cuda-9.2
Samples: Not Selected

Please make sure that
 - PATH includes /usr/local/cuda-9.2/bin
 - LD_LIBRARY_PATH includes /usr/local/cuda-9.2/lib64, or, add /usr/local/cuda-9.2/lib64 to /etc/ld.so.conf and run ldconfig as root

bashrc 설정
vi ~/.bashrc
export PATH="$PATH:/usr/local/cuda-9.2/bin"

동적 라이브러리 경로 지정
sudo echo "/usr/local/cuda-9.2/lib64" >> /etc/ld.so.conf
또는
vi /etc/ld.so.conf.d/cuda9-2.conf
/usr/local/cuda-9.2/lib64
sudo ldconfig

NVIDIA 패치 적용
wget https://developer.nvidia.com/compute/cuda/9.2/Prod/patches/1/cuda_9.2.88.1_linux
sudo chmod +x cuda_9.2.88.1_linux
sudo ./cuda_9.2.88.1_linux --silent --accept-eula

패치 설정 메시지 확인
Welcome to the CUDA Patcher.
Installation complete!
Installation directory: /usr/local/cuda-9.2

gcc 버전 설정
sudo ln -s /usr/bin/gcc-6 /usr/local/cuda-9.2/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/cuda-9.2/bin/g++

ubuntu 18.04 drvier 자동 검색 설치(NVIDIA)

1. 자동 설치 
드라이버 검색 
ubuntu-drivers devices

출력 정보 확인
== /sys/devices/pci0000:00/0000:00:03.1/0000:20:00.0 ==
modalias : pci:v000010DEd00001B80sv00001458sd00003702bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP104 [GeForce GTX 1080]
driver   : nvidia-396 - third-party non-free
driver   : nvidia-driver-390 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

드라이버 설치
sudo ubuntu-drivers autoinstall

특정 버전 설치 할 경우
sudo apt install nvidia-390

2. 수동 설치
설치된 드라이버 검색

dpkg --get-selections | grep nvidia

기존 설치 드라이버 삭제
sudo apt-get purge nvidia*

최신 드라이버 설치 파일 다운로드
https://www.nvidia.com/Download/index.aspx

  • 제품 유형 : GeForce
  • 제품 시리즈 : GeForce 10 시리즈
  • 제품 GeForce GTX 1080
  • 운영 체제 : Linux 64 비트
  • 언어 : 영어

설치
sudo sh NVIDIA-Linux-x86_64-390.48.run

지원하는 카드 목록 확인.
NVIDIA TITAN 시리즈

Geforce MX 100 시리즈(노트북)

Geforce 10 시리즈
현재 사용하는 건 geforce gtx 1070

reboot

설치 확인
nvidia-smi

UEFI 설정
보안부팅 리눅스 변경 또는 사용 금지

Nouveau 비 활성화 전 확인 사항(GUI 모들 설정 현 드라이버 확인)  system settings > details
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

모듈 확인
cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf

커널 initramfs 생성
sudo update-initramfs -u

재 부팅
reboot

GUI 모드 설정 방법(현재 드라이버 확인 방법.)
system settings > details

변경.
softare & updates 또는 소프트웨어 & 업데이트
추가 드라이버 선택
NVIDI 선택

드라이버 업데이트 금지
sudo apt-mark hold nvidia-390

업데이트 금지 해제
sudo apt-mark unhold nvidia-390

wget 사용법

URL 지정 다운로드
wget http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso

다수의 URL 지정 다운로드
wget <url_1> <url_2>

ftp 다운로드
wget ftp://ftp.example.com/ubuntu/ubuntu-18.04-desktop-amd64.iso

ftp 계정 및 패스워드 입력 다운로드
wget --ftp-user=booleanworld --ftp-password=passw0rd <ftp_url>

사용자 사용할 파일 이름 변경 다운로드
wget <url> -O Ubuntu.iso

사용자 디렉토리 지정 후 파일 다운로드
wget <url> -O /media/sdb1/Software/Ubuntu.iso

사용자 디렉토리 생성 후 다운로드
wget <url> -P /media/sdb1/Software

중단된 다운로드 시작
wget -c <url>

중단된 사용자 지정 파일 다운로드
wget -c <url> -O <path_to_downloaded_file>

다운로드 속도 조절
wget <url> --limit-rate=512k

백그라운드 파일 다운로드
wget -b <url>
tail -f wget-log

다운로드 확인 파일명.
wget-log, wget-log.1

실시간 파일 다운로드 확인
tail -f wget-log

인터넷 속도 문제(gwt 20회 접속)
wget -t inf --waitretry=3 --timeout=10 --retry-connrefused <url>

-t inf 스위치 : 문제 발생시 다운로드 완료할 때 까지 무한반복.
--waitretry 스위치 : 재시도 지연 3초
--timeout 스위치 : 네트워크 시간 초가 10 초 설정
--retry-connrefused 스위치 : 서버가 동작 않을때 "연결 거부 됨" 오류 발생, 연결 거부 오류가 발생시 다운로드 재시도.

재귀적 파일 다운로드.
wget 동작 방법 :
- 초기 파일 다운로드 저정 후 링크 검색.
- 각 랑크 다운로드 저장 후 링크 추출
- 기본 값으로 5개 링크 추출

페이지 반복적 다운로드
wget -r https://en.wikipedia.org/

-l 플래그 사용 재귀 호출 수 지정 7
wget -r -l 7 https://en.wikipedia.org/

-A(허용) 옵션을 사용 특정 유형의 파일 다운로드
wget -r https://en.wikipedia.org/ -A png,jpg,jpeg

-R(거부) 옵션을 사용 특정 유형의 파일 다운로드 금지
wget -r https://en.wikipedia.org/ -R pdf

-k 링크 변환기능, 웹 페이지 링크를 로컬 링크로 변환
wget -k -r https://en.wikipedia.org/

wget 사이트 차단될 경우, 사용자 문자열 지정을 통해 다운로드
wget <url> -U "<user-agent-string>"

Mac 사용자 문자열 지정 다운로드
wget <url> -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"

웹 개발자 http 헤더 테스트
wget <url> --header "X-Foo: 123"

보호된 파일 다운로드
크롬
https://chrome.google.com/webstore/detail/curlwget/jmocjfidanebdlinpbcdgcmgdifblncg?hl=en

filrefox
https://addons.mozilla.org/en-US/firefox/addon/cliget/

웹 사이트 링크 깨짐 해결.
wget --spider -r https://example.com/

웹 사이트 링크 깨짐 해결 로그 설정.
wget --spider -r https://example.com -o wget.log

301 리다디렉션 검색.
grep -B 301 wget.log

ubuntu 18.04 desktop download

다운로드 
wget http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso

무결성 확인

wget http://releases.ubuntu.com/18.04/SHA256SUMS


체크 
sha256sum ubuntu-18.04.1-desktop-amd64.iso

5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433  ubuntu-18.04.1-desktop-amd64.iso

확인 
cat SHA256SUMS
5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433 *ubuntu-18.04.1-desktop-amd64.iso
7b37dfcd082726303528e47c82f88f29c1dc9232f8fd39120d13749ae83cc463 *ubuntu-18.04.1.0-live-server-amd64.iso

BIOS, UEFI 정리

BIOS : Basic Input Output System 기본 입출력 동작 칩(휘발성)
CMOS : Complementary Metal-Oxide Semiconductor, 비휘발성 칩으로 BIOS 설정 값 저장
POST : Power-on self-test, CMOS에 설정된 하드웨어 점검.
UEFI : Unified Extensible Firmware Interface, 걍 대용량 하드디시크 3TB 인식 및 최신 부트로더 사용, 운영체제 선택

IBM 호환 컴퓨터 BIOS의 시대와 UEFI와 GPT 시대의 컴퓨터

BIOS, UEFI 펌웨어 유형.
BIOS 펌웨어:
- IBM PC(거의 대부분) 호환 컴퓨터.
- PC 펌웨어의 일반적 용어가 아니며 특정 유형의 펌웨어를 가르킴.
- BIOS 스팩이 따로 없으며, 사실성 표준(UEFI 존재하는 이유)

UEFI:
- 프로젝트 사이트: http://www.uefi.org
- 문서 다운로드 : http://www.uefi.org/sites/default/files/resources/2_4_Errata_A.pdf

- EFI 인텔에 의개 개발된후, fork 후 발전(회원사 HW:Intel,AMD SW:redhat, Mac, MS)
- IBM PC(거의 대부분) 호환 컴퓨터 지원.
- PC 펌웨어의 일반적 용어가 아니며 특정 유형의 펌웨어를 가르킴.
- UEFI BIOS 가지고 있지 않음.
- UEFI 2.2 보안 부팅 추가
- Secure Boot는 UEFI의 확장

BIOS 부팅
- 하드디스크 MBR(Master Boot Record) 영역
- BIOS 연동 코드 영역(MBR)
- 부팅 영역(부트 로더)

- BIOS 펌웨어가 하드디스크 MBR 영역 검색 해 부트로더 실행

- BIOS 펌웨어는 운영체제, 파티션 유형은 알 지 못하며 오로지 MBR영역의 부트로더를 실행한다.

- BIOS 펌웨어는 외부(통신 및 Netsork) 부팅 프로세스를 구성 할 수 있음.

UEFI 부팅 배경 지식
- BIOS 부팅 방식과 완전히 다름.
- UEFI, BIOS 펌웨어의 호환을 위해 CSM 구현.
- UEFI 펌웨어는 BIOS 펌웨어 부팅 방법 지원.(디스크 MBR 영역의 부트로더 실행)
- UEFI 펌웨어에서 BIOS 방식으로 부팅 UEFI 사용 중지 된 게 아님.
- 시스템의 설치된 UEFI 펌웨어를 비활성화 할 수 없음.

UEFI 기본 부팅: 실제 동작 방식
- BIOS 와 다르게 디스크 파티션, 부트 로더 및 운영체제 UEFI 펌웨어가 선택 할 수 있음.
- UEFI 펌웨어 방식은 문제 해결을 위해 다양한 비트 설정 방법을 통해 문제 해결을 하는데 도움을 줌.
- BIOS 펌웨어는 MBR 영역의 비트 설정만 할 수 있음.
- UEFI 펌웨어는 디스크 영역 앞에서 더 많은 일 처리를 할 수 있다는 의미가 됨.

BIOS MBR 방식 설정 문제
- 처리 불편. MBR 영역을 작성 하는데 응용 프로그램이 필요 함.
- MBR 영역에 최신 부트로더 사용시 충분한 크기를 제공하지 않음. MBR 512byte 크기를 같는다.
- 446Byte 부트코드, 64Byte 파티션 테이블, 2Byte 디스크 서명
- 부트코드: 부팅 가능한 파티션 검색 후 부트 섹터 호출
- 파티션 테이블: 16byte 4개의 파티션 영역. 3개 영역은 Primary Parttion(주파티션), 나머지 하나는 exten parttion(확장 파티션)
- 디스크 서명: 해당 하드디시크 식별하기 위한 2Byte 공유 ID 식별 정보.
- 최신 부트로더는 MBR 영역의 크기에 맞게 부트로더를 설치 하므로, 전체 기능을 사용하지 못한다.
- mbr 영역을 벗어난 부트로더 기능은 mbr(512Byte) 영역을 벗어난 하드디스크 첫번째 파티션 영역에 설치.
- 이러한 문제가 시스템 디자인 큰 문제 발생하 지만 신경 쓸 필요는 없다.
- 첫번째 파티션에 충분한 공간을 확인하기 어렵고, 만약 충분한 공간이 없다면 시스템 부팅시 문제 발생
- 하드디스크 부팅 디자인은 표준화된 방법은 제공하지 않음
- 다수의 운영체제를 선택해 부팅 하려면 BIOS/MBR 방식에서는 부트로더가 유일한 해결방법.
- UEFI 부팅의 경우 원격 서버에 부팅하는 표준 방법을 제공 함.

요약
초창기 제안 인텔.
GUID Partition Table, MBR은 최대 2.2TB 디스크 파티션을 영역 설정, GPT 최대 9.4ZB 디스크 파티션 영역 설정. GPT는 부트레코드 영역이 아니라 데이터 영역으로 사용해야 함.

GPT MBR 사용방안.
기존 Legacy 방식에서 새롭게 추가된 EFI 방식이 필요한 이유는 3TB HDD가 보급되기 시작, 기존 Legacy 방식으로는 GPT 3TB 이상의 HDD 포맷을 인식 할 수 없음. 메인보드의 바이오스 설정에도 GPT 파티션으로 된 HDD 운영체제를 설치하기 위해 UEFI가 추가. MBR과 GPT의 속도 차이는 GPT에서 조금 더 빠름.

UEFI가 아닌 Legacy 방식의 하드디스크는 MBR 방식으로 포맷되어 설치 됨(Linux의 경우 MSDOS 인식)
UEFI BIOS 방식의 하드디스크는 GPT 방식으로 포맷되어 설치 됨(Linux의 경우 GPT로 인식)

UEFI 펌웨어 방식은 개별 디스크 하나 당 부트 로더 코드를 상주 함.
부팅 로드를 처리 하기 위한 더 많은 인프라가 추가된 펌웨어 임.

인프라 추가 내용(EFI 실행파일, GPT, EFI 시스템 파티션)
EFI 실행파일
UEFI 펌웨어가 EFI 형식의 코드를 실행 할 수 있도록 작성 되어야 함.

GPT (GUID 파티션 테이블) 형식
GPT 파티션 테이블을 만들기 위한 표준으로 디스크 파티션 정보로 디스크 시작 부분에 정의됨.
MBR/MS-DOS 파티션 테이블 표준 보다 더 나은 표준을 제공(3TB) 이상 인식.
UEFI 펌웨어는 GPT 파티션(MBR)을 인식 할 수 있어야 함.

EFI 시스템 파티션
펌웨어는 특정 유형의 파일 시스템을 읽을 수 있음.
UEFI 펌웨어는 본질 적으로 FAT, FAT12, FAT16, FAT32 파일 지원. 

파티션 테이블을 읽을 수 있다.
특정 파일 시스템의 파일에 접근 할 수 있다.
특정 현식으로 코드를 실행 할 수 있다.


UEFI 부팅 관리자
sudo apt-get install efibootmgr
efibootmgr은 UEFI 구성을 설정 제어하느데 사용되는 프로그램이다.

UEFI 부팅 관리자는 구조적으로 정의된 NVRAM 변수를 수정하여 구성 할 수 있는 펌웨어 정책이다.
부트 관리자는 UEFI 드라이버와 UEFI 응용 프로그램(UEFI OS 부트 로더 포함)을 NVRAM 전역 변수로 정의 된 순서대로 로드하려고 시도 한다.

BIOS 펌웨어는 부트 메뉴에서 시스템에 연결된 하드디스키가 필연적으로 연결 된다.
UEFI 펌웨어에서는 이러한 방식은 해당 사항이 없다.

UEFI 부팅 관리자 구성은 "부팅 메뉴"에서 항목을 추가 제거 할 수 있음
운영체제가 부팅된 후 시스템 부팅 설정을 구성 할 수 있다.

modprobe efivars
efibootmgr -v
BootCurrent: 0000 ---> 부트 메뉴 항목
Timeout: 2 seconds ---> 대기 시간
BootOrder: 0000,0004,0002,0003 ---> 부트 시퀀서
Boot0000* ubuntu    HD(1,800,f3800,053af52d-919d-4762-9def-19de4664b680)File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0002* Hard Drive     BIOS(2,0,00)..GO..NO........o.e.s....................A...........................>..Gd-.;.A..MQ..L.E.D.9.D.7.0.A.8.7.1.C.E.5.0.5.8.7.3.7.0........BO
Boot0003* UEFI: Built-in EFI Shell     Vendor(5023b95c-db26-429b-a648-bd47664c8012,)..BO
Boot0004* ubuntu    HD(1,800,f3800,053af52d-919d-4762-9def-19de4664b680)File(\EFI\UBUNTU\GRUBX64.EFI)

UEFI 기본 부팅: 실제 동작 방식 - 부팅 관리자 항목
- EFI_DEVICE_PATH_PROTOCOL 섹션(부팅 이외의 다른 용도로 사용되는 일반적 프로토콜)
-- 비디오 카드 부팅 시도 하지 않음
-- PXE 서버 설정
-- 노 디스크 설정 

부팅 프로세스 구성(운영체제)
efibootmgr 명령어를 사용해 구성 할 수 있음.
자세한 내용은 맨 페이지 참고.
이 모드를 사용하려면 BIOS 변경 필요(EFI, UEFI 활성화)
펌웨어의 UI 화면 갱신이 안될 수 도 있음.

UEFI 기본 및 BIOS 호환 부팅
EFI 시스템 파티션에 쓰고, UEFI 항목을 추가
BIOS 호환성 모드로 부팅하면 운영 체제는 BIOS 호환 설치로 운영체제 설치(MBR 유형의 부트로 사용)

부팅 모드 찾기
efibootmgr -v
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

dmesg 확인 및 커널 로그 확인해 어떠한 부팅 모드인지 확인 가능

UEFI 기본 부팅 사용
라이브 CD 제작 후 usb 스틱에 기록 할 때 -efi 매개 변수 사용해 UEFI 부팅 가능

디스크 형식 ( MBR VS GPT)
sudo parted /dev/sda
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                               
Model: ATA C300-CTFDDAC128M (scsi)
Disk /dev/sda: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  525MB  524MB  primary  ext4         boot
 2      525MB   128GB  128GB  primary               lvm

(parted)

파티션 테이블 정보가 msdos이면 MBR 방식의 파티션.
파티션 테이블 정보가 gpt 이면 gpt 방식의 파티션 인식.

디스크 포맷 확인
포맷 하기.(데이터 전부 삭제 됨)

3TB 인식 파티션 생성.
mklabel gpt

2TB 인식 파티션 생성.
mklabel msdos

수동 파티션 수행 EFI 시스템 파티션 처리
uefi 기본 설치 수행 후 사용자 정의 파티션을 사용할 경우 EFI 시스템 파티션 마운트 해야함.
/boot/efi EFI 시스템 파티션이 찾음.
이 위치를 마운트 해야함.
efi 파티션 생성, 파티션 크기 최소 200MB 적당 500MB로 설정 하고 마운트 한다.

오픈소스 부트로더...
coreboot: OpenSrc https://www.coreboot.org/downloads.html

2019/01/19

ubuntu 18.04 GUI 방식 설치 제작 및 서버 기반에서 설치 메모리 스틱 만들기

18.04 윈도우 키: startup di 또는 시동 디스크 만들기로 검색
source disc image(iso): iso 파일 추가

Disk to use:
usb 드라이버 지정

Make Startup Disk 선택

서버 CLI 방식.
데비안 패키지 설치
aptitude install gddrescue
apt-get install gddrescue

센투 패키지 설치
yum install ddrescue

usb 메모리 스틱 검색
fdisk -l

설치 cd 및 메모리 스틱 생성
ddrescue bionic-desktop-amd64.iso /dev/sdX --force -D

우분투 윈도우 10 부팅 미디어 제작.

1. GUI 기반 및 CLI 사용.
2. ISO 파일 사용
3. CLI 사용

1. GUI 기반 woeusbgui 응용 프로그램 사용해 Windows 10 USB 설치 방법
woeusbgui 설치 방법
sudo apt-get install woeusb

코드 다운로드 후 컴파일 설치
git clone https://github.com/slacka/WoeUSB.git
cd WoeUSB/
./setup-development-environment.bash

종속성 패키지 설치, 데비아 패키지 파일 생성 후 설치
sudo apt-get install devscripts equivs gdebi-core
mk-build-deps
sudo gdebi woeusb-build-deps_*.deb
dpkg-buildpackage -uc -b
sudo gdebi ../woeusb*.deb

1.1 woeusb CLI 버전(디바이스 내용 삭제 후 설치)
sudo woeusb --device win_10.iso /dev/sdc

woeusb GUI 버전
woeusbgui

1.2 GUI 팝업 창 WoeUSB
Source:
From a disk image(iso)
    iso 이미지 파일 선택

Target device:
/dev/sdx(xxx)
    복사할 장치 위치 선택

    Install

2. ISO 파일 사용 Windows 10 설치 방법
프로젝트 사이트 : https://github.com/jsamr/bootiso
sudo apt install extlinux or sudo apt-get install extlinux

프로젝트 설명.
usb 드라이버 검색 및 파일 시스템 지정

mkdir ~/bin/
cd ~/bin/
curl -L https://git.io/bootiso -O
chmod +x bootiso

터미널 부팅 가능한 USB 만들기
https://askubuntu.com/questions/372607/how-to-create-a-bootable-ubuntu-usb-flash-drive-from-terminal/1022014#1022014

셸에서 ISO 파일을 사용해 USB 만들기
https://superuser.com/questions/1313429/how-to-create-a-bootable-usb-from-one-iso-file-securely-from-the-shell

사용방법
사용 가능한 USB 드라이브 나열
~/bin/bootiso -l

자동으로 설치 (비디어 https://webmshare.com/play/JZrVW)
-p 옵션: probe, bootiso usb 드라이브 검색.
~/bin/bootiso -p ~/Downloads/win-10-ltsb.iso

install-auto 기본 동작 모드 옵션: 사용가능한 usb 목록에서 사용할 USB 선택.(lsblk)
~/bin/bootiso ~/Downloads/win-10-ltsb.iso

장치 지정 사용 방법.
bootiso -d sde myfile.iso

3. CLI 사용 Windows 10 미디어 설치 방법
ms-sys 사용.

프로젝트 사이트: https://sourceforge.net/projects/ms-sys/

12.04 기본 패키지 지원하지 않음
다운로드
wget https://sourceforge.net/projects/ms-sys/files/ms-sys%20development/2.5.3/ms-sys-2.5.3.tar.gz
tar -zxvf ms-sys-2.5.3.tar.gz
sudo apt install build-essential

데비안 gcc 개발환경
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install manpages-dev

우분투 gcc 개발환경
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential

whereis gcc make
gcc --version
make -v

sudo apt-get install manpages-dev man-db manpages-posix-dev

x11 컴파일러 설치
sudo apt install libx11-dev

맨 페이지 2: 시스템 호출(커널 제공 함수)
맨 페이지 3: 라이브러리 호출(프로그램 라이브러리 함수)
man 3 function-name
man 3 putc
man 3 strlen
man 3 printf
man 3 scanf
man 2 execve
man 2 fork

설치
cd my-sys-2.5.3
make
sudo make install

18.04 기본 패키지 지원
sudo apt-get install ms-sys

NTFS 파티션 생성.
lsblk
lsusb

dmesg | more
dmesg | sort| uniq | grep -A 6 usb-storage

파티션 생성.
sudo fdisk /dev/sdc

n -> new
p -> 프라이머리
t -> 파티션 변경
7 -> HPFS/NTFS/exFAT
w -> w

포맷.
sudo mkfs.ntfs -f /dev/sdc1

부팅 CD 제작.
sudo mkdir /mnt/win10/

iso 파일 마운트
마운트 방법.
sudo mount -t udf -o loop,ro,unhide {/path/to/win-10.iso} /mnt/win10/

예제.
sudo mount -t udf -o loop,ro,unhide ~/Downloads/win.ISO /mnt/win10/

usb 마운트
sudo mkdir /mnt/usb/
sudo mount /dev/sdc1 /mnt/usb/
df -h | grep '/mnt'

cp 명령 또는 rsync 복사 명령어 사용.(둘 중 편한 명령어 사용.)
cp 명령어 일 때.
sudo cp -avr /mnt/win10/* /mnt/usb/

rsync 명령어일때.
sudo rsync -avrP /mnt/win10/* /mnt/usb/

ms-sys 명령어를 사용해 부팅 가능한 windows 10 생성.
sudo ms-sys -7 /dev/sdc

출력 메세지:
Windows 7 master boot record successfully written to /dev/sdc

마운트 해제
sudo sync
sudo umount /mnt/usb/

리눅스 맨 페이지 프린터 출력 CLI

$ man ls | col -b | lpr -P hp1_floor2
col -b : 백 스페이스 특수 문자 출력 방지
lpr -P hp1_floor2 : 프린터 이름

글꼴 지정 프린터하기
$ zcat /usr/share/man/man1/ls.1.gz | groff -man -Tps | lpr -P hp1_floor2

ps 저장
zcat /usr/share/man/man1/ls.1.gz | groff -man -Tps >top.ps

zcat : 압축된 파일 열기
groff : 글꼴 지정
lpr -P hp1_floor2 : 프린터 이름

스크립트 작성.
# ----------------------------------------------------------------------
CMDS="$@"
OUTDIR="/tmp/$USER.man"
[ ! -d "$OUTDIR" ] && mkdir -p "$OUTDIR"  :
for i in $CMDS
do
 man "${i}"  col -b > "$OUTDIR/${i}.txt"
done
echo "**********************************************************"
echo "디렉토리에 저장된 모든 메뉴얼 페이지 $OUTDIR"
echo "디렉토리 이동\"$OUTDIR\" 다음 명령어 입력 (s):"
echo "lpr *.txt"
echo "**********************************************************"
exit 0

사용 방법.
$ saveman "ls bash"

우분투 서버 한글 설정

* 우분투 서버를 X 시스템과 폰트 패키지가 설치 안됨 
$ sudo apt-get install libfontenc1 libxfont1 xfonts-encodings xfonts-utils xfonts-base xfonts-75dpi

한글 언어팩 설치
$ sudo apt-get install language-pack-ko
$ sudo locale-gen ko_KR.UTF-8

vi /etc/default/locale
LANG="en_US.UTF-8"
LANG="ko_KR.UTF-8"

vi /etc/environment 
PATH 밑에 추가
LANG="ko_KR.UTF8"
LANGUAGE="ko_KR:ko:en_GB:en"

unfonts, baekmuk, nanum

은폰트 - unfonts
$ apt-get install fonts-unfonts-core fonts-unfonts-extra 

백묵폰트 - baekmuk
$ apt-get install fonts-baekmuk

나눔폰트 - nanum
$ apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra

출력 한글 프레임 버퍼  
sudo apt-get install fbterm 
fbterm 

글꼴 크기 설정
vi ~/.fbtermrc
font-names=Nonaco for Powerline
font-size

한글 입력기 설정
apt-get install nabi 

오른쪽 alt 키 한/영 인식 
vi /usr/share/X11/xkb/symbols/altwin
                 // symbols[Group1] = [ Alt_R, Meta_R ] };
                 symbols[Group1] = [ Hangul ] };
$ reboot

우분투 대용량 파일 시스템 인식

2TB 넘는 하드디스크 사용할 경우 2TB 인식



하드디스크 검색
sudo fdisk -l

parted 설치
sudo apt-get install parted

parted 실행.
sudo parted /dev/sdd

(parted) 모드 진입 gpt 라벨 생성
mklabel gpt

y/n 물어보면 yes

단위를 TB 변경
unit TB

파티션 생성
mkpart primary 0.00TB 5.00TB

확인
print

종료
quit

포맷 후 마운트 가능.