Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2017-11-17 | 237 |
5.00
из
|
Заказать работу |
|
|
В течение полугода реализованная программа установки операционной системы использовалась для обучения студентов 4 курса, специальности «Автоматизированные системы управления и обработки информации», по предмету «Разработка и эксплуатация автоматизированных информационных систем»
Части программы установки были использованы в процессе обучения скриптовому языку bash.
Студенты так же могли опробовать программу установки сами. В связи с нахождением ошибок, замечаний и советов по улучшению была реализована справочная подсистема дистрибутива в виде сайта.
Для разработки данной системы на серверы были установлены такие пакеты, как север Apache, система управления базами данных MySQL, для обеспечения системы регистрации на сайте, интерпретатор языка PHP, для разработки динамического веб-сайта. В качестве основы сайта была взята система mediawiki.
PHP: препроцессор гипертекста – скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
MediaWiki– программный механизм для веб-сайтов, работающих по технологии «вики». Это один из самых полнофункциональных вики-движков, написанный специально для Википедии и использующийся во многих других проектах фонда «Викимедиа», частных и государственных организациях. MediaWiki — свободная программа, распространяющаяся на условиях Общественной лицензии GNU.
MediaWiki написан на PHP и для хранения данных использует реляционную базу данных (можно использовать MySQL, PostgreSQL, SQLite); поддерживает использование программ memcached и Squid.
|
MediaWiki предоставляет интерфейс работы с базой страниц, разграничение прав доступа к администрированию системы, возможность обработки текста как в собственном формате викитекст, так и в форматах HTML и TeX (для формул), возможность загрузки изображений и других файлов, а также другие возможности. Гибкая система расширений позволяет пользователям добавлять собственные новые возможности и программные интерфейсы.
На сайте были размещены исходные коды программы установки. И пошаговое описание процесса установки. Шаги установки были оформлены как отдельные страницы, под каждой из которых имеется возможность оставлять комментарии. Зарегистрированные пользователи имеют возможность редактировать страницы.
Изначально программа обладала только текстовым режимом установки, в виде вопрос ответ в консоли bash. Со временем было принято решение добавить графический интерфейс пользователя с использованием библиотеки ncurses, для ускорения процесса установки и более приятного зрительного восприятия.
Во время существования программы установки были добавлены некоторые шаги в процесс установки. Некоторые шаги были оптимизированы и сейчас находятся в разработке.
В дальнейшем планируется перевод программы установки на другие языки и полная ее локализация. Этому будут способствовать участники, активно участвующие в обсуждении проекта.
Справочная подсистема дала довольно сильный импульс, для продолжения развития и реализации проекта программы установки операционной системы GentooLinux.
Заключение
В дипломной работе были получены следующие основные результаты:
· Произведен анализ предметной области операционных систем и существующих программ их установки;
· Разработана архитектура программы установки Gentoo;
· Обоснован выбор инструментов разработки установочной программы дистрибутива ОС;
· Реализован установочный модуль для дистрибутива Gentoo, функционирующий согласно руководствую пользователя данной ОС;
|
· Выполнено тестирование разработанного приложения на компьютерах в образовательном учреждении Государственный Колледж Технологии и Управления и компьютерах отдельных пользователей с различным аппаратным обеспечением и различными эксплуатационными задачами;
· Информационная поддержка пользователей программы установки дистрибутива Gentoo обеспечивается с помощью развернутого веб сайта разработчика www.gktu.org/gentooinstaller.
Таким образом, в работе были успешно выполнены все поставленные задачи: проектирование и реализация программы автоматизированной установки дистрибутива Gentoo на основе Linux.
Список литературы
1. SvenVermeulen, GrantGoodyear, andmanyother, «GentooLinuxAMD64 Handbook» 2012 – 97 с.
2. Прата Стивен, «Язык программирования C++. Лекции и упражнения» 5-е изд.: Пер. с англ. – М. ООО «И. Д. Вильямс», 2007 – 1184 c.
3. Жасмин Бланшет, Марк Саммерфилд, «Qt 4. Программирование GUI на C++» 2-е изд.: Пер. с англ. – М. ООО «Кудиц-пресс», 2008 – 718 с.
4. Николас А. Солтер, Скотт Дж. Клепер, «С++ для профессионалов»: Пер. с англ. – М.: Издательский дом «Вильямс», 2006 – 912 с.
5. Брайан Керниган, Деннис Ритчи, «Язык программирования С» 2-е изд.: Пер. с англ. – М.: Издательский дом «Вильямс», 2009 – 304 с.
6. Нейл Мэтью, Ричард Стоунс, «Основы программирования в Linux» 4-е издание: Пер. с англ. – СПб.: БХВ-Петербург, 2009 – 896 с.
7. Бьярне Страуструп, «Программирование: принципы и практика использования С++» испр. изд.: Пер. с англ. – М.: ООО «И. Д. Вильямс», 2011 – 1248 с.
8. Макконнелл С. «Совершенный код. Мастер-класс» Пер. с англ. – М.:Издательско-торговый дом «Русская Редакция»; СПб: Питер, 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"
exit1;
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
exit0
Листинг 1.2. ИсходныйкодфайлаGentooInstallChroot.sh
#! /bin/bash function Level5 (){ echo -e "Level 5. In new Gentoo system.\n" env-updatesource /etc/profileexportPS1="(GentooInstall) $PS1" emerge --sync --quiet while:doeselect profile listechoecho -n "Please select profile number: "read cmeselect profile set"$cm"if [ $? = 0 ]thenecho -e "Profile successfully selected.\n"breakfidone } function Level6 (){ echo -e "Level 6. Configuring Locale and Timezone.\n" echo -n "Please specify your locales: Ok."read nano -w /etc/locale.genlocale-genenv-updatesource /etc/profile while:doecho -n "Please specify your timezone (like Europe/Moscow or UTC): "read cmcp /usr/share/zoneinfo/"$cm" /etc/localtimeif [ $? = 0 ]thenbreakfidone } Level5Level6/bin/bash exit0Листинг 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' ];thendialog --backtitle "Welcome to Gentoo Linux Installer" \ --title "User authentication" \ --msgbox "Permission denied. Istallation can not be continue.\nStart installation from root privileges.\n"30100exit1;elsedialog --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/"30100fi function Level1 (){ #echo -e "Level 1. Creating Filesystems.\n"#Begin creating filesystems partcount=0 if [! -d "$installRoot" ]thenmkdir"$installRoot"fi while:dodialog --backtitle "Level 1. Creating Filesystems" \ --title "Partitioning disks" \ --yesno "Do you want to partition your disks?"30100case"$?"in0) dialog --backtitle "Level 1. Creating Filesystems" \ --title "Partitioning disks" \ --inputbox "Enter hard drive name"301002> /tmp/diskNamecfdisk`cat /tmp/diskName`rm /tmp/diskName;;1)break;;esacdone while:dodialog --backtitle "Level 1. Creating Filesystems" \ --title "Making filesystems" \ --yesno "Do you want to make filesystem on your partition?"30100case"$?"in0) partname=""while:dodialog --backtitle "Level 1. Creating Filesystems" \ --title "Making filesystems" \ --inputbox "Enter hard drive partition name"301002> /tmp/partNamepartname=`cat /tmp/partName`rm /tmp/partName if [ "$partname" = "" ]thenbreakfi if [! -b "$partname" ]thendialog --backtitle "Level 1. Creating Filesystems" \ --title "Making filesystems" \ --msgbox "Wrong partition name: `echo $partname`. Retry."30100continuefi while:dodialog --backtitle "Level 1. Creating Filesystems" \ --title "Making filesystems" \ --radiolist "Please pick one type of file system"3010010 \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/fstypecase"$cm"in1) 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;;esacdone if [ "$cm"!= "16" ]thendialog --backtitle "Level 1. Creating Filesystems" \ --title "Making filesystems" \ --inputbox "Please specify partition"301002> /tmp/partFolderch=`cat /tmp/partFolder`rm /tmp/partFolderif [ "$ch" = "/" ]thenmount"$partname""$installRoot"else mkdir "$installRoot""$ch" mount "$partname""$installRoot""$ch"fifi breakdone;;1)break;;esacdone } function Level2 (){ while:dodialog --backtitle "Level 2. Date and Time Settings" \ --title "Date and time configuration" \ --yesno "Is it correct time: `date`"30100case"$?"in0)break;;1)while:dodialog --backtitle "Level 2. Date and Time Settings" \ --title "Date and time checking" \ --inputbox "Please specify date and time (like this MMDDhhmmYYYY)"301002> /tmp/currentDatedate`cat /tmp/currentDate`if [ "$?" = "0" ]thendialog --backtitle "Level 2. Date and Time Settings" \ --title "Date and time configuration" \ --msgbox "Date and time set. Current time: `date`"30100breakfirm /tmp/currentDatedone;;esacdone } function Level3 (){ while:dodialog --backtitle "Level 3. Downloading the Stage Tarball" \ --title "Computer architecture" \ --radiolist "Choose the available architecture"3010010 \"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/archtypecase"$cm"in1 | 2 | 3 | 4 | 5 | 6) architecture="$cm"break;; *);;esacdone #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"30100sleep2 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"30100sleep2tar xjpf "$installRoot"stage3-* -C "$installRoot" dialog --backtitle "Level 3. Installing the Gentoo Installation Files" \ --title "Downloading and unpacking Portage Files" \ --infobox "Downloading Portage Files"30100sleep2 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"30100sleep2tar 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.confsed -i 's/^CXXFLAGS.*/CXXFLAGS="${CFLAGS}"/g'"$installRoot"etc/make.conflet procCount=`grep -c processor /proc/cpuinfo`*2+1sed -i '/MAKEOPTS/d'"$installRoot"etc/make.confsed -i '/GENTOO_MIRRORS/d'"$installRoot"etc/make.confsed -i '/SYNC/d'"$installRoot"etc/make.confsed -i '/LINGUAS/d'"$installRoot"etc/make.confecho"MAKEOPTS=\"-j$procCount\"">>"$installRoot"etc/make.confecho"RSYNC=\"rsync://rsync.gentoo.org/gentoo-portage\"">>"$installRoot"etc/make.confecho"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"30100 ufed while:dodialog --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 30100 \2>"$installRoot"tmp/make.conf.tmp cm="$?"cp"$installRoot"tmp/make.conf.tmp "$installRoot"etc/make.confcase"$cm"in0)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?"30100case"$?"in0)break;;1)true;;esac;;esacdone cp -L /etc/resolv.conf "$installRoot"etc/ mount -t proc none "$installRoot"procmount --rbind /dev "$installRoot"dev cp dGentooInstallChroot.sh "$installRoot"cp02locale "$installRoot"etc/env.d/cp locale.gen "$installRoot"etcchmod +x "$installRoot"GentooInstallChroot.shchroot"$installRoot" /bin/bash --rcfile /dGentooInstallChroot.sh } Level1Level2Level3Level4 exit0Листинг 1.4. ИсходныйкодфайлаdGentooInstallChroot.sh
|
Листинг 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
[a1]Сделать главой 2.2.
[a2]Вот тут бы я расписал плюсы и минусы компиляторов и интерпретаторов.
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!