From Fedora Project Wiki

No edit summary
 
(131 intermediate revisions by 16 users not shown)
Line 2: Line 2:
{{header|anaconda}}
{{header|anaconda}}


[[Image:DSC_3217.JPG | 400px | Entering Anaconda, Montana.  A city probably named after this installation program.]]
[[Image:DSC_3217.JPG | 400px | Entering Anaconda, Montana.  A city probably named after this installation program.  David Cantrell took this picture in 2011.  His grey VW Jetta is parked in the background.]]


[[Anaconda]] is the installation program used by Fedora, Red Hat Enterprise Linux and [[Anaconda/Distros| some other distributions]].
[[Anaconda]] is the installation program used by Fedora, Red Hat Enterprise Linux and [[Anaconda/Distros| some other distributions]].


During installation, a target computer's hardware is identified and configured and the appropriate file systems for the system's architecture are created.  Finally, anaconda allows the user to install the operating system software on the target computer.  anaconda can also upgrade existing installations of earlier versions of the same distribution.  After the installation is complete, you can reboot into your installed system and continue doing customization using [[FirstBoot|  firstboot]] .
During installation, a target computer's hardware is identified and configured, and the appropriate file systems for the system's architecture are created.  Finally, anaconda allows the user to install the operating system software on the target computer.  anaconda can also upgrade existing installations of earlier versions of the same distribution.  After the installation is complete, you can reboot into your installed system and continue doing customization using [https://fedoraproject.org/wiki/InitialSetup initial setup].


anaconda is a fairly sophisticated installer.  It supports installation from local and remote sources such as CDs and DVDs, images stored on a hard drive, NFS, HTTP, and FTP.  Installation can be scripted with [[Anaconda/Kickstart|  kickstart]]  to provide a fully unattended installation that can be duplicated on scores of machines.  It can also be run over VNC on headless machines.  A variety of advanced storage devices including LVM, RAID, iSCSI, and multipath are supported from the partitioning program.  anaconda provides advanced debugging features such as remote logging, access to the python interactive debugger, and remote saving of exception dumps.
anaconda is a fairly sophisticated installer.  It supports installation from local and remote sources such as CDs and DVDs, images stored on a hard drive, NFS, HTTP, and FTP.  Installation can be scripted with [[Anaconda/Kickstart|  kickstart]]  to provide a fully unattended installation that can be duplicated on scores of machines.  It can also be run over VNC on headless machines.  A variety of advanced storage devices including LVM, RAID, iSCSI, and multipath are supported from the partitioning program.  anaconda provides advanced debugging features such as remote logging, access to the python interactive debugger, and remote saving of exception dumps.
Line 12: Line 12:
== Users ==
== Users ==


If you are a user having problems with anaconda, please use the user support forum for your distribution such as [http://forums.fedoraforum.org/forumdisplay.php?f=6 Fedora Forum] . There are a few useful documents for users under [[Anaconda/UserTips| UserTips]] , but generally, this is dedicated to developers and advanced users of anaconda.
If you are a user having problems with anaconda, please use the user support forum for your distribution such as [http://forums.fedoraforum.org/forumdisplay.php?f=6 Fedora Forum] or [https://admin.fedoraproject.org/mailman/listinfo/users fedora-users].


From time to time, we may distribute updates for anaconda to fix problems in Fedora releases.  The [[Anaconda/Updates|  updates]]  wiki page explains how to use these updates images.
From time to time, we may distribute updates for anaconda to fix problems in Fedora releases.  The [[Anaconda/Updates|  updates]]  wiki page explains how to use these updates images.
Line 20: Line 20:
== Advanced Users ==
== Advanced Users ==


If you are an advanced user of anaconda, you should check out [[Anaconda/Options|  our reference to anaconda command line options]],[[Anaconda/Kickstart| our kickstart file format documentation]]  and [[Anaconda/Logging| our reference to logging capabilities of anaconda]].
If you are an advanced user of anaconda, you should check out [https://anaconda-installer.readthedocs.io/en/latest/boot-options.html our reference to anaconda command line options],[https://anaconda-installer.readthedocs.io/en/latest/kickstart.html our kickstart file format documentation]  and [[Anaconda/Logging| our reference to logging capabilities of anaconda]].


There is a mailing list devoted to the use of kickstart.  You can find the list signup and archive information at [http://www.redhat.com/mailman/listinfo/kickstart-list] .  This is the best place to share tips and tricks about kickstart.
There is a mailing list devoted to the use of kickstart.  You can find the list signup and archive information at [http://www.redhat.com/mailman/listinfo/kickstart-list kickstart list].  This is the best place to share tips and tricks about kickstart.


== Distribution Builders ==
== Distribution Builders ==


For information on how to customize anaconda and trees created with it, please see [[Anaconda/BuildDocProject| BuildDocProject]]  and [[Anaconda/Customization| Customization]] .
For information on how to customize anaconda and trees created with it, please see [[Anaconda/ProductImage| product.img]], [[Anaconda/BuildDocProject| BuildDocProject]]  and [[Anaconda/Customization| Customization]].


== Developers ==
== Mailing Lists ==


Anaconda is primarily written in the [http://www.python.org/ Python language] .  The graphical front-end of anaconda is written with [http://www.pygtk.org/ pyGtk library] and [http://glade.gnome.org glade interface description files] .  Using Python for the majority of the installer code allows for easy distribution of updates and the quick development of new features.  The loader, which handles loading the large main portion of anaconda, module loading, and other boot up tasks, is written in the C programming language. Some other minor hardware-specific portions of anaconda are also written in C. In addition, bash and python scripts are used for some administrative scripting duties.
There are two mailing lists for Anaconda.  The first is the development mailing list.  This list is used to discuss development issues, submit patches and other activities related to extending anaconda.  The sign up for the development list is located at [https://lists.fedoraproject.org/archives/list/anaconda-devel@lists.fedoraproject.org/ anaconda development list site].  Past discussions can be found in the [https://www.redhat.com/archives/anaconda-devel-list anaconda development archives] for old mailing list or [https://lists.fedoraproject.org/archives/list/anaconda-devel@lists.fedoraproject.org/ here on Fedora] for the current one.


The entire Anaconda package is distributed under the GPLv2.
The second list is a user oriented list of how to create kickstart files.  The kickstart list is the place to discuss automated installation issues.  The sign up for the kickstart list is located at [https://www.redhat.com/mailman/listinfo/kickstart-list anaconda kickstart list site].  Past discussions can be found in the [https://www.redhat.com/archives/kickstart-list anaconda kickstart archives].


== Mailing Lists ==
Patch review used to take place on a mailing list dedicated to submitting and reviewing patches. Patch review now takes place on [https://github.com/rhinstaller/anaconda/pulls GitHub] via pull requests.
 
== IRC and Matrix ==


There are three mailing lists for Anaconda.  The first is the development mailing list.  This list is used to discuss development issues, submit patches, and other activities related to extending anaconda.  The sign up for the development list is located at [https://listman.redhat.com/mailman/listinfo/anaconda-devel-list anaconda development list site] . Past discussions can be found in the [https://www.redhat.com/archives/anaconda-devel-list anaconda development archives] .
There is also an [https://web.libera.chat/#anaconda #anaconda] IRC channel on [https://libera.chat/ Libera.Chat] or Matrix channel on [https://matrix.to/#/#anaconda:fedora.im chat.fedoraproject.org]. This resource is for discussion of anaconda development, not for distribution customization questions.


The second list is the anaconda patch review list.  This is a high traffic developer oriented list.  The sign up for the anaconda-patches list is located at [https://fedorahosted.org/mailman/listinfo/anaconda-patches anaconda-patches list site] .  Past discussions can be found in the [https://lists.fedorahosted.org/pipermail/anaconda-patches/ anaconda-patches archives] .
== How to Contribute ==


The third list is a user oriented list on how to create kickstart files.  The kickstart list is the place to discuss automated installation issues.  The sign up for the kickstart list is located at [https://www.redhat.com/mailman/listinfo/kickstart-list anaconda kickstart list site] .  Past discussions can be found in the [https://www.redhat.com/archives/kickstart-list anaconda kickstart archives] .
For how to contribute to Anaconda and related projects, see the [https://fedoraproject.org/wiki/Anaconda/Contribute Contributing to Anaconda and related projects] documentation.


There is also the #anaconda IRC channel on irc.freenode.org. This resource is for discussion of anaconda development, not for distribution customization questions.
Please note that useful contributions are not limited to submitting patches for source code. You can also help with [https://anaconda-installer.readthedocs.io/en/latest/testing.html testing], reporting bugs, improving translations or extending the Anaconda documentation.


== Developers' Guide ==
== Developers' Guide ==


If you want to work on Anaconda, you should start with the [[Anaconda/SourceOverview| Source Overview]] , which contains a high level discussion of the source files and what they doThen look at the [[Anaconda/Stage1DevelopmentGuide|  stage1 development guide]]  and the [[Anaconda/Stage2DevelopmentGuide|  stage2 development guide]]  for information on how to test, debug, and develop for these two parts of anaconda.
anaconda is now almost entirely written in Python 3.  The graphical front end uses GTK+ 3 via gobject-introspection, and as much of the interface as possible is written using the glade interface builderThe earliest parts of anaconda are in shell for integration with dracut, and there's still a little bit of C thrown in for interfacing with certain libraries.


Familiarize yourself with the tools that anaconda usesCheck out the following external reference documents:
Here are some documents if you are planning on working on anaconda.  More are in the works:


* [http://www.pygtk.org/docs/pygtk/index.html PyGTK module reference]
* [[Anaconda/Devel/Translation]]
* [http://docs.python.org/tut/tut.html Python tutorial]  
* [http://docs.python.org/modindex.html Python module reference]  


Once you're up and running, you should check out [[Anaconda/Featuresfuture work items for anaconda]to see what we'd like to have done.
* If you want to work on Anaconda, you should start with the [[Anaconda/SourceOverview|Source Overview]], which contains a high-level discussion of the source files and what they do. Then look at the [https://anaconda-installer.readthedocs.io/en/latest/ online documentation] for information on how to test, debug, and develop anaconda.


There's also some tips on the [[Anaconda/Building|  building anaconda]] page describing how to compile and create a new version of the anaconda package.
Familiarize yourself with the tools that anaconda uses. Check out the following external reference documents:


The [http://dcantrel.fedorapeople.org/anaconda/API/devel/ anaconda API reference] is an ongoing effort to document the anaconda source code. This is far from complete, but getting better all the time.
* [https://developer.gnome.org/gtk3/stable/ GTK+ reference]
* [https://docs.python.org/3/tutorial/ Python tutorial]
* [https://docs.python.org/3/py-modindex.html Python module reference]


== Getting the Source ==
== Getting the Source ==


The primary methods of distributing the anaconda source are source RPMs in the [http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/ Fedora development tree]  and git.  To access the current source code in in non-rpm format, you'll need to install git.
The primary methods of distributing the anaconda source are source RPMs in the [http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/ Fedora development tree]  and git.  To access the current source code in non-rpm format, you'll need to install git.


  yum install git
  dnf install git


Note that several related packages will be installed as well.  After the git source code management tool has been installed, then you use anonymous git access to the Anaconda repository.
Note that several related packages will be installed as well.  After the git source code management tool has been installed, then you use anonymous git access to the Anaconda repository.


  git clone git://git.fedorahosted.org/git/anaconda.git
  git clone https://github.com/rhinstaller/anaconda.git


The output may look similar to the following:
The output may look similar to the following:
Line 89: Line 91:
If you have committer access to anaconda, then you will want to use the git+ssh access url.
If you have committer access to anaconda, then you will want to use the git+ssh access url.


  git clone git+ssh://git.fedorahosted.org/git/anaconda.git
  git clone git+ssh://git@github.com/rhinstaller/anaconda.git




Line 96: Line 98:
  git push
  git push


If you would just like to browse the Anaconda git repository via the web, then please use one of the following two [http://git.fedorahosted.org/git/anaconda.git Anaconda git URLs] .
If you would just like to browse the Anaconda git repository via the web, then please use the following [https://github.com/rhinstaller/anaconda.git Anaconda git URLs].


http://git.fedorahosted.org/git/anaconda.git
https://github.com/rhinstaller/anaconda


http://git.fedorahosted.org/git/?p=anaconda.git;a=summary
Anaconda has an [https://github.com/rhinstaller/kickstart-tests extensive suite of tests] that is still growing. If you contribute new functionality, it's good practice to include some tests along with that. We have a [https://anaconda-installer.readthedocs.io/en/latest/testing.html document that outlines the test suite infrastructure and describes how to run tests].


To contribute you should read our [[Anaconda/Branches|Branching policy]] first.
To contribute you should read our [https://anaconda-installer.readthedocs.io/en/latest/contributing.html guidelines for contributing].


== Reporting Problems ==
== Reporting Problems ==
Line 108: Line 110:
If you are having difficulty installing, please file the problem report with your distribution vendor.
If you are having difficulty installing, please file the problem report with your distribution vendor.


Before filing a bug, please read up on [[How to debug installation problems]], which will tell you how to fill out useful bug reports that will help us quickly solve your problem.  Also try searching bugzilla for other reports about your problem, as some bugs are often filed by several people.
Before filing a bug, please read up on [[How to debug installation problems]], which will tell you how to fill out useful bug reports that will help us quickly solve your problem.  Also try searching Bugzilla for other reports about your problem, as some bugs are often filed by several people.
 
[[Anaconda/CommonBugs| CommonBugs]]  is a list of common anaconda bug reports you may wish you check before filing a duplicate.


[[Anaconda/AnacondaBugWorkflow| AnacondaBugWorkflow]] is a guideline to how Fedora anaconda bugs pass through bugzilla, and what all the various statuses really mean. This is '''only''' for Fedora.
[[Anaconda/AnacondaBugWorkflow| AnacondaBugWorkflow]] is a guideline to how Fedora anaconda bugs pass through Bugzilla, and what all the various statuses really mean. This is '''only''' for Fedora.


== Anaconda Team ==
== Anaconda Team ==


[[Image:anaconda-team-fudcon-tempe-2011.png | 500px]]
[[Image:20170607-brq-anaconda-group-photo02.jpg | 500px]]


From left to right, the following people are the anaconda team and are responsible for the majority of commits.  Of course, we get help from other people both from Red Hat and from the volunteer community as well.
From left to right, the following people are the anaconda team and are responsible for the majority of commits.  Of course, we get help from other people both from Red Hat and from the volunteer community as well.


* [[User:Clumens|Chris Lumens]] (clumens):  Kickstart, thinking up new stuff.
* [[User:Rvykydal|Radek Vykydal]] (rvykydal):  Engineering
* [[User:Mgracik|Martin Gracik]] (mgracik): firstboot, UI elements, lorax.
* [[User:M4rtink|Martin Kolman]] (mkolman): Engineering
* [[User:Msivak|Martin Sivak]] (msivak): FirstAidKit, driver disks.
* Vendula Poncova (vponcova): Engineering
* [[User:Pjones|Peter Jones]] (pjones): EFI.
* Vladimír Slávik (vslavik): Engineering
* [[User:Bcl|Brian Lane]] (bcl): LiveCD.
* Jiri Konecny (jkonecny): Team Lead
* [[User:Dcantrel|David Cantrell]] (dcantrell): Manager, s390x.
* Eleana Panayiotou (eleana): Manager
* [[User:Wwoods|Will Woods]] (wwoods): Stuff.
* [[User:Rvykydal|Radek Vykydal]] (rvykydal):  Networking.
* [[User:Dlehman|Dave Lehman]] (dlehman):  Storage.
* (not pictured) [[User:sbueno|Samantha Bueno]] (sbueno): s390x, bugs, stuff


== Anaconda Team Emeritus ==
== Anaconda Team Emeritus ==


* [[User:sbueno|Samantha N. Bueno]] (sbueno): Manager
* [[User:Clumens|Chris Lumens]] (clumens)
* [[User:Pjones|Peter Jones]] (pjones)
* [[User:Bcl|Brian Lane]] (bcl)
* [[User:Dcantrel|David Cantrell]] (dcantrell)
* [[User:Wwoods|Will Woods]] (wwoods)
* [[User:Dlehman|Dave Lehman]] (dlehman)
* [[User:vpodzime|Vratislav Podzimek]] (vpodzime):
* [[User:dshea|David Shea]] (dshea)
* [[User:katzj|Jeremy Katz]] (katzj)
* [[User:katzj|Jeremy Katz]] (katzj)
* Joel Andres Granados (jgranado)
* Joel Andres Granados (jgranado)
* Hans de Goede (hansg)
* Hans de Goede (hansg)
* [[User:Akozumpl|Ales Kozumplik]] (akozumpl)
* [[User:Akozumpl|Ales Kozumplik]] (akozumpl)
* [[User:Mgracik|Martin Gracik]] (mgracik)
* [[User:jkeating|Jesse Keating]] (jlk)
* [[User:jkeating|Jesse Keating]] (jlk)
* [[User:Msivak|Martin Sivak]] (msivak)


== Design ==
== Design ==
* [[Anaconda/UX Redesign | Anaconda UX Redesign]]
* [[Anaconda/UX Redesign | Anaconda UX Redesign]]
* [[How to Create an Anaconda Banner | How to Create an Anaconda Banner]]


[[Category:Anaconda]]
[[Category:Anaconda]]

Latest revision as of 14:54, 2 December 2021

Entering Anaconda, Montana. A city probably named after this installation program. David Cantrell took this picture in 2011. His grey VW Jetta is parked in the background.

Anaconda is the installation program used by Fedora, Red Hat Enterprise Linux and some other distributions.

During installation, a target computer's hardware is identified and configured, and the appropriate file systems for the system's architecture are created. Finally, anaconda allows the user to install the operating system software on the target computer. anaconda can also upgrade existing installations of earlier versions of the same distribution. After the installation is complete, you can reboot into your installed system and continue doing customization using initial setup.

anaconda is a fairly sophisticated installer. It supports installation from local and remote sources such as CDs and DVDs, images stored on a hard drive, NFS, HTTP, and FTP. Installation can be scripted with kickstart to provide a fully unattended installation that can be duplicated on scores of machines. It can also be run over VNC on headless machines. A variety of advanced storage devices including LVM, RAID, iSCSI, and multipath are supported from the partitioning program. anaconda provides advanced debugging features such as remote logging, access to the python interactive debugger, and remote saving of exception dumps.

Users

If you are a user having problems with anaconda, please use the user support forum for your distribution such as Fedora Forum or fedora-users.

From time to time, we may distribute updates for anaconda to fix problems in Fedora releases. The updates wiki page explains how to use these updates images.

Need to see what's changed from release to release? See our migration guide which summarizes changes for users, rebuilders, and contributors.

Advanced Users

If you are an advanced user of anaconda, you should check out our reference to anaconda command line options,our kickstart file format documentation and our reference to logging capabilities of anaconda.

There is a mailing list devoted to the use of kickstart. You can find the list signup and archive information at kickstart list. This is the best place to share tips and tricks about kickstart.

Distribution Builders

For information on how to customize anaconda and trees created with it, please see product.img, BuildDocProject and Customization.

Mailing Lists

There are two mailing lists for Anaconda. The first is the development mailing list. This list is used to discuss development issues, submit patches and other activities related to extending anaconda. The sign up for the development list is located at anaconda development list site. Past discussions can be found in the anaconda development archives for old mailing list or here on Fedora for the current one.

The second list is a user oriented list of how to create kickstart files. The kickstart list is the place to discuss automated installation issues. The sign up for the kickstart list is located at anaconda kickstart list site. Past discussions can be found in the anaconda kickstart archives.

Patch review used to take place on a mailing list dedicated to submitting and reviewing patches. Patch review now takes place on GitHub via pull requests.

IRC and Matrix

There is also an #anaconda IRC channel on Libera.Chat or Matrix channel on chat.fedoraproject.org. This resource is for discussion of anaconda development, not for distribution customization questions.

How to Contribute

For how to contribute to Anaconda and related projects, see the Contributing to Anaconda and related projects documentation.

Please note that useful contributions are not limited to submitting patches for source code. You can also help with testing, reporting bugs, improving translations or extending the Anaconda documentation.

Developers' Guide

anaconda is now almost entirely written in Python 3. The graphical front end uses GTK+ 3 via gobject-introspection, and as much of the interface as possible is written using the glade interface builder. The earliest parts of anaconda are in shell for integration with dracut, and there's still a little bit of C thrown in for interfacing with certain libraries.

Here are some documents if you are planning on working on anaconda. More are in the works:

  • If you want to work on Anaconda, you should start with the Source Overview, which contains a high-level discussion of the source files and what they do. Then look at the online documentation for information on how to test, debug, and develop anaconda.

Familiarize yourself with the tools that anaconda uses. Check out the following external reference documents:

Getting the Source

The primary methods of distributing the anaconda source are source RPMs in the Fedora development tree and git. To access the current source code in non-rpm format, you'll need to install git.

dnf install git

Note that several related packages will be installed as well. After the git source code management tool has been installed, then you use anonymous git access to the Anaconda repository.

git clone https://github.com/rhinstaller/anaconda.git

The output may look similar to the following:

Initialized empty Git repository in /home/drkludge/anacondatest/anaconda/.git/
remote: Generating pack...
remote: Counting objects: 10861
remote: Done counting 91222 objects.
remote: Deltifying 91222 objects...
remote:  100% (91222/91222) done
Indexing 91222 objects...
100% (91222/91222) done
remote: Total 91222 (delta 68785), reused 90187 (delta 68059)
Resolving 68785 deltas...
100% (68785/68785) done
Checking 543 files out...
100% (543/543) done


If you have committer access to anaconda, then you will want to use the git+ssh access url.

git clone git+ssh://git@github.com/rhinstaller/anaconda.git


Once you've committed changes locally, you can push them with

git push

If you would just like to browse the Anaconda git repository via the web, then please use the following Anaconda git URLs.

https://github.com/rhinstaller/anaconda

Anaconda has an extensive suite of tests that is still growing. If you contribute new functionality, it's good practice to include some tests along with that. We have a document that outlines the test suite infrastructure and describes how to run tests.

To contribute you should read our guidelines for contributing.

Reporting Problems

If you are having difficulty installing, please file the problem report with your distribution vendor.

Before filing a bug, please read up on How to debug installation problems, which will tell you how to fill out useful bug reports that will help us quickly solve your problem. Also try searching Bugzilla for other reports about your problem, as some bugs are often filed by several people.

AnacondaBugWorkflow is a guideline to how Fedora anaconda bugs pass through Bugzilla, and what all the various statuses really mean. This is only for Fedora.

Anaconda Team

From left to right, the following people are the anaconda team and are responsible for the majority of commits. Of course, we get help from other people both from Red Hat and from the volunteer community as well.

  • Radek Vykydal (rvykydal): Engineering
  • Martin Kolman (mkolman): Engineering
  • Vendula Poncova (vponcova): Engineering
  • Vladimír Slávik (vslavik): Engineering
  • Jiri Konecny (jkonecny): Team Lead
  • Eleana Panayiotou (eleana): Manager

Anaconda Team Emeritus

Design