browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

Налаштування Raspberry Pi та основні команди для Debian “squeeze” Linux

Posted by on 15 Грудня 2012

Raspberry Pi Linux перші кроки

Сьогодні я хочу розказати про мій досвід осягнення консольних команд для Raspberry Pi і загалом для Debian “squeeze” Linux.  Він буде корисним для таких самих новачків світу Linux як я.

Фактично у консолі Linux я донедавна не працював, вона нагадує старий добрий DOS і має свою специфіку. Хоча все воно  вийшло із стін  Bell Laboratories в 70х роках, але продовжує розвиватися окремо.

Спочатку як рядовий юзер Windows я просто не уявляв роботу в Linux без графічної оболонки. Як захоплений глядач я спостерігав за фокусниками-програмерами, які вже мали навики роботи в консолі. Купа незнайомих рухів і команд, і все так швидко – майже магія. Згодом я трохи освоївся і зрозумів що консоль це дуже зручна і потужна штука під чорним тлом якої приховано величезний потенціал різноманітних модулів і підпрограм, і вона мені все більше і більше подобається. Всього я ще не знаю але приведу три основині підказки, щоб вам було  простіше працювати на початку:

1. Буфер обміну. Щоб щось скопіювати в буфер обміну просто виділіть його мишею. Для вставки – натисніть одночасно праву і ліву кнопки миші або просто Shift+Insert (щось схоже було і під DOS-ом, здається). До речі, багато консольних команд в Linux і DOS співпадають!

2. Історія команд. Консоль люб’язно пам’ятає певну кількість останніх команд яку ви вводили. Щоб повернутися до них просто використовуйте стрілки вгору-вниз ↑ ↓ на клавіатурі.

3. Підказка. Консоль має потужний інструмент “прогнозування” того що ви вводите. Просто почніть набирати команду а далі натисніть клавішу TAB і ви отримаєте бажаний текст. Якщо ж бажаного тексту немає… спробуйте швидко натиснути TAB 2 рази – і ви отримаєте список можливих продовжень, серед яких буде ваша команда, це якщо ви не помилилися при вводі 😉

Про початкові налаштування платки і все що із цим пов’язано можна також почитати тут: http://elinux.org/RPi_Beginners

 

Зміст

1. Базові відомості

2. Первинні налаштування

3. Як оновити Raspberry Pi firmware

4. Створення нового користувача

5. Видалити користувача разом із папками

6. Налаштування статичної IP адреси

7. Налаштування авто запуску демонів (сервісів)

8. Включити DASH 

9. Видалити gnome та gvfs

10. Змінити ім’я хоста

11. Установка MySQL, Apache, PHPMyAdmin, gcc, libmysql++

12. Відкат / установка PHP 5.3.18

13. Дати доступ до MySQL назовні через Ethernet

14. Активувати mod_rewrite для Apache

15. Перевірка підключених USB-Serial конверторів / портів

16. Відкрити доступ користувачу до USB-Serial портів

17. Переглянути вільне місце на диску (картці)

18. Розпаковка архівів *.tar.gz

19. Установка прав на директорію/файл

20. Установка прав для користувача

21. Ініціалізація crontab демона

 

1.    Базові відомості

Відразу про те, що я для себе наразі відкрив, поправте якщо я не прав.

В Linux запис “/directory” означає що тека directory знаходиться у корені тобто “/” – це корінь диску.

Запис “~/directory” означатиме що тека directory знаходиться у теці поточного користувача, і якщо користувач має ім’я “user” то цей запис рівноцінний запису “/home/user/directory“. Це спрощує запис команд і пришвидшує роботу.

Запис “./filename” означатиме що буде виконуватися запуск файлу з поточної теки,   тобто “./” – це поточна тека. В Linux розширення файлів не має значення – важливі його атрибути. Наприклад якщо файл можливо “запустити” як програму – то він має атрибут “executed”.

Linux із самого початку розроблявся як багатокористувацька система, тому зазвичай є один “адміністратор” (sudo або root) під паролем, який має доступ до всіх фалів і папок, включно із системними. Є користувачі, зона дії яких зазвичай обмежена його “домашньою” текою (щось на зразок “Мої документи” у Windows). Наприклад користувач user1 може виконувати будь які дії лише у своїй теці /home/user1/ і ніде інше.

Тепер про структуру тек. Структура розміщення файлів може змінюватися в різних дистрибутивах Linux, але зазвичай вона має вигляд:

  • / – Коренева директорія для всієї ієрархії
  • /bin/ – виконавчі файли програм користувача
  • /boot/ – статичні файли для завантаження системи
  • /dev/ – файли пристроїв
  • /etc/ – специфічні файли конфігурацій системи
  • /home/ – домашні теки користувачів
  • /lib/ – загальні бібліотеки та модулі ядра
  • /media/ – точка монтування для з’ємних пристроїв
  • /mnt/ – точка монтування для тимчасових файлових систем
  • /opt/ – додаткові пакети програмного забезпечення
  • /sbin/ – системні виконавчі файли
  • /srv/ – дані для сервісів системи
  • /tmp/ – тимчасові файли
  • /usr/ – користувальницькі утиліти та додатки
  • /var/ – змінювані файли (змінні)
  • /root/ – домашня папка користувача root (адміністратора)
  • /proc/ – ядро документів віртуальної файлової системи, статуси процесів у вигляді текстових файлів

midnight commander

Всі (або більшість) дій в ОС Linux відбуваються через файли. Наприклад під’єднали ви якійсь девайс до USB порту, у теці /dev з’явиться відповідний файл usbdevxxx. Ви безпосередньо текстовим редактором відкрити його не зможете, але він “віртуально” відповідатиме за роботу із підєднаним девайсом. Щоб у девайс щось записати треба програмою відкрити файл – щось записати і закрити файл. Зручно.

Перед початком відразу рекомендую встановити текстовий редактор nano і двопанельний файловий менеджер midnight commander (щось схоже на FAR, Norton Commander або DosNavigator), без цих інструментів я собі не уявляю роботу у командній стрічці. Для їх установки виконайте команду:

> sudo apt-get install mc nano

 

2.    Первинні налаштування

Отож почнемо. Одразу після першого завантаження  Raspberry Pi (надалі просто малина або Pi) система сама запропонує виконати основні налаштування платки. Виконайте наступну команду:

> sudo raspi-config

Відкриється наступне інтуїтивно зрозуміле меню, яке дозволить швидко налаштувати малину, а саме:  розвернути образ Лінукса на всю пам’ять SD-картки (спочатку є 2Гб),  трошки “розігнати” процесор, встановити ваш часовий пояс, тощо.

raspi-config command

Після налаштувань, як правило необхідне перезавантаження системи, виконуємо його командою:

> sudo reboot

 

3. Як оновити Raspberry Pi firmware

Із заводу малина можливо прийшла до вас не із самою новою прошивкою. Я рекомендую її періодично оновлювати, це дозволить мати вам менше проблем із зовнішніми девайсами і непередбачувальною поведінкою платки. Інсталюйте утиліту:

> sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update

Переконайтесь що встановлений коректний час (команда > data). Запустіть NTP сервіс якщо це потрібно (команда > sudo service ntp start). Також встановіть сертифікати:

> sudo apt-get install ca-certificates

Інсталюйте додаткові утиліти для ядра:

> sudo apt-get install git-core

Оновіть внутрішнє ПЗ (firmware):

> sudo rpi-update

 

4. Створення нового користувача

Введіть наступну команду у вікні терміналу, щоб створити нового користувача:

> sudo adduser <username>

Для того щоб новий користувач був адміністратором або по інакшому “sudo“, наберіть:

> sudo visudo

І додайте у файл наступний рядок:

<username> ALL=(ALL) NOPASSWD: ALL

Окрім того, замість додавання користувача в список sudo, ви можете додати користувача до групи sudo за допомогою наступної команди:

> sudo adduser <username> sudo

 

5. Видалити користувача разом із папками

 Ключ -r дозволяє видалити також всі папки, які належать даному користувачеві.

> userdel -r <username>

 

6.    Налаштуваннястатичної IP адреси

У більшості випадків сервер під Linux повинен мати статичну IP адресу у мережі, для її налаштування відкриваємо конфігураційний файл:

> sudo nano /etc/network/interfaces

І вписуємо наступні рядки (в даному випадку статична адреса буде: 192.168.0.133).

# loopback        auto lo

        iface lo inet loopback

# local IP

        auto eth0

        #iface eth0 inet dhcp

        iface eth0 inet static

        address 192.168.0.133

        netmask 255.255.255.0

        network 192.168.0.0

        broadcast 192.168.0.255

        gateway 192.168.0.1    

Після зміни – перезапускаємо мережу

> sudo /etc/init.d/networking restart

або так:

> sudo service networking restart

Додаткові команди для перевірки налаштувань, поточні налаштування мережі:

> ifconfig -a

і таблиця маршрутизації:

> route

 

 

7. Налаштування авто запуску демонів (сервісів)

По замовчуванню в системі крутиться багато непотрібних сервісів або демонів по термінології Linux, непотрібні я відключаю. Щоб Перевірити поточний ранлевел (поточний runlevel=2 для командної стрічки зазвичай)

> runlevel

Встановити утиліту:  

> sudo apt-get install sysv-rc-conf

Відключити  запуск непотрібних демонів (samba, nfs etc..) до деякого ранлевела – наприклад можливо залишити дозвіл їм запускатися у графічному режимі:

> sudo sysv-rc-conf

 

 

 8. Включити DASH

Чесно. Не знаю чи треба, але пишуть що: Using dash as the system shell will improve the system’s overall performance. Тому Виконуємо команду, та вибираємо  < Yes >

> dpkg-reconfigure dash

 

 

9. Видалити gnome та gvfs

Видалити файли необхідні для графічного інтерфейсу(якщо він вам не треба звісно):

> sudo apt-get remove gnome> sudo apt-get remove gvfs

Очистка реєстру програм:

> sudo apt-get autoremove> sudo apt-get autoclean

 

 

10. Змінити ім’я хоста

Перегляд поточного імені:

> hostname

Змінюємо ім’я хоста в першому файлі на потрібне:

> sudo nano /etc/hostname

Запускаємо скрипт для застосування змін:

> sudo /etc/init.d/hostname.sh start

Перезавантажуємось:

> sudo reboot 

Змінюємо ім’я хоста в другому файлі на потрібне:

> sudo nano /etc/hosts

 

 

11. Установка MySQL, Apache, PHPMyAdmin, gcc, libmysql++

Щоб мати можливість почати програмувати під Linux потрібно встановити зокрема gcc компілятор а також зручну лібу  libmysql++ для роботи із  базами даних MySQL на С++ а також іші програмні модулі:

> sudo apt-get install mysql-server mysql-client phpmyadmin libmysql++-dev gcc

 

 

12. Відкат / установка PHP 5.3.18

Тепер про те як встановити потрібний PHP для вашого сервера. Справа в тому що для моєї задачі треба було встановити PHP версії не вище 5.3.18. Тоді як з поточних репозиторіїв ставилася новіша версія, на якій не працювали потрібні мені скрипти. Я довго бився над даною задачею, і вирішенням якої вам приводжу:

Скачати в тимчасову папку PHP потрібної версії (наприклад звідси: http://ua2.php.net/get/php-5.3.18.tar.gz/from/a/mirror):

> cd ~/p/php-5.3.18/

Розархівувати архів:

> tar xvfz *.tar.gz

Встановити всі необхідні додаткові бібліотеки:

> sudo apt-get install apache2-prefork-dev libcurl4-gnutls-dev  libjpeg8-dev  libpng12-dev  libfreetype6-dev  libmcrypt-dev  libtidy-dev  libexpat1-dev  libxslt1-dev libltdl-dev

Встановити «ярлик» для бібліотеки libexpat1-dev:

> sudo ln -s /lib/arm-linux-gnueabihf/libexpat.so.1.6.0 /usr/lib/libexpat.so

Конфігурування PHP:

> sudo ./configure –with-apxs2=/usr/bin/apxs2 –with-curl –with-gd –enable-gd-native-ttf –with-freetype-dir –with-gettext –with-jpeg-dir=/usr/local/lib –with-freetype-dir=/usr/local/lib –with-kerberos –with-openssl –with-mcrypt –with-mhash –with-mysql –with-mysqli –with-pcre-regex –with-pdo-mysql –with-libxml-dir –with-xsl –with-pear –with-png-dir –with-zlib –with-zlib-dir –enable-zip –with-iconv –enable-bcmath –enable-calendar –enable-ftp –enable-magic-quotes –enable-sockets –enable-mbstring –enable-sqlite-utf8 –with-xsl –with-xmlrpc –enable-exif –enable-soap –with-tidy –with-libexpat-dir=/usr/lib –enable-gd-native-ttf –disable-fileinfo

Компіляція (близько 2х годин!!! – Pi це ж вам не 8 ядерний ксенон…)

> sudo make clean> sudo make

> sudo make install

Скопіювати «правильний» файл php.ini, або взяти стандартний:

> sudo cp /etc/php5/cli/php.ini /usr/local/lib/

Перезапустити Апач:

> sudo service apache2 restart

Забороняємо PHP надалі оновлюватися (по apt-upgrade), щоб зафіксувати саме потрібну нам версію в системі. Показати інстальовані пакети (які на треба зафіксувати):

> dpkg –get-selections | grep php

Включаємо заборону:

> sudo -i> echo “php5-cli hold” | dpkg –set-selections

> echo “php5-common hold” | dpkg –set-selections

> echo “php5-gd hold” | dpkg –set-selections

> echo “php5-mcrypt hold” | dpkg –set-selections

> echo “php5-mysql hold” | dpkg –set-selections

Як зняти дану заборону (далі по аналогії):

> echo “php5-cli install” | dpkg –set-selections

 

 

13. Дати доступ до MySQLназовні через Ethernet

По замовчування ви не зможете зайти на сервер MySQL окрім як з localhost, тому якщо потрібна можливість роботи з БД ззовні – треба це дозволити.

Відкрити файл:

> sudo nano /etc/mysql/my.cnf

Закоментувати параметр:

#bind-address           = 127.0.0.1

 

 

14. Активувати mod_rewrite для Apache

Щоб активувати mod_rewrite модуль (для роботи в PHP):

> a2enmod rewrite

Редагуємо файл:

> sudo nano /etc/apache2/sites-available/default

Замість:

Options Indexes FollowSymLinks MultiViewsAllowOverride None

Order allow,deny

allow from all

Замінити на:

Options Indexes FollowSymLinks MultiViewsAllowOverride all

Order allow,deny

allow from all

Перезавантажуємо Apache:

> service apache2 restart

 

15. Перевірка підключених USBSerialконверторів / портів

> ls /sys/class/tty | grep ttyUSB

 

16. Відкрити доступ користувачу до USBSerialпортів

> usermod -a -G dialout <username>

 

17. Переглянути вільне місце на диску (картці)

> df –h

 

 

18. Розпаковка архівів *.tar.gz

> tar xvfz *.tar.gz

 

 

19. Установка прав на директорію/файл

> sudo chmod -R 777 <dir>

 

 

20. Установка прав для користувача

> sudo chown -R <username> <dir>

 

 

21. Ініціалізація crontabдемона

Демон задає розклад запуску тих чи інших задач або скриптів. Дуже зрічна штука коли потрібно запускати свої програми із певним періодом, або просто запустити якусь прогу при старті системи:

> sudo crontab -e -u <username>

 

 

На цьому все. Як дізнаюсь щось новеньке  – відпишу.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*