Ubuntu 20.04 : OwnCloud 설치

OS/Linux 2020. 11. 24. 23:58 Posted by 파란크리스마스

출처

MySQL - OwnCloud DB와 사용자 생성

pi@Kubuntu:~$ cd /bluesanta/mysql-5.7.23
pi@Kubuntu:/bluesanta/mysql-5.7.23$ bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1161
Server version: 5.7.23-log Source distribution
 
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> CREATE DATABASE owncloud;
Query OK, 1 row affected (0.01 sec)
 
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> create user 'owncloud'@'localhost' identified by 'owncloud!!';
Query OK, 0 rows affected (0.02 sec)
 
mysql> GRANT ALL privileges ON owncloud.* TO 'owncloud'@'localhost' identified by 'owncloud!!'; 
Query OK, 0 rows affected, 2 warnings (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit
Bye
pi@Kubuntu:/bluesanta/mysql-5.7.23$

OwnCloud 설치

bluesanta@Kubuntu:~$ cd /bluesanta/apps
bluesanta@Kubuntu:/bluesanta/apps$ wget https://download.owncloud.org/community/owncloud-complete-20200731.tar.bz2
bluesanta@Kubuntu:/bluesanta/apps$ tar xvf owncloud-complete-20200731.tar.bz2
bluesanta@Kubuntu:/bluesanta/apps$ sudo chown -R www-data:www-data owncloud

Apache2에 경로 추가

bluesanta@Kubuntu:~$ vi /bluesanta/apps/apache24/conf/httpd.conf

Alias /cloud "/bluesanta/apps/owncloud/"

<Directory /bluesanta/apps/owncloud/>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /bluesanta/apps/owncloud
 SetEnv HTTP_HOME /bluesanta/apps/owncloud

</Directory>

Apache2 재시작

$ sudo service apache2 restart

댓글을 달아 주세요

Ubuntu 20.04 : PHP zip 확장모듈 설치

OS/Linux 2020. 11. 23. 23:01 Posted by 파란크리스마스

출처

libzip 컴파일

bluesanta@Kubuntu:~$ wget https://libzip.org/download/libzip-1.7.3.tar.gz
bluesanta@Kubuntu:~$ tar xvfz libzip-1.7.3.tar.gz
bluesanta@Kubuntu:~$ cd libzip-1.7.3/
bluesanta@Kubuntu:~/libzip-1.7.3$ mkdir build
bluesanta@Kubuntu:~/libzip-1.7.3$ cd build
bluesanta@Kubuntu:~/libzip-1.7.3/build$ cmake ..
bluesanta@Kubuntu:~/libzip-1.7.3/build$ make
bluesanta@Kubuntu:~/libzip-1.7.3/build$ make test
bluesanta@Kubuntu:~/libzip-1.7.3/build$ sudo make install
 
... 생략 ...
 
-- Installing: /usr/local/bin/zipcmp
-- Set runtime path of "/usr/local/bin/zipcmp" to ""
-- Installing: /usr/local/bin/zipmerge
-- Set runtime path of "/usr/local/bin/zipmerge" to ""
-- Installing: /usr/local/bin/ziptool
-- Set runtime path of "/usr/local/bin/ziptool" to ""

php zip module 설치

bluesanta@Kubuntu:~$ wget https://pecl.php.net/get/zip-1.19.2.tgz
bluesanta@Kubuntu:~$ tar zxvf zip-1.19.2.tgz
bluesanta@Kubuntu:~$ cd zip-1.19.2/
bluesanta@Kubuntu:~/zip-1.19.2$ /bluesanta/apps/php-7.4.12/bin/phpize
Configuring for:
PHP Api Version:         20190902
Zend Module Api No:      20190902
Zend Extension Api No:   320190902
bluesanta@Kubuntu:~/zip-1.19.2$ ./configure  --prefix=/bluesanta/apps/php-7.4.12 --with-php-config=/bluesanta/apps/php-7.4.12/bin/php-config
bluesanta@Kubuntu:~/zip-1.15.2$ make && make test
bluesanta@Kubuntu:~/zip-1.19.2$ make install
Installing shared extensions:     /bluesanta/apps/php-7.4.12/lib/php/extensions/no-debug-zts-20190902/

/bluesanta/apps/php-7.4.12/php.ini 내용 추가

bluesanta@Kubuntu:~$ vi /bluesanta/apps/php-7.4.12/php.ini

[zip]
extension_dir=/bluesanta/apps/php-7.4.12/lib/php/extensions/no-debug-zts-20190902/
extension=zip.so

댓글을 달아 주세요

Ubuntu 20.04 : PHP7.4.12 수동설치

OS/Linux 2020. 11. 23. 02:02 Posted by 파란크리스마스

출처

컴파일 관련 라이브러리 설치

$ sudo apt install pkg-config libxml2-dev libsqlite3-dev libgmp-dev libonig-dev libbz2-dev libreadline-dev libxslt1-dev

php 컴파일

pi@Kubuntu:/bluesanta$ cd /bluesanta/
pi@Kubuntu:/bluesanta$ wget https://www.php.net/distributions/php-7.4.12.tar.gz
pi@Kubuntu:/bluesanta$ tar xvfz php-7.4.12.tar.gz 
pi@Kubuntu:/bluesanta$ cd php-7.4.12/
pi@Kubuntu:/bluesanta/php-7.4.12$ ./configure --prefix=/bluesanta/apps/php-7.4.12 --with-apxs2=/bluesanta/apps/apache24/bin/apxs --enable-fpm --enable-inline-optimization --enable-shared --enable-soap --with-xmlrpc --with-openssl --with-mhash --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --enable-gd --with-openssl-dir --with-zlib-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-pdo --with-mysqli=/bluesanta/mysql-5.7.23/bin/mysql_config --with-pdo-mysql=/bluesanta/mysql-5.7.23/bin/mysql --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-xsl --enable-mysqlnd-compression-support --with-pear --enable-opcache --with-mhash --with-curl --with-openssl --with-zlib --enable-intl
pi@Kubuntu:/bluesanta/php-7.4.12$ make -j4

php 모듈 테스트

pi@Kubuntu:/bluesanta/php-7.4.12$ make test
 
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Capture SSL session meta array in stream context [ext/openssl/tests/session_meta_capture.phpt]
Basic bitwise stream crypto context flag assignment [ext/openssl/tests/stream_crypto_flags_001.phpt]
TLSv1.1 and TLSv1.2 bitwise stream crypto flag assignment [ext/openssl/tests/stream_crypto_flags_002.phpt]
Server bitwise stream crypto flag assignment [ext/openssl/tests/stream_crypto_flags_003.phpt]
Specific protocol method specification [ext/openssl/tests/stream_crypto_flags_004.phpt]
PDO MySQL specific class constants [ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt]
=====================================================================
 
=====================================================================
WARNED TEST SUMMARY
---------------------------------------------------------------------
FPM: Buffered worker output decorated log with multiple continuous messages (stdout/stderr mixed) [sapi/fpm/tests/log-bwd-multiple-msgs-stdout-stderr.phpt] (warn: XFAIL section but test passes)
=====================================================================
 
You may have found a problem in PHP.
This report can be automatically sent to the PHP QA team at
http://qa.php.net/reports and http://news.php.net/php.qa.reports
This gives us a better understanding of PHP's behavior.
If you don't want to send the report immediately you can choose
option "s" to save it.  You can then email it to qa-reports@lists.php.net later.
Do you want to send this report now? [Yns]: n
make: *** [Makefile:232: test] 오류 1

php 설치

pi@Kubuntu:/bluesanta/php-7.4.12$ make install
Installing PHP SAPI module:       apache2handler
/bluesanta/apps/apache24/build/instdso.sh SH_LIBTOOL='/bluesanta/apps/apache24/build/libtool' libphp7.la /bluesanta/apps/apache24/modules
/bluesanta/apps/apache24/build/libtool --mode=install install libphp7.la /bluesanta/apps/apache24/modules/
libtool: install: install .libs/libphp7.so /bluesanta/apps/apache24/modules/libphp7.so
libtool: install: install .libs/libphp7.lai /bluesanta/apps/apache24/modules/libphp7.la
libtool: warning: remember to run 'libtool --finish /bluesanta/php-7.4.12/libs'
chmod 755 /bluesanta/apps/apache24/modules/libphp7.so
[activating module `php7' in /bluesanta/apps/apache24/conf/httpd.conf]
Installing shared extensions:     /bluesanta/apps/php-7.4.12/lib/php/extensions/no-debug-zts-20190902/
Installing PHP CLI binary:        /bluesanta/apps/php-7.4.12/bin/
Installing PHP CLI man page:      /bluesanta/apps/php-7.4.12/php/man/man1/
Installing PHP FPM binary:        /bluesanta/apps/php-7.4.12/sbin/
Installing PHP FPM defconfig:     /bluesanta/apps/php-7.4.12/etc/
Installing PHP FPM man page:      /bluesanta/apps/php-7.4.12/php/man/man8/
Installing PHP FPM status page:   /bluesanta/apps/php-7.4.12/php/php/fpm/
Installing phpdbg binary:         /bluesanta/apps/php-7.4.12/bin/
Installing phpdbg man page:       /bluesanta/apps/php-7.4.12/php/man/man1/
Installing PHP CGI binary:        /bluesanta/apps/php-7.4.12/bin/
Installing PHP CGI man page:      /bluesanta/apps/php-7.4.12/php/man/man1/
Installing build environment:     /bluesanta/apps/php-7.4.12/lib/php/build/
Installing header files:          /bluesanta/apps/php-7.4.12/include/php/
Installing helper programs:       /bluesanta/apps/php-7.4.12/bin/
  program: phpize
  program: php-config
Installing man pages:             /bluesanta/apps/php-7.4.12/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /bluesanta/apps/php-7.4.12/lib/php/
[PEAR] Archive_Tar    - installed: 1.4.9
[PEAR] Console_Getopt - installed: 1.4.3
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util       - installed: 1.4.5
warning: pear/PEAR dependency package "pear/Archive_Tar" installed version 1.4.9 is not the recommended version 1.4.4
[PEAR] PEAR           - installed: 1.10.12
Wrote PEAR system config file at: /bluesanta/apps/php-7.4.12/etc/pear.conf
You may want to add: /bluesanta/apps/php-7.4.12/lib/php to your php.ini include_path
/bluesanta/php-7.4.12/build/shtool install -c ext/phar/phar.phar /bluesanta/apps/php-7.4.12/bin/phar.phar
ln -s -f phar.phar /bluesanta/apps/php-7.4.12/bin/phar
Installing PDO headers:           /bluesanta/apps/php-7.4.12/include/php/ext/pdo/

php.ini 복사

pi@Kubuntu:/bluesanta/php-7.4.12$ cp php.ini-production /bluesanta/apps/php-7.4.12/php.ini


/bluesanta/apps/apache24/conf\httpd.conf 내용 추가

# php
LoadModule php7_module        modules/libphp7.so
PHPIniDir "/bluesanta/apps/php-7.4.12"

... 생략 ...

    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
    AddHandler application/x-httpd-php .php4 .php .phtml .ph .inc

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
    AddType application/x-httpd-php .php4 .php .phtml .ph .inc

</IfModule>

Apache 웹서버 재실행

$ sudo systemctl restart apache2

댓글을 달아 주세요

Redis 설치

OS/Linux 2020. 7. 2. 01:13 Posted by 파란크리스마스

출처

Redis 설치

$ sudo apt-get update

Redis 서비스 실행

$ sudo service redis-server start

Redis 서비스 실행 상태 확인

$ sudo systemctl status redis-server.service 
● redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-07-02 01:24:28 KST; 4s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 3172 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3183 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 3184 (redis-server)
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/redis-server.service
           └─3184 /usr/bin/redis-server 127.0.0.1:6379
 
 7월 02 01:24:27 bluesanta-ubuntu systemd[1]: Starting Advanced key-value store...
 7월 02 01:24:28 bluesanta-ubuntu systemd[1]: redis-server.service: Can't open PID file /var/run/redis/redis-server.pid (yet?) after start: No such file or directory
 7월 02 01:24:28 bluesanta-ubuntu systemd[1]: Started Advanced key-value store.

redis-cli 명령

$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit

Redis 로그 확인

$ sudo tail -f /var/log/redis/redis-server.log
3183:C 02 Jul 01:24:28.063 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3183:C 02 Jul 01:24:28.063 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=3183, just started
3183:C 02 Jul 01:24:28.063 # Configuration loaded
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.9 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 3184
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

3184:M 02 Jul 01:24:28.065 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
3184:M 02 Jul 01:24:28.065 # Server initialized
3184:M 02 Jul 01:24:28.065 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
3184:M 02 Jul 01:24:28.065 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
3184:M 02 Jul 01:24:28.066 * DB loaded from disk: 0.000 seconds
3184:M 02 Jul 01:24:28.066 * Ready to accept connections

댓글을 달아 주세요

Transmission 설치

OS/Linux 2019. 7. 7. 10:20 Posted by 파란크리스마스

출처

다운로드 디렉토리 생성

$ mkdir -p /home/bluesanta/torrent/torrent.temp
$ mkdir -p /home/bluesanta/torrent/torrent.auto
$ sudo chown -R debian-transmission:debian-transmission /home/bluesanta/torrent
$ mkdir -p /bluesanta/torrent/torrent.incoming
$ sudo chown -R debian-transmission:debian-transmission /bluesanta/torrent/torrent.incoming

Transmission 설치

$ sudo apt-get install transmission-daemon

환경 설정 (/etc/transmission-daemon/settings.json)

$ sudo vi /etc/transmission-daemon/settings.json

서비스가 종료된 경우만 수정 가능

IP filter 설정

    "blocklist-enabled": true,
    "blocklist-url": "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz",

외부 웹 접속 설정

    "rpc-authentication-required": true, 
    "rpc-password": "asdf1234",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "trans",
    "rpc-whitelist": "127.0.0.1,192.168.0.1,192.168.0.1",
    "rpc-whitelist-enabled": true,

최대 다운로드, 최대 업로드 관련 설정

"speed-limit-down-enabled": true 일 경우에만 speed-limit-down 가 적용
"speed-limit-up-enabled": true 일 경우에만 speed-limit-up 가 적용

    "speed-limit-down": 0,
    "speed-limit-down-enabled": false,
    "speed-limit-up": 100,
    "speed-limit-up-enabled": true,

다운로드 경로 설정

    "download-dir": "/bluesanta/torrent/torrent.incoming",
    "incomplete-dir": "/home/bluesanta/torrent/torrent.temp",
    "incomplete-dir-enabled": true,
    "watch-dir": "/home/bluesanta/torrent/torrent.auto",
    "watch-dir-enabled": true,
    "trash-original-torrent-files": true,

서비스 시작

$ sudo service transmission-daemon start

서비스 종료

$ sudo service transmission-daemon stop

서비스 상태 확인

$ sudo service transmission-daemon status
● transmission-daemon.service - Transmission BitTorrent Daemon
   Loaded: loaded (/lib/systemd/system/transmission-daemon.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-07-07 11:25:31 KST; 1h 25min ago
  Process: 3902 ExecStop=/bin/kill -s STOP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 3919 (transmission-da)
   Status: "Uploading 327.56 KBps, Downloading 3761.33 KBps."
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/transmission-daemon.service
           └─3919 /usr/bin/transmission-daemon -f --log-error
 
 7월 07 11:25:30 bluesanta-ubuntu systemd[1]: Starting Transmission BitTorrent Daemon...
 7월 07 11:25:31 bluesanta-ubuntu systemd[1]: Started Transmission BitTorrent Daemon.
 7월 07 11:25:32 bluesanta-ubuntu transmission-daemon[3919]: [2019-07-07 11:25:32.024] UDP Failed to set receive buffer:
 7월 07 11:25:32 bluesanta-ubuntu transmission-daemon[3919]: [2019-07-07 11:25:32.024] UDP Failed to set send buffer: re

웹 접속

transmisson-remote-gui

https://code.google.com/p/transmisson-remote-gui/

댓글을 달아 주세요

  1. 박종민 2020.05.25 10:02  댓글주소  수정/삭제  댓글쓰기

    저는 맥에서 트랜스미션을 사용하려는데요, 아이피필터를 설정하는데 터미널로 들어가서 위에서 말씀하신 환경설정 명령어 settings.json을 입력후 아이피필터명령어 입력하니 저장할 줄을 몰라서 그냥 엔터하고 나왔어요. 그런데 그럴필요가 없었는데요 위의 파일을 삭제하려니 경로가 몰르겠고, 맥용 트랜스미션에서 아이필터와 겹쳐져서 사용하면 동작을 하지 않고 방해가 되지 않을까요? 잘 몰라서 여쭈어봅니다.

MariaDB 설치 - 원격 접속 설정

OS/Linux 2019. 1. 26. 13:07 Posted by 파란크리스마스

출처

MariaDB 설치

$ sudo apt install mariadb-server

MariaDB 초기화 - 권한 설정(mysql_secure_installation)

$ sudo mysql_secure_installation
 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none): 

root 암호 설정 여부

OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
 
Set root password? [Y/n] 

root 암호 설정

New password: mariadb!
Re-enter new password: mariadb! 
Password updated successfully!
Reloading privilege tables..
 ... Success!
 
 
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
 
Remove anonymous users? [Y/n] 

root 원격 접속 여부

 ... Success!
 
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
 
Disallow root login remotely? [Y/n] 

test 데이터베이스 삭제 여부

 ... Success!
 
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
 
Remove test database and access to it? [Y/n] 

지금까지 설정한 권한 정보 적용 여부

 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
 
Reload privilege tables now? [Y/n] 

설정 완료

 ... Success!
 
Cleaning up...
 
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
 
Thanks for using MariaDB!

원격 접속 허용 하기 (환경파일 : /etc/mysql/my.cnf 수정)

$ sudo vi /etc/mysql/my.cnf

내용추가

[mysqld]    
bind-address = 0.0.0.0

/etc/mysql/my.cnf 전체

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

[mysqld]
bind-address = 0.0.0.0

서비스 등록

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
● mariadb.service - MariaDB 10.1.34 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-01-26 03:22:15 UTC; 7min ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 1113 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 855)
   CGroup: /system.slice/mariadb.service
           └─1113 /usr/sbin/mysqld
 
Jan 26 03:22:10 orangepizero systemd[1]: Starting MariaDB 10.1.34 database server...
Jan 26 03:22:13 orangepizero mysqld[1113]: 2019-01-26  3:22:13 3069987648 [Note] /usr/sbin/mysqld (mysqld 10.1.3
Jan 26 03:22:15 orangepizero systemd[1]: Started MariaDB 10.1.34 database server.
Jan 26 03:22:15 orangepizero /etc/mysql/debian-start[1351]: /usr/bin/mysql_upgrade: the '--basedir' option is al
Jan 26 03:22:15 orangepizero /etc/mysql/debian-start[1351]: Looking for 'mysql' as: /usr/bin/mysql
Jan 26 03:22:15 orangepizero /etc/mysql/debian-start[1351]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jan 26 03:22:15 orangepizero /etc/mysql/debian-start[1351]: This installation of MySQL is already upgraded to 10
Jan 26 03:22:15 orangepizero /etc/mysql/debian-start[1362]: Checking for insecure root accounts.
Jan 26 03:22:15 orangepizero /etc/mysql/debian-start[1366]: Triggering myisam-recover for all MyISAM tables and 
pi@orangepizero:~$ netstat -tnlp | grep 3306

MariaDB 포트 확인

$ netstat -tnlp | grep 3306
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -                   

MariaDB 접속

$ su -
Password: 
 
# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.1.34-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> 

사용자 추가

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 54
Server version: 10.1.34-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> create user 'user1'@'%' identified by 'user1!!';
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [(none)]> grant all privileges on *.* to 'user1'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
 
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [(none)]> exit
Bye

user1 접속

$ mysql -u user1 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.1.34-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> 

사용자 목록 조회

MariaDB [(none)]> select user, host from mysql.user;
+-------+-----------+
| user  | host      |
+-------+-----------+
| user1 | %         |
| root  | localhost |
| user1 | localhost |
+-------+-----------+
3 rows in set (0.00 sec)

댓글을 달아 주세요

Google 도메인 용 DDclient DyDNS 구성

OS/Linux 2019. 1. 26. 11:13 Posted by 파란크리스마스

출처

DDclient 설치

$ sudo apt-get update
$ sudo apt-get install ddclient

DDclient 설정

$ sudo vi /etc/ddclient.conf

ddclient.conf 내용

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

ssl=yes
#protocol=dyndns2
protocol=googledomains
use=web
server=domains.google.com
login=XXXXXXXXXXXXXXXXXXXXXXX
password='XXXXXXXXXXXXXXXXXXXXXXX'
www.XXXXXXXX.biz
daemon=100

DDclient 데몬 설정

$ sudo vi /etc/default/ddclient

ddclient 내용

run_daemon="true"
daemon_interval="300"

DDclient 서비스 등록

$ sudo systemctl enable ddclient
ddclient.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ddclient
$ sudo systemctl start ddclient
$ sudo systemctl status ddclient
● ddclient.service - LSB: Update dynamic domain name service entries
   Loaded: loaded (/etc/init.d/ddclient; generated)
   Active: active (running) since Wed 2019-01-23 00:28:19 KST; 11min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ddclient.service
           └─1219 ddclient - sleeping for 250 seconds
 
 1월 23 00:28:19 bluesanta-desktop systemd[1]: Starting LSB: Update dynamic domain name service entries...
 1월 23 00:28:19 bluesanta-desktop systemd[1]: Started LSB: Update dynamic domain name service entries.

댓글을 달아 주세요

Ubuntu 18.04 LTS원격데스크톱 서비스(xRDP) 설치

OS/Linux 2019. 1. 26. 10:28 Posted by 파란크리스마스

출처

설치

$ sudo apt-get install xrdp xorgxrdp

서비스 등록

$ sudo systemctl enable xrdp
Synchronizing state of xrdp.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable xrdp

Authenticate 팝업창 제거

sudo bash -c "cat >/etc/polkit-1/localauthority/50-local.d/45-allow.colord.pkla" <<EOF
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF

Tweak-tool을 설치

$ sudo apt-get install -y gnome-tweak-tool

댓글을 달아 주세요

Ubuntu 18.04 : Tomcat 설치

OS/Linux 2018. 10. 8. 03:11 Posted by 파란크리스마스

출처

Tomcat 8.5 다운로드 및 압축해제

$ wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
$ tar xvf apache-tomcat-8.5.34.tar.gz
$ sudo mv apache-tomcat-8.5.34 /usr/local/

jdk 설치

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

서비스 파일 작성

$ sudo vi /etc/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle
Environment=CATALINA_PID=/usr/local/apache-tomcat-8.5.34/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/apache-tomcat-8.5.34
Environment=CATALINA_BASE=/usr/local/apache-tomcat-8.5.34
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/usr/local/apache-tomcat-8.5.34/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-8.5.34/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Tomcat 8.5 서비스 등록

$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat      (재부팅시 자동실행)
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

Tomcat 8.5 서비스 실행

$ sudo systemctl start tomcat

Tomcat 8.5 서비스 실행 정보 확인

$ systemctl status tomcat.service
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-10-04 07:13:23 KST; 17s ago
  Process: 5797 ExecStart=/usr/local/apache-tomcat-8.5.34/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5805 (java)
    Tasks: 48 (limit: 4915)
   CGroup: /system.slice/tomcat.service
           └─5805 /usr/lib/jvm/java-8-oracle/bin/java -Djava.util.logging.config.file=/usr/local/apache-to
 
10월 04 07:13:23 bluesanta-ubuntu systemd[1]: Starting Apache Tomcat Web Application Container...
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using JRE_HOME:        /usr/lib/jvm/java-8-oracle
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CLASSPATH:       /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Using CATALINA_PID:    /usr/local/apache-tomcat-8.5.34
10월 04 07:13:23 bluesanta-ubuntu startup.sh[5797]: Tomcat started.
10월 04 07:13:23 bluesanta-ubuntu systemd[1]: Started Apache Tomcat Web Application Container.

Tomcat 8.5 서비스 종료

$ sudo systemctl stop tomcat

방화벽 설정

$ sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

댓글을 달아 주세요

  1. 먹튀 2018.10.10 04:52  댓글주소  수정/삭제  댓글쓰기

    잘보고 갑니다 ^^

Ubuntu 18.04 : svn 설치

OS/Linux 2018. 10. 8. 03:11 Posted by 파란크리스마스

출처

svn 설치

# apt-get install -y subversion

저장소(repository) 생성

# svnadmin create --fs-type fsfs /bluesanta/Repositories

svn 환경파일(/conf/svnserve.conf) 수정

# vi /bluesanta/Repositories/conf/svnserve.conf

[general]
#인증되지않은(즉 계정이 없는) 사용자에 대해 접근을 거부한다.
anon-access = none
#인증된 사용자에 대해 쓰기 권한을 준다.
auth-access = write
#인증된 사용자에 대한 계정 정보(아이디/패스) 정보가 기록된 파일명을 의미한다.(기본값 passwd) 
password-db = passwd
#인증된 사용자에 대해 저장소에 대한 권한 설정이 기록된 파일명(기본값)
#authz-db = authz
#현재 파일에 해당되는 저장소의 영역에 대해 설정
#realm = bluesanta_proj

사용자 관리(/conf/passwd) 파일

# vi passwd

[users]
bluesanta = {password}

사용자 관리(/conf/authz) 파일

# vi authz

[/android_library]
bluesanta = rw

svn 시작

# svnserve -d -r /bluesanta/Repositories

svn 종료

# killall svnserve

svn 포트 개발(3690)

# firewall-cmd --permanent --zone=public --add-port=3690/tcp
# firewall-cmd --reload

svn editor 설정

# SVN_EDITOR=/usr/bin/vim
# export SVN_EDITOR

svn 기본 디렉토리 만들기

$ svn mkdir svn://localhost/android_library

svn 데몬 자동실행

$ sudo vi /etc/rc.local

# Subversion
svnserve -d -r /bluesanta/Repositories

서비스 등록

$ vi svnserve

#! /bin/sh
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs $syslog $remote_fs
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start svnserve
### END INIT INFO

# Author: Michal Wojciechowski <odyniec@odyniec.net>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /bluesanta/Repositories"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start()
{
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
}

do_stop()
{
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        rm -f $PIDFILE
        return "$RETVAL"
}

case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0

svnserve 파일 복사

$ sudo cp svnserve /etc/init.d
$ sudo chmod u+x /etc/init.d/svnserve 

서비스 등록

$ sudo update-rc.d svnserve defaults

서비스 실행

$ sudo service svnserve start

서비스 실행 정보 확인

$ sudo service svnserve status
● svnserve.service - LSB: Start svnserve
   Loaded: loaded (/etc/init.d/svnserve; generated)
   Active: active (running) since Wed 2018-10-03 21:37:05 KST; 11s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2338 ExecStop=/etc/init.d/svnserve stop (code=exited, status=0/SUCCESS)
  Process: 2380 ExecStart=/etc/init.d/svnserve start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/svnserve.service
           └─2387 /usr/bin/svnserve -d -r /bluesanta/Repositories

10월 03 21:37:05 bluesanta-ubuntu systemd[1]: Starting LSB: Start svnserve...
10월 03 21:37:05 bluesanta-ubuntu svnserve[2386]: DIGEST-MD5 common mech free
10월 03 21:37:05 bluesanta-ubuntu systemd[1]: Started LSB: Start svnserve.

댓글을 달아 주세요

Linux에 Maven 설치하기

OS/Linux 2018. 8. 19. 11:51 Posted by 파란크리스마스

출처

설치 : 다운로드, 압축해제, 디렉토리이동

$ wget http://mirror.apache-kr.org/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
$ tar xvf apache-maven-3.5.4-bin.tar.gz
$ sudo mv apache-maven-3.5.4 /opt/
$ sudo ln -s /opt/apache-maven-3.5.4/ /opt/maven

환경설정 : /etc/profile 내용 추가

$ sudo vi /etc/profile

내용추가

export M2_HOME=/opt/maven
export PATH=$PATH:$M2_HOME/bin

profile 실행

$ source /etc/profile

댓글을 달아 주세요

ShofEL2, Tegra X1 and Nintendo Switch 사용하기

OS/Linux 2018. 4. 25. 23:29 Posted by 파란크리스마스

원문 출서 - 전체내용

By switch_enthusiast
Filed under switch vulnerability exploit linux

핵심적인 내용만 구글 번역한 내용입니다.

ShofEL2 및 Switch Linux에 오신 것을 환영합니다. 

Nintendo Switch (Tegra X1 플랫폼)에서 fail0verflow의 부트 스택을 수정하지 않고 범용 코드 실행 및 Linux 용으로 사용할 수 있습니다.

exploit(취약점 공격)을 릴리스할지 여부를 선택하는 것은 어려운 선택입니다.

과거의 콘솔에 대한 우리의 경험을 감안할 때, 우리는 본질적으로 해적 행위보다는 해적 행위에 사용될 수 있다는 두려움 때문에 취약성 세부 사항이나 악용 사례를 공개하는 것에 조심했습니다.

즉, Tegra bootrom 버그가 너무 분명해서 여러 사람이 지금까지 독자적으로 발견했습니다.

기껏해야 다른 사생 팀의 석방은 불가피하지만 최악의 경우 특정 해적판 모 듈팀이 첫 번째 조치를 취할 수 있습니다.

90 일 전 Tegra 칩은 Android 기기에서 주로 사용되기 때문에 책임있는 공개 프로세스가 시작되었습니다. 공개 기한이 지났습니다. 버그는 조만간 공개 될 것이며, 우리는 리눅스 부트 체인과 커널 트리와 함께 출시 할 것입니다.

각각은 여러 가지 독립적 인 방식으로 수행 될 수 있습니다. 이것이 iPhone 사용자가 USB를 통해 부팅 할 때마다 수행해야한다는 점에서 "묶인 탈옥"이라고 부르는 것입니다. 이 버그는 부트 ROM에 있기 때문에 하드웨어 개정 없이는 패치 할 수 없습니다. 즉, 현재 존재하는 모든 스위치 유닛은 영원히 취약합니다. Nintendo는 제조 과정 중에 Boot ROM 버그 만 패치 할 수 있습니다. 이 취약점은 부팅 프로세스 초기에 발생하므로 Boot ROM 자체 및 모든 암호화 키를 포함하여 모든 장치 데이터와 암호를 추출 할 수 있습니다. 또한 하드웨어 손상이 없거나 돌이킬 수없는 변경 사항 (예 : 퓨즈 끊김)이없는 한 Tegra 장치를 해제 할 때 사용할 수 있습니다. 그리고 이것은 내장 된 eMMC 스토리지를 만질 필요가없는 부팅 시간 버그이기 때문에 기존 소프트웨어에 대해서는 사용이 완전히 감지되지 않습니다. 온보드 메모리를 변경하려고하지 않는 한, USB 익스플로잇을 통해 리눅스를 부팅하고 (보통의 부팅을 통해) 스위치 OS를 영구적으로 이중 부팅 할 수 있습니다 (예 : 리눅스 파일 시스템 두 번째 SD 카드 파티션 또는 다른 SD 카드).

우리가 재미와 자작 등을 위해이 일을한다는 것을 분명히하기 위해서입니다.


우리가 계획하고있는 것이지만, 90 일 공개 창이 4 월 25 일에 만료되기 2 일 전에 누군가가 0 일 버그를 게시했습니다. 오 잘. 예, 이것은 fusée gelée에서 악용 한 것과 동일한 버그입니다. 다른 일부 그룹이 누출 한 것입니다 (그러나 먼저 발견했습니다).

우리가 blogpost / repos를 준비하지 못했기 때문에 (이것은 우리와 마찬가지로 procrastinators가되었지만) 약간의 어려움이있을 것입니다

What’s this all about anyway?

Nintendo Switch 내부의 Tegra X1 (Tegra210이라고도 함) SoC에는 모든 서명 검사를 우회하여 조기 실행을 제어 할 수있는 악용 가능한 버그가 있습니다. 이 버그는 RCM 모드에서 Tegra 장치를 처음으로 깜박이고 bricked 장치를 복구하기위한 USB 기반 복구 모드입니다. 일반적으로 RCM 모드는 서명 된 이미지 만로드 할 수 있지만 버그로 인해 임의 코드가 실행될 수 있습니다.

즉, 스위치에서 코드를 실행하려면 완전히 독립적 인 두 가지 작업을 수행해야합니다.

  1. Enter RCM mode
  2. Execute the USB-based exploit

Entering RCM mode

  1. 이전 커널 모드 코드 실행
    예 : WebKit 익스플로잇과 커널 익스플로잇을 진입 점으로 사용하기
  2. eMMC가 제거되면, Tegra는 부팅시 RCM 모드로 들어갑니다.
  3. 스위치의 볼륨 높이기, 홈 및 전원 버튼을 동시에 누릅니다.

Joy-Con 홈 단추는 여기에서 작동하지 않습니다. Nintendo 스위치 자체의 비밀 홈 버튼에 대해 궁금 할 것입니다. Tegra가 Home 버튼이라고 부르는 것은 실제로 오른쪽 Joy-Con 커넥터의 핀 10 (가장 왼쪽의 핀)에 연결됩니다. 간단한 철사를 사용하여 예를 들어 철로로 연결할 수 있습니다. 레일에 나사 (가장 쉬운) 또는 핀 10과 7 (또는 1) 함께 (10과 9는 작동하지 않음). Micro USB 커넥터 (Joy-Con 커넥터와 동일한 핀 피치)를 사용하여 작은 지그를 쉽게 인쇄하거나 커넥터의 기증자로 분리 된 Joy-Con을 사용할 수도 있습니다. 조이 콘 (Joy-Con) 레일이 UART이기 때문에 후자가 유용합니다. 우리는 코어 부트, u- 부트 및 리눅스를위한 콘솔로 오른 손잡이 조이 콘 포트를 사용합니다.

Executing the USB-based exploit

USB 악용에는 USB 호스트가 필요합니다. 익스플로잇은 또한 매우 긴 컨트롤 전송을 필요로하는데, 불행하게도 일부 OS는 만족스럽지 않다. xHCI 컨트롤러 (USB 3.0 또는 최신 시스템의 USB 포트)가있는 PC에서 바닐라 Linux를 사용하거나 EHCI (USB 2.0) 컨트롤러 및이 커널 패치가있는 PC를 사용할 수 있습니다. 이것은 안드로이드 폰 (적어도 xHCI 컨트롤러를 가진 사람들)에서도 실행될 수 있습니다. 안드로이드에 대한 익스플로잇 포팅은 독자에게 운동으로 남아 있습니다. 다른 Tegra 장치에서 그것을하기위한 보너스 포인트. 다른 스위치처럼.

Linux on Switch boot chain

우리의 부트 체인은 Pixel C 부트 체인을 기반으로하는 99 % 오픈 소스입니다.

(누가 Nvidia의 지저분한 L4T 커널 포크와 독점적 인 부트 로더를 사용하기를 원합니까?).

다음과 같이 보입니다.

BootROM Exploit → coreboot 로더 → coreboot → ARM 트러스트 된 펌웨어 → coreboot → u-boot → Linux

선택적으로 제공되는 유일한 폐쇄 소스 구성 요소는 Tegra210 DDR4 메모리 교육 코드입니다. 알려지지 않은 이유로 Pixel C의 바이너리 블롭 (blob)으로 릴리즈됩니다. Pixel C는 메모리로 복사되어 점프됩니다. 이 얼룩은 Pixel C 팩토리 이미지에서 다음과 같이 얻을 수 있습니다.

./build/util/cbfstool/cbfstool bootloader-dragon-google_smaug.7900.97.0.img extract -n fallback/tegra_mtc -f tegra_mtc.bin

이 BLOB에는 하드 코딩 된 테이블과 픽셀 C에 대한 "모든 것을 수행"진입 점이 포함되어 있지만 호출 트리 깊숙한 한 수준으로 건너 뛰고 사용자 정의 테이블을 전달할 수 있습니다.

이는 우리의 패치 된 coreboot가 스위치에서 DDR4를 구성하기 위해 수행하는 작업입니다. 이 얼룩이 없다면 스택은 여전히 ​​작동 할 것이지만, 메모리는 ~ 200Mhz에서 실행될 것이고 불필요한 성능은 절름발이입니다.

부팅 프로세스는 다음과 같습니다.

  1. Tegra는 BPMP (arm7) 코어에서 부트 ROM을 시작하고 RCM 모드로 들어갑니다.
  2. 호스트 기반 USB 익스플로잇 코드는 RCM 명령을 사용하여 작은 (~ 2.5K) 로더 (cbfs.bin)를 SRAM 메모리에 저장합니다.
  3. 익스플로잇이 트리거되어 ROM이 cbfs.bin으로 점프합니다.
  4. 그런 다음 호스트 코드는 CBFS 서버 모드로 들어가고 USB RCM 파이프를 통해 Tegra에 코어 부트 (coreboot)를 동적으로 제공합니다.
  5. cbfs.bin은이 CBFS 서버를 사용하여 coreboot 부트 블럭 인 coreboot의 첫 번째 28KiB를 SRAM에 요청한 다음 그 내용으로 이동합니다.
  6. 코어 부트 (coreboot) 부트 블럭은 기본 주변 장치를 초기화 한 다음 USB의 CBFS 서비스를 사용하여 롬 스테이지를 SRAM으로로드하고 점프합니다.
  7. coreboot romstage는 SDRAM (기본 고정 부팅 속도) 및 기타 주변 장치를 초기화합니다.
  8. 그런 다음 romstage는 전체 coreboot ROM을 SDRAM (여전히 부트 ROM RCM 모드 USB 루틴 사용)으로 다운로드하고 RAM 기반 CBFS로 전환합니다.
  9. 이제 romstage는 RAM CBFS에서 램 스테이지를로드하고 CCPLEX (Cortex-A57)를 시작하고 BPMP를 종료합니다.
  10. 이제 CCPLEX (EL3)에서 coreboot ramstage는 MTC BLOB를 사용할 수있는 경우 DDR4 교육을 포함하여 나머지 기본 시스템 초기화를 수행합니다.
  11. 이제 램 스테이지는 TrustZone 구현을 초기화하는 ARM 트러스티 드 펌웨어로 이동합니다. 이는 특정 OS 서비스를 제공하는 데 필요합니다.
  12. ARM Trusted Firmware는 이제 EL2 모드에서 실행되는 코어 부트 람시 (coreboot ramstage)로 돌아갑니다.
  13. 낙담은 최종 유료 하중 인 U-Boot로로드되어 점프합니다.
  14. U-Boot가 시작되고, 더 많은 하드웨어를 초기화하며, 기본적으로 자체 USB 드라이버를 사용하여 USB 다운로드 모드로 들어갑니다.
  15. PC 측에서 imx_usb_loader를 사용하면 Linux 커널과 initramfs와 같은 임의의 U-Boot 페이로드를로드하여 실행할 수 있습니다.

The code

  • https://github.com/fail0verflow/shofel2
  • https://github.com/fail0verflow/switch-arm-trusted-firmware
  • https://github.com/fail0verflow/switch-coreboot
  • https://github.com/fail0verflow/switch-u-boot
  • https://github.com/fail0verflow/switch-linux

죄송합니다. 일반 사용자가이 도구를 사용하는 데 필요한 안내서가 없으며 가장자리에 많은 것들이 너무 거칠어도 안됩니다. 개발에 진지한 사람이라면 스스로 생각하거나 IRC에 질문 할 수 있어야합니다.

우리는 Git 이력을 정리할 시간이 없었기 때문에 Git 이력은 지져분합니다. 너무 열심히 읽지 마십시오.

Coming soon

Proper write-up on the exploit, stories of porting Linux (yes, there’s more to it than a panel driver ;-) ), upstreaming status, how batshit insane DDR4 is, and more. Probably, anyway. We’re pretty bad at writing blogposts. 

 ¹ There are actually many Boot ROM bugs, several of which have been found by multiple people.

댓글을 달아 주세요

  1. 2018.05.06 15:48  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다