181 lines
4.4 KiB
Markdown
181 lines
4.4 KiB
Markdown
# Manual ISO Creation — HOWTO
|
|
|
|
Create a bootable DICOM viewer ISO with patient images, using `genisoimage` (or `mkisofs` / `xorriso`).
|
|
|
|
## Prerequisites
|
|
|
|
| Tool | Check | Install (Arch) |
|
|
|------|-------|----------------|
|
|
| `genisoimage` | `which genisoimage` | `pacman -S cdrtools` + symlink, or `pacman -S libisoburn` (xorriso) |
|
|
| Raw viewer files | `raw/microdicom/` | Part of this project |
|
|
| DICOM files | From PACS or unzipped archive | e.g. `unzip pasien.zip` |
|
|
|
|
## Steps
|
|
|
|
### 1. Prepare working directory
|
|
|
|
```bash
|
|
mkdir -p /tmp/build_iso/xcdrom/DICOMDIR
|
|
```
|
|
|
|
Directory structure yang akan jadi root ISO:
|
|
|
|
```
|
|
/tmp/build_iso/xcdrom/ ← root ISO
|
|
├── AUTORUN.INF
|
|
├── INDEX.PHP
|
|
├── README.TXT
|
|
├── RUN.BAT
|
|
├── MICROD/ ← DICOM viewer
|
|
└── DICOMDIR/ ← file DICOM pasien
|
|
```
|
|
|
|
### 2. Copy microdicom viewer
|
|
|
|
```bash
|
|
cp -r /path/to/raw/microdicom/* /tmp/build_iso/xcdrom/
|
|
```
|
|
|
|
Hasil:
|
|
```
|
|
/tmp/build_iso/xcdrom/AUTORUN.INF
|
|
/tmp/build_iso/xcdrom/INDEX.PHP
|
|
/tmp/build_iso/xcdrom/README.TXT
|
|
/tmp/build_iso/xcdrom/RUN.BAT
|
|
/tmp/build_iso/xcdrom/MICROD/
|
|
```
|
|
|
|
### 3. Copy DICOM files pasien
|
|
|
|
**Flat** (semua file langsung di DICOMDIR):
|
|
|
|
```bash
|
|
cp /path/to/dicom/files/* /tmp/build_iso/xcdrom/DICOMDIR/
|
|
```
|
|
|
|
**Dari unzip dengan subfolder** (misal hasil unzip `EF76D893/...`):
|
|
|
|
```bash
|
|
find EF76D893 -type f -exec cp {} /tmp/build_iso/xcdrom/DICOMDIR/ \;
|
|
```
|
|
|
|
**Verifikasi**:
|
|
|
|
```bash
|
|
find /tmp/build_iso/xcdrom -type f | sort
|
|
```
|
|
|
|
### 4. Build ISO
|
|
|
|
```bash
|
|
genisoimage \
|
|
-iso-level 4 \
|
|
-r \
|
|
-allow-multidot \
|
|
-allow-lowercase \
|
|
-allow-leading-dots \
|
|
-V DICOM \
|
|
-o /tmp/output.iso \
|
|
/tmp/build_iso/xcdrom
|
|
```
|
|
|
|
| Flag | Fungsi |
|
|
|------|--------|
|
|
| `-iso-level 4` | Mengizinkan direktori >8 level |
|
|
| `-r` | Rock Ridge (long filename, Unix permissions) |
|
|
| `-allow-multidot` | Mengizinkan multiple dots dalam filename |
|
|
| `-allow-lowercase` | Lowercase filename |
|
|
| `-allow-leading-dots` | File dimulai dengan titik (.) |
|
|
| `-V DICOM` | Volume label = `DICOM` |
|
|
| `-o output.iso` | File ISO tujuan |
|
|
|
|
### 5. Verify ISO
|
|
|
|
```bash
|
|
# Cek ukuran
|
|
ls -lh /tmp/output.iso
|
|
|
|
# Cek struktur isi
|
|
isoinfo -l -i /tmp/output.iso
|
|
|
|
# Cek format
|
|
file /tmp/output.iso
|
|
# Output: ISO 9660 CD-ROM filesystem data 'DICOM'
|
|
|
|
# Mount & inspect (optional)
|
|
mkdir -p /tmp/mnt_iso
|
|
sudo mount -o loop /tmp/output.iso /tmp/mnt_iso
|
|
find /tmp/mnt_iso -type f -ls
|
|
sudo umount /tmp/mnt_iso
|
|
rmdir /tmp/mnt_iso
|
|
```
|
|
|
|
## Shortcut (one-liner)
|
|
|
|
Gabung semua step dalam satu script:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
ISO_NAME="${1:-output}"
|
|
SRC_DIR="/tmp/build_iso/xcdrom"
|
|
ISO_FILE="/tmp/${ISO_NAME}.iso"
|
|
|
|
mkdir -p "$SRC_DIR/DICOMDIR"
|
|
cp -r /path/to/raw/microdicom/* "$SRC_DIR/"
|
|
cp /path/to/dicom/files/* "$SRC_DIR/DICOMDIR/"
|
|
|
|
genisoimage \
|
|
-iso-level 4 -r \
|
|
-allow-multidot -allow-lowercase -allow-leading-dots \
|
|
-V DICOM \
|
|
-o "$ISO_FILE" \
|
|
"$SRC_DIR"
|
|
|
|
echo "ISO created: $ISO_FILE ($(du -h "$ISO_FILE" | cut -f1))"
|
|
```
|
|
|
|
## Alternative: xorriso
|
|
|
|
If you have `xorriso` instead of `genisoimage`:
|
|
|
|
```bash
|
|
xorriso -as mkisofs \
|
|
-iso-level 4 \
|
|
-r \
|
|
-V DICOM \
|
|
-o /tmp/output.iso \
|
|
/tmp/build_iso/xcdrom
|
|
```
|
|
|
|
## Output Structure Reference
|
|
|
|
```
|
|
output.iso
|
|
└── xcdrom/ ← root ISO
|
|
├── AUTORUN.INF ← auto-play CD (Windows)
|
|
├── INDEX.PHP ← halaman web viewer
|
|
├── README.TXT ← petunjuk penggunaan
|
|
├── RUN.BAT ← batch file untuk jalanin viewer
|
|
├── MICROD/ ← MicroDicom executable viewer
|
|
│ ├── MDICOM.EXE ← main executable
|
|
│ ├── MDICOM.CHM ← help file
|
|
│ ├── MFC120U.DLL ← Visual C++ runtime
|
|
│ ├── MSVCP120.DLL ← Visual C++ runtime
|
|
│ ├── MSVCR120.DLL ← Visual C++ runtime
|
|
│ ├── INDEX.PHP
|
|
│ └── SETTINGS/ ← konfigurasi viewer
|
|
│ ├── APPLICAT.XML
|
|
│ ├── ANIMATIO.XML
|
|
│ ├── ANNOTATI.XML
|
|
│ ├── EXPORTDI.XML
|
|
│ ├── EXPORTIM.XML
|
|
│ ├── EXPORTVI.XML
|
|
│ ├── OVERLAY.XML
|
|
│ ├── OVERLAY_.XML
|
|
│ ├── PRINT.XML
|
|
│ └── WINDOWLE.XML
|
|
└── DICOMDIR/ ← file DICOM pasien
|
|
├── 26811B9D ← contoh file DICOM
|
|
└── 601182D5 ← contoh file DICOM
|
|
```
|