Создание ISO-файлов Manjaro с помощью buildiso
Предпосылки
Это подробное описание установки и настройки инструментов и процесса сборки.
Это требование - либо загрузить и установить последнюю версию Manjaro, либо работать с хорошо поддерживаемой системой Manjaro. Важно, чтобы ваша система была обновлена последними версиями ядра и пакетов.
Установка инструментов Manjaro
Для начала работы вам понадобятся следующие пакеты:
Мы будем работать с официальным XFCE, чтобы помочь вам понять, что нужно делать.
Профиль ISO
Загрузите последние профили ISO
Последние версии профилей можно найти на gitlab Manjaro. Вы можете загрузить их напрямую, используя команду:
.
Обзор профиля ISO
Профиль ISO для xfce теперь можно найти по адресу
Давайте подробнее рассмотрим каталог профиля XFCE (отмечен выше):
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: после каждой успешной установки вашего ISO файлы и каталоги, находящиеся здесь, будут скопированы.
- live-overlay: аналогично desktop-overlay. Файлы и каталоги, находящиеся здесь, будут копироваться только на LiveCD вашего ISO.
- Packages-Desktop: этот файл содержит пакеты для установки ISO. Все пакеты также будут установлены на LiveCD.
- Packages-Live: этот файл содержит пакеты, которые будут установлены только на LiveCD.
- Packages-Mhwd: этот файл содержит пакеты Mhwd, важные для всех установок Manjaro и LiveCD.
- Packages-Root: этот файл содержит базовые пакеты, важные для всех установок Manjaro и LiveCD.
- profile.conf содержит основные настройки для вашей установки ISO и LiveCD.
Как вы, вероятно, заметили, некоторые из них являются всего лишь символическими ссылками на ISO-профиль shared
. Хорошей практикой является никогда не изменять файлы или каталоги в ISO-профиле shared
. Если вы когда-нибудь захотите их изменить - сначала скопируйте их в каталог вашего ISO-профиля и удалите символическую ссылку.
Все каталоги и файлы, специфичные для вашего ISO, выделены полужирным шрифтом. Вы можете изменить их по своему усмотрению.
Изменение профиля ISO
Наиболее распространенными местами для настройки ISO-профиля являются 3 каталога, отмеченные выше: desktop-overlay, profile.conf, Packages-Desktop:
desktop-overlay
Директория desktop-overlay выглядит следующим образом:
$ 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
Перейдите в эту директорию.
Затем создайте каталог skel. В нем вы сможете клонировать в ISO все, что видите на экране рабочего стола.
После успешной установки ISO все файлы и каталоги из desktop-overlay копируются на установленную систему. Сюда входят файлы настроек/конфигурации, а также темы и фоны/картинки.
Все файлы и каталоги, находящиеся здесь, будут скопированы в домашний каталог. Большинство скрытых файлов и их структура в ~/iso-profiles/manjaro/xfce/desktop-overlay/etc/skel/
должны быть вам уже знакомы, поскольку ваша домашняя директория выглядит очень похоже.
Клонирование пользовательских обоев рабочего стола
Чтобы клонировать ваш рабочий стол с пользовательскими обоями. Откройте новый менеджер файлов и перейдите к этому файлу:
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
Измените все каталоги изображений на те, в которых находились ваши пользовательские обои. Например:
/usr/share/backgrounds/<ВАШЕ ИЗОБРАЖЕНИЕ ЗДЕСЬ>
Пример
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>
Перейдите в эту директорию:
Затем создайте каталог usr/share/backgrounds
и поместите в него свои пользовательские обои.
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 ###### ########################################## </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # use multilib packages; x86_64 only # multilib="true" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> displaymanager="lightdm" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # Set to false to disable autologin in the livecd # autologin="true" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # nonfree mhwd drivers # nonfree_mhwd="true" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # use extra packages as defined in pkglist to activate a full profile #extra="true" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ################ install ################ </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # unset defaults to given value # efi_boot_loader="grub" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # configure calamares for netinstall # netinstall="false" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # configure calamares to use chrootcfg instead of unpackfs # chrootcfg="false" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # use geoip for localization # geoip='true' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # 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') </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # unset defaults to given values, # names must match openrc service names # enable_openrc=('acpid' 'bluetooth' 'elogind' 'cronie' 'cupsd' 'dbus' 'syslog-ng' 'NetworkManager') # disable_openrc=() </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # the same workgroup name if samba is used # smb_workgroup="" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ################# livecd ################# </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # unset defaults to given value # hostname="manjaro" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # unset defaults to given value # username="manjaro" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # unset defaults to given value # password="manjaro" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # the login shell # defaults to bash # login_shell=/bin/bash </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # unset defaults to given values # addgroups="lp,network,power,wheel" </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # 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') </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Connect Packages android-tools android-udev gvfs gvfs-afc gvfs-gphoto2 gvfs-mtp gvfs-nfs gvfs-smb mtpfs udiskie udisks2 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Games >extra steam-manjaro </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Package management pamac flatpak </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Java >extra jdk8-openjdk >extra jre8-openjdk-headless >extra jre8-openjdk </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Display manager lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice # Enhanced user accounts handling </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## GTK3 gtk3-classic >multilib lib32-gtk3-classic </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> # Optional dependencies engrampa p7zip # 7Z and ARJ archive support unace # ACE archive support unrar # RAR archive support </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Documentation manjaro-documentation-en </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Settings packages >extra manjaro-xfce-gtk3-settings >basic manjaro-xfce-gtk3-minimal-settings manjaro-browser-settings </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Xorg Input Drivers xf86-input-elographics xf86-input-evdev xf86-input-keyboard xf86-input-libinput xf86-input-mouse xf86-input-void </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## 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 </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Desktop Utils perl-file-mimeinfo xdg-utils xdg-su </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ## Misc manjaro-hotfixes </div> <div lang="en" dir="ltr" class="mw-content-ltr">
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.
Добавление пакетов AUR
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.
Создание собственного ISO
Создайте свой ISO с помощью следующей команды:
Вам необходимо указать имя вашего ISO-профиля после аргумента -p
. В данном случае это <код>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.
Очистка жесткого диска
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
Советы и хитрости
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)
- Forum: How to create your own Manjaro spin with Manjaro-Tools
- Forum: Philip Müller shows how-to
- Video: Building Manjaro ISO by Philip Müller(Tutorial Video)
- Wiki: Buildiso with AUR packages: Using buildpkg