Le 07/10/2022 à 18:29, Colin Watson a écrit :
Control: severity -1 normal
Control: fixed -1 3.5-1
On Fri, Oct 07, 2022 at 05:29:14PM +0200, Jean-Marc LACROIX wrote:
Severity: critical
"makes unrelated software on the system (or the whole system) break, or
causes serious data loss, or introduces a security hole on systems where
you install the package"
A difficulty with using the CLI, or even a missing feature in the CLI,
doesn't fall into any of these categories.
According documentation available in man it seems possible to create one
partition of type "swap" by using "set" option on command line.
After many tests done with Linux "parted" command and Ansible module
"parted", it seems that it is not possible to set one logical partition as a
swap partition with the flag option available into parted tool.
My disk uses for test has following partitions...
ansible@thinkpad-410:~$ sudo fdisk -l /dev/sda
Disque /dev/sda : 931,51 GiB, 1000204886016 octets, 1953525168 secteurs
Modèle de disque : HGST HTS721010A9
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x483880d2
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sda1 * 2048 48828415 48826368 23,3G 83 Linux
/dev/sda2 48830462 1953523711 1904693250 908,2G 5 Étendue
/dev/sda5 48830464 68360191 19529728 9,3G 8e LVM Linux
/dev/sda6 68362240 70361087 1998848 976M 82 partition
d'échange Linux / Solaris
This says that it's already a swap partition, so I'm not sure why you
need to set it as one. Can you explain further?
Yes,
Ansible is one tool which is able to manage idempotence feature.
Idempotence is originally a concept from Mathematics. As defined by
Wikipedia,
idempotence is the property of certain operations in mathematics and
computer science whereby they can be applied multiple times without
changing the result beyond the initial application.
Therefore, the designer should define only one variable (for example)
to indicate that /dev/sda6 is a logical partition located on an
extended partition with type swap. This therefore constitutes an
element of choice (the specification) which must be considered as
non-modifiable and therefore inviolable (!). Of course, if we modify
the specification, then the partition will have to change state.
On the first run, of course, because there is nothing on the disk,
then Ansible detect this feature and then force a command (parted) to
create the partition with swap type. But on the second pass (and later
pass), because this partition is already set to the exact type chosen
by designer, then no action is done (!)
(On an MBR partition table like this, all that setting the "swap" flag
does is set the partition type to 0x82.)
/dev/sda7 70363136 74266623 3903488 1,9G 8e LVM Linux
/dev/sda8 74268672 279068671 204800000 97,7G 8e LVM Linux
and when i try to set one partition with swap, then ...
ansible@thinkpad-410:~$ sudo /usr/sbin/parted -s -m -a optimal /dev/sda --
unit KiB set 6 swap on
/usr/sbin/parted: invalid token: swap
I have also tried, but without success...
ansible@thinkpad-410:~$ sudo /usr/sbin/parted -s -m -a optimal /dev/sda --
unit KiB set 6 swap on set 6 lvm off
/usr/sbin/parted: invalid token: swap
This was fixed in parted 3.4.64. From the NEWS file:
Add use of the swap partition flag to msdos disk labeled disks.
But since it's already of the correct type, maybe you can just skip that
bit on older versions of parted?
(Or, if your automation is building the entire system from scratch, then
another option might be to use GPT instead of MBR.)
Dear Colin,
First of all, many thanks for the quickly answer and of course for the
good news for this bug available in Debian Bookworm Release.
Please find some trace to verify behaviour with your new package
ansible@thinkpad-410:~$ apt-cache policy parted
parted:
Installé : 3.4-1
Candidat : 3.4-1
Table de version :
3.5-2 80
80 http://ftp.de.debian.org/debian bookworm/main amd64 Packages
*** 3.4-1 500
500 http://ftp.de.debian.org/debian bullseye/main amd64 Packages
100 /var/lib/dpkg/status
3.2-25 90
90 http://ftp.de.debian.org/debian oldstable/main amd64 Packages
ansible@thinkpad-410:~$ cat /etc/debian_version
11.5
ansible@thinkpad-410:~$ dpk -l |grep -v ii
-bash: dpk : commande introuvable
ansible@thinkpad-410:~$ dpkg -l |grep -v ii
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
|
État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom Version
Architecture Description
+++-====================================-=================================-============-===============================================================================
ansible@thinkpad-410:~$
ansible@thinkpad-410:~$ cat
/etc/apt/sources.list.d/debian_apt_v_11_bullseye_* |grep -v "#" | grep -v ^$
deb http://ftp.de.debian.org/debian/ bullseye main contrib non-free
deb http://ftp.de.debian.org/debian/ bookworm main contrib non-free
deb http://ftp.de.debian.org/debian/ oldstable main contrib non-free
deb http://repository.spotify.com stable non-free
deb http://security.debian.org/debian-security bullseye-security main
contrib non-free
deb http://ftp.de.debian.org/debian bullseye-updates main contrib non-free
ansible@thinkpad-410:~$
ansible@thinkpad-410:~$ cat /etc/apt/preferences.d/* |grep -v "#" | grep
-v ^$
Package: dhcpcd5
Pin: release *
Pin-Priority: -1
Package: vmdb2
Pin: release o=Debian,l=Debian,n=bullseye
Pin-Priority: 920
Package: *
Pin: release o=Debian,l=Debian,n=bullseye/updates
Pin-Priority: 500
Package: *
Pin: release o=Debian,l=Debian,n=bullseye-update
Pin-Priority: 500
Package: *
Pin: release o=Debian,l=Debian,n=bullseye
Pin-Priority: 500
Package: *
Pin: release o=Debian,l=Debian,n=bullseye-backports
Pin-Priority: 100
Package: *
Pin: release o=Debian,l=Debian,n=buster
Pin-Priority: 90
Package: *
Pin: release o=Debian,l=Debian,n=bookworm
Pin-Priority: 80
Package: *
Pin: release o=Debian,l=Debian,n=sid
Pin-Priority: 70
Package: *
Pin: release o=Debian,l=Debian,n=experimental
Pin-Priority: 60
ansible@thinkpad-410:~$
Then of course, it is easy now to install new Debian package from
Bookworm ...
ansible@thinkpad-410:~$ sudo apt -t bookworm install parted
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
.................
Verify now that new parted package is correctly installed
ansible@thinkpad-410:~$ apt-cache policy parted
parted:
Installé : 3.5-2
Candidat : 3.5-2
Table de version :
*** 3.5-2 100
80 http://ftp.de.debian.org/debian bookworm/main amd64 Packages
100 /var/lib/dpkg/status
3.4-1 500
500 http://ftp.de.debian.org/debian bullseye/main amd64 Packages
3.2-25 90
90 http://ftp.de.debian.org/debian oldstable/main amd64 Packages
ansible@thinkpad-410:~$
Now is the time to test the real command and make sure everything is OK!
initial conditions....
ansible@thinkpad-410:~$ sudo fdisk -l /dev/sda
sudo fdisk -l /dev/sda
Disque /dev/sda : 931,51 GiB, 1000204886016 octets, 1953525168 secteurs
Modèle de disque : HGST HTS721010A9
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x483880d2
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sda1 * 2048 48828415 48826368 23,3G 83 Linux
/dev/sda2 48830462 1953523711 1904693250 908,2G 5 Étendue
/dev/sda5 48830464 68360191 19529728 9,3G 83 Linux
/dev/sda6 68362240 70361087 1998848 976M 82 partition
d'échange Linux / Solaris
/dev/sda7 70363136 74266623 3903488 1,9G 83 Linux
/dev/sda8 74268672 279068671 204800000 97,7G 83 Linux
ansible@thinkpad-410:~$ sudo /usr/sbin/parted -s -m -a optimal /dev/sda
-- unit KiB set 6 swap on
SELinux enabled state cached to: disabled
No filesystem is currently mounted on /sys/fs/cgroup.
Failed to determine unit we run in, ignoring: No data available
SELinux enabled state cached to: disabled
No filesystem is currently mounted on /sys/fs/cgroup.
Failed to determine unit we run in, ignoring: No data available
ansible@thinkpad-410:~$
Change now the type of partition ....
ansible@thinkpad-410:~$ sudo /usr/sbin/parted -s -m -a optimal /dev/sda
-- unit KiB set 6 lvm on
SELinux enabled state cached to: disabled
No filesystem is currently mounted on /sys/fs/cgroup.
Failed to determine unit we run in, ignoring: No data available
SELinux enabled state cached to: disabled
No filesystem is currently mounted on /sys/fs/cgroup.
Failed to determine unit we run in, ignoring: No data available
ansible@thinkpad-410:~$
and verif the new type ....
Disque /dev/sda : 931,51 GiB, 1000204886016 octets, 1953525168 secteurs
Modèle de disque : HGST HTS721010A9
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x483880d2
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sda1 * 2048 48828415 48826368 23,3G 83 Linux
/dev/sda2 48830462 1953523711 1904693250 908,2G 5 Étendue
/dev/sda5 48830464 68360191 19529728 9,3G 83 Linux
/dev/sda6 68362240 70361087 1998848 976M 8e LVM Linux
/dev/sda7 70363136 74266623 3903488 1,9G 83 Linux
/dev/sda8 74268672 279068671 204800000 97,7G 83 Linux
La partition 2 ne commence pas sur une frontière de cylindre physique.
ansible@thinkpad-410:~$
Congratulation Colin, the bug is dead !
Last question ?
Could you please give me the correct option to set one partition with
native Linux with parted ? (id=83)
--
-- mailto : jeanmarc.lacr...@free.fr --