Разработка и реализация программы автоматизированной установки дистрибутива Gentoo на основе Linux

Выбор инструментария для разработки установочной программы дистрибутива. Реализация модуля для дистрибутива Gentoo, функционирующего согласно руководству пользователя данной системы. Проведение тестирования программы установки на различных архитектурах.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 18.07.2013
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Она является общей и для таких архитектур как sparc, ppc, ppc64, mips, alpha, но в связи с тем, что это довольно редкие архитектуры компьютерных систем, то протестировать на них установку не представилось возможности.

Тестирование установки было проведено на 30 компьютерах с архитектурой x86 в Государственном Колледже Технологии и Управления. Установка системы заняла около одного часа на 1 компьютере, после чего был создан файл конфигурации ядра и уже он копировался на остальные компьютеры, вследствие чего установка заняла на остальных компьютерах по 15 минут на каждый, до полной перезагрузки в систему, прошла полностью успешно на первых 15 компьютерах. Это были машины 2008 года закупки, одной и той же комплектации стоящие в одном кабинете.

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

Попытки установить загрузчик вручную тоже не принесли положительных результатов.

Для решения проблемы были использованы операционные системы семейства Windows, параллельно установленные на данные компьютеры. Загрузившись в ОС Windows 7, была использована программа GRUB4DOS, позволяющая устанавливать загрузчик операционной системы под Windows. Установка прошла успешно, был перезаписан стандартный загрузчик Windows. Минусом данного метода является установка загрузчика на раздел Windows, в связи с чем, конфигурационный файл загрузчика находится на разделе Windows, с файловой системой NTFS. И этот файл будет проблематично редактировать из под Linux, хотя вероятнее всего, эту процедуру нужно будет выполнить всего один раз.

В конечном результате на все компьютеры из второго кабинета были установлены загрузчики с использованием программы GRUB4DOS, и отредактированы файлы конфигурации, после чего все операционные системы Gentoo Linux запустились.

Так же для тестирования использовался более мощный компьютер с amd64, который стоит в качестве сервера. Он выполняет функции раздачи интернета в локальной сети, в связи с чем, имеет две сетевые карты, является файловым сервером в глобальной сети по адресу ftp://www.gktu.org. Используется в качестве сервера, на котором расположены официальный сайт колледжа по адресу http://www.gktu.org/wordpress и сайт технической поддержки реализованной программы установки операционной системы, доступный по адресу http://www.gktu.org/gentooinstaller.

На сервере установка прошла успешно. Никаких проблем выявлено не было. После установки необходимо было установить и настроить все программное обеспечение, отвечающее за вышеперечисленные функции.

4.2 Разработка справочной подсистемы программы установки

В течение полугода реализованная программа установки операционной системы использовалась для обучения студентов 4 курса, специальности «Автоматизированные системы управления и обработки информации», по предмету «Разработка и эксплуатация автоматизированных информационных систем»

Части программы установки были использованы в процессе обучения скриптовому языку bash.

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

Для разработки данной системы на серверы были установлены такие пакеты, как север Apache, система управления базами данных MySQL, для обеспечения системы регистрации на сайте, интерпретатор языка PHP, для разработки динамического веб-сайта. В качестве основы сайта была взята система mediawiki.

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

MediaWiki - программный механизм для веб-сайтов, работающих по технологии «вики». Это один из самых полнофункциональных вики-движков, написанный специально для Википедии и использующийся во многих других проектах фонда «Викимедиа», частных и государственных организациях. MediaWiki -- свободная программа, распространяющаяся на условиях Общественной лицензии GNU.

MediaWiki написан на PHP и для хранения данных использует реляционную базу данных (можно использовать MySQL, PostgreSQL, SQLite); поддерживает использование программ memcached и Squid.

MediaWiki предоставляет интерфейс работы с базой страниц, разграничение прав доступа к администрированию системы, возможность обработки текста как в собственном формате викитекст, так и в форматах HTML и TeX (для формул), возможность загрузки изображений и других файлов, а также другие возможности. Гибкая система расширений позволяет пользователям добавлять собственные новые возможности и программные интерфейсы.

На сайте были размещены исходные коды программы установки. И пошаговое описание процесса установки. Шаги установки были оформлены как отдельные страницы, под каждой из которых имеется возможность оставлять комментарии. Зарегистрированные пользователи имеют возможность редактировать страницы.

Изначально программа обладала только текстовым режимом установки, в виде вопрос ответ в консоли bash. Со временем было принято решение добавить графический интерфейс пользователя с использованием библиотеки ncurses, для ускорения процесса установки и более приятного зрительного восприятия.

Во время существования программы установки были добавлены некоторые шаги в процесс установки. Некоторые шаги были оптимизированы и сейчас находятся в разработке.

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

Справочная подсистема дала довольно сильный импульс, для продолжения развития и реализации проекта программы установки операционной системы Gentoo Linux.

Заключение

В дипломной работе были получены следующие основные результаты:

Произведен анализ предметной области операционных систем и существующих программ их установки;

Разработана архитектура программы установки Gentoo;

Обоснован выбор инструментов разработки установочной программы дистрибутива ОС;

Реализован установочный модуль для дистрибутива Gentoo, функционирующий согласно руководствую пользователя данной ОС;

Выполнено тестирование разработанного приложения на компьютерах в образовательном учреждении Государственный Колледж Технологии и Управления и компьютерах отдельных пользователей с различным аппаратным обеспечением и различными эксплуатационными задачами;

Информационная поддержка пользователей программы установки дистрибутива Gentoo обеспечивается с помощью развернутого веб сайта разработчика www.gktu.org/gentooinstaller.

Таким образом, в работе были успешно выполнены все поставленные задачи: проектирование и реализация программы автоматизированной установки дистрибутива Gentoo на основе Linux.

Список литературы

Sven Vermeulen, Grant Goodyear, and many other, «Gentoo Linux AMD64 Handbook» 2012 - 97 с.

Прата Стивен, «Язык программирования C++. Лекции и упражнения» 5-е изд.: Пер. с англ. - М. ООО «И. Д. Вильямс», 2007 - 1184 c.

Жасмин Бланшет, Марк Саммерфилд, «Qt 4. Программирование GUI на C++» 2-е изд.: Пер. с англ. - М. ООО «Кудиц-пресс», 2008 - 718 с.

Николас А. Солтер, Скотт Дж. Клепер, «С++ для профессионалов»: Пер. с англ. - М.: Издательский дом «Вильямс», 2006 - 912 с.

Брайан Керниган, Деннис Ритчи, «Язык программирования С» 2-е изд.: Пер. с англ. - М.: Издательский дом «Вильямс», 2009 - 304 с.

Нейл Мэтью, Ричард Стоунс, «Основы программирования в Linux» 4-е издание: Пер. с англ. - СПб.: БХВ-Петербург, 2009 - 896 с.

Бьярне Страуструп, «Программирование: принципы и практика использования С++» испр. изд.: Пер. с англ. - М.: ООО «И. Д. Вильямс», 2011 - 1248 с.

Макконнелл С. «Совершенный код. Мастер-класс» Пер. с англ. - М.:Издательско-торговый дом «Русская Редакция»; СПб: Питер, 2005 - 896 с.

Приложение

Листинг 1.1. Исходный код файла GentooInstall.sh

#! /bin/bash

installRoot="/media/gentoo/"

architecture="x86"

mirror="http://mirror.yandex.ru/gentoo-distfiles"

echo -e "Welcome to Gentoo Linux Installer\n"

if [ "$(whoami)" != 'root' ];

then

echo -e "Permission denied. Istallation can not continue.\n Start installation from root privileges.\n"

exit 1;

fi

function Level1 ()

{

echo -e "Level 1. Creating Filesystems.\n"

#Begin creating filesystems

partcount=0

if [ ! -d "$installRoot" ]

then

mkdir "$installRoot"

fi

echo -n "How many partitions you have: "

read partcount

for (( i=1; i<=$partcount; i++ ))

do

partname=""

while :

do

echo -n "Enter hard drive partition name: "

read partname

if [ -b "$partname" ];

then

echo -e "Partition name Ok.\n"

else

echo -e "Wrong partition name: $partname. Retry.\n"

continue

fi

while :

do

echo "Available filesystems:"

echo " 1) bfs"

echo " 2) btrfs"

echo " 3) cramfs"

echo " 4) ext2"

echo " 5) ext3"

echo " 6) ext4"

echo " 7) ext4dev"

echo " 8) jfs"

echo " 9) minix"

echo " 10) msdos"

echo " 11) nilfs2"

echo " 12) ntfs"

echo " 13) reiserfs"

echo " 14) vfat"

echo " 15) xfs"

echo " 16) swap"

echo -n "Choose a partition filesystem: "

read cm

case "$cm"

in

1) mkfs.bfs "$partname"

break

;;

2) mkfs.btrfs "$partname"

break

;;

3) mkfs.cramfs "$partname"

break

;;

4) mkfs.ext2 "$partname"

break

;;

5) mkfs.ext3 "$partname"

break

;;

6) mkfs.ext4 "$partname"

break

;;

7) mkfs.ext4dev "$partname"

break

;;

8) mkfs.jfs "$partname"

break

;;

9) mkfs.minix "$partname"

break

;;

10) mkfs.msdos "$partname"

break

;;

11) mkfs.nilfs2 "$partname"

break

;;

12) mkfs.ntfs "$partname"

break

;;

13) mkfs.reiserfs "$partname"

break

;;

14) mkfs.vfat "$partname"

break

;;

15) mkfs.xfs "$partname"

break

;;

16) mkswap "$partname"

swapon "$partname"

break

;;

esac

done

if [ "$cm" != "16" ]

then

echo -n "Please specify partition: "

read ch

if [ "$ch" = "/" ]

then

mount "$partname" "$installRoot"

else

mkdir "$installRoot""$ch"

mount "$partname" "$installRoot""$ch"

fi

fi

break

done

done

}

function Level2 ()

{

echo -e "Level 2. Date and Time Settings.\n"

echo -n "Current date/time: "

date

while :

do

echo -n "Is it correct time: "

read cm

case "$cm"

in

Y | y | YES | yes | Yes )

break

;;

No | NO | n | N | n* )

while :

do

echo -n "Please specify date and time (like this MMDDhhmmYYYY): "

read dateInput

date "$dateInput"

if [ "$?" = "0" ]

then

echo -n "Date and time set. Current time: "

date

break

fi

done

break

;;

* )

;;

esac

done

}

function Level3 ()

{

echo -e "Level 3. Downloading the Stage Tarball.\n"

while :

do

echo -n "Choose the architecture (alpha, amd64, ia64, ppc, sparc, x86 by default): "

read cm

case "$cm"

in

"" )

break

;;

alpha | amd64 | ia64 | ppc | sparc | x86 )

architecture="$cm"

break

;;

* )

;;

esac

done

echo -n "Please specify gentoo mirror: "

cd "$installRoot"

wget --no-parent -nd -c -t inf -A "*.tar.bz2" "$mirror/releases/$architecture/current-stage3/"

wget --no-parent -nd -c -t inf -A "portage-latest.tar.bz2" "$mirror/releases/snapshots/current/"

tar xjpf "$installRoot"stage3-* -C "$installRoot"

echo -e "Stage3 files are successfully extracted!\n"

tar xjf "$installRoot"portage-latest.tar.bz2 -C "$installRoot"usr

echo -e "Portage files are successfully extracted!\n"

}

function Level4 ()

{

echo -e "Level 4. Start configuring system for current machine.\n"

sed -i 's/^CFLAGS.*/CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"/g' "$installRoot"etc/make.conf

sed -i 's/^CXXFLAGS.*/CXXFLAGS="${CFLAGS}"/g' "$installRoot"etc/make.conf

let procCount=`grep -c processor /proc/cpuinfo`*2+1

sed -i '/MAKEOPTS/d' "$installRoot"etc/make.conf

sed -i '/GENTOO_MIRRORS/d' "$installRoot"etc/make.conf

sed -i '/SYNC/d' "$installRoot"etc/make.conf

sed -i '/LINGUAS/d' "$installRoot"etc/make.conf

echo "MAKEOPTS=\"-j$procCount\"" >> "$installRoot"etc/make.conf

mirrorselect -s3 -H -o >> "$installRoot"etc/make.conf

echo "RSYNC=\"rsync://rsync.gentoo.org/gentoo-portage\"" >> "$installRoot"etc/make.conf

echo "LINGUAS=\"en ru\""

while :

do

cat "$installRoot"etc/make.conf

echo

echo -n "Do you want to make changes: "

read cm

case "$cm"

in

Y | y | Yes | yes | YES )

vi "$installRoot"etc/make.conf

;;

N | n | No | no | NO )

break

;;

* )

;;

esac

done

cp -L /etc/resolv.conf "$installRoot"etc/

echo -e "Copy DNS Info.\n"

mount -t proc none "$installRoot"proc

mount --rbind /dev "$installRoot"dev

cp ./GentooInstallChroot.sh "$installRoot"

cp ./02locale "$installRoot"etc/env.d/

cp ./locale.gen "$installRoot"etc

chmod +x "$installRoot"GentooInstallChroot.sh

chroot "$installRoot" /bin/bash --rcfile /GentooInstallChroot.sh

}

Level1

Level2

Level3

Level4

exit 0

Листинг 1.2. Исходный код файла GentooInstallChroot.sh

#! /bin/bash

function Level5 ()

{

echo -e "Level 5. In new Gentoo system.\n"

env-update

source /etc/profile

export PS1="(GentooInstall) $PS1"

emerge --sync --quiet

while :

do

eselect profile list

echo

echo -n "Please select profile number: "

read cm

eselect profile set "$cm"

if [ $? = 0 ]

then

echo -e "Profile successfully selected.\n"

break

fi

done

}

function Level6 ()

{

echo -e "Level 6. Configuring Locale and Timezone.\n"

echo -n "Please specify your locales: Ok."

read

nano -w /etc/locale.gen

locale-gen

env-update

source /etc/profile

while :

do

echo -n "Please specify your timezone (like Europe/Moscow or UTC): "

read cm

cp /usr/share/zoneinfo/"$cm" /etc/localtime

if [ $? = 0 ]

then

break

fi

done

}

Level5

Level6

/bin/bash

exit 0

Листинг 1.3. Исходный код файла dGentooInstall.sh

#! /bin/bash

installRoot="/media/gentoo/"

architecture="x86"

mirror="http://mirror.yandex.ru/gentoo-distfiles"

#echo -e "Welcome to Gentoo Linux Installer\n"

if [ "$(whoami)" != 'root' ];

then

dialog --backtitle "Welcome to Gentoo Linux Installer" \

--title "User authentication" \

--msgbox "Permission denied. Istallation can not be continue.\nStart installation from root privileges.\n" 30 100

exit 1;

else

dialog --backtitle "Welcome to Gentoo Linux Installer" \

--title "User authentication" \

--msgbox "Welcome to the installation of Gentoo Linux. \

To properly install the product, you must correctly answer all the questions, \

and follow the instructions of the program. More information can be found in \

the official guide at Gentoo http://www.gentoo.org/doc/en/handbook/" 30 100

fi

function Level1 ()

{

#echo -e "Level 1. Creating Filesystems.\n"

#Begin creating filesystems

partcount=0

if [ ! -d "$installRoot" ]

then

mkdir "$installRoot"

fi

while :

do

dialog --backtitle "Level 1. Creating Filesystems" \

--title "Partitioning disks" \

--yesno "Do you want to partition your disks?" 30 100

case "$?"

in

0 ) dialog --backtitle "Level 1. Creating Filesystems" \

--title "Partitioning disks" \

--inputbox "Enter hard drive name" 30 100 2> /tmp/diskName

cfdisk `cat /tmp/diskName`

rm /tmp/diskName

;;

1 ) break

;;

esac

done

while :

do

dialog --backtitle "Level 1. Creating Filesystems" \

--title "Making filesystems" \

--yesno "Do you want to make filesystem on your partition?" 30 100

case "$?"

in

0 ) partname=""

while :

do

dialog --backtitle "Level 1. Creating Filesystems" \

--title "Making filesystems" \

--inputbox "Enter hard drive partition name" 30 100 2> /tmp/partName

partname=`cat /tmp/partName`

rm /tmp/partName

if [ "$partname" = "" ]

then

break

fi

if [ ! -b "$partname" ]

then

dialog --backtitle "Level 1. Creating Filesystems" \

--title "Making filesystems" \

--msgbox "Wrong partition name: `echo $partname`. Retry." 30 100

continue

fi

while :

do

dialog --backtitle "Level 1. Creating Filesystems" \

--title "Making filesystems" \

--radiolist "Please pick one type of file system" 30 100 10 \

1 "bfs" "off" \

2 "btrfs" "off" \

3 "cramfs" "off" \

4 "ext2" "off" \

5 "ext3" "off" \

6 "ext4" "off" \

7 "ext4dev" "off" \

8 "jfs" "off" \

9 "minix" "off" \

10 "msdos" "off" \

11 "nilfs2" "off" \

12 "ntfs" "off" \

13 "reiserfs" "off" \

14 "vfat" "off" \

15 "xfs" "off" \

16 "swap" "off" \

2>/tmp/fstype

cm=`cat /tmp/fstype`

rm /tmp/fstype

case "$cm"

in

1) mkfs.bfs "$partname"

break

;;

2) mkfs.btrfs "$partname"

break

;;

3) mkfs.cramfs "$partname"

break

;;

4) mkfs.ext2 "$partname"

break

;;

5) mkfs.ext3 "$partname"

break

;;

6) mkfs.ext4 "$partname"

break

;;

7) mkfs.ext4dev "$partname"

break

;;

8) mkfs.jfs "$partname"

break

;;

9) mkfs.minix "$partname"

break

;;

10) mkfs.msdos "$partname"

break

;;

11) mkfs.nilfs2 "$partname"

break

;;

12) mkfs.ntfs "$partname"

break

;;

13) mkfs.reiserfs "$partname"

break

;;

14) mkfs.vfat "$partname"

break

;;

15) mkfs.xfs "$partname"

break

;;

16) mkswap "$partname"

swapon "$partname"

break

;;

esac

done

if [ "$cm" != "16" ]

then

dialog --backtitle "Level 1. Creating Filesystems" \

--title "Making filesystems" \

--inputbox "Please specify partition" 30 100 2> /tmp/partFolder

ch=`cat /tmp/partFolder`

rm /tmp/partFolder

if [ "$ch" = "/" ]

then

mount "$partname" "$installRoot"

else

mkdir "$installRoot""$ch"

mount "$partname" "$installRoot""$ch"

fi

fi

break

done

;;

1 ) break

;;

esac

done

}

function Level2 ()

{

while :

do

dialog --backtitle "Level 2. Date and Time Settings" \

--title "Date and time configuration" \

--yesno "Is it correct time: `date`" 30 100

case "$?"

in

0 ) break

;;

1 ) while :

do

dialog --backtitle "Level 2. Date and Time Settings" \

--title "Date and time checking" \

--inputbox "Please specify date and time (like this MMDDhhmmYYYY)" 30 100 2> /tmp/currentDate

date `cat /tmp/currentDate`

if [ "$?" = "0" ]

then

dialog --backtitle "Level 2. Date and Time Settings" \

--title "Date and time configuration" \

--msgbox "Date and time set. Current time: `date`" 30 100

break

fi

rm /tmp/currentDate

done

;;

esac

done

}

function Level3 ()

{

while :

do

dialog --backtitle "Level 3. Downloading the Stage Tarball" \

--title "Computer architecture" \

--radiolist "Choose the available architecture" 30 100 10 \

"1" "alpha" "off" \

"2" "amd64" "off" \

"3" "ia64" "off" \

"4" "ppc" "off" \

"5" "sparc" "off" \

"6" "x86" "off" \

2>/tmp/archtype

cm=`cat /tmp/archtype`

rm /tmp/archtype

case "$cm"

in

1 | 2 | 3 | 4 | 5 | 6 ) architecture="$cm"

break

;;

* )

;;

esac

done

#emerge mirrorselect

mirrorselect -i -o > "$installRoot"GENTOO_MIRRORS

cd "$installRoot"

dialog --backtitle "Level 3. Installing the Gentoo Installation Files" \

--title "Downloading and unpacking Stage tarball" \

--infobox "Downloading Stage Tarball" 30 100

sleep 2

wget --no-parent -nd -c -t inf -A "*.tar.bz2" "$mirror/releases/$architecture/current-stage3/"

dialog --backtitle "Level 3. Installing the Gentoo Installation Files" \

--title "Downloading and unpacking Stage tarball" \

--infobox "Unpacking Stage Tarball" 30 100

sleep 2

tar xjpf "$installRoot"stage3-* -C "$installRoot"

dialog --backtitle "Level 3. Installing the Gentoo Installation Files" \

--title "Downloading and unpacking Portage Files" \

--infobox "Downloading Portage Files" 30 100

sleep 2

wget --no-parent -nd -c -t inf -A "portage-latest.tar.bz2" "$mirror/releases/snapshots/current/"

dialog --backtitle "Level 3. Installing the Gentoo Installation Files" \

--title "Downloading and unpacking Potage Files" \

--infobox "Unpacking Portage Files" 30 100

sleep 2

tar xjf "$installRoot"portage-latest.tar.bz2 -C "$installRoot"usr

}

function Level4 ()

{

sed -i 's/^CFLAGS.*/CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"/g' "$installRoot"etc/make.conf

sed -i 's/^CXXFLAGS.*/CXXFLAGS="${CFLAGS}"/g' "$installRoot"etc/make.conf

let procCount=`grep -c processor /proc/cpuinfo`*2+1

sed -i '/MAKEOPTS/d' "$installRoot"etc/make.conf

sed -i '/GENTOO_MIRRORS/d' "$installRoot"etc/make.conf

sed -i '/SYNC/d' "$installRoot"etc/make.conf

sed -i '/LINGUAS/d' "$installRoot"etc/make.conf

echo "MAKEOPTS=\"-j$procCount\"" >> "$installRoot"etc/make.conf

echo "RSYNC=\"rsync://rsync.gentoo.org/gentoo-portage\"" >> "$installRoot"etc/make.conf

echo "LINGUAS=\"en ru\""

cat "$installRoot"GENTOO_MIRRORS >> "$installRoot"etc/make.conf

dialog --backtitle "Level 4. Start configuring system for current machine." \

--title "Configuring Gentoo USE Flags" \

--msgbox "In next step choose all flags you want to be added in make.conf" 30 100

ufed

while :

do

dialog --backtitle "Level 4. Start configuring system for current machine." \

--title "Please modify make.conf if you want, but it autoconfigured for your system" \

--editbox "$installRoot"etc/make.conf 30 100 \

2>"$installRoot"tmp/make.conf.tmp

cm="$?"

cp "$installRoot"tmp/make.conf.tmp "$installRoot"etc/make.conf

case "$cm"

in

0 ) break

;;

1 ) dialog --backtitle "Level 4. Start configuring system for current machine." \

--title "Please modify make.conf if you want, but it autoconfigured for your system" \

--yesno "Do you want to continue?" 30 100

case "$?"

in

0 ) break

;;

1 ) true

;;

esac

;;

esac

done

cp -L /etc/resolv.conf "$installRoot"etc/

mount -t proc none "$installRoot"proc

mount --rbind /dev "$installRoot"dev

cp dGentooInstallChroot.sh "$installRoot"

cp 02locale "$installRoot"etc/env.d/

cp locale.gen "$installRoot"etc

chmod +x "$installRoot"GentooInstallChroot.sh

chroot "$installRoot" /bin/bash --rcfile /dGentooInstallChroot.sh

}

Level1

Level2

Level3

Level4

exit 0

Листинг 1.4. Исходный код файла dGentooInstallChroot.sh

#! /bin/bash

function Level5 ()

{

dialog --backtitle "Level 5. In new Linux System" \

--title "Updating environment and profile" \

--infobox "Sync emerge, please wait..." 30 100

env-update && source /etc/profile

export PS1="(GentooInstall) $PS1"

emerge --sync --quiet

while :

do

eselect profile list > /tmp/profiles.list

dialog --backtitle "Level 5. Set profile for future operation system." \

--title "This is a list of posible profile list for current architecture. Remember one of them to specify next." \

--textbox "/tmp/profiles.list" 30 100 \

--inputbox "Specify selected profile" 30 100 2>/tmp/selectedProfile

cm=`cat /tmp/selectedProfile`

eselect profile set "$cm"

if [ $? = 0 ]

then

break

fi

done

}

function Level6 ()

{

dialog --backtitle "Level 6. Configuring Locale and Timezone" \

--title "Please specify your locales" \

--editbox "/etc/locale.gen" 30 100

locale-gen

env-update

source /etc/profile

while :

do

dialog --backtitle "Level 6. Configuring Locale and Timezone" \

--title "Please specify your timezone (like Europe/Moscow or UTC)" \

--fselect "/usr/share/zoneinfo/" 20 100 \

2>/tmp/zoneinfo

cm=`cat /tmp/zoneinfo`

cp "$cm" /etc/localtime

if [ $? = 0 ]

then

break

fi

done

}

function Level7 ()

{

dialog --backtitle "Level 7. Configuring and compiling Gentoo Kernel" \

--title "Configuring Gentoo Kernel" \

--infobox "Please wait while Gentoo Kernel downloading ..." 30 100

emerge gentoo-sources

cd /usr/src/linux

make menuconfig

dialog --backtitle "Level 7. Configuring and compiling Gentoo Kernel" \

--title "Configuring Gentoo Kernel" \

--infobox "Please wait while Gentoo Kernel and modules compiling ..." 30 100

make && make modules_install

dialog --backtitle "Level 7. Configuring and compiling Gentoo Kernel" \

--title "Configuring Gentoo Kernel" \

--inputbox "Please specify Gentoo Linux Kernel Name" 30 100 \

2>/tmp/kName

kernelName=`cat /tmp/kName`

cp /arch/x86/boot/bzImage /boot/"$kernelName"

}

function Level8 ()

{

dialog --backtitle "Level 8. Filesystem information" \

--title "Configuring /etc/fstab" \

--editbox "/etc/fstab" 30 100 \

2>/tmp/fstab

if [ $? ]

then

cp /tmp/fstab /etc/fstab

fi

}

function Level9 ()

{

dialog --backtitle "Level 9. System configuration" \

--title "Networking Information" \

--inputbox "Please specify Host name" 30 100 \

2>/tmp/hostName

echo "hostname=\"`cat /tmp/hostName`\"" > /etc/conf.d/hostname

dialog --backtitle "Level 9. System configuration" \

--title "Networking Information" \

--inputbox "Please specify Domain name" 30 100 \

2>/tmp/domainName

echo "dns_domain_lo=\"`cat /tmp/domainName`\"" > /etc/conf.d/net

cd /etc/init.d

ln -s net.lo net.eth0

rc-update add net.eth0 default

passwd

dialog --backtitle "Level 9. System configuration" \

--title "Networking Information" \

--editbox "/etc/conf.d/net" 30 100 \

2>/tmp/net

if [ $? ]

then

cp /tmp/net /etc/conf.d/net

fi

emerge syslog-ng

rc-update add syslog-ng default

emerge vixie cron

chmod 0775 /var/spool/mail

rc-update add vixie-cron default

emerge mlocate

emerge dhcpcd

emerge grub

}

function Level10 ()

{

dialog --backtitle "Level 10. Configuring the Bootloader" \

--title "Install GRUB" \

--inputbox "Please specify partition name to install boolloader" 30 100 \

2>/tmp/grubName

dialog --backtitle "Level 10. Configuring the Bootloader" \

--title "Configuring GRUB" \

--editbox "/boot/grub/grub.conf" 30 100 \

2>/tmp/grub

if [ $? ]

then

cp /tmp/grub /boot/grub/grub.conf

fi

grub-install --no-floppy "`cat /tmp/grubName`"

}

Level5

Level6

Level7

Level8

exit 0

Листинг 1.5. Исходный код файла 02locale

LANG="ru_RU.UTF-8"

LC_NUMERIC=POSIX

Листинг 1.6. Исходный код файла locale.gen

#------------------------------------------------------------------------------

#Belarussian

#be_BY.UTF-8 UTF-8

#Belgian

#fr_BE.UTF-8 UTF-8

#Bulgarian

#bg_BG.UTF-8 UTF-8

#bg_BG CP1251

#Brazilian Portuguese

#pt_BR.UTF-8 UTF-8

#Canadian French

#fr_CA.UTF-8 UTF-8

#Danish

#da_DK.UTF-8 UTF-8

#French

#fr_FR.UTF-8 UTF-8

#German

#de_DE.UTF-8 UTF-8

#Icelandic

#is_IS.UTF-8 UTF-8

#Italian

#it_IT.UTF-8 UTF-8

#Norwegian

#nn_NO.UTF-8 UTF-8

#Polish

#pl_PL.UTF-8 UTF-8

#Portuguese

#pt_PT.UTF-8 UTF-8

#Romanian

#ro_RO.UTF-8 UTF-8

#Russian

ru_RU.UTF-8 UTF-8

#Spanish

#es_ES.UTF-8 UTF-8

#Swedish

#sv_SE.UTF-8 UTF-8

#Ukrainian

#uk_UA.UTF-8 UTF-8

#United Kingdom/British

en_GB.UTF-8 UTF-8

#United State/English

#en_US.UTF-8 UTF-8

Размещено на Allbest.ru


Подобные документы

  • Анализ технических возможностей операционной системы Mandriva Linux - дистрибутива GNU/Linux, разрабатываемого французской компанией Mandriva, выпускающей свободные, коммерческие и корпоративные версии своего дистрибутива. Этапы установки оболочки Linux.

    презентация [26,2 M], добавлен 23.05.2010

  • Понятие и структура дистрибутивов операционной системы Linux, история их возникновения и основные разработчики. Классификация дистрибутивов по характеру сборки и установки, доработка их готовых версий. Описание способов создания собственного дистрибутива.

    курсовая работа [551,0 K], добавлен 02.04.2014

  • Рассмотрение различных дистрибутивов операционной системы. Изучение протоколов обмена данными и форматов физического хранения данных. Разработка дистрибутива на основе операционной системы Linux для функционирования в составе сетевого хранилища StarNAS.

    курсовая работа [1,6 M], добавлен 05.11.2015

  • Понятие браузера, его виды и их особенности, достоинства и недостатки для применения в корпоративных сетях. Групповые политики и расширения. Дополнительные настройки с использованием псевдо-протокола about. Разработка дистрибутива Mozilla FireFox.

    дипломная работа [486,8 K], добавлен 11.07.2015

  • Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.

    курсовая работа [606,7 K], добавлен 19.01.2012

  • Использование дистрибутива GNU/Linux Mandriva, который по праву считается одним из наиболее легких для освоения начинающими пользователями, для взаимодействия с командным интерпретатором GNU/Linux. Информация о формате и основных ключах команды cal.

    лабораторная работа [2,4 M], добавлен 28.12.2012

  • Компоновка и конфигурирование Linux сервера. Общая информация об ALT Linux Server 5, его подвиды и основные функциональные возможности. Установка дистрибутива ALT Linux 5.0 "Ковчег" и Apache2+php+MySQL. Пример настройки работы сайта на web-сервере.

    курсовая работа [6,0 M], добавлен 24.10.2012

  • Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.

    курсовая работа [550,5 K], добавлен 08.06.2023

  • Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.

    дипломная работа [3,2 M], добавлен 27.10.2017

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа [1,5 M], добавлен 17.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.