Difference between revisions of "Build Manjaro ISOs with buildiso"
Views
Actions
Namespaces
Variants
Tools
imported>Fhdk |
(removed dead links - revise later for current links) |
||
(25 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> | |||
__TOC__ | __TOC__ | ||
<translate> | |||
=Prerequisites= <!--T:1--> | |||
<!--T:2--> | |||
This is a detailed walkthrough of installation and configuration of the tools and build process. | This is a detailed walkthrough of installation and configuration of the tools and build process. | ||
It is a requirement to either download and install the latest version of [https://manjaro.org/get-manjaro Manjaro] or be running a well maintained Manjaro system. | <!--T:3--> | ||
It is a requirement to either download and install the latest version of [https://manjaro.org/get-manjaro Manjaro] or be running a well maintained Manjaro system. '''It is vital your system is updated''' with the latest available kernel and packages. | |||
==Install Manjaro Tools== | ==Install Manjaro Tools== <!--T:4--> | ||
To get started you need to the following | <!--T:5--> | ||
To get started you need to the following packages | |||
<!--T:121--> | |||
{{UserCmd|command=pamac install manjaro-tools-iso git}} | |||
<!--T:7--> | |||
We will be working with the official XFCE to help you understand what you need to do. | We will be working with the official XFCE to help you understand what you need to do. | ||
=ISO profile= | =ISO profile= <!--T:8--> | ||
==Download the latest ISO profiles== | |||
<!--T:9--> | |||
The latest profiles can be found in the Manjaro gitlab. You can download them directly using the command: | |||
{{UserCmd|command=git clone <nowiki>https://gitlab.manjaro.org/profiles-and-settings/iso-profiles.git</nowiki> ~/iso-profiles}} | |||
==ISO profile overview== | ==ISO profile overview== <!--T:10--> | ||
The ISO profile for xfce can now be found at | |||
<!--T:11--> | |||
{{UserCmd|command=ls -l ~/iso-profiles/manjaro/xfce}} | |||
<!--T:12--> | |||
Let's take a closer look at the XFCE profile folder (marked above): | Let's take a closer look at the XFCE profile folder (marked above): | ||
<!--T:13--> | |||
'''desktop-overlay''' | |||
live-overlay -> ../../shared/manjaro/live-overlay | |||
'''Packages-Desktop''' | |||
Packages-Live -> ../../shared/Packages-Live | |||
Packages-Mhwd -> ../../shared/Packages-Mhwd | |||
Packages-Root -> ../../shared/Packages-Root | |||
'''profile.conf''' | |||
<!--T:14--> | |||
* '''desktop-overlay''': After every successful installation of your ISO the files and folders in here will get copied over. | * '''desktop-overlay''': After every successful installation of your ISO the files and folders in here will get copied over. | ||
* ''live-overlay'': Similar to ''desktop-overlay''. Files and folders in here will only get copied over to the LiveCD of your ISO. | * ''live-overlay'': Similar to ''desktop-overlay''. Files and folders in here will only get copied over to the LiveCD of your ISO. | ||
Line 44: | Line 56: | ||
* '''profile.conf''' contains basic settings for your ISO installation and LiveCD. | * '''profile.conf''' contains basic settings for your ISO installation and LiveCD. | ||
As you have probably noticed, | <!--T:15--> | ||
As you have probably noticed, several are only symlinks to the <code>shared</code> ISO profile. It is good practice to never change files or folders in the <code>shared</code> ISO profile. If you ever want to change them, first copy them to your ISO profile folder and delete the symlink. | |||
<!--T:16--> | |||
All folders and files specific to your ISO are '''in bold'''. You can change them to your liking. | All folders and files specific to your ISO are '''in bold'''. You can change them to your liking. | ||
==Modifying an ISO profile== | ==Modifying an ISO profile== <!--T:17--> | ||
<!--T:18--> | |||
The most common places to tweak and customize an ISO profile are the 3 folders marked above: ''desktop-overlay'', ''profile.conf'', ''Packages-Desktop'': | The most common places to tweak and customize an ISO profile are the 3 folders marked above: ''desktop-overlay'', ''profile.conf'', ''Packages-Desktop'': | ||
===desktop-overlay=== | ===desktop-overlay=== <!--T:19--> | ||
<!--T:20--> | |||
The ''desktop-overlay'' folder looks like this: | The ''desktop-overlay'' folder looks like this: | ||
<!--T:21--> | |||
{{UserCmdOutput|command=tree ~/iso-profiles/manjaro/xfce/desktop-overlay/etc|result= | |||
<pre> | |||
../iso-profiles/manjaro/xfce/desktop-overlay/ | |||
├── etc | |||
│ ├── fonts | |||
│ │ └── conf.d | |||
│ │ └── 70-no-bitmaps.conf | |||
│ └── lightdm | |||
│ ├── lightdm.conf | |||
│ └── lightdm-gtk-greeter.conf | |||
└── usr | |||
└── share | |||
└── icons | |||
└── default | |||
└── index.theme | |||
</pre> | |||
}} | |||
<!--T:22--> | |||
Go to this directory. | Go to this directory. | ||
~/iso-profiles/manjaro/xfce/desktop-overlay/etc/ | <!--T:23--> | ||
{{UserCmd|command=cd ~/iso-profiles/manjaro/xfce/desktop-overlay/etc/}} | |||
<!--T:24--> | |||
Then create '''skel''' folder. This is where you can clone everything you see on your Desktop Screen to ISO. | Then create '''skel''' folder. This is where you can clone everything you see on your Desktop Screen to ISO. | ||
{{UserCmd|command=mkdir skel}} | |||
<!--T:25--> | |||
After the ISO has been successfully installed all files and folder in ''desktop-overlay'' folder get copied over to the installed system. This includes settings/config files but also themes and backgrounds/pictures. | After the ISO has been successfully installed all files and folder in ''desktop-overlay'' folder get copied over to the installed system. This includes settings/config files but also themes and backgrounds/pictures. | ||
<!--T:26--> | |||
All files and folder in here will get copied to the home folder. Most hidden files and their structure in <code>~/iso-profiles/manjaro/xfce/desktop-overlay/etc/skel/</code> should be already familiar to you, because your home folder looks very similar. | All files and folder in here will get copied to the home folder. Most hidden files and their structure in <code>~/iso-profiles/manjaro/xfce/desktop-overlay/etc/skel/</code> should be already familiar to you, because your home folder looks very similar. | ||
===Clone Custom Wallpaper Desktop=== | ===Clone Custom Wallpaper Desktop=== <!--T:27--> | ||
<!--T:28--> | |||
To clone your Custom Wallpaper Desktop. Open a New File Manager and go to this file. | To clone your Custom Wallpaper Desktop. Open a New File Manager and go to this file. | ||
<!--T:29--> | |||
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml | |||
Change all image directories to where your Custom Wallpaper was located at. | <!--T:30--> | ||
Change all image directories to where your Custom Wallpaper was located at. For example: | |||
<!--T:31--> | |||
/usr/share/backgrounds/<YOUR IMAGE HERE> | /usr/share/backgrounds/<YOUR IMAGE HERE> | ||
===Example=== | ===Example=== <!--T:32--> | ||
<div class="toccolours mw-collapsible mw-collapsed"> | <div class="toccolours mw-collapsible mw-collapsed"> | ||
<span style="color:green">A sample `xfce4-desktop.xml` can be viewed by unfolding this block</span> | <span style="color:green">A sample `xfce4-desktop.xml` can be viewed by unfolding this block</span> | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<!--T:33--> | |||
<pre> | <pre> | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
Line 131: | Line 165: | ||
</div> | </div> | ||
Go to this directory | <!--T:34--> | ||
Go to this directory: | |||
~/iso-profiles/manjaro/xfce/desktop-overlay/ | <!--T:35--> | ||
{{UserCmd|command=cd ~/iso-profiles/manjaro/xfce/desktop-overlay/}} | |||
<!--T:36--> | |||
Then create <code>usr/share/backgrounds</code> and place your Custom Wallpaper at this directory. | Then create <code>usr/share/backgrounds</code> and place your Custom Wallpaper at this directory. | ||
{{UserCmd|command=mkdir ./usr/share/backgrounds}} | |||
<!--T:37--> | |||
{{UserCmd|command=cp ~/Pictures/Wallpapers/your-wallpaper.png ~/iso-profiles/manjaro/xfce/desktop-overlay/usr/share/backgrounds}} | |||
===profile.conf=== | ===profile.conf=== <!--T:38--> | ||
<div class="toccolours mw-collapsible mw-collapsed"> | <div class="toccolours mw-collapsible mw-collapsed"> | ||
<span style="color:green">The full content of | <span style="color:green">The full content of an example profile.conf can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.</span> | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<pre> | <pre> | ||
Line 148: | Line 187: | ||
########################################## | ########################################## | ||
<!--T:39--> | |||
# use multilib packages; x86_64 only | # use multilib packages; x86_64 only | ||
# multilib="true" | # multilib="true" | ||
<!--T:40--> | |||
displaymanager="lightdm" | displaymanager="lightdm" | ||
<!--T:41--> | |||
# Set to false to disable autologin in the livecd | # Set to false to disable autologin in the livecd | ||
# autologin="true" | # autologin="true" | ||
<!--T:42--> | |||
# nonfree mhwd drivers | # nonfree mhwd drivers | ||
# nonfree_mhwd="true" | # nonfree_mhwd="true" | ||
<!--T:43--> | |||
# use extra packages as defined in pkglist to activate a full profile | # use extra packages as defined in pkglist to activate a full profile | ||
#extra="true" | #extra="true" | ||
<!--T:44--> | |||
################ install ################ | ################ install ################ | ||
<!--T:45--> | |||
# unset defaults to given value | # unset defaults to given value | ||
# efi_boot_loader="grub" | # efi_boot_loader="grub" | ||
<!--T:46--> | |||
# configure calamares for netinstall | # configure calamares for netinstall | ||
# netinstall="false" | # netinstall="false" | ||
<!--T:47--> | |||
# configure calamares to use chrootcfg instead of unpackfs | # configure calamares to use chrootcfg instead of unpackfs | ||
# chrootcfg="false" | # chrootcfg="false" | ||
<!--T:48--> | |||
# use geoip for localization | # use geoip for localization | ||
# geoip='true' | # geoip='true' | ||
<!--T:49--> | |||
# unset defaults to given values | # unset defaults to given values | ||
# names must match systemd service names | # names must match systemd service names | ||
Line 181: | Line 231: | ||
disable_systemd=('pacman-init') | disable_systemd=('pacman-init') | ||
<!--T:50--> | |||
# unset defaults to given values, | # unset defaults to given values, | ||
# names must match openrc service names | # names must match openrc service names | ||
Line 186: | Line 237: | ||
# disable_openrc=() | # disable_openrc=() | ||
<!--T:51--> | |||
# the same workgroup name if samba is used | # the same workgroup name if samba is used | ||
# smb_workgroup="" | # smb_workgroup="" | ||
<!--T:52--> | |||
################# livecd ################# | ################# livecd ################# | ||
<!--T:53--> | |||
# unset defaults to given value | # unset defaults to given value | ||
# hostname="manjaro" | # hostname="manjaro" | ||
<!--T:54--> | |||
# unset defaults to given value | # unset defaults to given value | ||
# username="manjaro" | # username="manjaro" | ||
<!--T:55--> | |||
# unset defaults to given value | # unset defaults to given value | ||
# password="manjaro" | # password="manjaro" | ||
<!--T:56--> | |||
# the login shell | # the login shell | ||
# defaults to bash | # defaults to bash | ||
# login_shell=/bin/bash | # login_shell=/bin/bash | ||
<!--T:57--> | |||
# unset defaults to given values | # unset defaults to given values | ||
# addgroups="lp,network,power,wheel" | # addgroups="lp,network,power,wheel" | ||
<!--T:58--> | |||
# unset defaults to given values | # unset defaults to given values | ||
# names must match systemd service names | # names must match systemd service names | ||
Line 212: | Line 271: | ||
# enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live') | # enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live') | ||
<!--T:59--> | |||
# unset defaults to given values, | # unset defaults to given values, | ||
# names must match openrc service names | # names must match openrc service names | ||
Line 220: | Line 280: | ||
</div> | </div> | ||
<!--T:60--> | |||
This config file contains setting options. All default settings are commented. If you want to change them, uncomment them (remove the <code>#</code> symbol in front) and change it. | This config file contains setting options. All default settings are commented. If you want to change them, uncomment them (remove the <code>#</code> symbol in front) and change it. | ||
<!--T:61--> | |||
The following settings are noteworthy: | The following settings are noteworthy: | ||
<!--T:62--> | |||
* <code>multilib=</code> setting belongs to the <code>>multilib</code> flag in your package lists. multilib will install basic 32bit libraries on 64bit systems. This increases compatibility for 32bit applications on 64bit systems. | * <code>multilib=</code> setting belongs to the <code>>multilib</code> flag in your package lists. multilib will install basic 32bit libraries on 64bit systems. This increases compatibility for 32bit applications on 64bit systems. | ||
* <code>displaymanager=</code> sets the display / login manager your system uses. You need to list your display manager in your package list, too. | * <code>displaymanager=</code> sets the display / login manager your system uses. You need to list your display manager in your package list, too. | ||
Line 233: | Line 296: | ||
* <code>enable_openrc=</code>: do not use | * <code>enable_openrc=</code>: do not use | ||
===Packages-Desktop=== | ===Packages-Desktop=== <!--T:63--> | ||
<div class="toccolours mw-collapsible mw-collapsed"> | <div class="toccolours mw-collapsible mw-collapsed"> | ||
<span style="color:green"> | <span style="color:green">An example `Packages-Desktop` file can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.</span> | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<pre> | <pre> | ||
Line 254: | Line 317: | ||
usb_modeswitch | usb_modeswitch | ||
<!--T:64--> | |||
## Libraries for Sound/Audio/Video | ## Libraries for Sound/Audio/Video | ||
alsa-firmware | alsa-firmware | ||
Line 270: | Line 334: | ||
pulseaudio-zeroconf | pulseaudio-zeroconf | ||
<!--T:65--> | |||
## Connect Packages | ## Connect Packages | ||
android-tools | android-tools | ||
Line 283: | Line 348: | ||
udisks2 | udisks2 | ||
<!--T:66--> | |||
## AUR Support/Development | ## AUR Support/Development | ||
# Missing base-devel packages | # Missing base-devel packages | ||
Line 305: | Line 371: | ||
>extra subversion | >extra subversion | ||
<!--T:67--> | |||
## Fonts | ## Fonts | ||
cantarell-fonts | cantarell-fonts | ||
Line 318: | Line 385: | ||
>extra ttf-droid | >extra ttf-droid | ||
<!--T:68--> | |||
## Games | ## Games | ||
>extra steam-manjaro | >extra steam-manjaro | ||
<!--T:69--> | |||
## Package management | ## Package management | ||
pamac | pamac | ||
flatpak | flatpak | ||
<!--T:70--> | |||
## Java | ## Java | ||
>extra jdk8-openjdk | >extra jdk8-openjdk | ||
Line 330: | Line 400: | ||
>extra jre8-openjdk | >extra jre8-openjdk | ||
<!--T:71--> | |||
## Printing | ## Printing | ||
>extra cups | >extra cups | ||
Line 341: | Line 412: | ||
>extra system-config-printer | >extra system-config-printer | ||
<!--T:72--> | |||
## Optional dependencies for hplip | ## Optional dependencies for hplip | ||
>extra pyqt5-common # For hplip | >extra pyqt5-common # For hplip | ||
Line 348: | Line 420: | ||
>extra python-reportlab # For hplip | >extra python-reportlab # For hplip | ||
<!--T:73--> | |||
## Display manager | ## Display manager | ||
lightdm | lightdm | ||
Line 354: | Line 427: | ||
accountsservice # Enhanced user accounts handling | accountsservice # Enhanced user accounts handling | ||
<!--T:74--> | |||
## GTK3 | ## GTK3 | ||
gtk3-classic | gtk3-classic | ||
>multilib lib32-gtk3-classic | >multilib lib32-gtk3-classic | ||
<!--T:75--> | |||
## XFCE Group | ## XFCE Group | ||
exo-gtk3 | exo-gtk3 | ||
Line 374: | Line 449: | ||
xfwm4-gtk3 | xfwm4-gtk3 | ||
<!--T:76--> | |||
## XFCE Extras | ## XFCE Extras | ||
blueman | blueman | ||
Line 421: | Line 497: | ||
pavucontrol | pavucontrol | ||
<!--T:77--> | |||
## Themes | ## Themes | ||
>extra manjaro-wallpapers-18.0 | >extra manjaro-wallpapers-18.0 | ||
Line 431: | Line 508: | ||
xcursor-vanilla-dmz-aa | xcursor-vanilla-dmz-aa | ||
<!--T:78--> | |||
## Applications | ## Applications | ||
>extra catfish | >extra catfish | ||
Line 469: | Line 547: | ||
>extra yelp | >extra yelp | ||
<!--T:79--> | |||
# Optional dependencies engrampa | # Optional dependencies engrampa | ||
p7zip # 7Z and ARJ archive support | p7zip # 7Z and ARJ archive support | ||
Line 474: | Line 553: | ||
unrar # RAR archive support | unrar # RAR archive support | ||
<!--T:80--> | |||
## Documentation | ## Documentation | ||
manjaro-documentation-en | manjaro-documentation-en | ||
<!--T:81--> | |||
## Settings packages | ## Settings packages | ||
>extra manjaro-xfce-gtk3-settings | >extra manjaro-xfce-gtk3-settings | ||
Line 482: | Line 563: | ||
manjaro-browser-settings | manjaro-browser-settings | ||
<!--T:82--> | |||
## Xorg Input Drivers | ## Xorg Input Drivers | ||
xf86-input-elographics | xf86-input-elographics | ||
Line 490: | Line 572: | ||
xf86-input-void | xf86-input-void | ||
<!--T:83--> | |||
## Xorg Server and Graphics | ## Xorg Server and Graphics | ||
>multilib lib32-libva-intel-driver | >multilib lib32-libva-intel-driver | ||
Line 506: | Line 589: | ||
xorg-xkill | xorg-xkill | ||
<!--T:84--> | |||
## Desktop Utils | ## Desktop Utils | ||
perl-file-mimeinfo | perl-file-mimeinfo | ||
Line 511: | Line 595: | ||
xdg-su | xdg-su | ||
<!--T:85--> | |||
## Misc | ## Misc | ||
manjaro-hotfixes | manjaro-hotfixes | ||
<!--T:86--> | |||
</pre> | </pre> | ||
</div> | </div> | ||
Line 519: | Line 605: | ||
This file contains a list of packages, which will get installed on your installed ISO (XFCE) '''and''' the LiveCD (the packages in Packages-Live file only get installled on the live ISO). This is a package list with Xfce specific packages (and packages you like to add to your custom Manjaro ISO) of multiple package lists in your ISO profile. The other package lists are more generic. | This file contains a list of packages, which will get installed on your installed ISO (XFCE) '''and''' the LiveCD (the packages in Packages-Live file only get installled on the live ISO). This is a package list with Xfce specific packages (and packages you like to add to your custom Manjaro ISO) of multiple package lists in your ISO profile. The other package lists are more generic. | ||
<!--T:87--> | |||
You can add or remove package names from this list as you like. You do not need to worry about dependencies when adding package names, just make sure the package name is spelled correctly and the package is available in the Manjaro repositories. | You can add or remove package names from this list as you like. You do not need to worry about dependencies when adding package names, just make sure the package name is spelled correctly and the package is available in the Manjaro repositories. | ||
<!--T:88--> | |||
<code>#</code> marks a comment. The rest of the line after the <code>#</code> symbol gets ignored. | <code>#</code> marks a comment. The rest of the line after the <code>#</code> symbol gets ignored. | ||
===Adding AUR packages=== | ===Adding AUR packages=== <!--T:89--> | ||
<!--T:90--> | |||
If you want to add AUR packages to your ISO, you need to create a online repository and add it to a file '''user-repos.conf''' beside your '''profile.conf'''. | If you want to add AUR packages to your ISO, you need to create a online repository and add it to a file '''user-repos.conf''' beside your '''profile.conf'''. | ||
<!--T:91--> | |||
'''Only use your own http enabled repo.''' | '''Only use your own http enabled repo.''' | ||
[your-repo-name] | <!--T:92--> | ||
[your-repo-name] | |||
SigLevel = Optional TrustAll | SigLevel = Optional TrustAll | ||
Server = http://repo.server.tld/your-repo-name | Server = http://repo.server.tld/your-repo-name | ||
<!--T:93--> | |||
The article [[Buildiso with AUR packages: Using buildpkg]] contains more detailed information on this process. | |||
=manjaro-tools.conf= <!--T:94--> | |||
<!--T:95--> | |||
<code>manjaro-tools.conf</code> is the central configuration file for all tools part of ''manjaro-tools''. Only edit the general and the "buildiso" part to not exceed the scope of this tutorial. If you are not sure what and how to edit it, do '''not''' edit it. You can always use arguments with the <code>buildiso</code> command later. | <code>manjaro-tools.conf</code> is the central configuration file for all tools part of ''manjaro-tools''. Only edit the general and the "buildiso" part to not exceed the scope of this tutorial. If you are not sure what and how to edit it, do '''not''' edit it. You can always use arguments with the <code>buildiso</code> command later. | ||
<!--T:96--> | |||
By default, the systemwide config file is installed in | By default, the systemwide config file is installed in | ||
/etc/manjaro-tools/manjaro-tools.conf | <!--T:97--> | ||
/etc/manjaro-tools/manjaro-tools.conf | |||
<!--T:98--> | |||
Best practice is to leave the systemwide file untouched and copy the system wide config to your home directory here: | Best practice is to leave the systemwide file untouched and copy the system wide config to your home directory here: | ||
~/.config/manjaro-tools | <!--T:99--> | ||
~/.config/manjaro-tools | |||
If the userconfig is present, ''manjaro-tools''/''buildiso'' will load the userconfig values | <!--T:100--> | ||
If the userconfig is present, ''manjaro-tools''/''buildiso'' will load the userconfig values. Best practice is to leave the systemwide file untouched. By default it is commented and shows just initialization values done in code. | |||
=Build your ISO= | =Build your ISO= <!--T:101--> | ||
Build your ISO with the following command: | Build your ISO with the following command: | ||
{{UserCmd|command=buildiso -p xfce}} | |||
You need to specify the name of your ISO profile after the <code>-p</code> argument. In this case, it is <code>xfce</code>. | You need to specify the name of your ISO profile after the <code>-p</code> argument. In this case, it is <code>xfce</code>. | ||
<!--T:102--> | |||
If the build process fails with an error, start it again. | If the build process fails with an error, start it again. | ||
<!--T:103--> | |||
'''Attention:''' The build process needs at least 10 minutes to complete or much longer when you are using HDDs, slow CPUs, or large ISOs. | '''Attention:''' The build process needs at least 10 minutes to complete or much longer when you are using HDDs, slow CPUs, or large ISOs. | ||
When the build process finishes successfully, the ISO file and the package list will appear in this folder: | When the build process finishes successfully, the ISO file and the package list will appear in this folder: | ||
/var/cache/manjaro-tools/iso/ | /var/cache/manjaro-tools/iso/ | ||
===Example:=== | ===Example:=== <!--T:104--> | ||
You can use arguments with the <code>buildiso</code> command for more build options: | You can use arguments with the <code>buildiso</code> command for more build options: | ||
{{UserCmd|command=buildiso -f -p xfce -b stable}} | |||
* <code>-f</code> let's you specify if you want the full ISO. If omitted a minimal ISO will be build. | * <code>-f</code> let's you specify if you want the full ISO. If omitted a minimal ISO will be build. | ||
* <code>-b</code> let's you specify the branch. You can also set this in your <code>manjaro-tools.conf</code> file. | * <code>-b</code> let's you specify the branch. You can also set this in your <code>manjaro-tools.conf</code> file. | ||
You can find other examples of builds using different arguments for ''buildiso'' [https://wiki.manjaro.org/index.php?title=Manjaro-tools#buildiso here]. | You can find other examples of builds using different arguments for ''buildiso'' [https://wiki.manjaro.org/index.php?title=Manjaro-tools#buildiso here]. | ||
=Cleaning your hard drive= | =Cleaning your hard drive= <!--T:105--> | ||
<!--T:106--> | |||
After a successful or failed build, you can get rid of most data (the "raw" ISO with all downloaded packages) by deleting this folder: | After a successful or failed build, you can get rid of most data (the "raw" ISO with all downloaded packages) by deleting this folder: | ||
sudo rm -r /var/lib/manjaro-tools/buildiso/ | <!--T:107--> | ||
{{UserCmd|command=sudo rm -r /var/lib/manjaro-tools/buildiso/}} | |||
<!--T:108--> | |||
To clean your system of packages files of packages not installed on your system (this includes all the package files downloaded for your custom ISO): | To clean your system of packages files of packages not installed on your system (this includes all the package files downloaded for your custom ISO): | ||
paccache -ruk0 | <!--T:109--> | ||
{{UserCmd|command=sudo paccache -ruk0}} | |||
<!--T:110--> | |||
You can also manually look into | You can also manually look into | ||
/var/cache/manjaro-tools/ | <!--T:111--> | ||
/var/cache/manjaro-tools/ | |||
<!--T:112--> | |||
and delete folders or files to your liking. If you want to delete all ISO images, package lists, and cached Xorg packages do: | and delete folders or files to your liking. If you want to delete all ISO images, package lists, and cached Xorg packages do: | ||
sudo rm -r /var/cache/manjaro-tools/ | <!--T:113--> | ||
{{UserCmd|command=sudo rm -r /var/cache/manjaro-tools/}} | |||
<!--T:114--> | |||
Please remember that all these packages and files are saved for your convenience. If you clean your system like suggested above, you have to download '''all''' packages and build '''all''' images again the next time you want to build your own Manjaro ISO. | Please remember that all these packages and files are saved for your convenience. If you clean your system like suggested above, you have to download '''all''' packages and build '''all''' images again the next time you want to build your own Manjaro ISO. | ||
<!--T:115--> | |||
By default, your <code>manjaro-tools.conf</code> file is saved. If you want to delete it, use | By default, your <code>manjaro-tools.conf</code> file is saved. If you want to delete it, use | ||
rm -r ~/.config/manjaro-tools | <!--T:116--> | ||
{{UserCmd|command=rm -r ~/.config/manjaro-tools}} | |||
=== | =Tips & Tricks= <!--T:117--> | ||
==Building a minimal ISO== <!--T:118--> | |||
A minimal ISO is easy to create by modifying an entry in the profile.conf file. Find the section | |||
<pre> | |||
# use extra packages as defined in pkglist to activate a full profile | |||
# extra="false" | |||
extra="true" | |||
</pre> | |||
and remove the '''#''' mark in front of '''extra = "false"''' and add a '''#''' in front of '''extra = "true"'''. | |||
<!--T:119--> | |||
If you prefer not to change this you can always use the '''-f''' with buildiso to build a full profile. | |||
[[Category:Contents Page]] | =See also= <!--T:120--> | ||
* Source: [https://gitlab.manjaro.org/profiles-and-settings/iso-profiles Manjaro Gitlab ISO Profiles] (master branch may be unstable - select the branch for latest release) | |||
* Video: [https://youtu.be/B--je--m0VI Building Manjaro ISO by Philip Müller](Tutorial Video) | |||
* Wiki: [[Buildiso with AUR packages: Using buildpkg]] | |||
</translate> | |||
[[Category:Contents Page{{#translation:}}]] | |||
[[Category:Development{{#translation:}}]] | |||
[[Category:ISO{{#translation:}}]] |
Latest revision as of 12:02, 29 June 2024
Prerequisites
This is a detailed walkthrough of installation and configuration of the tools and build process.
It is a requirement to either download and install the latest version of Manjaro or be running a well maintained Manjaro system. It is vital your system is updated with the latest available kernel and packages.
Install Manjaro Tools
To get started you need to the following packages
We will be working with the official XFCE to help you understand what you need to do.
ISO profile
Download the latest ISO profiles
The latest profiles can be found in the Manjaro gitlab. You can download them directly using the command:
ISO profile overview
The ISO profile for xfce can now be found at
Let's take a closer look at the XFCE profile folder (marked above):
desktop-overlay live-overlay -> ../../shared/manjaro/live-overlay Packages-Desktop Packages-Live -> ../../shared/Packages-Live Packages-Mhwd -> ../../shared/Packages-Mhwd Packages-Root -> ../../shared/Packages-Root profile.conf
- desktop-overlay: After every successful installation of your ISO the files and folders in here will get copied over.
- live-overlay: Similar to desktop-overlay. Files and folders in here will only get copied over to the LiveCD of your ISO.
- Packages-Desktop: This file contains packages for the ISO installation. All packages will also get installed on LiveCDs.
- Packages-Live: This file contains packages, which will only get installed on the LiveCD.
- Packages-Mhwd: This file contains Mhwd packages important to all Manjaro installations and LiveCDs.
- Packages-Root: This file contains base packages important to all Manjaro installations and LiveCDs.
- profile.conf contains basic settings for your ISO installation and LiveCD.
As you have probably noticed, several are only symlinks to the shared
ISO profile. It is good practice to never change files or folders in the shared
ISO profile. If you ever want to change them, first copy them to your ISO profile folder and delete the symlink.
All folders and files specific to your ISO are in bold. You can change them to your liking.
Modifying an ISO profile
The most common places to tweak and customize an ISO profile are the 3 folders marked above: desktop-overlay, profile.conf, Packages-Desktop:
desktop-overlay
The desktop-overlay folder looks like this:
$ tree ~/iso-profiles/manjaro/xfce/desktop-overlay/etc
../iso-profiles/manjaro/xfce/desktop-overlay/ ├── etc │ ├── fonts │ │ └── conf.d │ │ └── 70-no-bitmaps.conf │ └── lightdm │ ├── lightdm.conf │ └── lightdm-gtk-greeter.conf └── usr └── share └── icons └── default └── index.theme
Go to this directory.
Then create skel folder. This is where you can clone everything you see on your Desktop Screen to ISO.
After the ISO has been successfully installed all files and folder in desktop-overlay folder get copied over to the installed system. This includes settings/config files but also themes and backgrounds/pictures.
All files and folder in here will get copied to the home folder. Most hidden files and their structure in ~/iso-profiles/manjaro/xfce/desktop-overlay/etc/skel/
should be already familiar to you, because your home folder looks very similar.
Clone Custom Wallpaper Desktop
To clone your Custom Wallpaper Desktop. Open a New File Manager and go to this file.
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
Change all image directories to where your Custom Wallpaper was located at. For example:
/usr/share/backgrounds/<YOUR IMAGE HERE>
Example
A sample `xfce4-desktop.xml` can be viewed by unfolding this block
<?xml version="1.0" encoding="UTF-8"?> <channel name="xfce4-desktop" version="1.0"> <property name="backdrop" type="empty"> <property name="screen0" type="empty"> <property name="monitor0" type="empty"> <property name="image-path" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/> <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/> <property name="last-single-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/> <property name="image-style" type="int" value="5"/> </property> <property name="monitorVGA-0" type="empty"> <property name="workspace0" type="empty"> <property name="color-style" type="int" value="0"/> <property name="image-style" type="int" value="5"/> <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/> </property> <property name="workspace1" type="empty"> <property name="color-style" type="int" value="0"/> <property name="image-style" type="int" value="5"/> <property name="last-image" type="string" value="'''/usr/share/backgrounds/<YOUR IMAGE HERE>'''"/> </property> </property> </property> </property> <property name="desktop-icons" type="empty"> <property name="style" type="int" value="2"/> <property name="file-icons" type="empty"> <property name="show-removable" type="bool" value="true"/> </property> <property name="icon-size" type="uint" value="32"/> </property> </channel>
Go to this directory:
Then create usr/share/backgrounds
and place your Custom Wallpaper at this directory.
profile.conf
The full content of an example profile.conf can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.
########################################## ###### use this file in the profile ###### ########################################## # use multilib packages; x86_64 only # multilib="true" displaymanager="lightdm" # Set to false to disable autologin in the livecd # autologin="true" # nonfree mhwd drivers # nonfree_mhwd="true" # use extra packages as defined in pkglist to activate a full profile #extra="true" ################ install ################ # unset defaults to given value # efi_boot_loader="grub" # configure calamares for netinstall # netinstall="false" # configure calamares to use chrootcfg instead of unpackfs # chrootcfg="false" # use geoip for localization # geoip='true' # unset defaults to given values # names must match systemd service names enable_systemd=('avahi-daemon' 'bluetooth' 'cronie' 'ModemManager' 'NetworkManager' 'org.cups.cupsd' 'tlp' 'tlp-sleep' 'ufw') disable_systemd=('pacman-init') # unset defaults to given values, # names must match openrc service names # enable_openrc=('acpid' 'bluetooth' 'elogind' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager') # disable_openrc=() # the same workgroup name if samba is used # smb_workgroup="" ################# livecd ################# # unset defaults to given value # hostname="manjaro" # unset defaults to given value # username="manjaro" # unset defaults to given value # password="manjaro" # the login shell # defaults to bash # login_shell=/bin/bash # unset defaults to given values # addgroups="lp,network,power,wheel" # unset defaults to given values # names must match systemd service names # services in enable_systemd array don't need to be listed here # enable_systemd_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live') # unset defaults to given values, # names must match openrc service names # services in enable_openrc array don't need to be listed here # enable_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init' 'mirrors-live')
This config file contains setting options. All default settings are commented. If you want to change them, uncomment them (remove the #
symbol in front) and change it.
The following settings are noteworthy:
multilib=
setting belongs to the>multilib
flag in your package lists. multilib will install basic 32bit libraries on 64bit systems. This increases compatibility for 32bit applications on 64bit systems.displaymanager=
sets the display / login manager your system uses. You need to list your display manager in your package list, too.nonfree_xorg=
refers to proprietary graphics drivers.netinstall=
: do not usechrootcfg=
: do not usekernel=
lets you set the installed kernel. Do not include any kernels in your package list! This setting is all you need.enable_systemd=
let's you set systemd services, which get started on the installed system (and with a similar setting on the livecd).enable_openrc=
: do not use
Packages-Desktop
An example `Packages-Desktop` file can be viewed by unfolding this block. It is always best to use the latest version instead of copying this one.
## Network avahi networkmanager networkmanager-openconnect networkmanager-openvpn networkmanager-pptp networkmanager-vpnc nss-mdns # NSS support for mDNS (optdepend for avahi) ntp mobile-broadband-provider-info modemmanager openresolv openssh samba usb_modeswitch ## Libraries for Sound/Audio/Video alsa-firmware alsa-utils ffmpeg gst-libav gst-plugins-bad gst-plugins-base gst-plugins-good gst-plugins-ugly libdvdcss >multilib manjaro-alsa manjaro-pulse pulseaudio-bluetooth pulseaudio-ctl pulseaudio-zeroconf ## Connect Packages android-tools android-udev gvfs gvfs-afc gvfs-gphoto2 gvfs-mtp gvfs-nfs gvfs-smb mtpfs udiskie udisks2 ## AUR Support/Development # Missing base-devel packages autoconf automake binutils bison fakeroot flex gcc >multilib gcc-libs-multilib >multilib gcc-multilib libtool m4 make patch pkg-config >multilib lib32-flex # Extra packages for AUR support >extra git >extra patchutils >extra subversion ## Fonts cantarell-fonts # noto-fonts # default font # noto-fonts-cjk # big package, ~76 mb compressed # >extra noto-fonts-emoji terminus-font ttf-bitstream-vera # xfce4-terminal default Monospace # ttf-dejavu # Installed as gnome-themes-standard dependency >extra ttf-inconsolata >extra ttf-indic-otf >extra ttf-liberation >extra ttf-droid ## Games >extra steam-manjaro ## Package management pamac flatpak ## Java >extra jdk8-openjdk >extra jre8-openjdk-headless >extra jre8-openjdk ## Printing >extra cups >extra cups-pdf >extra cups-pk-helper >extra ghostscript >extra gsfonts >extra gtk3-print-backends >extra hplip >extra splix >extra system-config-printer ## Optional dependencies for hplip >extra pyqt5-common # For hplip >extra python-pillow # For hplip >extra python-pip # For hplip >extra python-pyqt5 # For hplip gui >extra python-reportlab # For hplip ## Display manager lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice # Enhanced user accounts handling ## GTK3 gtk3-classic >multilib lib32-gtk3-classic ## XFCE Group exo-gtk3 garcon-gtk3 thunar-gtk3 thunar-volman tumbler xfce4-appfinder-gtk3 xfce4-panel-gtk3 xfce4-power-manager-gtk3 xfce4-session-gtk3 xfce4-settings-gtk3 xfce4-terminal xfconf-gtk3 xfdesktop-gtk3 xfwm4-gtk3 ## XFCE Extras blueman ffmpegthumbnailer # tumbler - for video thumbnails freetype2 # tumbler - for font thumbnails gksu gnome-keyring # fix wlan segfault libgsf # tumbler - for ODF thumbnails libopenraw # tumbler - for RAW thumbnails light-locker network-manager-applet menulibre orage poppler-glib # tumbler - for PDF thumbnails thunar-archive-plugin file-roller thunar-media-tags-plugin # >extra xfce4-artwork xfce4-battery-plugin xfce4-clipman-plugin >extra xfce4-cpufreq-plugin >extra xfce4-cpugraph-plugin # xfce4-datetime-plugin >extra xfce4-dict >extra xfce4-diskperf-plugin >extra xfce4-fsguard-plugin >extra xfce4-genmon-plugin >extra xfce4-mailwatch-plugin >extra xfce4-mount-plugin >extra xfce4-mpc-plugin >extra xfce4-netload-plugin >extra xfce4-notes-plugin xfce4-notifyd-gtk3 xfce4-screenshooter >extra xfce4-sensors-plugin >extra xfce4-smartbookmark-plugin >extra xfce4-systemload-plugin xfce4-taskmanager >extra xfce4-time-out-plugin >extra xfce4-timer-plugin >extra xfce4-verve-plugin >extra xfce4-wavelan-plugin >extra xfce4-weather-plugin xfce4-whiskermenu-plugin-gtk3 xfce4-xkb-plugin xfce4-pulseaudio-plugin pavucontrol ## Themes >extra manjaro-wallpapers-18.0 >extra wallpapers-2018 gnome-icon-theme gnome-themes-standard grub-theme-manjaro matcha-gtk-theme xcursor-simpleandsoft xcursor-vanilla-dmz-aa ## Applications >extra catfish dmidecode # optional dependency inxi engrampa >extra firefox # >extra flashplugin >extra galculator-gtk2 gcolor2 >extra gimp gparted gufw >extra audacious >extra hexchat htop qpdfview inxi >extra libreoffice-still ms-office-online manjaro-hello manjaro-application-utility manjaro-settings-manager manjaro-settings-manager-notifier >basic midori >extra mlocate mousepad mugshot >basic parole # media player >extra pidgin powertop screenfetch >extra poppler-data # CKJ support for pdf >basic sylpheed # mail client >extra thunderbird >extra vlc >extra viewnior >extra xfburn >extra yelp # Optional dependencies engrampa p7zip # 7Z and ARJ archive support unace # ACE archive support unrar # RAR archive support ## Documentation manjaro-documentation-en ## Settings packages >extra manjaro-xfce-gtk3-settings >basic manjaro-xfce-gtk3-minimal-settings manjaro-browser-settings ## Xorg Input Drivers xf86-input-elographics xf86-input-evdev xf86-input-keyboard xf86-input-libinput xf86-input-mouse xf86-input-void ## Xorg Server and Graphics >multilib lib32-libva-intel-driver >multilib lib32-libva-mesa-driver >multilib lib32-libva-vdpau-driver libva-intel-driver libva-mesa-driver libva-vdpau-driver mesa-demos >multilib lib32-mesa-demos numlockx xdg-user-dirs xorg-server xorg-twm xorg-xinit xorg-xkill ## Desktop Utils perl-file-mimeinfo xdg-utils xdg-su ## Misc manjaro-hotfixes
This file contains a list of packages, which will get installed on your installed ISO (XFCE) and the LiveCD (the packages in Packages-Live file only get installled on the live ISO). This is a package list with Xfce specific packages (and packages you like to add to your custom Manjaro ISO) of multiple package lists in your ISO profile. The other package lists are more generic.
You can add or remove package names from this list as you like. You do not need to worry about dependencies when adding package names, just make sure the package name is spelled correctly and the package is available in the Manjaro repositories.
#
marks a comment. The rest of the line after the #
symbol gets ignored.
Adding AUR packages
If you want to add AUR packages to your ISO, you need to create a online repository and add it to a file user-repos.conf beside your profile.conf.
Only use your own http enabled repo.
[your-repo-name] SigLevel = Optional TrustAll Server = http://repo.server.tld/your-repo-name
The article Buildiso with AUR packages: Using buildpkg contains more detailed information on this process.
manjaro-tools.conf
manjaro-tools.conf
is the central configuration file for all tools part of manjaro-tools. Only edit the general and the "buildiso" part to not exceed the scope of this tutorial. If you are not sure what and how to edit it, do not edit it. You can always use arguments with the buildiso
command later.
By default, the systemwide config file is installed in
/etc/manjaro-tools/manjaro-tools.conf
Best practice is to leave the systemwide file untouched and copy the system wide config to your home directory here:
~/.config/manjaro-tools
If the userconfig is present, manjaro-tools/buildiso will load the userconfig values. Best practice is to leave the systemwide file untouched. By default it is commented and shows just initialization values done in code.
Build your ISO
Build your ISO with the following command:
You need to specify the name of your ISO profile after the -p
argument. In this case, it is xfce
.
If the build process fails with an error, start it again.
Attention: The build process needs at least 10 minutes to complete or much longer when you are using HDDs, slow CPUs, or large ISOs.
When the build process finishes successfully, the ISO file and the package list will appear in this folder:
/var/cache/manjaro-tools/iso/
Example:
You can use arguments with the buildiso
command for more build options:
-f
let's you specify if you want the full ISO. If omitted a minimal ISO will be build.-b
let's you specify the branch. You can also set this in yourmanjaro-tools.conf
file.
You can find other examples of builds using different arguments for buildiso here.
Cleaning your hard drive
After a successful or failed build, you can get rid of most data (the "raw" ISO with all downloaded packages) by deleting this folder:
To clean your system of packages files of packages not installed on your system (this includes all the package files downloaded for your custom ISO):
You can also manually look into
/var/cache/manjaro-tools/
and delete folders or files to your liking. If you want to delete all ISO images, package lists, and cached Xorg packages do:
Please remember that all these packages and files are saved for your convenience. If you clean your system like suggested above, you have to download all packages and build all images again the next time you want to build your own Manjaro ISO.
By default, your manjaro-tools.conf
file is saved. If you want to delete it, use
Tips & Tricks
Building a minimal ISO
A minimal ISO is easy to create by modifying an entry in the profile.conf file. Find the section
# use extra packages as defined in pkglist to activate a full profile # extra="false" extra="true"
and remove the # mark in front of extra = "false" and add a # in front of extra = "true".
If you prefer not to change this you can always use the -f with buildiso to build a full profile.
See also
- Source: Manjaro Gitlab ISO Profiles (master branch may be unstable - select the branch for latest release)
- Video: Building Manjaro ISO by Philip Müller(Tutorial Video)
- Wiki: Buildiso with AUR packages: Using buildpkg