feat: base go mkiso
This commit is contained in:
180
docs/howto-manual-iso.md
Normal file
180
docs/howto-manual-iso.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user