[Linux] Ubuntu 해상도 설정

Ubuntu 16.04 Desktop에서 1920×1080 해상도로 변경하는 것을 예시로 작성하였습니다.

붉은 글씨는 각 사용자의 상황에 따라 달라지므로 이전 명령어 수행 결과를 참고하세요.

 


 

$ gtf 1920 1080 60
$ gtf [WIDTH] [HEIGHT] [Hz]

# 1920×1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline “1920x1080_60.00” 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync

 

 

$ xrandr --newmode "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
$ xrandr

Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
1920×1080 (0x19c) 172.800MHz -HSync +VSync
h: width 1920 start 2040 end 2248 total 2576 skew 0 clock 67.08KHz
v: height 1080 start 1081 end 1084 total 1118 clock 60.00Hz

 

$ xrandr --addmode VIRTUAL1 1920x1080
$ xrandr -s 1920x1080

 

[Linux] 새 하드디스크 추가하기

Ubuntu 16.04를 기준으로 작성된 글입니다.

 

우선 fdisk 명령어를 통해 새로 추가한 디스크가 인식됐는지 확인한다.

$ sudo fdisk -l
Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 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
Disklabel type: dos
Disk identifier: 0x0c5b2f70

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 500117503 499116034 238G 5 Extended
/dev/sda5 1001472 500117503 499116032 238G 8e Linux LVM



Disk /dev/sdb: 596.2 GiB, 640135028736 bytes, 1250263728 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 /dev/mapper/siya--vg-root: 222.1 GiB, 238441988096 bytes, 465707008 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 /dev/mapper/siya--vg-swap_1: 15.9 GiB, 17054040064 bytes, 33308672 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

이 글에서는  /dev/sdb가 마운트 할 디스크이다. 하드가 잘 꽂혔으므로, 파티션 설정작업을 진행한다. 파티션 설정작업은 fdisk 명령어를 통해 진행할 수 있다.

$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xcc2a90c7.

Command (m for help):

m을 입력하면 명렁어 정보를 볼 수 있다.

Help:

DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag

Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition

Misc
m print this menu
u change display/entry units
x extra functionality (experts only)

Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file

Save & Exit
w write table to disk and exit
q quit without saving changes

Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table

새 파티션을 추가하기 위해 n을 누르고 엔터를 계속 쳐준다. 물론 기본값으로 만들기 싫다면 값을 입력해줘도 된다.

Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-1250263727, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1250263727, default 1250263727):

Created a new partition 1 of type 'Linux' and of size 596.2 GiB.

파티션을 만들었으면 w를 입력해 저장하고 fdisk를 종료한다.

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

 

이제 파티션을 ext4 형식으로 포맷해주자. 포맷은 mkfs.ext4 명령어를 통해 할 수 있다. 여기서 /dev/sdb가 아닌 /dev/sdb1(첫번째 파티션)임에 유의하자

$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 156282710 4k blocks and 39075840 inodes
Filesystem UUID: e5bd4acf-cd6e-40df-9ebe-6967f4a569fb
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000

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

 

그 후 새 파티션의 uuid를 조회한다.

$ ls -l /dev/disk/by-uuid/
합계 0
lrwxrwxrwx 1 root root 10 8월 28 23:17 86d4ee89-af0a-43e6-b08c-16dcd02c943e -> ../../sda1
lrwxrwxrwx 1 root root 10 8월 28 23:17 e46a2f40-84ef-4a9d-b53c-551f51eb0329 -> ../../dm-0
lrwxrwxrwx 1 root root 10 8월 28 23:17 e7f843c0-fa55-4e8b-bddb-e869a94211d8 -> ../../dm-1

(디스크 문제로 저는 마운트가 잘 되지 않은 상태입니다. 원래대로라면 sdb1이 떠야 정상입니다.)

 

마지막으로 부팅시 마다 마운트를 해야되는 번거로움을 피하기 위해 fstab에 새로 추가한 파티션을 등록해준다.

$ sudo vi /etc/fstab

맨 아래 행에 아래의 형태로 추가해주면 된다.

UUID="UUID" "MOUNT_POINT" "FILESYSTEM_TYPE" "MOUNT_OPTION" "DUMP" "FILE_SEQUENCE_CHECK_OPTION"

UUID는 위에서 조회한 값을 써주면 되고, MOUNT_POINT는 마운트 하고싶은 위치를 원하는대로 설정해주면 된다.

FILESYSTEM_TYPE은 파티션 생성시 정했던 파일시스템의 종류를 써주면 된다. 이 글에서는 ext4로 정했으므로 ext4를 써주면 된다. 그 외의 파일시스템은 아래 표를 참고하자.

 

 

 

ext 초기 리눅스에서 사용, 현재는 사용하지 않음
ext2 https://ko.wikipedia.org/wiki/Ext2
ext3 https://ko.wikipedia.org/wiki/Ext3
ext4 https://ko.wikipedia.org/wiki/Ext4

 


MOUNT_OPTION은 default로 설정한다. 그 외 옵션은 아래와 같다.

default rw, nouser, auto, exec, suid를 모두 사용
auto 부팅시 자동마운트를 함
noauto 부팅시 자동마운트를 하지않음
exec 실행파일이 실행되는것을 허용함
noexec 실행파일이 실행되는것을 허용하지 않음
suid SetUID, SetGID 사용을 허용함
nosuid SetUID, SetGID 사용을 허용하지 않음
ro 읽기 전용의 파일시스템으로 설정함
rw 읽기/쓰기 전용의 파일시스템으로 설정함
user  일반 사용자에게 마운트를 허가함
nouser 일반 사용자에게 마운트를 허가하지 않음(only root)
quota Quota 설정을 허용
noquota Quota 설정을 허용하지 않음

 


 

DUMP와 FILE_SEQUENCE_CHECK_OPTION는 0과 2로 설정해주자.

DUMP
0 덤프 불가능
1 덤프 가능
FILE_SEQUENCE_CHECK_OPTION
0 무결성 검사를 하지 않음
1 우선순위가 높음, 보통 루트에 설정함
2 우선순위가 낮음

 

 

이제 마운트가 끝났다. 다만 이 과정에서 실수를 하면 부팅이 안되므로 마운트가 제대로 됐는지 검사한다.

$ sudo mount -a
mount: can't find UUID=e5bd4acf-cd6e-40df-9ebe-6967f4a569fb

이렇게 오류가 뜨면 부팅이 안되므로, fstab에 가서 추가했던 라인을 주석처리해준다. 마운트는 다시 해야겠지만, 부팅이 안되서 고생하는 일은 없을 것이다.

혹시나 fstab이 꼬여서 부팅이 안된다면 당황하지 말고, Ubuntu ISO파일이 든 시동디스크를 꽂아 안전모드로 부팅해 /etc/fstab에서 꼬인부분을 풀어주자.

[Linux] 리눅스 하드웨어 정보 확인

하드디스크 관련


sudo fdisk -l
Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 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
Disklabel type: dos
Disk identifier: 0x0c5b2f70

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048    999423    997376  487M 83 Linux
/dev/sda2       1001470 500117503 499116034  238G  5 Extended
/dev/sda5       1001472 500117503 499116032  238G 8e Linux LVM


Disk /dev/sdb: 596.2 GiB, 640135028736 bytes, 1250263728 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
Disklabel type: dos
Disk identifier: 0xfa03fd56

Device     Boot Start        End    Sectors   Size Id Type
/dev/sdb1        2048 1250263727 1250261680 596.2G 83 Linux


Disk /dev/mapper/siya--vg-root: 222.1 GiB, 238441988096 bytes, 465707008 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 /dev/mapper/siya--vg-swap_1: 15.9 GiB, 17054040064 bytes, 33308672 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

df
Filesystem                1K-blocks     Used Available Use% Mounted on
udev                        8134648        0   8134648   0% /dev
tmpfs                       1631372   165360   1466012  11% /run
/dev/mapper/siya--vg-root 229068020 31827040 185581924  15% /
tmpfs                       8156852      112   8156740   1% /dev/shm
tmpfs                          5120        4      5116   1% /run/lock
tmpfs                       8156852        0   8156852   0% /sys/fs/cgroup
/dev/sda1                    482922    63437    394551  14% /boot
tmpfs                       1631372       12   1631360   1% /run/user/109
tmpfs                       1631372       40   1631332   1% /run/user/1000
/dev/sdb1                 615189840 23547824 560369092   5% /home/siya/mnt/sdb

 

CPU 관련


cpustat
 %CPU   %USR   %SYS   PID S  CPU   Time Task
114.00 104.00  10.00 20288 R    1  4.56h python3
  1.00   0.00   1.00     3 S    0 11.20m [ksoftirqd/0]
  1.00   0.00   1.00  1818 S    1  1.16h cpustat
  1.00   1.00   0.00  3067 S    1  1.23h cpustat
  1.00   1.00   0.00  2955 S    1  1.45h htop

htop

 

GPU관련 (Ndivia)


nvidia-smi
Mon Aug 28 22:26:59 2017
+----------------------------------------------------------------------------+
| NVIDIA-SMI 384.59                 Driver Version: 384.59                   |
|-------------------------------+----------------------+---------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr.ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util Compute M. |
|===============================+======================+=====================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                 N/A |
| 33%   45C    P2    36W / 130W |   5823MiB /  6072MiB |     29%     Default |
+-------------------------------+----------------------+---------------------+

+----------------------------------------------------------------------------+
| Processes:                                                      GPU Memory |
|  GPU       PID  Type  Process name                              Usage      |
|============================================================================|
|    0     20288    C   python3                                      5813MiB |
+----------------------------------------------------------------------------+

# https://github.com/wookayin/gpustat

sudo pip install gpustat
watch --color -n1.0 gpustat

 

RAM 관련


htop

[WordPress] MathJax 사용법

자세한 사용법은 https://en.wikibooks.org/wiki/LaTeX에 잘 정리되어있다.

 

The Quadratic Formula

$$ x=−b±b2−4ac2a $$

$$ x=−b±b2−4ac2a $$

 

Cauchy’s Integral Formula

$$ f(a)=12πi∮γf(z)z−adz $$

$$ f(a)=12πi∮γf(z)z−adz $$

 

Double angle formula for Cosines

$$ cos⁡(θ+φ)=cos⁡(θ)cos⁡(φ)−sin⁡(θ)sin⁡(φ) $$

$$ cos⁡(θ+φ)=cos⁡(θ)cos⁡(φ)−sin⁡(θ)sin⁡(φ) $$

 

Gauss’ Divergence Theorem

$$ ∫D(∇⋅F)dV=∫∂D F⋅ndS $$

$$ ∫D(∇⋅F)dV=∫∂D F⋅ndS $$

 

Curl of a Vector Field

$$ ∇→×F→=(∂Fz∂y−∂Fy∂z)i+(∂Fx∂z−∂Fz∂x)j+(∂Fy∂x−∂Fx∂y)k $$

$$ ∇→×F→=(∂Fz∂y−∂Fy∂z)i+(∂Fx∂z−∂Fz∂x)j+(∂Fy∂x−∂Fx∂y)k $$

 

Standard Deviation

$$ σ=1N∑i=1N(xi−μ)2. $$

$$ σ=1N∑i=1N(xi−μ)2. $$

 

Definition of Christoffel Symbols

$$ (∇XY)k=Xi(∇iY)k=Xi(∂Yk∂xi+ΓimkYm) $$

$$ (∇XY)k=Xi(∇iY)k=Xi(∂Yk∂xi+ΓimkYm) $$

[WordPress] 워드프레스 텍스트 에디터 플러그인

워드프레스에서 제공하는 기본 텍스트 에디터는 쓰기 정말 안좋다. 그 흔한 글자색 변경 기능도 없다. 다행히 플러그인 중 쓸만한 텍스트 에디터 플러그인을 찾았는데, 그 중 하나를 소개할까 한다.

바로  TinyMCE advanced이다.

설치는 늘 그렇듯 워드프레스 어드민 페이지에서 플러그인 > 플러그인 추가하기 > TinyMCE advanced 검색 > 설치 > 활성화를 하면 된다.

그 후 설정 > TinyMCE advanced에서 자신의 취향에 맞게 텍스트 에디터를 손보면 된다.

 

바뀐 에디터

[WordPress] 서버 하나에 워드프레스를 여러개 설치해보자.

서버 Ubuntu 16.04, 호스팅 Hosting.kr를 사용한 환경에서 작성된 글입니다.

 

서버 하나에 워드프레스를 여러개 설치할 일이 생겼다. 우선 새로만드는 사이트에 연결될 도메인을 먼저 설정하자. 도메인 업체는 Hosting.kr밖에 사용해 본 적이 없어서 Hosting.kr을 기준으로 설명하겠다. 먼저 hosting.kr로 들어간다.

 

들어가면 홈에 이런 검색 창이 뜨는데, 원하는 도메인을 검색한다.

 

도메인 현황은 다음과 같이 뜨며, 이미 사용중인 도메인은 등록할 수 없다. 등록 가능한 도메인 중 마음에 드는걸 골랐다면 체크박스에 체크를 해주고 도메인 등록 버튼을 눌러 결제를 진행한다.

 

결제가 끝났다면 상단의 [나의서비스관리]에서 [도메인 관리]를 선택한다.

 

등록한 도메인과 [네임서버설정(무료)] – [네임서버(서브도메인) 설정 관리]에 체크한 다음 신청하기 버튼을 누른다.

 

위와 같은 화면이 떴다면 자신의 서버 IP주소를 등록해주면 된다. 서브도메인을 공란으로 두고 IP주소와 우선순위만 설정하면 도메인이 연결되는거고, 서브도메인까지 작성하면 서브도메인이 연결되는 형태다.

이 글에서는 siya.co.kr 외에 minseo.siya.co.kr에 새 워드프레스를 구축하는 시나리오로 진행된다.

네임서버 설정이 끝났다면 서버에 접속한다. 그 뒤 자신이 마음에 드는 디렉토리에 워드프레스를 설치한다.

 

mkdir -p "YOUR_DIRECTORY"
cd "YOUR_DIRECTORY"
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
--2017-08-25 23:56:32--  https://wordpress.org/latest.tar.gz
Resolving wordpress.org (wordpress.org)... 66.155.40.249, 66.155.40.250
접속 wordpress.org (wordpress.org)|66.155.40.249|:443... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: 8178289 (7.8M) [application/octet-stream]
Saving to: ‘latest.tar.gz’

latest.tar.gz          100%[============================>]   7.80M  12.5KB/s    in 7m 5s

2017-08-26 00:03:38 (18.8 KB/s) - ‘latest.tar.gz’ saved [8178289/8178289]


...


wordpress/wp-includes/class-wp-hook.php
wordpress/wp-includes/rest-api.php
wordpress/wp-includes/update.php
wordpress/wp-includes/comment.php
wordpress/wp-includes/class-wp-text-diff-renderer-table.php
wordpress/wp-config-sample.php

이제 ls 명령어를 치면 latest.tar.gz 파일과 wordpress 디렉토리가 있을 것이다. tar파일은 이제 필요가 없으니 삭제하고, wordpress 폴더는 보안상의 이유로 이름을 바꾸는 것이 좋다고 한다. 원하는 이름으로 바꿔주자.

ls
rm latest.tar.gz
mv wordpress/ "YOUR_WORDPRESS_DIR"
cd "YOUR_WORDPRESS_DIR"
ls
latest.tar.gz  wordpress

index.php        wp-admin              wp-content         wp-load.php      wp-signup.php
license.txt      wp-blog-header.php    wp-cron.php        wp-login.php     wp-trackback.php
readme.html      wp-comments-post.php  wp-includes        wp-mail.php      xmlrpc.php
wp-activate.php  wp-config-sample.php  wp-links-opml.php  wp-settings.php

wordpress가 잘 설치되었다. 마지막으로 wp-config-sample.php를 wp-config.php란 이름으로 복사해준다.

cp wp-config-sample.php wp-config.php

 

복사가 끝났으면 vi로 wp-config.php를 열어 DB 정보를 입력해준다. 이것으로 wordpress 설치는 끝났다. 나머지는 데이터베이스와 도메인을 연결해주기만 하면 된다. 

이 글에서는 데이터베이스로 MySQL을 사용한다.

$ mysql -u "YOUR_ADMIN_USER" -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5340 to server version: 3.23.54
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql> CREATE DATABASE "YOUR_DATABASE_NAME";
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON "YOUR_DATABASE_NAME".* TO '"YOUR_WORDPRESS_USER"'@'"YOUR_HOST"'
    -> IDENTIFIED BY '"YOUR_PASSWORD"';
Query OK, 0 rows affected (0.00 sec)
  
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
Bye
$

wordpress로 사용할 계정을 만들었다면 도메인을 연결하면 된다.

이 글에선 apache를 이용한다.

cd /etc/apache2/sites-available/
sudo cp 000-default.conf "YOUR_DOMAIN.conf"
sudo vi "YOUR_DOMAIN.conf"
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.

        ServerName "YOUR_DOMAIN (ex > minseo.siya.co.kr)"
        ServerAlias "YOUR_ALIAS_DOMAIN (ex > www.minseo.siya.co.kr)"

        ServerAdmin webmaster@localhost
        DocumentRoot "YOUR_WORDPRESS_DIR (ex > /home/minseo/www/html)"

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

 

이제 작성한 파일을 a2ensite를 이용하여 /etc/apache2/sites-enabled/ 로 옮긴다. 그 후 마지막으로 /etc/apache2/apache2.conf에서 디렉토리를 허가해주면 끝난다.

sudo a2ensite "YOUR_DOMAIN"
sudo vi /etc/apache2/apache2.conf

파일 중간에 추가해주면 된다.

<Directory "YOUR_WORDPRESS_DIR">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

다 끝났다. 마지막으로 apache를 재시작하면 된다.

sudo service apache2 restart

나머지는 설정한 도메인으로 들어가서 워드프레스를 구축하면 끝난다.