Check installation CDs and DVDs for errors.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
tests
.gitignore
COPYING
Makefile
README.md
checkmedia.c
digestdemo.c
git2log
md5.c
md5.h
mediacheck.c
mediacheck.h
mediacheck.md
sha1.c
sha1.h
sha256.c
sha256.h
sha512.c
sha512.h
tagmedia
testmediacheck
u64.h

README.md

checkmedia

About

checkmedia is a tool to verify SUSE installation media. For this, the digest (e.g. sha256) is stored within the media images and used to check against the calculated digest.

Supported digests are: md5, sha1, sha224, sha256, sha384, sha512.

There are 512 bytes reserved for application specific use in the iso header at offset 0x373 (cf. application_data in struct iso_primary_descriptor in /usr/include/linux/iso_fs.h). We're free to do anything with it.

tagmedia calculates the digest and puts a line like <DIGEST>sum=<HEX_DIGEST> into the field.

checkmedia calculates the digest but assumes to be spaces in the range 0x8373-0x8572 of the iso image (iso header starts at 0x8000) and compares the result against the stored digest.

To avoid problems with isohybrid images, checkmedia also does not check the first 512 bytes of the iso image (isohybrid writes an MBR there).

The actual verification process is done by a separate libmediacheck library.

Examples

tagmedia --digest sha256 --pad 150 foo.iso

Calulate sha256 digest and store in foo.iso. Assume 150 sectors (of 2 kB) padding in iso image.

checkmedia foo.iso

Verify foo.iso.

checkmedia --verbose foo.iso

Verify foo.iso and show more detailed information.

Downloads

Get the latest version from the openSUSE Build Service.

openSUSE Development

To build, simply run make. Install with make install.

Basically every new commit into the master branch of the repository will be auto-submitted to all current SUSE products. No further action is needed except accepting the pull request.

Submissions are managed by a SUSE internal jenkins node in the InstallTools tab.

Each time a new commit is integrated into the master branch of the repository, a new submit request is created to the openSUSE Build Service. The devel project is system:install:head.

*.changes and version numbers are auto-generated from git commits, you don't have to worry about this.

The spec file is maintained in the Build Service only. If you need to change it for the master branch, submit to the devel project in the build service directly.

Development happens exclusively in the master branch. The branch is used for all current products.

You can find more information about the changes auto-generation and the tools used for jenkis submissions in the linuxrc-devtools documentation.