Скрипт для настройки ubuntu

Обновлено: 04.07.2024

В данной статье пойдет речь о том, как запускать сценарии командной оболочки (shell скрипты) в Ubuntu.

Что такое sh скрипт

Если кратко, sh скрипт - это файл, в котором описываются последовательно выполняемые команды.

Подробнее о сценарии командной оболочки можно прочесть в Wikipedia: Сценарий командной строки.

В такой файл мы можем вписать все команды, которые выполняем в терминале, то есть, которые исполняются командной оболочкой нашей системы.

Стоит упомянуть, что расширение .sh вовсе не обязательно, так как в Unix-подобных операционных системах нет требований к расширению имени файла, однако для скриптов командной оболочки выделено расширение .sh.

Как запускать sh скрипты в командной строке.

Запускать скрипты sh из командной строки легко.

1. Сделать файл скрипта исполняемым (если он еще таковым не является):

2. Запускаем скрипт, просто указав путь до него:

Если скрипт находится в текущей директории, то нужно указать ./ перед именем файла скрипта:

Иногда требуются права суперпользователя для запуска скрипта, тогда просто перед скриптом пишем команду sudo:

Можно запускать скрипты, непосредственно указывая интерпретатор: sh, bash и другие:

Но не советую так делать на постоянной основе.

Как запустить sh в файловом менеджере Ubuntu (Nautilus)

В файловом менеджере (Nautilus) Ubuntu sh скрипты запускаются двойным кликом по файлу:

Как запустить sh в файловом менеджере Ubuntu

Нужно убедиться, что в свойствах файла на вкладке "Права" установлена галочка "Выполнение" - "Разрешить выполнение файла как программы":

Как запустить sh в файловом менеджере Ubuntu

Решаем проблему файлового менеджера Ubuntu при запуске скриптов sh

По умолчанию, после установки системы Ubuntu, если вы попытаетесь выполнить скрипт двойным кликом, то файл у вас откроется в текстовом редакторе:

Решаем проблему файлового менеджера Ubuntu при запуске скриптов sh

Чтобы решить эту проблему, открываем "Параметры", переходим на вкладку "Поведение", в пункте "Исполняемые текстовые файлы" выбираем "Спросить что делать" или "Запустить":

Решаем проблему файлового менеджера Ubuntu при запуске скриптов sh

Разница их в том, что при выборе пункта "Спросить что делать", будет выбор в каком режиме запустить скрипт:

Для меня это наиболее удобный пункт, так как скрипт можно запустить в терминале, в графическом режиме или отредактировать в текстовом редакторе.

Как сделать так, чтобы терминал не закрывался после завершения sh скрипта в Ubuntu.

Когда мы запускам какой-либо скрипт из файлового менеджера, выбрав "Запустить в терминале":

У нас откроется окно терминала. Но после выполнения всех команд, описанных в sh скрипте, окно терминала закроется. В результате, мы не может просмотреть лог (историю) выполнения.

Чтобы решить эту проблему, переходим в "Параметры" терминала. В параметрах выбираем наш профиль и переходим на вкладку "Команда", в пункте "При выходе из команды" выбираем "Держать терминал открытым":

в наличии:
make_lns_home.sh - создает символьные ссылки на русскоязычные папки для удобного использования в консоли
main.sh - скрипт по настройке/добавлению программ в Ubuntu после первоначальной установки. можно выбрать, что именно устанавливать

система:
Preload - демон, собирающий информацию о наиболее часто запускаемых приложениях для ускорения их запуска
Java-машина
WineHQ - для запуска приложений windows из под Linux
VirtualBox 5.1 - программа для создания и управления виртуальных машин
Synaptic - менеджер пакетов
GParted - диспетчер дисков
UnetBootin - создание загрузочной флешки
Unity tweak tools - программа настройки окружения unity
Gnome tweak tools - программа настройки окружения gnome
Ubuntu tweak tools - программа настройки ubuntu
7-zip и т.п. установка программ для работы с различными типами архивов
Deluge - удобный торрент-клиент
Ubuntu Customization Kit - система создания сборок LiveCD

медиа:
установка мультимедиа-кодеков сторонних производителей
установка кодека для чтения лецензионных дисков
установка универсального плеера VLC и плагина для браузера
Clementine - мультимедиа-плеер
Gimp - редактор изображений
HandBrake - конвертер медиафайлов
OpenShot - легкий видеоредактор

общение:
Choqok - twitter-клиент с широким функционалом
Telegram - лучший мессенджер
Skype - не лучший, но бывает полезен.
Evolution - почта, контакты, календарь в одном флаконе

разработка:
UbuntuMake - программа установки инструментов разработчиков, нужна для установки PyCharm и прочих
Git - система контроля версий
Python 3.6 - новый питон с заменой ссылки python3
Double Commander - двухпанельный менеджер
TeamViewer - диспетчер удаленного рабочего стола
Cherry Tree - создание собственной базы данных древовидной структуры
PyCharm Community - IDE для Python, бесплатная версия
SublimeText 3 - легкий редактор
FileZilla - FTP-клиент
packaging-dev - инструментарий для сборки пакетов
CheckInstall — утилита, позволяющая создавать бинарные пакеты для Linux из исходного кода приложения

индикаторы:
System Load Indicator - индикатор загрузки системы
Simple Weather Indicator - простой индикатор погоды
CPUFreq - регулирование частоты процессора
Caffeine - предотвращает выключение экрана при просмотре видео
Shutter - удобный индикатор для скриншотов
Netspeed Indicator - индикатор скорости сети
Keylock Indicator - индикатор клавиатуры

прочее:
удаление средства для чтения для слабовидящих
удаление плеера rhythmbox
удаление видеоплеера totem
отключение отчетов о сбоях
удаление индикатора Amazon Из панели Unity


Как известно, Ubuntu Linux уже давным-давно содержит полный набор инструментов, необходимых для работы большинства офисных сотрудников. А то, что не содержит, можно доустановить, либо же запустить с сервера, например, с помощью FreeRDP и Remmina. В результате — экономия средств и сильное упрощение администрирования клиентов. Многие фирмы уже начали потихоньку заменять свой парк машин на тонкие клиенты и полноценные компьютеры с Linux. И если вы тоже хотите пересадить пару отделов на Ubuntu, то возможно я смогу помочь вам сэкономить немного времени.


В этой статье я расскажу, как создать на основе Ubuntu (а так же любых её модификаций, включая Ubuntu Sever) или Debian преднастроенную, автоматически устанавливающуюся систему. Разобравшись в описанном ниже весьма несложном материале вы сможете делать свои собственные сборки Ubuntu с необходимыми вам приложениями и настройками, которые будут способны устанавливаться в полностью автоматическом режиме как с диска, так и по сети. В итоге при желании вы сможете добиться того, что вам будет достаточно просто включить компьютер и пойти пить чай, чтобы вернувшись увидеть установленную и полностью настроенную под ваши запросы систему со всем необходимым вам для работы софтом.

Начнём с того, что данная статья содержит несколько специфичных для Ubuntu вещей, однако общие положения будут верны для любых дистрибутивов, способных использовать для установки Debain Installer. Кроме того, я не буду рассказывать, как настраивать загрузку компьютеров по сети (для этого вам понадобится TFTP сервер, развернуть который — обычно дело 2-х минут) и сосредоточу своё внимание на загрузке с диска. Однако в конце всё же расскажу, как все описанные приёмы применить для сетевого запуска компьютеров.

Итак, для начала необходимо раздобыть исходный образ системы с Debain Installer. Ubuntu Desktop LiveCD использует другой установщик, поэтому нам не подойдёт. Любой же не-LiveCD диск из семейства Ubuntu можно совершенно спокойно использовать. Вся дальнейшая инструкция написана для Ubuntu Alternate, хотя вряд ли она будет хоть чем-то отличаться для других вариантов системы.

Работа с iso

После того, как вы скачаете нужный iso образ, его необходимо будет распаковать. Я использую для этого такой вот скрипт:


После его выполнения всё содержимое образа окажется в директории iso. Дальше можно будет внести необходимые изменения и запаковать образ обратно. Сразу приведу скрипт запаковки:


Пересчитывать MD5 суммы всех файлов необходимо, чтобы работала встроенная проверка целостности диска.

Автоматизация процесса установки

Теперь необходимо автоматизировать процесс установки. Для запуска установщика с диска используется загрузчик isolinux, и именно его настройке посвящён данный раздел. Про особенности загрузки по сети я расскажу в самом конце статьи.

А пока пойдём по порядку. Первым делом при запуске компьютера с CD диска Ubuntu вам предложит выбрать язык. Чтобы этот запрос не появлялся необходимо создать в папке isolinux/ файл с именем lang, всё содержимое которого будет представлять буквенный код нужного языка. У меня, например, в файле lang выбран русский язык:


Все доступные варианты языка можно посмотреть в файле isolinux/langlist.

Далее необходимо, чтобы загрузчик выбирал автоматически нужный пункт меню после некоторого ожидания. В нашем случае этим пунктом будет автоматическая установка. По умолчанию Ubuntu ждёт выбора пользователя и не выполняет никаких действий. Чтобы поменять такое поведение необходимо изменить значение параметра timeout в файле isolinux/isolinux.cfg на ненулевое значение. Время измеряется в десятых долях секунды, соответственно для выставления таймаута в две секунды в этом файле должна быть такая запись:


Осталось только выбрать, какой пункт меню будет запускаться по умолчанию. Все пункты меню задаются в файле isolinux/text.cfg, его и будем сейчас менять. Для нашей автоматической установки мы создадим свой собственный пункт меню с названием «OEM Install» для того, чтобы остались доступны обычные опции установки. Сразу надо сказать, что самим процессом установки управляют так называемые preseed файлы, которые лежат в соответствующей директории на диске. О них чуть позже, пока же можно скопировать описание любого стандартного пункта меню, поменять его имя и имя preseed файла для него, а так же сделать его запускаемым по умолчанию. Вот что в итоге получилось у меня:


На этом подготовительный этап заканчивается, теперь необходимо разбираться непосредственно с технологией preseed.

Preseed

Технология preseed позволяет заранее указать ответы на вопросы, задаваемые при установке, убрав таким образом необходимость отвечать на них вручную. Это позволяет создать полностью автоматические сценарии со всеми необходимыми настройками.

Если копнуть чуть глубже, то можно выяснить, что Debian Installer использует систему debconf для управления процессом установки, а технология preseed просто заранее добавляет нужные ответы в базу данных debconf. Таким образом с помощью preseed можно настроить не только установщик, но и другие приложения, использующие debconf, хотя эта особенность вам вряд ли пригодится.

  1. Через параметры запуска ядра.
  2. Через указание загружаемого по сети файла с инструкциями.
  3. Через локальный файл с инструкциями.

Есть и ещё одно существенное различие: инструкции, передаваемые через параметры ядра добавляются в базу до запуска установщика, инструкции из локального файла — после настройки языковых и региональных опций, а инструкции из сетевого файла — после настройки сети. Поэтому чтобы сделать полностью автоматический установщик в любом случае потребуется указывать параметры для ядра. С них и начнём.

Необходимо немного поменять файл isolinux/text.cfg, добавив несколько опций загрузки к нашему OEM Install пункту. В итоге должно получиться примерно следующее:


Я думаю в целом понятно, что это за параметры, и что здесь можно поменять. Теперь всего лишь осталось создать основной файл с инструкциями для preseed, который, как вы уже наверно догадались, в моём случае называется preseed/oem.seed. Сразу хочу обратить внимание, что для передачи имени файла установщику служит параметр file. Этот параметр будет работать только при загрузке с диска с помощью isolinux, и в нём для ссылки на содержимое диска можно использовать путь /cdrom.

Вот комментированное содержимое моего preseed файла:


В целом по именам опций можно понять, за что они отвечают, однако несколько интересных моментов я всё же прокомментирую.

Во-первых имейте ввиду, что для того, чтобы писать сценарии автоматической установки, надо чётко себе представлять установку в ручном режиме, в частности, на какие вопросы, когда и в каких случаях приходится отвечать. С помощью preseed можно поставить систему ровно также, как и в ручном режиме. Единственное ограничение — в автоматическом режиме нельзя произвести установку на уже имеющиеся на компьютере разделы. В моём сценарии я использую самый простой подход к выделению места: очистку и автоматическую разметку под систему всего первого жёсткого диска.

Кроме того, при автоматической установке можно использовать многие возможности, недоступные в ручном режиме. Например, вы можете задать пароль для root и создать непривилегированного пользователя системы, как и сделано у меня, а можете использовать поведение по умолчанию и сделать первого пользователя администратором, предоставив ему доступ к настройкам системы через sudo. В первом случае необходимо присвоить параметру passwd/root-login значение true и указать пароль для root, во втором — просто не добавлять этот параметр в preseed файл. Кстати, пароль можно указывать как в явном виде (крайне не рекомендуется), так и в виде хеша, аналогичного хешу в файле /etc/shadow. Во втором случае можно задать нужный пароль какому-нибудь пользователю на работающей системе, а затем скопировать значение хеша пароля для него из файла /etc/shadow в свой preseed файл. Хеши, используемые в моём файле, соответствуют паролю Passw0rd.

Большинство полезных опций preseed можно найти в официальной документации Ubuntu. Кстати, обратите внимание: для того, чтобы указывать в сценариях preseed ответы на вопросы, в которых надо выбрать один из нескольких пунктов, достаточно всего лишь написать текст нужного пункта на английском языке (на самом деле можно только начало и можно даже не на английском, а на любом). Поэтому если вы знаете название нужной опции, то вы можете поставить систему в ручном режиме и записать текст нужного вам значения для этой опции, а потом добавить её автоматическую настройку в свой preseed файл. В моём сценарии подобным образом задано, например, значение для параметра netcfg/dhcp_options, отвечающего за действия в случае невозможности сконфигурировать сеть автоматически.

Если вы не нашли нужных вам опций в документации, то можете поставить систему вручную, а затем сразу после установки выполнить в новой системе две нижеприведённых команды:


В результате вы получите в файле seedlog.txt все значения из базы debconf, которые были использованы в процессе установки. Среди них вполне можно найти нужные вам параметры.

Как автоматизировать процесс установки вроде разобрались, теперь немного про то, как можно настроить саму устанавливаемую систему.

Настройка системы

Во-первых, обратите внимание, для указания инсталлятору набора пакетов для установки поверх базовой системы, используются задания tasksel. В приведённом выше сценарии я устанавливаю задание ubuntu-desktop, т.е. базовую систему Ubuntu для настольных компьютеров. Тому, как изменять списки устанавливаемых пакетов и управлять заданиями tasksel, будет посвящена следующая статья. Пока же будем считать, что нас вполне устраивает базовая Ubuntu и всё, что нам нужно — это настроить её для своих нужд. Кстати, Alternate диски различных вариаций Ubuntu содержат набор пакетов только под одно какое-то конкретное задание tasksel. То есть, например, на диске Xubuntu Alternate будут пакеты только для установки задания xubuntu-desktop, поэтому лучше скопировать название задания для своего preseed сценария из стандартного файла, находящегося в директории preseed/ вашего компакт-диска, и не пытаться его менять.

Но как же настроить устанавливаемую систему? Для этих целей в preseed предусмотрена возможность выполнения произвольной команды после завершения установки системы. Команда эта указывается в параметре preseed/late_command и может содержать вызов всех базовых утилит. При этом доступны две особенные директории — /cdrom, которая, как можно догадаться, ссылается на содержимое установочного диска, и /target, которая ссылается на корень уже установленной на жёсткий диск системы.

Для того, чтобы что-то поменять в установленной системе, можно использовать простой трюк — войти в эту систему с помощью chroot и выполнить заранее приготовленный скрипт. При этом надо учитывать, что никакие службы при входе через chroot запущены не будут. Поэтому, например, не стоит инсталлировать таким способом пакеты, требующие доступа к MySQL серверу в процессе установки.

Мой сценарий содержит такую вот команду:


Как видно, я создаю в корне установленной системы директорию install/ и копирую в неё всё содержимое папки extra/ с моего диска, затем запускаю на выполнение скрипт postinstall.sh, предварительно войдя в новую систему с помощью chroot.

Скрипт postinstall.sh может содержать всё, что угодно, с ограничениями, описанными выше. Например:


Итого мы научились создавать сценарии автоматической установки с диска и производить настройку установленной системы. В большинстве случаев этого более чем достаточно для создания своих собственных дистрибутивов для корпоративных нужд. В следующей статье я расскажу, как изменять стандартные задания tasksel и устанавливать только то, что вам нужно, а так же корректно добавлять дополнительные пакеты в систему.

скрипт

Ubuntu это очень удобная операционная система которую я когда-либо использовал. Она имеет все, что может потребоватся среднему пользователю Linux на своем рабочем столе. Тем не менее, она не поставляется со всеми необходимыми предустановленными приложениями для повседневного использования. Вам, возможно, все равно придется устанавливать некоторое дополнительное важное программное обеспечение для того, чтобы получить почти идеальную систему. Вы можете вручную установить пакеты один за другим, но эта задача занимает много времени.

И в качестве альтернативы, можно использовать следующий сценарий под названием post_install.sh написанный Linux пользователем Waleed Ahmad. Он сделал этот скрипт, чтобы облегчить задачу после установки Ubuntu. Просто возьмите этот скрипт, запустите его с привилегиями суперпользователя и установите необходимые приложения.

Это скрипт доступен на GitHub. И вы можете его совершенно свободно использовать в своих целях.

По-умолчанию в нем доступны следующие приложения.

  1. Sublime Text 3
  2. LAMP Stack
  3. Build Essentials
  4. Node.js
  5. Git
  6. Composer
  7. JDK 8
  8. Bleachbit
  9. Ubuntu Restricted Extras
  10. VLC Media Player
  11. Unity Tweak Tool
  12. Google Chrome
  13. Teamiewer
  14. Skype
  15. Paper GTK Theme
  16. Arch Theme
  17. Arc Icons
  18. Numix Icons.

Для облегчения вам задачи я добавил этот скрипт в эту статью. Просто создайте пустой файл и скопируйте/вставьте в него следующий код и сохраните его как <имя файла> .sh.

Я сохранил этот файл как ubuntu_post_install.sh. Вы можете назвать его по своему вкусу. Затем, сделайте его исполняемым с помощью команды:

И запустите этот скрипт для выбора программного обеспечения.

Этот скрипт будет автоматически обновлять список пакетов перед установкой любого программного обеспечения.

скрипт

Очень просто, не так ли?

Я добавил в этот скрипт медиапроигрыватель KODI, и вы можете скачать его, нажав на кнопку ниже.

Вот и все, надеюсь статья была полезной, если это так, то не забудьте поделится в социальных сетях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подскажите, что нужно написать в текстовом файле, чтоб при запуске автоматически устанавливались несколько программ. Пробовал :sudo apt-get install audacity gimp", но толку от этого нету. Спасибо




сделать исполняемым и запустить


Спасибо, сейчас попробую


А запускать его не от рута надо ли? Разве указанное в башевом скрипте судо будет работаь? Его ж надо вроде еще настроить, чтобы пароль на спрашивал.


ну настройка sudo не ко мне - да и это отдельная тема


А как сделать так, чтоб устанавливались проги, названия которых состоят из нескольких слов? Напр. Adobe Flash Player



Вы ничего не перепутали? И вообще, сабж сам по себе странный, зачем вам при каждой загрузке устанавливать софт?


>Вы ничего не перепутали? И вообще, сабж сам по себе странный, зачем вам при каждой загрузке устанавливать софт?


один минимальный набор софта на все машины, не?
и про каждую загрузку вроде нет речи.


Этот скрипт не для автозапуска, я хочу его использовать на свежеустановленной системе, чтоб установить убунту, затем 2 раза кликнуть, 1 раз стукнуть по бубну и все нужные и удобные для меня проги уже установлены. Так как это реализовать?))

apt-cashe searche <progname>


точнее просто набор необходимого софта
не вбивать же на каждой одно и тоже )

мне кажется вы изобретаете велосипед, анпишите sudo aptitude install и нужные проги, зачем скрипт-то?

вот если не на одну машину, а на несколько ставить одно и тоже то можно заморочиться


Ну со скриптом интереснее + писать много тоже не охота, темболее все программы не запомнишь.. Напишите пожалуйста пример скрипта)


Хм, как-то даже не подумал. Если собирать свой, то да, вероятно имеет смысл.

По сабжу - первый пост решит вашу проблему, а sudo, конечно, нужно будет подкрутить, если будете работать не из под рута. С другой стороны, лучше засунуть всё куда-нибудь в rc.local или что там у ТС.


sudo убери и запускай как
sudo sh скрипт
например


Что-то я упоролся. Теперь всё понял. :>


Ага, а как устанавливать программы типо furius iso mount, ну тоесть как записать установку в скрипт?


Synaptic умеет работать со списками отметок. За аналог в APT не интересовался.


А как ты в скрипте определеяешь, установилось приложение или нет? Ведь все части алгоритма скрипт будетв ыполнять мгновенно, если не пописаны задержки. А, стало быть, если при запущенном дпкг (ну или что там у тебя), пока у тебя не выполнится установка первого пункта, второй не будет устанавливаться. Точнее скрипт то вродк как отработает, или ошибку напишет, но приложение поставлено не будет.


хм, а как реализовать задержки, или запуск установки сразу по окончании предыдущей?


между командами вставлять && не?
самое простое


хм, а как реализовать задержки, или запуск установки сразу по окончании предыдущей?

Хотя если ты напишешь так, как написал влан, то все будет хорошо. Я что-то тоже упоротый какой-то, решил, что ты все будет писать в виде


А что дает комманды $nano install.sh, $sudo chmod +x install.sh, $sudo ./install.sh ??


>$nano install.sh

Создаешь файл и редактишь его редактором нано

Читайте также: